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