diff --git a/Classes/PHPExcel/DocumentProperties.php b/Classes/PHPExcel/DocumentProperties.php index b43022c0..a3d5bdbb 100644 --- a/Classes/PHPExcel/DocumentProperties.php +++ b/Classes/PHPExcel/DocumentProperties.php @@ -1,110 +1,127 @@ _creator; @@ -136,8 +153,8 @@ class PHPExcel_DocumentProperties /** * Set Creator * - * @param string $pValue - * @return PHPExcel_DocumentProperties + * @param string $pValue + * @return PHPExcel_DocumentProperties */ public function setCreator($pValue = '') { $this->_creator = $pValue; @@ -147,7 +164,7 @@ class PHPExcel_DocumentProperties /** * Get Last Modified By * - * @return string + * @return string */ public function getLastModifiedBy() { return $this->_lastModifiedBy; @@ -156,8 +173,8 @@ class PHPExcel_DocumentProperties /** * Set Last Modified By * - * @param string $pValue - * @return PHPExcel_DocumentProperties + * @param string $pValue + * @return PHPExcel_DocumentProperties */ public function setLastModifiedBy($pValue = '') { $this->_lastModifiedBy = $pValue; @@ -167,7 +184,7 @@ class PHPExcel_DocumentProperties /** * Get Created * - * @return datetime + * @return datetime */ public function getCreated() { return $this->_created; @@ -176,8 +193,8 @@ class PHPExcel_DocumentProperties /** * Set Created * - * @param datetime $pValue - * @return PHPExcel_DocumentProperties + * @param datetime $pValue + * @return PHPExcel_DocumentProperties */ public function setCreated($pValue = null) { if (is_null($pValue)) { @@ -190,7 +207,7 @@ class PHPExcel_DocumentProperties /** * Get Modified * - * @return datetime + * @return datetime */ public function getModified() { return $this->_modified; @@ -199,8 +216,8 @@ class PHPExcel_DocumentProperties /** * Set Modified * - * @param datetime $pValue - * @return PHPExcel_DocumentProperties + * @param datetime $pValue + * @return PHPExcel_DocumentProperties */ public function setModified($pValue = null) { if (is_null($pValue)) { @@ -213,7 +230,7 @@ class PHPExcel_DocumentProperties /** * Get Title * - * @return string + * @return string */ public function getTitle() { return $this->_title; @@ -222,8 +239,8 @@ class PHPExcel_DocumentProperties /** * Set Title * - * @param string $pValue - * @return PHPExcel_DocumentProperties + * @param string $pValue + * @return PHPExcel_DocumentProperties */ public function setTitle($pValue = '') { $this->_title = $pValue; @@ -233,7 +250,7 @@ class PHPExcel_DocumentProperties /** * Get Description * - * @return string + * @return string */ public function getDescription() { return $this->_description; @@ -242,8 +259,8 @@ class PHPExcel_DocumentProperties /** * Set Description * - * @param string $pValue - * @return PHPExcel_DocumentProperties + * @param string $pValue + * @return PHPExcel_DocumentProperties */ public function setDescription($pValue = '') { $this->_description = $pValue; @@ -253,7 +270,7 @@ class PHPExcel_DocumentProperties /** * Get Subject * - * @return string + * @return string */ public function getSubject() { return $this->_subject; @@ -262,8 +279,8 @@ class PHPExcel_DocumentProperties /** * Set Subject * - * @param string $pValue - * @return PHPExcel_DocumentProperties + * @param string $pValue + * @return PHPExcel_DocumentProperties */ public function setSubject($pValue = '') { $this->_subject = $pValue; @@ -273,7 +290,7 @@ class PHPExcel_DocumentProperties /** * Get Keywords * - * @return string + * @return string */ public function getKeywords() { return $this->_keywords; @@ -282,8 +299,8 @@ class PHPExcel_DocumentProperties /** * Set Keywords * - * @param string $pValue - * @return PHPExcel_DocumentProperties + * @param string $pValue + * @return PHPExcel_DocumentProperties */ public function setKeywords($pValue = '') { $this->_keywords = $pValue; @@ -293,7 +310,7 @@ class PHPExcel_DocumentProperties /** * Get Category * - * @return string + * @return string */ public function getCategory() { return $this->_category; @@ -302,8 +319,8 @@ class PHPExcel_DocumentProperties /** * Set Category * - * @param string $pValue - * @return PHPExcel_DocumentProperties + * @param string $pValue + * @return PHPExcel_DocumentProperties */ public function setCategory($pValue = '') { $this->_category = $pValue; @@ -313,7 +330,7 @@ class PHPExcel_DocumentProperties /** * Get Company * - * @return string + * @return string */ public function getCompany() { return $this->_company; @@ -322,8 +339,8 @@ class PHPExcel_DocumentProperties /** * Set Company * - * @param string $pValue - * @return PHPExcel_DocumentProperties + * @param string $pValue + * @return PHPExcel_DocumentProperties */ public function setCompany($pValue = '') { $this->_company = $pValue; @@ -333,7 +350,7 @@ class PHPExcel_DocumentProperties /** * Get Manager * - * @return string + * @return string */ public function getManager() { return $this->_manager; @@ -342,14 +359,95 @@ class PHPExcel_DocumentProperties /** * Set Manager * - * @param string $pValue - * @return PHPExcel_DocumentProperties + * @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 ((is_null($propertyType)) || (!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 (is_null($propertyValue)) { + $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. */ @@ -363,4 +461,115 @@ class PHPExcel_DocumentProperties } } } + + public static function convertProperty($propertyValue,$propertyType) { + switch ($propertyType) { + case 'empty' : // Empty + return ''; + break; + case 'null' : // Null + return NULL; + break; + case 'i1' : // 1-Byte Signed Integer + case 'i2' : // 2-Byte Signed Integer + case 'i4' : // 4-Byte Signed Integer + case 'i8' : // 8-Byte Signed Integer + case 'int' : // Integer + return (int) $propertyValue; + break; + case 'ui1' : // 1-Byte Unsigned Integer + case 'ui2' : // 2-Byte Unsigned Integer + case 'ui4' : // 4-Byte Unsigned Integer + case 'ui8' : // 8-Byte Unsigned Integer + case 'uint' : // Unsigned Integer + return abs((int) $propertyValue); + break; + case 'r4' : // 4-Byte Real Number + case 'r8' : // 8-Byte Real Number + case 'decimal' : // Decimal + return (float) $propertyValue; + break; + case 'lpstr' : // LPSTR + case 'lpwstr' : // LPWSTR + case 'bstr' : // Basic String + return $propertyValue; + break; + case 'date' : // Date and Time + case 'filetime' : // File Time + return strtotime($propertyValue); + break; + case 'bool' : // Boolean + return ($propertyValue == 'true') ? True : False; + break; + case 'cy' : // Currency + case 'error' : // Error Status Code + case 'vector' : // Vector + case 'array' : // Array + case 'blob' : // Binary Blob + case 'oblob' : // Binary Blob Object + case 'stream' : // Binary Stream + case 'ostream' : // Binary Stream Object + case 'storage' : // Binary Storage + case 'ostorage' : // Binary Storage Object + case 'vstream' : // Binary Versioned Stream + case 'clsid' : // Class ID + case 'cf' : // Clipboard Data + return $propertyValue; + break; + } + return $propertyValue; + } + + public static function convertPropertyType($propertyType) { + switch ($propertyType) { + case 'i1' : // 1-Byte Signed Integer + case 'i2' : // 2-Byte Signed Integer + case 'i4' : // 4-Byte Signed Integer + case 'i8' : // 8-Byte Signed Integer + case 'int' : // Integer + case 'ui1' : // 1-Byte Unsigned Integer + case 'ui2' : // 2-Byte Unsigned Integer + case 'ui4' : // 4-Byte Unsigned Integer + case 'ui8' : // 8-Byte Unsigned Integer + case 'uint' : // Unsigned Integer + return self::PROPERTY_TYPE_INTEGER; + break; + case 'r4' : // 4-Byte Real Number + case 'r8' : // 8-Byte Real Number + case 'decimal' : // Decimal + return self::PROPERTY_TYPE_FLOAT; + break; + case 'empty' : // Empty + case 'null' : // Null + case 'lpstr' : // LPSTR + case 'lpwstr' : // LPWSTR + case 'bstr' : // Basic String + return self::PROPERTY_TYPE_STRING; + break; + case 'date' : // Date and Time + case 'filetime' : // File Time + return self::PROPERTY_TYPE_DATE; + break; + case 'bool' : // Boolean + return self::PROPERTY_TYPE_BOOLEAN; + break; + case 'cy' : // Currency + case 'error' : // Error Status Code + case 'vector' : // Vector + case 'array' : // Array + case 'blob' : // Binary Blob + case 'oblob' : // Binary Blob Object + case 'stream' : // Binary Stream + case 'ostream' : // Binary Stream Object + case 'storage' : // Binary Storage + case 'ostorage' : // Binary Storage Object + case 'vstream' : // Binary Versioned Stream + case 'clsid' : // Class ID + case 'cf' : // Clipboard Data + return self::PROPERTY_TYPE_UNKNOWN; + break; + } + return self::PROPERTY_TYPE_UNKNOWN; + } + } diff --git a/Tests/OOCalcTest.ods b/Tests/OOCalcTest.ods index b5d1d9f9..899425b6 100644 Binary files a/Tests/OOCalcTest.ods and b/Tests/OOCalcTest.ods differ