| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 | <?phpnamespace PhpOffice\PhpSpreadsheet\Style;use PhpOffice\PhpSpreadsheet\IComparable;class Conditional implements IComparable{    // Condition types    const CONDITION_NONE = 'none';    const CONDITION_CELLIS = 'cellIs';    const CONDITION_CONTAINSTEXT = 'containsText';    const CONDITION_EXPRESSION = 'expression';    const CONDITION_CONTAINSBLANKS = 'containsBlanks';    // Operator types    const OPERATOR_NONE = '';    const OPERATOR_BEGINSWITH = 'beginsWith';    const OPERATOR_ENDSWITH = 'endsWith';    const OPERATOR_EQUAL = 'equal';    const OPERATOR_GREATERTHAN = 'greaterThan';    const OPERATOR_GREATERTHANOREQUAL = 'greaterThanOrEqual';    const OPERATOR_LESSTHAN = 'lessThan';    const OPERATOR_LESSTHANOREQUAL = 'lessThanOrEqual';    const OPERATOR_NOTEQUAL = 'notEqual';    const OPERATOR_CONTAINSTEXT = 'containsText';    const OPERATOR_NOTCONTAINS = 'notContains';    const OPERATOR_BETWEEN = 'between';    /**     * Condition type.     *     * @var string     */    private $conditionType = self::CONDITION_NONE;    /**     * Operator type.     *     * @var string     */    private $operatorType = self::OPERATOR_NONE;    /**     * Text.     *     * @var string     */    private $text;    /**     * Stop on this condition, if it matches.     *     * @var bool     */    private $stopIfTrue = false;    /**     * Condition.     *     * @var string[]     */    private $condition = [];    /**     * Style.     *     * @var Style     */    private $style;    /**     * Create a new Conditional.     */    public function __construct()    {        // Initialise values        $this->style = new Style(false, true);    }    /**     * Get Condition type.     *     * @return string     */    public function getConditionType()    {        return $this->conditionType;    }    /**     * Set Condition type.     *     * @param string $pValue Condition type, see self::CONDITION_*     *     * @return Conditional     */    public function setConditionType($pValue)    {        $this->conditionType = $pValue;        return $this;    }    /**     * Get Operator type.     *     * @return string     */    public function getOperatorType()    {        return $this->operatorType;    }    /**     * Set Operator type.     *     * @param string $pValue Conditional operator type, see self::OPERATOR_*     *     * @return Conditional     */    public function setOperatorType($pValue)    {        $this->operatorType = $pValue;        return $this;    }    /**     * Get text.     *     * @return string     */    public function getText()    {        return $this->text;    }    /**     * Set text.     *     * @param string $value     *     * @return Conditional     */    public function setText($value)    {        $this->text = $value;        return $this;    }    /**     * Get StopIfTrue.     *     * @return bool     */    public function getStopIfTrue()    {        return $this->stopIfTrue;    }    /**     * Set StopIfTrue.     *     * @param bool $value     *     * @return Conditional     */    public function setStopIfTrue($value)    {        $this->stopIfTrue = $value;        return $this;    }    /**     * Get Conditions.     *     * @return string[]     */    public function getConditions()    {        return $this->condition;    }    /**     * Set Conditions.     *     * @param string[] $pValue Condition     *     * @return Conditional     */    public function setConditions($pValue)    {        if (!is_array($pValue)) {            $pValue = [$pValue];        }        $this->condition = $pValue;        return $this;    }    /**     * Add Condition.     *     * @param string $pValue Condition     *     * @return Conditional     */    public function addCondition($pValue)    {        $this->condition[] = $pValue;        return $this;    }    /**     * Get Style.     *     * @return Style     */    public function getStyle()    {        return $this->style;    }    /**     * Set Style.     *     * @param Style $pValue     *     * @return Conditional     */    public function setStyle(Style $pValue = null)    {        $this->style = $pValue;        return $this;    }    /**     * Get hash code.     *     * @return string Hash code     */    public function getHashCode()    {        return md5(            $this->conditionType .            $this->operatorType .            implode(';', $this->condition) .            $this->style->getHashCode() .            __CLASS__        );    }    /**     * Implement PHP __clone to create a deep clone, not just a shallow copy.     */    public function __clone()    {        $vars = get_object_vars($this);        foreach ($vars as $key => $value) {            if (is_object($value)) {                $this->$key = clone $value;            } else {                $this->$key = $value;            }        }    }}
 |