123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- <?php
- namespace 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;
- }
- }
- }
- }
|