sheet || $this->objects || $this->scenarios || $this->formatCells || $this->formatColumns || $this->formatRows || $this->insertColumns || $this->insertRows || $this->insertHyperlinks || $this->deleteColumns || $this->deleteRows || $this->selectLockedCells || $this->sort || $this->autoFilter || $this->pivotTables || $this->selectUnlockedCells; } /** * Get Sheet. * * @return bool */ public function getSheet() { return $this->sheet; } /** * Set Sheet. * * @param bool $pValue * * @return $this */ public function setSheet($pValue) { $this->sheet = $pValue; return $this; } /** * Get Objects. * * @return bool */ public function getObjects() { return $this->objects; } /** * Set Objects. * * @param bool $pValue * * @return $this */ public function setObjects($pValue) { $this->objects = $pValue; return $this; } /** * Get Scenarios. * * @return bool */ public function getScenarios() { return $this->scenarios; } /** * Set Scenarios. * * @param bool $pValue * * @return $this */ public function setScenarios($pValue) { $this->scenarios = $pValue; return $this; } /** * Get FormatCells. * * @return bool */ public function getFormatCells() { return $this->formatCells; } /** * Set FormatCells. * * @param bool $pValue * * @return $this */ public function setFormatCells($pValue) { $this->formatCells = $pValue; return $this; } /** * Get FormatColumns. * * @return bool */ public function getFormatColumns() { return $this->formatColumns; } /** * Set FormatColumns. * * @param bool $pValue * * @return $this */ public function setFormatColumns($pValue) { $this->formatColumns = $pValue; return $this; } /** * Get FormatRows. * * @return bool */ public function getFormatRows() { return $this->formatRows; } /** * Set FormatRows. * * @param bool $pValue * * @return $this */ public function setFormatRows($pValue) { $this->formatRows = $pValue; return $this; } /** * Get InsertColumns. * * @return bool */ public function getInsertColumns() { return $this->insertColumns; } /** * Set InsertColumns. * * @param bool $pValue * * @return $this */ public function setInsertColumns($pValue) { $this->insertColumns = $pValue; return $this; } /** * Get InsertRows. * * @return bool */ public function getInsertRows() { return $this->insertRows; } /** * Set InsertRows. * * @param bool $pValue * * @return $this */ public function setInsertRows($pValue) { $this->insertRows = $pValue; return $this; } /** * Get InsertHyperlinks. * * @return bool */ public function getInsertHyperlinks() { return $this->insertHyperlinks; } /** * Set InsertHyperlinks. * * @param bool $pValue * * @return $this */ public function setInsertHyperlinks($pValue) { $this->insertHyperlinks = $pValue; return $this; } /** * Get DeleteColumns. * * @return bool */ public function getDeleteColumns() { return $this->deleteColumns; } /** * Set DeleteColumns. * * @param bool $pValue * * @return $this */ public function setDeleteColumns($pValue) { $this->deleteColumns = $pValue; return $this; } /** * Get DeleteRows. * * @return bool */ public function getDeleteRows() { return $this->deleteRows; } /** * Set DeleteRows. * * @param bool $pValue * * @return $this */ public function setDeleteRows($pValue) { $this->deleteRows = $pValue; return $this; } /** * Get SelectLockedCells. * * @return bool */ public function getSelectLockedCells() { return $this->selectLockedCells; } /** * Set SelectLockedCells. * * @param bool $pValue * * @return $this */ public function setSelectLockedCells($pValue) { $this->selectLockedCells = $pValue; return $this; } /** * Get Sort. * * @return bool */ public function getSort() { return $this->sort; } /** * Set Sort. * * @param bool $pValue * * @return $this */ public function setSort($pValue) { $this->sort = $pValue; return $this; } /** * Get AutoFilter. * * @return bool */ public function getAutoFilter() { return $this->autoFilter; } /** * Set AutoFilter. * * @param bool $pValue * * @return $this */ public function setAutoFilter($pValue) { $this->autoFilter = $pValue; return $this; } /** * Get PivotTables. * * @return bool */ public function getPivotTables() { return $this->pivotTables; } /** * Set PivotTables. * * @param bool $pValue * * @return $this */ public function setPivotTables($pValue) { $this->pivotTables = $pValue; return $this; } /** * Get SelectUnlockedCells. * * @return bool */ public function getSelectUnlockedCells() { return $this->selectUnlockedCells; } /** * Set SelectUnlockedCells. * * @param bool $pValue * * @return $this */ public function setSelectUnlockedCells($pValue) { $this->selectUnlockedCells = $pValue; return $this; } /** * Get hashed password. * * @return string */ public function getPassword() { return $this->password; } /** * Set Password. * * @param string $pValue * @param bool $pAlreadyHashed If the password has already been hashed, set this to true * * @return $this */ public function setPassword($pValue, $pAlreadyHashed = false) { if (!$pAlreadyHashed) { $salt = $this->generateSalt(); $this->setSalt($salt); $pValue = PasswordHasher::hashPassword($pValue, $this->getAlgorithm(), $this->getSalt(), $this->getSpinCount()); } $this->password = $pValue; return $this; } /** * Create a pseudorandom string. */ private function generateSalt(): string { return base64_encode(random_bytes(16)); } /** * Get algorithm name. */ public function getAlgorithm(): string { return $this->algorithm; } /** * Set algorithm name. */ public function setAlgorithm(string $algorithm): void { $this->algorithm = $algorithm; } /** * Get salt value. */ public function getSalt(): string { return $this->salt; } /** * Set salt value. */ public function setSalt(string $salt): void { $this->salt = $salt; } /** * Get spin count. */ public function getSpinCount(): int { return $this->spinCount; } /** * Set spin count. */ public function setSpinCount(int $spinCount): void { $this->spinCount = $spinCount; } /** * Verify that the given non-hashed password can "unlock" the protection. */ public function verify(string $password): bool { if (!$this->isProtectionEnabled()) { return true; } $hash = PasswordHasher::hashPassword($password, $this->getAlgorithm(), $this->getSalt(), $this->getSpinCount()); return $this->getPassword() === $hash; } /** * 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; } } } }