source: sourcecode/application/libraries/PHPExcel/DocumentProperties.php @ 1

Last change on this file since 1 was 1, checked in by dungnv, 11 years ago
File size: 15.5 KB
Line 
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_DocumentProperties
31 *
32 * @category    PHPExcel
33 * @package        PHPExcel
34 * @copyright    Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35 */
36class PHPExcel_DocumentProperties
37{
38    /** constants */
39    const PROPERTY_TYPE_BOOLEAN = 'b';
40    const PROPERTY_TYPE_INTEGER = 'i';
41    const PROPERTY_TYPE_FLOAT   = 'f';
42    const PROPERTY_TYPE_DATE    = 'd';
43    const PROPERTY_TYPE_STRING  = 's';
44    const PROPERTY_TYPE_UNKNOWN = 'u';
45
46    /**
47     * Creator
48     *
49     * @var string
50     */
51    private $_creator    = 'Unknown Creator';
52
53    /**
54     * LastModifiedBy
55     *
56     * @var string
57     */
58    private $_lastModifiedBy;
59
60    /**
61     * Created
62     *
63     * @var datetime
64     */
65    private $_created;
66
67    /**
68     * Modified
69     *
70     * @var datetime
71     */
72    private $_modified;
73
74    /**
75     * Title
76     *
77     * @var string
78     */
79    private $_title            = 'Untitled Spreadsheet';
80
81    /**
82     * Description
83     *
84     * @var string
85     */
86    private $_description    = '';
87
88    /**
89     * Subject
90     *
91     * @var string
92     */
93    private $_subject        = '';
94
95    /**
96     * Keywords
97     *
98     * @var string
99     */
100    private $_keywords        = '';
101
102    /**
103     * Category
104     *
105     * @var string
106     */
107    private $_category        = '';
108
109    /**
110     * Manager
111     *
112     * @var string
113     */
114    private $_manager        = '';
115
116    /**
117     * Company
118     *
119     * @var string
120     */
121    private $_company        = 'Microsoft Corporation';
122
123    /**
124     * Custom Properties
125     *
126     * @var string
127     */
128    private $_customProperties    = array();
129
130
131    /**
132     * Create a new PHPExcel_DocumentProperties
133     */
134    public function __construct()
135    {
136        // Initialise values
137        $this->_lastModifiedBy    = $this->_creator;
138        $this->_created        = time();
139        $this->_modified    = time();
140    }
141
142    /**
143     * Get Creator
144     *
145     * @return string
146     */
147    public function getCreator() {
148        return $this->_creator;
149    }
150
151    /**
152     * Set Creator
153     *
154     * @param string $pValue
155     * @return PHPExcel_DocumentProperties
156     */
157    public function setCreator($pValue = '') {
158        $this->_creator = $pValue;
159        return $this;
160    }
161
162    /**
163     * Get Last Modified By
164     *
165     * @return string
166     */
167    public function getLastModifiedBy() {
168        return $this->_lastModifiedBy;
169    }
170
171    /**
172     * Set Last Modified By
173     *
174     * @param string $pValue
175     * @return PHPExcel_DocumentProperties
176     */
177    public function setLastModifiedBy($pValue = '') {
178        $this->_lastModifiedBy = $pValue;
179        return $this;
180    }
181
182    /**
183     * Get Created
184     *
185     * @return datetime
186     */
187    public function getCreated() {
188        return $this->_created;
189    }
190
191    /**
192     * Set Created
193     *
194     * @param datetime $pValue
195     * @return PHPExcel_DocumentProperties
196     */
197    public function setCreated($pValue = null) {
198        if ($pValue === NULL) {
199            $pValue = time();
200        } elseif (is_string($pValue)) {
201            if (is_numeric($pValue)) {
202                $pValue = intval($pValue);
203            } else {
204                $pValue = strtotime($pValue);
205            }
206        }
207
208        $this->_created = $pValue;
209        return $this;
210    }
211
212    /**
213     * Get Modified
214     *
215     * @return datetime
216     */
217    public function getModified() {
218        return $this->_modified;
219    }
220
221    /**
222     * Set Modified
223     *
224     * @param datetime $pValue
225     * @return PHPExcel_DocumentProperties
226     */
227    public function setModified($pValue = null) {
228        if ($pValue === NULL) {
229            $pValue = time();
230        } elseif (is_string($pValue)) {
231            if (is_numeric($pValue)) {
232                $pValue = intval($pValue);
233            } else {
234                $pValue = strtotime($pValue);
235            }
236        }
237
238        $this->_modified = $pValue;
239        return $this;
240    }
241
242    /**
243     * Get Title
244     *
245     * @return string
246     */
247    public function getTitle() {
248        return $this->_title;
249    }
250
251    /**
252     * Set Title
253     *
254     * @param string $pValue
255     * @return PHPExcel_DocumentProperties
256     */
257    public function setTitle($pValue = '') {
258        $this->_title = $pValue;
259        return $this;
260    }
261
262    /**
263     * Get Description
264     *
265     * @return string
266     */
267    public function getDescription() {
268        return $this->_description;
269    }
270
271    /**
272     * Set Description
273     *
274     * @param string $pValue
275     * @return PHPExcel_DocumentProperties
276     */
277    public function setDescription($pValue = '') {
278        $this->_description = $pValue;
279        return $this;
280    }
281
282    /**
283     * Get Subject
284     *
285     * @return string
286     */
287    public function getSubject() {
288        return $this->_subject;
289    }
290
291    /**
292     * Set Subject
293     *
294     * @param string $pValue
295     * @return PHPExcel_DocumentProperties
296     */
297    public function setSubject($pValue = '') {
298        $this->_subject = $pValue;
299        return $this;
300    }
301
302    /**
303     * Get Keywords
304     *
305     * @return string
306     */
307    public function getKeywords() {
308        return $this->_keywords;
309    }
310
311    /**
312     * Set Keywords
313     *
314     * @param string $pValue
315     * @return PHPExcel_DocumentProperties
316     */
317    public function setKeywords($pValue = '') {
318        $this->_keywords = $pValue;
319        return $this;
320    }
321
322    /**
323     * Get Category
324     *
325     * @return string
326     */
327    public function getCategory() {
328        return $this->_category;
329    }
330
331    /**
332     * Set Category
333     *
334     * @param string $pValue
335     * @return PHPExcel_DocumentProperties
336     */
337    public function setCategory($pValue = '') {
338        $this->_category = $pValue;
339        return $this;
340    }
341
342    /**
343     * Get Company
344     *
345     * @return string
346     */
347    public function getCompany() {
348        return $this->_company;
349    }
350
351    /**
352     * Set Company
353     *
354     * @param string $pValue
355     * @return PHPExcel_DocumentProperties
356     */
357    public function setCompany($pValue = '') {
358        $this->_company = $pValue;
359        return $this;
360    }
361
362    /**
363     * Get Manager
364     *
365     * @return string
366     */
367    public function getManager() {
368        return $this->_manager;
369    }
370
371    /**
372     * Set Manager
373     *
374     * @param string $pValue
375     * @return PHPExcel_DocumentProperties
376     */
377    public function setManager($pValue = '') {
378        $this->_manager = $pValue;
379        return $this;
380    }
381
382    /**
383     * Get a List of Custom Property Names
384     *
385     * @return array of string
386     */
387    public function getCustomProperties() {
388        return array_keys($this->_customProperties);
389    }
390
391    /**
392     * Check if a Custom Property is defined
393     *
394     * @param string $propertyName
395     * @return boolean
396     */
397    public function isCustomPropertySet($propertyName) {
398        return isset($this->_customProperties[$propertyName]);
399    }
400
401    /**
402     * Get a Custom Property Value
403     *
404     * @param string $propertyName
405     * @return string
406     */
407    public function getCustomPropertyValue($propertyName) {
408        if (isset($this->_customProperties[$propertyName])) {
409            return $this->_customProperties[$propertyName]['value'];
410        }
411
412    }
413
414    /**
415     * Get a Custom Property Type
416     *
417     * @param string $propertyName
418     * @return string
419     */
420    public function getCustomPropertyType($propertyName) {
421        if (isset($this->_customProperties[$propertyName])) {
422            return $this->_customProperties[$propertyName]['type'];
423        }
424
425    }
426
427    /**
428     * Set a Custom Property
429     *
430     * @param string $propertyName
431     * @param mixed $propertyValue
432     * @param string $propertyType
433     *   'i'    : Integer
434     *   'f' : Floating Point
435     *   's' : String
436     *   'd' : Date/Time
437     *   'b' : Boolean
438     * @return PHPExcel_DocumentProperties
439     */
440    public function setCustomProperty($propertyName,$propertyValue='',$propertyType=NULL) {
441        if (($propertyType === NULL) || (!in_array($propertyType,array(self::PROPERTY_TYPE_INTEGER,
442                                                                       self::PROPERTY_TYPE_FLOAT,
443                                                                       self::PROPERTY_TYPE_STRING,
444                                                                       self::PROPERTY_TYPE_DATE,
445                                                                       self::PROPERTY_TYPE_BOOLEAN)))) {
446            if ($propertyValue === NULL) {
447                $propertyType = self::PROPERTY_TYPE_STRING;
448            } elseif (is_float($propertyValue)) {
449                $propertyType = self::PROPERTY_TYPE_FLOAT;
450            } elseif(is_int($propertyValue)) {
451                $propertyType = self::PROPERTY_TYPE_INTEGER;
452            } elseif (is_bool($propertyValue)) {
453                $propertyType = self::PROPERTY_TYPE_BOOLEAN;
454            } else {
455                $propertyType = self::PROPERTY_TYPE_STRING;
456            }
457        }
458
459        $this->_customProperties[$propertyName] = array('value' => $propertyValue, 'type' => $propertyType);
460        return $this;
461    }
462
463    /**
464     * Implement PHP __clone to create a deep clone, not just a shallow copy.
465     */
466    public function __clone() {
467        $vars = get_object_vars($this);
468        foreach ($vars as $key => $value) {
469            if (is_object($value)) {
470                $this->$key = clone $value;
471            } else {
472                $this->$key = $value;
473            }
474        }
475    }
476
477    public static function convertProperty($propertyValue,$propertyType) {
478        switch ($propertyType) {
479            case 'empty'    :    //    Empty
480                return '';
481                break;
482            case 'null'        :    //    Null
483                return NULL;
484                break;
485            case 'i1'        :    //    1-Byte Signed Integer
486            case 'i2'        :    //    2-Byte Signed Integer
487            case 'i4'        :    //    4-Byte Signed Integer
488            case 'i8'        :    //    8-Byte Signed Integer
489            case 'int'        :    //    Integer
490                return (int) $propertyValue;
491                break;
492            case 'ui1'        :    //    1-Byte Unsigned Integer
493            case 'ui2'        :    //    2-Byte Unsigned Integer
494            case 'ui4'        :    //    4-Byte Unsigned Integer
495            case 'ui8'        :    //    8-Byte Unsigned Integer
496            case 'uint'        :    //    Unsigned Integer
497                return abs((int) $propertyValue);
498                break;
499            case 'r4'        :    //    4-Byte Real Number
500            case 'r8'        :    //    8-Byte Real Number
501            case 'decimal'    :    //    Decimal
502                return (float) $propertyValue;
503                break;
504            case 'lpstr'    :    //    LPSTR
505            case 'lpwstr'    :    //    LPWSTR
506            case 'bstr'        :    //    Basic String
507                return $propertyValue;
508                break;
509            case 'date'        :    //    Date and Time
510            case 'filetime'    :    //    File Time
511                return strtotime($propertyValue);
512                break;
513            case 'bool'        :    //    Boolean
514                return ($propertyValue == 'true') ? True : False;
515                break;
516            case 'cy'        :    //    Currency
517            case 'error'    :    //    Error Status Code
518            case 'vector'    :    //    Vector
519            case 'array'    :    //    Array
520            case 'blob'        :    //    Binary Blob
521            case 'oblob'    :    //    Binary Blob Object
522            case 'stream'    :    //    Binary Stream
523            case 'ostream'    :    //    Binary Stream Object
524            case 'storage'    :    //    Binary Storage
525            case 'ostorage'    :    //    Binary Storage Object
526            case 'vstream'    :    //    Binary Versioned Stream
527            case 'clsid'    :    //    Class ID
528            case 'cf'        :    //    Clipboard Data
529                return $propertyValue;
530                break;
531        }
532        return $propertyValue;
533    }
534
535    public static function convertPropertyType($propertyType) {
536        switch ($propertyType) {
537            case 'i1'        :    //    1-Byte Signed Integer
538            case 'i2'        :    //    2-Byte Signed Integer
539            case 'i4'        :    //    4-Byte Signed Integer
540            case 'i8'        :    //    8-Byte Signed Integer
541            case 'int'        :    //    Integer
542            case 'ui1'        :    //    1-Byte Unsigned Integer
543            case 'ui2'        :    //    2-Byte Unsigned Integer
544            case 'ui4'        :    //    4-Byte Unsigned Integer
545            case 'ui8'        :    //    8-Byte Unsigned Integer
546            case 'uint'        :    //    Unsigned Integer
547                return self::PROPERTY_TYPE_INTEGER;
548                break;
549            case 'r4'        :    //    4-Byte Real Number
550            case 'r8'        :    //    8-Byte Real Number
551            case 'decimal'    :    //    Decimal
552                return self::PROPERTY_TYPE_FLOAT;
553                break;
554            case 'empty'    :    //    Empty
555            case 'null'        :    //    Null
556            case 'lpstr'    :    //    LPSTR
557            case 'lpwstr'    :    //    LPWSTR
558            case 'bstr'        :    //    Basic String
559                return self::PROPERTY_TYPE_STRING;
560                break;
561            case 'date'        :    //    Date and Time
562            case 'filetime'    :    //    File Time
563                return self::PROPERTY_TYPE_DATE;
564                break;
565            case 'bool'        :    //    Boolean
566                return self::PROPERTY_TYPE_BOOLEAN;
567                break;
568            case 'cy'        :    //    Currency
569            case 'error'    :    //    Error Status Code
570            case 'vector'    :    //    Vector
571            case 'array'    :    //    Array
572            case 'blob'        :    //    Binary Blob
573            case 'oblob'    :    //    Binary Blob Object
574            case 'stream'    :    //    Binary Stream
575            case 'ostream'    :    //    Binary Stream Object
576            case 'storage'    :    //    Binary Storage
577            case 'ostorage'    :    //    Binary Storage Object
578            case 'vstream'    :    //    Binary Versioned Stream
579            case 'clsid'    :    //    Class ID
580            case 'cf'        :    //    Clipboard Data
581                return self::PROPERTY_TYPE_UNKNOWN;
582                break;
583        }
584        return self::PROPERTY_TYPE_UNKNOWN;
585    }
586
587}
Note: See TracBrowser for help on using the repository browser.