Document Properties modified to support extended and custom properties
git-svn-id: https://phpexcel.svn.codeplex.com/svn/trunk@60510 2327b42d-5241-43d6-9e2a-de5ac946f064
This commit is contained in:
parent
58289351c2
commit
e2d16bb98a
|
@ -1,110 +1,127 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPExcel
|
||||
* PHPExcel
|
||||
*
|
||||
* Copyright (c) 2006 - 2010 PHPExcel
|
||||
* Copyright (c) 2006 - 2010 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 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.
|
||||
* 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
|
||||
* 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 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||
* @version ##VERSION##, ##DATE##
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel
|
||||
* @copyright Copyright (c) 2006 - 2010 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 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||
* @category PHPExcel
|
||||
* @package PHPExcel
|
||||
* @copyright Copyright (c) 2006 - 2010 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
|
||||
* @var string
|
||||
*/
|
||||
private $_creator;
|
||||
|
||||
/**
|
||||
* LastModifiedBy
|
||||
*
|
||||
* @var string
|
||||
* @var string
|
||||
*/
|
||||
private $_lastModifiedBy;
|
||||
|
||||
/**
|
||||
* Created
|
||||
*
|
||||
* @var datetime
|
||||
* @var datetime
|
||||
*/
|
||||
private $_created;
|
||||
|
||||
/**
|
||||
* Modified
|
||||
*
|
||||
* @var datetime
|
||||
* @var datetime
|
||||
*/
|
||||
private $_modified;
|
||||
|
||||
/**
|
||||
* Title
|
||||
*
|
||||
* @var string
|
||||
* @var string
|
||||
*/
|
||||
private $_title;
|
||||
|
||||
/**
|
||||
* Description
|
||||
*
|
||||
* @var string
|
||||
* @var string
|
||||
*/
|
||||
private $_description;
|
||||
|
||||
/**
|
||||
* Subject
|
||||
*
|
||||
* @var string
|
||||
* @var string
|
||||
*/
|
||||
private $_subject;
|
||||
|
||||
/**
|
||||
* Keywords
|
||||
*
|
||||
* @var string
|
||||
* @var string
|
||||
*/
|
||||
private $_keywords;
|
||||
|
||||
/**
|
||||
* Category
|
||||
*
|
||||
* @var string
|
||||
* @var string
|
||||
*/
|
||||
private $_category;
|
||||
|
||||
/**
|
||||
* Company
|
||||
*
|
||||
* @var string
|
||||
* @var string
|
||||
*/
|
||||
private $_company;
|
||||
|
||||
/**
|
||||
* Custom Properties
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $_customProperties = array();
|
||||
|
||||
|
||||
/**
|
||||
* Create a new PHPExcel_DocumentProperties
|
||||
*/
|
||||
|
@ -127,7 +144,7 @@ class PHPExcel_DocumentProperties
|
|||
/**
|
||||
* Get Creator
|
||||
*
|
||||
* @return string
|
||||
* @return string
|
||||
*/
|
||||
public function getCreator() {
|
||||
return $this->_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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue