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:
Mark Baker 2010-09-07 08:01:29 +00:00
parent 58289351c2
commit e2d16bb98a
2 changed files with 273 additions and 64 deletions

View File

@ -1,110 +1,127 @@
<?php <?php
/** /**
* PHPExcel * PHPExcel
* *
* Copyright (c) 2006 - 2010 PHPExcel * Copyright (c) 2006 - 2010 PHPExcel
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version. * 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, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* *
* @category PHPExcel * @category PHPExcel
* @package PHPExcel * @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/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 * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE## * @version ##VERSION##, ##DATE##
*/ */
/** /**
* PHPExcel_DocumentProperties * PHPExcel_DocumentProperties
* *
* @category PHPExcel * @category PHPExcel
* @package PHPExcel * @package PHPExcel
* @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel) * @copyright Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
*/ */
class PHPExcel_DocumentProperties 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 * Creator
* *
* @var string * @var string
*/ */
private $_creator; private $_creator;
/** /**
* LastModifiedBy * LastModifiedBy
* *
* @var string * @var string
*/ */
private $_lastModifiedBy; private $_lastModifiedBy;
/** /**
* Created * Created
* *
* @var datetime * @var datetime
*/ */
private $_created; private $_created;
/** /**
* Modified * Modified
* *
* @var datetime * @var datetime
*/ */
private $_modified; private $_modified;
/** /**
* Title * Title
* *
* @var string * @var string
*/ */
private $_title; private $_title;
/** /**
* Description * Description
* *
* @var string * @var string
*/ */
private $_description; private $_description;
/** /**
* Subject * Subject
* *
* @var string * @var string
*/ */
private $_subject; private $_subject;
/** /**
* Keywords * Keywords
* *
* @var string * @var string
*/ */
private $_keywords; private $_keywords;
/** /**
* Category * Category
* *
* @var string * @var string
*/ */
private $_category; private $_category;
/** /**
* Company * Company
* *
* @var string * @var string
*/ */
private $_company; private $_company;
/**
* Custom Properties
*
* @var string
*/
private $_customProperties = array();
/** /**
* Create a new PHPExcel_DocumentProperties * Create a new PHPExcel_DocumentProperties
*/ */
@ -127,7 +144,7 @@ class PHPExcel_DocumentProperties
/** /**
* Get Creator * Get Creator
* *
* @return string * @return string
*/ */
public function getCreator() { public function getCreator() {
return $this->_creator; return $this->_creator;
@ -136,8 +153,8 @@ class PHPExcel_DocumentProperties
/** /**
* Set Creator * Set Creator
* *
* @param string $pValue * @param string $pValue
* @return PHPExcel_DocumentProperties * @return PHPExcel_DocumentProperties
*/ */
public function setCreator($pValue = '') { public function setCreator($pValue = '') {
$this->_creator = $pValue; $this->_creator = $pValue;
@ -147,7 +164,7 @@ class PHPExcel_DocumentProperties
/** /**
* Get Last Modified By * Get Last Modified By
* *
* @return string * @return string
*/ */
public function getLastModifiedBy() { public function getLastModifiedBy() {
return $this->_lastModifiedBy; return $this->_lastModifiedBy;
@ -156,8 +173,8 @@ class PHPExcel_DocumentProperties
/** /**
* Set Last Modified By * Set Last Modified By
* *
* @param string $pValue * @param string $pValue
* @return PHPExcel_DocumentProperties * @return PHPExcel_DocumentProperties
*/ */
public function setLastModifiedBy($pValue = '') { public function setLastModifiedBy($pValue = '') {
$this->_lastModifiedBy = $pValue; $this->_lastModifiedBy = $pValue;
@ -167,7 +184,7 @@ class PHPExcel_DocumentProperties
/** /**
* Get Created * Get Created
* *
* @return datetime * @return datetime
*/ */
public function getCreated() { public function getCreated() {
return $this->_created; return $this->_created;
@ -176,8 +193,8 @@ class PHPExcel_DocumentProperties
/** /**
* Set Created * Set Created
* *
* @param datetime $pValue * @param datetime $pValue
* @return PHPExcel_DocumentProperties * @return PHPExcel_DocumentProperties
*/ */
public function setCreated($pValue = null) { public function setCreated($pValue = null) {
if (is_null($pValue)) { if (is_null($pValue)) {
@ -190,7 +207,7 @@ class PHPExcel_DocumentProperties
/** /**
* Get Modified * Get Modified
* *
* @return datetime * @return datetime
*/ */
public function getModified() { public function getModified() {
return $this->_modified; return $this->_modified;
@ -199,8 +216,8 @@ class PHPExcel_DocumentProperties
/** /**
* Set Modified * Set Modified
* *
* @param datetime $pValue * @param datetime $pValue
* @return PHPExcel_DocumentProperties * @return PHPExcel_DocumentProperties
*/ */
public function setModified($pValue = null) { public function setModified($pValue = null) {
if (is_null($pValue)) { if (is_null($pValue)) {
@ -213,7 +230,7 @@ class PHPExcel_DocumentProperties
/** /**
* Get Title * Get Title
* *
* @return string * @return string
*/ */
public function getTitle() { public function getTitle() {
return $this->_title; return $this->_title;
@ -222,8 +239,8 @@ class PHPExcel_DocumentProperties
/** /**
* Set Title * Set Title
* *
* @param string $pValue * @param string $pValue
* @return PHPExcel_DocumentProperties * @return PHPExcel_DocumentProperties
*/ */
public function setTitle($pValue = '') { public function setTitle($pValue = '') {
$this->_title = $pValue; $this->_title = $pValue;
@ -233,7 +250,7 @@ class PHPExcel_DocumentProperties
/** /**
* Get Description * Get Description
* *
* @return string * @return string
*/ */
public function getDescription() { public function getDescription() {
return $this->_description; return $this->_description;
@ -242,8 +259,8 @@ class PHPExcel_DocumentProperties
/** /**
* Set Description * Set Description
* *
* @param string $pValue * @param string $pValue
* @return PHPExcel_DocumentProperties * @return PHPExcel_DocumentProperties
*/ */
public function setDescription($pValue = '') { public function setDescription($pValue = '') {
$this->_description = $pValue; $this->_description = $pValue;
@ -253,7 +270,7 @@ class PHPExcel_DocumentProperties
/** /**
* Get Subject * Get Subject
* *
* @return string * @return string
*/ */
public function getSubject() { public function getSubject() {
return $this->_subject; return $this->_subject;
@ -262,8 +279,8 @@ class PHPExcel_DocumentProperties
/** /**
* Set Subject * Set Subject
* *
* @param string $pValue * @param string $pValue
* @return PHPExcel_DocumentProperties * @return PHPExcel_DocumentProperties
*/ */
public function setSubject($pValue = '') { public function setSubject($pValue = '') {
$this->_subject = $pValue; $this->_subject = $pValue;
@ -273,7 +290,7 @@ class PHPExcel_DocumentProperties
/** /**
* Get Keywords * Get Keywords
* *
* @return string * @return string
*/ */
public function getKeywords() { public function getKeywords() {
return $this->_keywords; return $this->_keywords;
@ -282,8 +299,8 @@ class PHPExcel_DocumentProperties
/** /**
* Set Keywords * Set Keywords
* *
* @param string $pValue * @param string $pValue
* @return PHPExcel_DocumentProperties * @return PHPExcel_DocumentProperties
*/ */
public function setKeywords($pValue = '') { public function setKeywords($pValue = '') {
$this->_keywords = $pValue; $this->_keywords = $pValue;
@ -293,7 +310,7 @@ class PHPExcel_DocumentProperties
/** /**
* Get Category * Get Category
* *
* @return string * @return string
*/ */
public function getCategory() { public function getCategory() {
return $this->_category; return $this->_category;
@ -302,8 +319,8 @@ class PHPExcel_DocumentProperties
/** /**
* Set Category * Set Category
* *
* @param string $pValue * @param string $pValue
* @return PHPExcel_DocumentProperties * @return PHPExcel_DocumentProperties
*/ */
public function setCategory($pValue = '') { public function setCategory($pValue = '') {
$this->_category = $pValue; $this->_category = $pValue;
@ -313,7 +330,7 @@ class PHPExcel_DocumentProperties
/** /**
* Get Company * Get Company
* *
* @return string * @return string
*/ */
public function getCompany() { public function getCompany() {
return $this->_company; return $this->_company;
@ -322,8 +339,8 @@ class PHPExcel_DocumentProperties
/** /**
* Set Company * Set Company
* *
* @param string $pValue * @param string $pValue
* @return PHPExcel_DocumentProperties * @return PHPExcel_DocumentProperties
*/ */
public function setCompany($pValue = '') { public function setCompany($pValue = '') {
$this->_company = $pValue; $this->_company = $pValue;
@ -333,7 +350,7 @@ class PHPExcel_DocumentProperties
/** /**
* Get Manager * Get Manager
* *
* @return string * @return string
*/ */
public function getManager() { public function getManager() {
return $this->_manager; return $this->_manager;
@ -342,14 +359,95 @@ class PHPExcel_DocumentProperties
/** /**
* Set Manager * Set Manager
* *
* @param string $pValue * @param string $pValue
* @return PHPExcel_DocumentProperties * @return PHPExcel_DocumentProperties
*/ */
public function setManager($pValue = '') { public function setManager($pValue = '') {
$this->_manager = $pValue; $this->_manager = $pValue;
return $this; 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. * 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.