Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.10.x will end 8 November 2021 (12 months).
  • Bug fixes for security issues in 3.10.x will end 9 May 2022 (18 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are supported too.

Differences Between: [Versions 310 and 311] [Versions 310 and 400] [Versions 310 and 401] [Versions 310 and 402] [Versions 310 and 403]

   1  <?php
   2  
   3  namespace PhpOffice\PhpSpreadsheet\Style;
   4  
   5  use PhpOffice\PhpSpreadsheet\IComparable;
   6  
   7  class Conditional implements IComparable
   8  {
   9      // Condition types
  10      const CONDITION_NONE = 'none';
  11      const CONDITION_CELLIS = 'cellIs';
  12      const CONDITION_CONTAINSTEXT = 'containsText';
  13      const CONDITION_EXPRESSION = 'expression';
  14      const CONDITION_CONTAINSBLANKS = 'containsBlanks';
  15  
  16      // Operator types
  17      const OPERATOR_NONE = '';
  18      const OPERATOR_BEGINSWITH = 'beginsWith';
  19      const OPERATOR_ENDSWITH = 'endsWith';
  20      const OPERATOR_EQUAL = 'equal';
  21      const OPERATOR_GREATERTHAN = 'greaterThan';
  22      const OPERATOR_GREATERTHANOREQUAL = 'greaterThanOrEqual';
  23      const OPERATOR_LESSTHAN = 'lessThan';
  24      const OPERATOR_LESSTHANOREQUAL = 'lessThanOrEqual';
  25      const OPERATOR_NOTEQUAL = 'notEqual';
  26      const OPERATOR_CONTAINSTEXT = 'containsText';
  27      const OPERATOR_NOTCONTAINS = 'notContains';
  28      const OPERATOR_BETWEEN = 'between';
  29  
  30      /**
  31       * Condition type.
  32       *
  33       * @var string
  34       */
  35      private $conditionType = self::CONDITION_NONE;
  36  
  37      /**
  38       * Operator type.
  39       *
  40       * @var string
  41       */
  42      private $operatorType = self::OPERATOR_NONE;
  43  
  44      /**
  45       * Text.
  46       *
  47       * @var string
  48       */
  49      private $text;
  50  
  51      /**
  52       * Stop on this condition, if it matches.
  53       *
  54       * @var bool
  55       */
  56      private $stopIfTrue = false;
  57  
  58      /**
  59       * Condition.
  60       *
  61       * @var string[]
  62       */
  63      private $condition = [];
  64  
  65      /**
  66       * Style.
  67       *
  68       * @var Style
  69       */
  70      private $style;
  71  
  72      /**
  73       * Create a new Conditional.
  74       */
  75      public function __construct()
  76      {
  77          // Initialise values
  78          $this->style = new Style(false, true);
  79      }
  80  
  81      /**
  82       * Get Condition type.
  83       *
  84       * @return string
  85       */
  86      public function getConditionType()
  87      {
  88          return $this->conditionType;
  89      }
  90  
  91      /**
  92       * Set Condition type.
  93       *
  94       * @param string $pValue Condition type, see self::CONDITION_*
  95       *
  96       * @return Conditional
  97       */
  98      public function setConditionType($pValue)
  99      {
 100          $this->conditionType = $pValue;
 101  
 102          return $this;
 103      }
 104  
 105      /**
 106       * Get Operator type.
 107       *
 108       * @return string
 109       */
 110      public function getOperatorType()
 111      {
 112          return $this->operatorType;
 113      }
 114  
 115      /**
 116       * Set Operator type.
 117       *
 118       * @param string $pValue Conditional operator type, see self::OPERATOR_*
 119       *
 120       * @return Conditional
 121       */
 122      public function setOperatorType($pValue)
 123      {
 124          $this->operatorType = $pValue;
 125  
 126          return $this;
 127      }
 128  
 129      /**
 130       * Get text.
 131       *
 132       * @return string
 133       */
 134      public function getText()
 135      {
 136          return $this->text;
 137      }
 138  
 139      /**
 140       * Set text.
 141       *
 142       * @param string $value
 143       *
 144       * @return Conditional
 145       */
 146      public function setText($value)
 147      {
 148          $this->text = $value;
 149  
 150          return $this;
 151      }
 152  
 153      /**
 154       * Get StopIfTrue.
 155       *
 156       * @return bool
 157       */
 158      public function getStopIfTrue()
 159      {
 160          return $this->stopIfTrue;
 161      }
 162  
 163      /**
 164       * Set StopIfTrue.
 165       *
 166       * @param bool $value
 167       *
 168       * @return Conditional
 169       */
 170      public function setStopIfTrue($value)
 171      {
 172          $this->stopIfTrue = $value;
 173  
 174          return $this;
 175      }
 176  
 177      /**
 178       * Get Conditions.
 179       *
 180       * @return string[]
 181       */
 182      public function getConditions()
 183      {
 184          return $this->condition;
 185      }
 186  
 187      /**
 188       * Set Conditions.
 189       *
 190       * @param string[] $pValue Condition
 191       *
 192       * @return Conditional
 193       */
 194      public function setConditions($pValue)
 195      {
 196          if (!is_array($pValue)) {
 197              $pValue = [$pValue];
 198          }
 199          $this->condition = $pValue;
 200  
 201          return $this;
 202      }
 203  
 204      /**
 205       * Add Condition.
 206       *
 207       * @param string $pValue Condition
 208       *
 209       * @return Conditional
 210       */
 211      public function addCondition($pValue)
 212      {
 213          $this->condition[] = $pValue;
 214  
 215          return $this;
 216      }
 217  
 218      /**
 219       * Get Style.
 220       *
 221       * @return Style
 222       */
 223      public function getStyle()
 224      {
 225          return $this->style;
 226      }
 227  
 228      /**
 229       * Set Style.
 230       *
 231       * @param Style $pValue
 232       *
 233       * @return Conditional
 234       */
 235      public function setStyle(Style $pValue = null)
 236      {
 237          $this->style = $pValue;
 238  
 239          return $this;
 240      }
 241  
 242      /**
 243       * Get hash code.
 244       *
 245       * @return string Hash code
 246       */
 247      public function getHashCode()
 248      {
 249          return md5(
 250              $this->conditionType .
 251              $this->operatorType .
 252              implode(';', $this->condition) .
 253              $this->style->getHashCode() .
 254              __CLASS__
 255          );
 256      }
 257  
 258      /**
 259       * Implement PHP __clone to create a deep clone, not just a shallow copy.
 260       */
 261      public function __clone()
 262      {
 263          $vars = get_object_vars($this);
 264          foreach ($vars as $key => $value) {
 265              if (is_object($value)) {
 266                  $this->$key = clone $value;
 267              } else {
 268                  $this->$key = $value;
 269              }
 270          }
 271      }
 272  }