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
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_DocumentSecurity
31: *
32: * @category PHPExcel
33: * @package PHPExcel
34: * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35: */
36: class PHPExcel_DocumentSecurity
37: {
38: /**
39: * LockRevision
40: *
41: * @var boolean
42: */
43: private $_lockRevision;
44:
45: /**
46: * LockStructure
47: *
48: * @var boolean
49: */
50: private $_lockStructure;
51:
52: /**
53: * LockWindows
54: *
55: * @var boolean
56: */
57: private $_lockWindows;
58:
59: /**
60: * RevisionsPassword
61: *
62: * @var string
63: */
64: private $_revisionsPassword;
65:
66: /**
67: * WorkbookPassword
68: *
69: * @var string
70: */
71: private $_workbookPassword;
72:
73: /**
74: * Create a new PHPExcel_DocumentSecurity
75: */
76: public function __construct()
77: {
78: // Initialise values
79: $this->_lockRevision = false;
80: $this->_lockStructure = false;
81: $this->_lockWindows = false;
82: $this->_revisionsPassword = '';
83: $this->_workbookPassword = '';
84: }
85:
86: /**
87: * Is some sort of dcument security enabled?
88: *
89: * @return boolean
90: */
91: function isSecurityEnabled() {
92: return $this->_lockRevision ||
93: $this->_lockStructure ||
94: $this->_lockWindows;
95: }
96:
97: /**
98: * Get LockRevision
99: *
100: * @return boolean
101: */
102: function getLockRevision() {
103: return $this->_lockRevision;
104: }
105:
106: /**
107: * Set LockRevision
108: *
109: * @param boolean $pValue
110: * @return PHPExcel_DocumentSecurity
111: */
112: function setLockRevision($pValue = false) {
113: $this->_lockRevision = $pValue;
114: return $this;
115: }
116:
117: /**
118: * Get LockStructure
119: *
120: * @return boolean
121: */
122: function getLockStructure() {
123: return $this->_lockStructure;
124: }
125:
126: /**
127: * Set LockStructure
128: *
129: * @param boolean $pValue
130: * @return PHPExcel_DocumentSecurity
131: */
132: function setLockStructure($pValue = false) {
133: $this->_lockStructure = $pValue;
134: return $this;
135: }
136:
137: /**
138: * Get LockWindows
139: *
140: * @return boolean
141: */
142: function getLockWindows() {
143: return $this->_lockWindows;
144: }
145:
146: /**
147: * Set LockWindows
148: *
149: * @param boolean $pValue
150: * @return PHPExcel_DocumentSecurity
151: */
152: function setLockWindows($pValue = false) {
153: $this->_lockWindows = $pValue;
154: return $this;
155: }
156:
157: /**
158: * Get RevisionsPassword (hashed)
159: *
160: * @return string
161: */
162: function getRevisionsPassword() {
163: return $this->_revisionsPassword;
164: }
165:
166: /**
167: * Set RevisionsPassword
168: *
169: * @param string $pValue
170: * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true
171: * @return PHPExcel_DocumentSecurity
172: */
173: function setRevisionsPassword($pValue = '', $pAlreadyHashed = false) {
174: if (!$pAlreadyHashed) {
175: $pValue = PHPExcel_Shared_PasswordHasher::hashPassword($pValue);
176: }
177: $this->_revisionsPassword = $pValue;
178: return $this;
179: }
180:
181: /**
182: * Get WorkbookPassword (hashed)
183: *
184: * @return string
185: */
186: function getWorkbookPassword() {
187: return $this->_workbookPassword;
188: }
189:
190: /**
191: * Set WorkbookPassword
192: *
193: * @param string $pValue
194: * @param boolean $pAlreadyHashed If the password has already been hashed, set this to true
195: * @return PHPExcel_DocumentSecurity
196: */
197: function setWorkbookPassword($pValue = '', $pAlreadyHashed = false) {
198: if (!$pAlreadyHashed) {
199: $pValue = PHPExcel_Shared_PasswordHasher::hashPassword($pValue);
200: }
201: $this->_workbookPassword = $pValue;
202: return $this;
203: }
204:
205: /**
206: * Implement PHP __clone to create a deep clone, not just a shallow copy.
207: */
208: public function __clone() {
209: $vars = get_object_vars($this);
210: foreach ($vars as $key => $value) {
211: if (is_object($value)) {
212: $this->$key = clone $value;
213: } else {
214: $this->$key = $value;
215: }
216: }
217: }
218: }
219: