Rev 2388 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** PHPExcel** Copyright (c) 2006 - 2013 PHPExcel** This library is free software; you can redistribute it and/or* modify it under the terms of the GNU Lesser General Public* License as published by the Free Software Foundation; either* version 2.1 of the License, or (at your option) any later version.** This library is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU* Lesser General Public License for more details.** You should have received a copy of the GNU Lesser General Public* License along with this library; if not, write to the Free Software* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA** @category PHPExcel* @package PHPExcel* @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel)* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL* @version ##VERSION##, ##DATE##*//*** PHPExcel_DocumentProperties** @category PHPExcel* @package PHPExcel* @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel)*/class PHPExcel_DocumentProperties{/** constants */const PROPERTY_TYPE_BOOLEAN = 'b';const PROPERTY_TYPE_INTEGER = 'i';const PROPERTY_TYPE_FLOAT = 'f';const PROPERTY_TYPE_DATE = 'd';const PROPERTY_TYPE_STRING = 's';const PROPERTY_TYPE_UNKNOWN = 'u';/*** Creator** @var string*/private $_creator = 'Unknown Creator';/*** LastModifiedBy** @var string*/private $_lastModifiedBy;/*** Created** @var datetime*/private $_created;/*** Modified** @var datetime*/private $_modified;/*** Title** @var string*/private $_title = 'Untitled Spreadsheet';/*** Description** @var string*/private $_description = '';/*** Subject** @var string*/private $_subject = '';/*** Keywords** @var string*/private $_keywords = '';/*** Category** @var string*/private $_category = '';/*** Manager** @var string*/private $_manager = '';/*** Company** @var string*/private $_company = 'Microsoft Corporation';/*** Custom Properties** @var string*/private $_customProperties = array();/*** Create a new PHPExcel_DocumentProperties*/public function __construct(){// Initialise values$this->_lastModifiedBy = $this->_creator;$this->_created = time();$this->_modified = time();}/*** Get Creator** @return string*/public function getCreator() {return $this->_creator;}/*** Set Creator** @param string $pValue* @return PHPExcel_DocumentProperties*/public function setCreator($pValue = '') {$this->_creator = $pValue;return $this;}/*** Get Last Modified By** @return string*/public function getLastModifiedBy() {return $this->_lastModifiedBy;}/*** Set Last Modified By** @param string $pValue* @return PHPExcel_DocumentProperties*/public function setLastModifiedBy($pValue = '') {$this->_lastModifiedBy = $pValue;return $this;}/*** Get Created** @return datetime*/public function getCreated() {return $this->_created;}/*** Set Created** @param datetime $pValue* @return PHPExcel_DocumentProperties*/public function setCreated($pValue = null) {if ($pValue === NULL) {$pValue = time();} elseif (is_string($pValue)) {if (is_numeric($pValue)) {$pValue = intval($pValue);} else {$pValue = strtotime($pValue);}}$this->_created = $pValue;return $this;}/*** Get Modified** @return datetime*/public function getModified() {return $this->_modified;}/*** Set Modified** @param datetime $pValue* @return PHPExcel_DocumentProperties*/public function setModified($pValue = null) {if ($pValue === NULL) {$pValue = time();} elseif (is_string($pValue)) {if (is_numeric($pValue)) {$pValue = intval($pValue);} else {$pValue = strtotime($pValue);}}$this->_modified = $pValue;return $this;}/*** Get Title** @return string*/public function getTitle() {return $this->_title;}/*** Set Title** @param string $pValue* @return PHPExcel_DocumentProperties*/public function setTitle($pValue = '') {$this->_title = $pValue;return $this;}/*** Get Description** @return string*/public function getDescription() {return $this->_description;}/*** Set Description** @param string $pValue* @return PHPExcel_DocumentProperties*/public function setDescription($pValue = '') {$this->_description = $pValue;return $this;}/*** Get Subject** @return string*/public function getSubject() {return $this->_subject;}/*** Set Subject** @param string $pValue* @return PHPExcel_DocumentProperties*/public function setSubject($pValue = '') {$this->_subject = $pValue;return $this;}/*** Get Keywords** @return string*/public function getKeywords() {return $this->_keywords;}/*** Set Keywords** @param string $pValue* @return PHPExcel_DocumentProperties*/public function setKeywords($pValue = '') {$this->_keywords = $pValue;return $this;}/*** Get Category** @return string*/public function getCategory() {return $this->_category;}/*** Set Category** @param string $pValue* @return PHPExcel_DocumentProperties*/public function setCategory($pValue = '') {$this->_category = $pValue;return $this;}/*** Get Company** @return string*/public function getCompany() {return $this->_company;}/*** Set Company** @param string $pValue* @return PHPExcel_DocumentProperties*/public function setCompany($pValue = '') {$this->_company = $pValue;return $this;}/*** Get Manager** @return string*/public function getManager() {return $this->_manager;}/*** Set Manager** @param string $pValue* @return PHPExcel_DocumentProperties*/public function setManager($pValue = '') {$this->_manager = $pValue;return $this;}/*** Get a List of Custom Property Names** @return array of string*/public function getCustomProperties() {return array_keys($this->_customProperties);}/*** Check if a Custom Property is defined** @param string $propertyName* @return boolean*/public function isCustomPropertySet($propertyName) {return isset($this->_customProperties[$propertyName]);}/*** Get a Custom Property Value** @param string $propertyName* @return string*/public function getCustomPropertyValue($propertyName) {if (isset($this->_customProperties[$propertyName])) {return $this->_customProperties[$propertyName]['value'];}}/*** Get a Custom Property Type** @param string $propertyName* @return string*/public function getCustomPropertyType($propertyName) {if (isset($this->_customProperties[$propertyName])) {return $this->_customProperties[$propertyName]['type'];}}/*** Set a Custom Property** @param string $propertyName* @param mixed $propertyValue* @param string $propertyType* 'i' : Integer* 'f' : Floating Point* 's' : String* 'd' : Date/Time* 'b' : Boolean* @return PHPExcel_DocumentProperties*/public function setCustomProperty($propertyName,$propertyValue='',$propertyType=NULL) {if (($propertyType === NULL) || (!in_array($propertyType,array(self::PROPERTY_TYPE_INTEGER,self::PROPERTY_TYPE_FLOAT,self::PROPERTY_TYPE_STRING,self::PROPERTY_TYPE_DATE,self::PROPERTY_TYPE_BOOLEAN)))) {if ($propertyValue === NULL) {$propertyType = self::PROPERTY_TYPE_STRING;} elseif (is_float($propertyValue)) {$propertyType = self::PROPERTY_TYPE_FLOAT;} elseif(is_int($propertyValue)) {$propertyType = self::PROPERTY_TYPE_INTEGER;} elseif (is_bool($propertyValue)) {$propertyType = self::PROPERTY_TYPE_BOOLEAN;} else {$propertyType = self::PROPERTY_TYPE_STRING;}}$this->_customProperties[$propertyName] = array('value' => $propertyValue, 'type' => $propertyType);return $this;}/*** Implement PHP __clone to create a deep clone, not just a shallow copy.*/public function __clone() {$vars = get_object_vars($this);foreach ($vars as $key => $value) {if (is_object($value)) {$this->$key = clone $value;} else {$this->$key = $value;}}}public static function convertProperty($propertyValue,$propertyType) {switch ($propertyType) {case 'empty' : // Emptyreturn '';break;case 'null' : // Nullreturn NULL;break;case 'i1' : // 1-Byte Signed Integercase 'i2' : // 2-Byte Signed Integercase 'i4' : // 4-Byte Signed Integercase 'i8' : // 8-Byte Signed Integercase 'int' : // Integerreturn (int) $propertyValue;break;case 'ui1' : // 1-Byte Unsigned Integercase 'ui2' : // 2-Byte Unsigned Integercase 'ui4' : // 4-Byte Unsigned Integercase 'ui8' : // 8-Byte Unsigned Integercase 'uint' : // Unsigned Integerreturn abs((int) $propertyValue);break;case 'r4' : // 4-Byte Real Numbercase 'r8' : // 8-Byte Real Numbercase 'decimal' : // Decimalreturn (float) $propertyValue;break;case 'lpstr' : // LPSTRcase 'lpwstr' : // LPWSTRcase 'bstr' : // Basic Stringreturn $propertyValue;break;case 'date' : // Date and Timecase 'filetime' : // File Timereturn strtotime($propertyValue);break;case 'bool' : // Booleanreturn ($propertyValue == 'true') ? True : False;break;case 'cy' : // Currencycase 'error' : // Error Status Codecase 'vector' : // Vectorcase 'array' : // Arraycase 'blob' : // Binary Blobcase 'oblob' : // Binary Blob Objectcase 'stream' : // Binary Streamcase 'ostream' : // Binary Stream Objectcase 'storage' : // Binary Storagecase 'ostorage' : // Binary Storage Objectcase 'vstream' : // Binary Versioned Streamcase 'clsid' : // Class IDcase 'cf' : // Clipboard Datareturn $propertyValue;break;}return $propertyValue;}public static function convertPropertyType($propertyType) {switch ($propertyType) {case 'i1' : // 1-Byte Signed Integercase 'i2' : // 2-Byte Signed Integercase 'i4' : // 4-Byte Signed Integercase 'i8' : // 8-Byte Signed Integercase 'int' : // Integercase 'ui1' : // 1-Byte Unsigned Integercase 'ui2' : // 2-Byte Unsigned Integercase 'ui4' : // 4-Byte Unsigned Integercase 'ui8' : // 8-Byte Unsigned Integercase 'uint' : // Unsigned Integerreturn self::PROPERTY_TYPE_INTEGER;break;case 'r4' : // 4-Byte Real Numbercase 'r8' : // 8-Byte Real Numbercase 'decimal' : // Decimalreturn self::PROPERTY_TYPE_FLOAT;break;case 'empty' : // Emptycase 'null' : // Nullcase 'lpstr' : // LPSTRcase 'lpwstr' : // LPWSTRcase 'bstr' : // Basic Stringreturn self::PROPERTY_TYPE_STRING;break;case 'date' : // Date and Timecase 'filetime' : // File Timereturn self::PROPERTY_TYPE_DATE;break;case 'bool' : // Booleanreturn self::PROPERTY_TYPE_BOOLEAN;break;case 'cy' : // Currencycase 'error' : // Error Status Codecase 'vector' : // Vectorcase 'array' : // Arraycase 'blob' : // Binary Blobcase 'oblob' : // Binary Blob Objectcase 'stream' : // Binary Streamcase 'ostream' : // Binary Stream Objectcase 'storage' : // Binary Storagecase 'ostorage' : // Binary Storage Objectcase 'vstream' : // Binary Versioned Streamcase 'clsid' : // Class IDcase 'cf' : // Clipboard Datareturn self::PROPERTY_TYPE_UNKNOWN;break;}return self::PROPERTY_TYPE_UNKNOWN;}}