 891981928d
			
		
	
	
		891981928d
		
	
	
	
	
		
			
			git-svn-id: https://phpexcel.svn.codeplex.com/svn/trunk@87638 2327b42d-5241-43d6-9e2a-de5ac946f064
		
			
				
	
	
		
			589 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			589 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * PHPExcel
 | |
|  *
 | |
|  * Copyright (c) 2006 - 2012 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 - 2012 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 - 2012 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'	:	//	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;
 | |
| 	}
 | |
| 
 | |
| }
 |