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\Worksheet;
   4  
   5  use PhpOffice\PhpSpreadsheet\Shared\PasswordHasher;
   6  
   7  class Protection
   8  {
   9      /**
  10       * Sheet.
  11       *
  12       * @var bool
  13       */
  14      private $sheet = false;
  15  
  16      /**
  17       * Objects.
  18       *
  19       * @var bool
  20       */
  21      private $objects = false;
  22  
  23      /**
  24       * Scenarios.
  25       *
  26       * @var bool
  27       */
  28      private $scenarios = false;
  29  
  30      /**
  31       * Format cells.
  32       *
  33       * @var bool
  34       */
  35      private $formatCells = false;
  36  
  37      /**
  38       * Format columns.
  39       *
  40       * @var bool
  41       */
  42      private $formatColumns = false;
  43  
  44      /**
  45       * Format rows.
  46       *
  47       * @var bool
  48       */
  49      private $formatRows = false;
  50  
  51      /**
  52       * Insert columns.
  53       *
  54       * @var bool
  55       */
  56      private $insertColumns = false;
  57  
  58      /**
  59       * Insert rows.
  60       *
  61       * @var bool
  62       */
  63      private $insertRows = false;
  64  
  65      /**
  66       * Insert hyperlinks.
  67       *
  68       * @var bool
  69       */
  70      private $insertHyperlinks = false;
  71  
  72      /**
  73       * Delete columns.
  74       *
  75       * @var bool
  76       */
  77      private $deleteColumns = false;
  78  
  79      /**
  80       * Delete rows.
  81       *
  82       * @var bool
  83       */
  84      private $deleteRows = false;
  85  
  86      /**
  87       * Select locked cells.
  88       *
  89       * @var bool
  90       */
  91      private $selectLockedCells = false;
  92  
  93      /**
  94       * Sort.
  95       *
  96       * @var bool
  97       */
  98      private $sort = false;
  99  
 100      /**
 101       * AutoFilter.
 102       *
 103       * @var bool
 104       */
 105      private $autoFilter = false;
 106  
 107      /**
 108       * Pivot tables.
 109       *
 110       * @var bool
 111       */
 112      private $pivotTables = false;
 113  
 114      /**
 115       * Select unlocked cells.
 116       *
 117       * @var bool
 118       */
 119      private $selectUnlockedCells = false;
 120  
 121      /**
 122       * Password.
 123       *
 124       * @var string
 125       */
 126      private $password = '';
 127  
 128      /**
 129       * Create a new Protection.
 130       */
 131      public function __construct()
 132      {
 133      }
 134  
 135      /**
 136       * Is some sort of protection enabled?
 137       *
 138       * @return bool
 139       */
 140      public function isProtectionEnabled()
 141      {
 142          return $this->sheet ||
 143              $this->objects ||
 144              $this->scenarios ||
 145              $this->formatCells ||
 146              $this->formatColumns ||
 147              $this->formatRows ||
 148              $this->insertColumns ||
 149              $this->insertRows ||
 150              $this->insertHyperlinks ||
 151              $this->deleteColumns ||
 152              $this->deleteRows ||
 153              $this->selectLockedCells ||
 154              $this->sort ||
 155              $this->autoFilter ||
 156              $this->pivotTables ||
 157              $this->selectUnlockedCells;
 158      }
 159  
 160      /**
 161       * Get Sheet.
 162       *
 163       * @return bool
 164       */
 165      public function getSheet()
 166      {
 167          return $this->sheet;
 168      }
 169  
 170      /**
 171       * Set Sheet.
 172       *
 173       * @param bool $pValue
 174       *
 175       * @return Protection
 176       */
 177      public function setSheet($pValue)
 178      {
 179          $this->sheet = $pValue;
 180  
 181          return $this;
 182      }
 183  
 184      /**
 185       * Get Objects.
 186       *
 187       * @return bool
 188       */
 189      public function getObjects()
 190      {
 191          return $this->objects;
 192      }
 193  
 194      /**
 195       * Set Objects.
 196       *
 197       * @param bool $pValue
 198       *
 199       * @return Protection
 200       */
 201      public function setObjects($pValue)
 202      {
 203          $this->objects = $pValue;
 204  
 205          return $this;
 206      }
 207  
 208      /**
 209       * Get Scenarios.
 210       *
 211       * @return bool
 212       */
 213      public function getScenarios()
 214      {
 215          return $this->scenarios;
 216      }
 217  
 218      /**
 219       * Set Scenarios.
 220       *
 221       * @param bool $pValue
 222       *
 223       * @return Protection
 224       */
 225      public function setScenarios($pValue)
 226      {
 227          $this->scenarios = $pValue;
 228  
 229          return $this;
 230      }
 231  
 232      /**
 233       * Get FormatCells.
 234       *
 235       * @return bool
 236       */
 237      public function getFormatCells()
 238      {
 239          return $this->formatCells;
 240      }
 241  
 242      /**
 243       * Set FormatCells.
 244       *
 245       * @param bool $pValue
 246       *
 247       * @return Protection
 248       */
 249      public function setFormatCells($pValue)
 250      {
 251          $this->formatCells = $pValue;
 252  
 253          return $this;
 254      }
 255  
 256      /**
 257       * Get FormatColumns.
 258       *
 259       * @return bool
 260       */
 261      public function getFormatColumns()
 262      {
 263          return $this->formatColumns;
 264      }
 265  
 266      /**
 267       * Set FormatColumns.
 268       *
 269       * @param bool $pValue
 270       *
 271       * @return Protection
 272       */
 273      public function setFormatColumns($pValue)
 274      {
 275          $this->formatColumns = $pValue;
 276  
 277          return $this;
 278      }
 279  
 280      /**
 281       * Get FormatRows.
 282       *
 283       * @return bool
 284       */
 285      public function getFormatRows()
 286      {
 287          return $this->formatRows;
 288      }
 289  
 290      /**
 291       * Set FormatRows.
 292       *
 293       * @param bool $pValue
 294       *
 295       * @return Protection
 296       */
 297      public function setFormatRows($pValue)
 298      {
 299          $this->formatRows = $pValue;
 300  
 301          return $this;
 302      }
 303  
 304      /**
 305       * Get InsertColumns.
 306       *
 307       * @return bool
 308       */
 309      public function getInsertColumns()
 310      {
 311          return $this->insertColumns;
 312      }
 313  
 314      /**
 315       * Set InsertColumns.
 316       *
 317       * @param bool $pValue
 318       *
 319       * @return Protection
 320       */
 321      public function setInsertColumns($pValue)
 322      {
 323          $this->insertColumns = $pValue;
 324  
 325          return $this;
 326      }
 327  
 328      /**
 329       * Get InsertRows.
 330       *
 331       * @return bool
 332       */
 333      public function getInsertRows()
 334      {
 335          return $this->insertRows;
 336      }
 337  
 338      /**
 339       * Set InsertRows.
 340       *
 341       * @param bool $pValue
 342       *
 343       * @return Protection
 344       */
 345      public function setInsertRows($pValue)
 346      {
 347          $this->insertRows = $pValue;
 348  
 349          return $this;
 350      }
 351  
 352      /**
 353       * Get InsertHyperlinks.
 354       *
 355       * @return bool
 356       */
 357      public function getInsertHyperlinks()
 358      {
 359          return $this->insertHyperlinks;
 360      }
 361  
 362      /**
 363       * Set InsertHyperlinks.
 364       *
 365       * @param bool $pValue
 366       *
 367       * @return Protection
 368       */
 369      public function setInsertHyperlinks($pValue)
 370      {
 371          $this->insertHyperlinks = $pValue;
 372  
 373          return $this;
 374      }
 375  
 376      /**
 377       * Get DeleteColumns.
 378       *
 379       * @return bool
 380       */
 381      public function getDeleteColumns()
 382      {
 383          return $this->deleteColumns;
 384      }
 385  
 386      /**
 387       * Set DeleteColumns.
 388       *
 389       * @param bool $pValue
 390       *
 391       * @return Protection
 392       */
 393      public function setDeleteColumns($pValue)
 394      {
 395          $this->deleteColumns = $pValue;
 396  
 397          return $this;
 398      }
 399  
 400      /**
 401       * Get DeleteRows.
 402       *
 403       * @return bool
 404       */
 405      public function getDeleteRows()
 406      {
 407          return $this->deleteRows;
 408      }
 409  
 410      /**
 411       * Set DeleteRows.
 412       *
 413       * @param bool $pValue
 414       *
 415       * @return Protection
 416       */
 417      public function setDeleteRows($pValue)
 418      {
 419          $this->deleteRows = $pValue;
 420  
 421          return $this;
 422      }
 423  
 424      /**
 425       * Get SelectLockedCells.
 426       *
 427       * @return bool
 428       */
 429      public function getSelectLockedCells()
 430      {
 431          return $this->selectLockedCells;
 432      }
 433  
 434      /**
 435       * Set SelectLockedCells.
 436       *
 437       * @param bool $pValue
 438       *
 439       * @return Protection
 440       */
 441      public function setSelectLockedCells($pValue)
 442      {
 443          $this->selectLockedCells = $pValue;
 444  
 445          return $this;
 446      }
 447  
 448      /**
 449       * Get Sort.
 450       *
 451       * @return bool
 452       */
 453      public function getSort()
 454      {
 455          return $this->sort;
 456      }
 457  
 458      /**
 459       * Set Sort.
 460       *
 461       * @param bool $pValue
 462       *
 463       * @return Protection
 464       */
 465      public function setSort($pValue)
 466      {
 467          $this->sort = $pValue;
 468  
 469          return $this;
 470      }
 471  
 472      /**
 473       * Get AutoFilter.
 474       *
 475       * @return bool
 476       */
 477      public function getAutoFilter()
 478      {
 479          return $this->autoFilter;
 480      }
 481  
 482      /**
 483       * Set AutoFilter.
 484       *
 485       * @param bool $pValue
 486       *
 487       * @return Protection
 488       */
 489      public function setAutoFilter($pValue)
 490      {
 491          $this->autoFilter = $pValue;
 492  
 493          return $this;
 494      }
 495  
 496      /**
 497       * Get PivotTables.
 498       *
 499       * @return bool
 500       */
 501      public function getPivotTables()
 502      {
 503          return $this->pivotTables;
 504      }
 505  
 506      /**
 507       * Set PivotTables.
 508       *
 509       * @param bool $pValue
 510       *
 511       * @return Protection
 512       */
 513      public function setPivotTables($pValue)
 514      {
 515          $this->pivotTables = $pValue;
 516  
 517          return $this;
 518      }
 519  
 520      /**
 521       * Get SelectUnlockedCells.
 522       *
 523       * @return bool
 524       */
 525      public function getSelectUnlockedCells()
 526      {
 527          return $this->selectUnlockedCells;
 528      }
 529  
 530      /**
 531       * Set SelectUnlockedCells.
 532       *
 533       * @param bool $pValue
 534       *
 535       * @return Protection
 536       */
 537      public function setSelectUnlockedCells($pValue)
 538      {
 539          $this->selectUnlockedCells = $pValue;
 540  
 541          return $this;
 542      }
 543  
 544      /**
 545       * Get Password (hashed).
 546       *
 547       * @return string
 548       */
 549      public function getPassword()
 550      {
 551          return $this->password;
 552      }
 553  
 554      /**
 555       * Set Password.
 556       *
 557       * @param string $pValue
 558       * @param bool $pAlreadyHashed If the password has already been hashed, set this to true
 559       *
 560       * @return Protection
 561       */
 562      public function setPassword($pValue, $pAlreadyHashed = false)
 563      {
 564          if (!$pAlreadyHashed) {
 565              $pValue = PasswordHasher::hashPassword($pValue);
 566          }
 567          $this->password = $pValue;
 568  
 569          return $this;
 570      }
 571  
 572      /**
 573       * Implement PHP __clone to create a deep clone, not just a shallow copy.
 574       */
 575      public function __clone()
 576      {
 577          $vars = get_object_vars($this);
 578          foreach ($vars as $key => $value) {
 579              if (is_object($value)) {
 580                  $this->$key = clone $value;
 581              } else {
 582                  $this->$key = $value;
 583              }
 584          }
 585      }
 586  }