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_Style
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.4.5, 2007-08-23
26: */
27:
28:
29: /**
30: * PHPExcel_Style_Protection
31: *
32: * @category PHPExcel
33: * @package PHPExcel_Style
34: * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35: */
36: class PHPExcel_Style_Protection extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable
37: {
38: /** Protection styles */
39: const PROTECTION_INHERIT = 'inherit';
40: const PROTECTION_PROTECTED = 'protected';
41: const PROTECTION_UNPROTECTED = 'unprotected';
42:
43: /**
44: * Locked
45: *
46: * @var string
47: */
48: protected $_locked;
49:
50: /**
51: * Hidden
52: *
53: * @var string
54: */
55: protected $_hidden;
56:
57: /**
58: * Create a new PHPExcel_Style_Protection
59: *
60: * @param boolean $isSupervisor Flag indicating if this is a supervisor or not
61: * Leave this value at default unless you understand exactly what
62: * its ramifications are
63: * @param boolean $isConditional Flag indicating if this is a conditional style or not
64: * Leave this value at default unless you understand exactly what
65: * its ramifications are
66: */
67: public function __construct($isSupervisor = FALSE, $isConditional = FALSE)
68: {
69: // Supervisor?
70: parent::__construct($isSupervisor);
71:
72: // Initialise values
73: if (!$isConditional) {
74: $this->_locked = self::PROTECTION_INHERIT;
75: $this->_hidden = self::PROTECTION_INHERIT;
76: }
77: }
78:
79: /**
80: * Get the shared style component for the currently active cell in currently active sheet.
81: * Only used for style supervisor
82: *
83: * @return PHPExcel_Style_Protection
84: */
85: public function getSharedComponent()
86: {
87: return $this->_parent->getSharedComponent()->getProtection();
88: }
89:
90: /**
91: * Build style array from subcomponents
92: *
93: * @param array $array
94: * @return array
95: */
96: public function getStyleArray($array)
97: {
98: return array('protection' => $array);
99: }
100:
101: /**
102: * Apply styles from array
103: *
104: * <code>
105: * $objPHPExcel->getActiveSheet()->getStyle('B2')->getLocked()->applyFromArray(
106: * array(
107: * 'locked' => TRUE,
108: * 'hidden' => FALSE
109: * )
110: * );
111: * </code>
112: *
113: * @param array $pStyles Array containing style information
114: * @throws PHPExcel_Exception
115: * @return PHPExcel_Style_Protection
116: */
117: public function applyFromArray($pStyles = NULL) {
118: if (is_array($pStyles)) {
119: if ($this->_isSupervisor) {
120: $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles));
121: } else {
122: if (isset($pStyles['locked'])) {
123: $this->setLocked($pStyles['locked']);
124: }
125: if (isset($pStyles['hidden'])) {
126: $this->setHidden($pStyles['hidden']);
127: }
128: }
129: } else {
130: throw new PHPExcel_Exception("Invalid style array passed.");
131: }
132: return $this;
133: }
134:
135: /**
136: * Get locked
137: *
138: * @return string
139: */
140: public function getLocked() {
141: if ($this->_isSupervisor) {
142: return $this->getSharedComponent()->getLocked();
143: }
144: return $this->_locked;
145: }
146:
147: /**
148: * Set locked
149: *
150: * @param string $pValue
151: * @return PHPExcel_Style_Protection
152: */
153: public function setLocked($pValue = self::PROTECTION_INHERIT) {
154: if ($this->_isSupervisor) {
155: $styleArray = $this->getStyleArray(array('locked' => $pValue));
156: $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
157: } else {
158: $this->_locked = $pValue;
159: }
160: return $this;
161: }
162:
163: /**
164: * Get hidden
165: *
166: * @return string
167: */
168: public function getHidden() {
169: if ($this->_isSupervisor) {
170: return $this->getSharedComponent()->getHidden();
171: }
172: return $this->_hidden;
173: }
174:
175: /**
176: * Set hidden
177: *
178: * @param string $pValue
179: * @return PHPExcel_Style_Protection
180: */
181: public function setHidden($pValue = self::PROTECTION_INHERIT) {
182: if ($this->_isSupervisor) {
183: $styleArray = $this->getStyleArray(array('hidden' => $pValue));
184: $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
185: } else {
186: $this->_hidden = $pValue;
187: }
188: return $this;
189: }
190:
191: /**
192: * Get hash code
193: *
194: * @return string Hash code
195: */
196: public function getHashCode() {
197: if ($this->_isSupervisor) {
198: return $this->getSharedComponent()->getHashCode();
199: }
200: return md5(
201: $this->_locked
202: . $this->_hidden
203: . __CLASS__
204: );
205: }
206:
207: }
208: