5 * Copyright (c) 2006 - 2014 PHPExcel
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 * @package PHPExcel_Worksheet
23 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
24 * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
25 * @version ##VERSION##, ##DATE##
30 * PHPExcel_Worksheet_Protection
33 * @package PHPExcel_Worksheet
34 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
36 class PHPExcel_Worksheet_Protection
43 private $_sheet = false;
50 private $_objects = false;
57 private $_scenarios = false;
64 private $_formatCells = false;
71 private $_formatColumns = false;
78 private $_formatRows = false;
85 private $_insertColumns = false;
92 private $_insertRows = false;
99 private $_insertHyperlinks = false;
106 private $_deleteColumns = false;
113 private $_deleteRows = false;
116 * Select locked cells
120 private $_selectLockedCells = false;
127 private $_sort = false;
134 private $_autoFilter = false;
141 private $_pivotTables = false;
144 * Select unlocked cells
148 private $_selectUnlockedCells = false;
155 private $_password = '';
158 * Create a new PHPExcel_Worksheet_Protection
160 public function __construct()
165 * Is some sort of protection enabled?
169 function isProtectionEnabled() {
170 return $this->_sheet ||
173 $this->_formatCells ||
174 $this->_formatColumns ||
175 $this->_formatRows ||
176 $this->_insertColumns ||
177 $this->_insertRows ||
178 $this->_insertHyperlinks ||
179 $this->_deleteColumns ||
180 $this->_deleteRows ||
181 $this->_selectLockedCells ||
183 $this->_autoFilter ||
184 $this->_pivotTables ||
185 $this->_selectUnlockedCells
;
193 function getSheet() {
194 return $this->_sheet
;
200 * @param boolean $pValue
201 * @return PHPExcel_Worksheet_Protection
203 function setSheet($pValue = false) {
204 $this->_sheet
= $pValue;
213 function getObjects() {
214 return $this->_objects
;
220 * @param boolean $pValue
221 * @return PHPExcel_Worksheet_Protection
223 function setObjects($pValue = false) {
224 $this->_objects
= $pValue;
233 function getScenarios() {
234 return $this->_scenarios
;
240 * @param boolean $pValue
241 * @return PHPExcel_Worksheet_Protection
243 function setScenarios($pValue = false) {
244 $this->_scenarios
= $pValue;
253 function getFormatCells() {
254 return $this->_formatCells
;
260 * @param boolean $pValue
261 * @return PHPExcel_Worksheet_Protection
263 function setFormatCells($pValue = false) {
264 $this->_formatCells
= $pValue;
273 function getFormatColumns() {
274 return $this->_formatColumns
;
280 * @param boolean $pValue
281 * @return PHPExcel_Worksheet_Protection
283 function setFormatColumns($pValue = false) {
284 $this->_formatColumns
= $pValue;
293 function getFormatRows() {
294 return $this->_formatRows
;
300 * @param boolean $pValue
301 * @return PHPExcel_Worksheet_Protection
303 function setFormatRows($pValue = false) {
304 $this->_formatRows
= $pValue;
313 function getInsertColumns() {
314 return $this->_insertColumns
;
320 * @param boolean $pValue
321 * @return PHPExcel_Worksheet_Protection
323 function setInsertColumns($pValue = false) {
324 $this->_insertColumns
= $pValue;
333 function getInsertRows() {
334 return $this->_insertRows
;
340 * @param boolean $pValue
341 * @return PHPExcel_Worksheet_Protection
343 function setInsertRows($pValue = false) {
344 $this->_insertRows
= $pValue;
349 * Get InsertHyperlinks
353 function getInsertHyperlinks() {
354 return $this->_insertHyperlinks
;
358 * Set InsertHyperlinks
360 * @param boolean $pValue
361 * @return PHPExcel_Worksheet_Protection
363 function setInsertHyperlinks($pValue = false) {
364 $this->_insertHyperlinks
= $pValue;
373 function getDeleteColumns() {
374 return $this->_deleteColumns
;
380 * @param boolean $pValue
381 * @return PHPExcel_Worksheet_Protection
383 function setDeleteColumns($pValue = false) {
384 $this->_deleteColumns
= $pValue;
393 function getDeleteRows() {
394 return $this->_deleteRows
;
400 * @param boolean $pValue
401 * @return PHPExcel_Worksheet_Protection
403 function setDeleteRows($pValue = false) {
404 $this->_deleteRows
= $pValue;
409 * Get SelectLockedCells
413 function getSelectLockedCells() {
414 return $this->_selectLockedCells
;
418 * Set SelectLockedCells
420 * @param boolean $pValue
421 * @return PHPExcel_Worksheet_Protection
423 function setSelectLockedCells($pValue = false) {
424 $this->_selectLockedCells
= $pValue;
440 * @param boolean $pValue
441 * @return PHPExcel_Worksheet_Protection
443 function setSort($pValue = false) {
444 $this->_sort
= $pValue;
453 function getAutoFilter() {
454 return $this->_autoFilter
;
460 * @param boolean $pValue
461 * @return PHPExcel_Worksheet_Protection
463 function setAutoFilter($pValue = false) {
464 $this->_autoFilter
= $pValue;
473 function getPivotTables() {
474 return $this->_pivotTables
;
480 * @param boolean $pValue
481 * @return PHPExcel_Worksheet_Protection
483 function setPivotTables($pValue = false) {
484 $this->_pivotTables
= $pValue;
489 * Get SelectUnlockedCells
493 function getSelectUnlockedCells() {
494 return $this->_selectUnlockedCells
;
498 * Set SelectUnlockedCells
500 * @param boolean $pValue
501 * @return PHPExcel_Worksheet_Protection
503 function setSelectUnlockedCells($pValue = false) {
504 $this->_selectUnlockedCells
= $pValue;
509 * Get Password (hashed)
513 function getPassword() {
514 return $this->_password
;
520 * @param string $pValue
521 * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true
522 * @return PHPExcel_Worksheet_Protection
524 function setPassword($pValue = '', $pAlreadyHashed = false) {
525 if (!$pAlreadyHashed) {
526 $pValue = PHPExcel_Shared_PasswordHasher
::hashPassword($pValue);
528 $this->_password
= $pValue;
533 * Implement PHP __clone to create a deep clone, not just a shallow copy.
535 public function __clone() {
536 $vars = get_object_vars($this);
537 foreach ($vars as $key => $value) {
538 if (is_object($value)) {
539 $this->$key = clone $value;
541 $this->$key = $value;