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
|
@ -35,6 +35,15 @@
|
||||||
*/
|
*/
|
||||||
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
|
||||||
*
|
*
|
||||||
|
@ -105,6 +114,14 @@ class PHPExcel_DocumentProperties
|
||||||
*/
|
*/
|
||||||
private $_company;
|
private $_company;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom Properties
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private $_customProperties = array();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new PHPExcel_DocumentProperties
|
* Create a new PHPExcel_DocumentProperties
|
||||||
*/
|
*/
|
||||||
|
@ -350,6 +367,87 @@ class PHPExcel_DocumentProperties
|
||||||
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.
Loading…
Reference in New Issue