Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00%
0 / 1
81.25%
13 / 16
CRAP
80.43%
37 / 46
Result
0.00%
0 / 1
81.25%
13 / 16
29.68
80.43%
37 / 46
 __construct()
100.00%
1 / 1
1
100.00%
6 / 6
 addMessage(IMessage $message)
100.00%
1 / 1
1
100.00%
2 / 2
 addSetting(ISetting $setting, $cachable = true)
100.00%
1 / 1
2
100.00%
5 / 5
 addSettings(array $settings, $cachable = true)
0.00%
0 / 1
12
0.00%
0 / 6
 setMessages(array $messages)
0.00%
0 / 1
2
0.00%
0 / 2
 getMessages()
100.00%
1 / 1
1
100.00%
1 / 1
 getSettings($groups = null, $flag = null)
100.00%
1 / 1
1
100.00%
1 / 1
 getCachableSettings($groups = null, $flag = null)
100.00%
1 / 1
1
100.00%
1 / 1
 getSettingsAsArray($groups = null, $flag = null)
100.00%
1 / 1
1
100.00%
1 / 1
 getCachableSettingsAsArray($groups = null, $flag = null)
100.00%
1 / 1
1
100.00%
1 / 1
 setStatus($status = self::INVALID)
100.00%
1 / 1
1
100.00%
2 / 2
 getStatus()
100.00%
1 / 1
1
100.00%
1 / 1
 setCheck(ICheck $check)
100.00%
1 / 1
1
100.00%
2 / 2
 getCheck()
0.00%
0 / 1
2
0.00%
0 / 1
 getFiltered(array $all_settings = array(), $groups = null, $flag = null)
100.00%
1 / 1
4
100.00%
7 / 7
 getFilteredAsArray(array $all_settings, $groups = null, $flag = null)
100.00%
1 / 1
4
100.00%
7 / 7
<?php
namespace Environaut\Report\Results;
use Environaut\Checks\ICheck;
use Environaut\Report\Results\IResult;
use Environaut\Report\Results\Messages\IMessage;
use Environaut\Report\Results\Settings\ISetting;
/**
 * Result that checks provide for a report.
 */
class Result implements IResult
{
    /**
     * Check this result belongs to.
     *
     * @var ICheck check instance
     */
    protected $check;
    /**
     * Messages from the check.
     *
     * @var array of IMessage instances
     */
    protected $messages = array();
    /**
     * Settings from the check.
     *
     * @var array of ISetting instances
     */
    protected $settings = array();
    /**
     * Settings from the check that should be available from cache on re-execution of the check.
     *
     * @var array of ISetting instances
     */
    protected $cachable_settings = array();
    /**
     * Status of the result. See available constants on IResult.
     *
     * @var string status of this result
     */
    protected $status = self::UNEXECUTED;
    /**
     * Create a new Result instance.
     */
    public function __construct()
    {
        $this->check = null;
        $this->messages = array();
        $this->settings = array();
        $this->cachable_settings = array();
        $this->status = self::UNEXECUTED;
    }
    /**
     * Adds the given message to the internal list of messages.
     *
     * @param \Environaut\Report\Results\Messages\IMessage $message
     *
     * @return Result this instance for fluent API support
     */
    public function addMessage(IMessage $message)
    {
        $this->messages[] = $message;
        return $this;
    }
    /**
     * Adds the given setting to the internal lists of settings.
     *
     * @param ISetting $setting setting to add to internal lists of settings
     * @param bool $cachable whether or not the setting may be put into a cache for reuse on re-execution of the check
     *
     * @return Result this instance for fluent API support
     */
    public function addSetting(ISetting $setting, $cachable = true)
    {
        $this->settings[] = $setting;
        if (true === $cachable) {
            $this->cachable_settings[] = $setting;
        }
        return $this;
    }
    /**
     * Adds the given setting to the internal list of settings.
     *
     * @param array $settings array with ISetting implementing instances to add
     * @param bool $cachable whether or not the setting may be put into a cache for reuse on re-execution of the check
     *
     * @return Result this instance for fluent API support
     */
    public function addSettings(array $settings, $cachable = true)
    {
        foreach ($settings as $setting) {
            if ($setting instanceof ISetting) {
                $this->addSetting($setting);
            }
        }
        return $this;
    }
    /**
     * Replaces the internal list of messages with the given list.
     *
     * @param array $messages array with IMessage implementing instances
     *
     * @return Result this instance for fluent API support
     */
    public function setMessages(array $messages)
    {
        $this->messages = $messages;
        return $this;
    }
    /**
     * Returns the internal list of messages emitted by the processed check.
     *
     * @return array of IMessage implementing instances
     */
    public function getMessages()
    {
        return $this->messages;
    }
    /**
     * Returns the internal list of settings emitted by the processed check.
     *
     * @param string $groups group names of settings to return
     * @param integer $flag flag value the settings should belong to
     *
     * @return array of ISetting implementing instances matching the arguments
     */
    public function getSettings($groups = null, $flag = null)
    {
        return $this->getFiltered($this->settings, $groups, $flag);
    }
    /**
     * Returns the internal list of cachable settings emitted by the processed check.
     *
     * @param string $groups group names of settings to return
     * @param integer $flag flag value the settings should belong to
     *
     * @return array of ISetting implementing instances matching the arguments
     */
    public function getCachableSettings($groups = null, $flag = null)
    {
        return $this->getFiltered($this->cachable_settings, $groups, $flag);
    }
    /**
     * Return all settings or the settings of the specified groups as an array.
     *
     * @param string $groups group names of settings to return
     * @param integer $flag flag value the settings should belong to
     *
     * @return array all settings (for the specified groups); empty array if groups don't exist.
     */
    public function getSettingsAsArray($groups = null, $flag = null)
    {
        return $this->getFilteredAsArray($this->settings, $groups, $flag);
    }
    /**
     * Return all cachable settings or the cachable settings of the specified groups as an array.
     *
     * @param string $groups group names of cachable settings to return
     * @param integer $flag flag value the settings should belong to
     *
     * @return array all cachable settings (for the specified groups); empty array if groups don't exist.
     */
    public function getCachableSettingsAsArray($groups = null, $flag = null)
    {
        return $this->getFilteredAsArray($this->cachable_settings, $groups, $flag);
    }
    /**
     * Sets the status of the current result (which may be of interest for the later export and cache writing).
     *
     * @param string $status one of the constants from IResult (like IResult::SUCCESS or IResult::FAIL)
     *
     * @return Result this instance for fluent API support
     */
    public function setStatus($status = self::INVALID)
    {
        $this->status = $status;
        return $this;
    }
    /**
     * Returns the current status of this result (usually one of the IResult::SUCCESS or IResult::FAIL constants).
     *
     * @return string status of this result instance
     */
    public function getStatus()
    {
        return $this->status;
    }
    /**
     * Sets the check instance this result belongs to.
     *
     * @param \Environaut\Checks\ICheck $check check this result belongs to
     *
     * @return Result this instance for fluent API support
     */
    public function setCheck(ICheck $check)
    {
        $this->check = $check;
        return $this;
    }
    /**
     * Returns the check instance this result belongs to.
     *
     * @return \Environaut\Checks\ICheck check instance this result belongs to
     */
    public function getCheck()
    {
        return $this->check;
    }
    /**
     * Returns all settings from the given array that match the groups and flag.
     *
     * @param array $all_settings array of ISetting implementing classes
     * @param string $groups group names of settings to return
     * @param integer $flag flag value the settings should belong to
     *
     * @return array of entries from all_settings that match the given groups and flag
     */
    protected function getFiltered(array $all_settings = array(), $groups = null, $flag = null)
    {
        $settings = array();
        foreach ($all_settings as $setting) {
            if ($setting->matchesGroup($groups) && $setting->matchesFlag($flag)) {
                $settings[] = $setting;
            }
        }
        return $settings;
    }
    /**
     * Returns all or just the matching settings of the given groups as an associative array.
     *
     * @param array $all_settings array of ISetting implementing setting instances
     * @param string $group name of group to filter given settings for
     * @param integer $flag flag value the setting must be matching
     *
     * @return array with associative arrays (for each setting)
     */
    protected function getFilteredAsArray(array $all_settings, $groups = null, $flag = null)
    {
        $settings = array();
        foreach ($all_settings as $setting) {
            if ($setting->matchesGroup($groups) && $setting->matchesFlag($flag)) {
                $settings[] = $setting->toArray();
            }
        }
        return $settings;
    }
}