PageRenderTime 23ms CodeModel.GetById 14ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/PHPExcel/Writer/Excel2007/DocProps.php

https://bitbucket.org/nfredricks/wp-employee-time
PHP | 272 lines | 130 code | 53 blank | 89 comment | 8 complexity | 0262d6f7529c6e249a41459a12c826e4 MD5 | raw file
  1<?php
  2/**
  3 * PHPExcel
  4 *
  5 * Copyright (c) 2006 - 2012 PHPExcel
  6 *
  7 * This library is free software; you can redistribute it and/or
  8 * modify it under the terms of the GNU Lesser General Public
  9 * License as published by the Free Software Foundation; either
 10 * version 2.1 of the License, or (at your option) any later version.
 11 *
 12 * This library is distributed in the hope that it will be useful,
 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 15 * Lesser General Public License for more details.
 16 *
 17 * You should have received a copy of the GNU Lesser General Public
 18 * License along with this library; if not, write to the Free Software
 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 20 *
 21 * @category   PHPExcel
 22 * @package    PHPExcel_Writer_Excel2007
 23 * @copyright  Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
 24 * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt	LGPL
 25 * @version    1.7.8, 2012-10-12
 26 */
 27
 28
 29/**
 30 * PHPExcel_Writer_Excel2007_DocProps
 31 *
 32 * @category   PHPExcel
 33 * @package    PHPExcel_Writer_Excel2007
 34 * @copyright  Copyright (c) 2006 - 2012 PHPExcel (http://www.codeplex.com/PHPExcel)
 35 */
 36class PHPExcel_Writer_Excel2007_DocProps extends PHPExcel_Writer_Excel2007_WriterPart
 37{
 38/**
 39	 * Write docProps/app.xml to XML format
 40	 *
 41	 * @param 	PHPExcel	$pPHPExcel
 42	 * @return 	string 		XML Output
 43	 * @throws 	Exception
 44	 */
 45	public function writeDocPropsApp(PHPExcel $pPHPExcel = null)
 46	{
 47		// Create XML writer
 48		$objWriter = null;
 49		if ($this->getParentWriter()->getUseDiskCaching()) {
 50			$objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
 51		} else {
 52			$objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
 53		}
 54
 55		// XML header
 56		$objWriter->startDocument('1.0','UTF-8','yes');
 57
 58		// Properties
 59		$objWriter->startElement('Properties');
 60			$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties');
 61			$objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes');
 62
 63			// Application
 64			$objWriter->writeElement('Application', 	'Microsoft Excel');
 65
 66			// DocSecurity
 67			$objWriter->writeElement('DocSecurity', 	'0');
 68
 69			// ScaleCrop
 70			$objWriter->writeElement('ScaleCrop', 		'false');
 71
 72			// HeadingPairs
 73			$objWriter->startElement('HeadingPairs');
 74
 75				// Vector
 76				$objWriter->startElement('vt:vector');
 77					$objWriter->writeAttribute('size', 		'2');
 78					$objWriter->writeAttribute('baseType', 	'variant');
 79
 80					// Variant
 81					$objWriter->startElement('vt:variant');
 82						$objWriter->writeElement('vt:lpstr', 	'Worksheets');
 83					$objWriter->endElement();
 84
 85					// Variant
 86					$objWriter->startElement('vt:variant');
 87						$objWriter->writeElement('vt:i4', 		$pPHPExcel->getSheetCount());
 88					$objWriter->endElement();
 89
 90				$objWriter->endElement();
 91
 92			$objWriter->endElement();
 93
 94			// TitlesOfParts
 95			$objWriter->startElement('TitlesOfParts');
 96
 97				// Vector
 98				$objWriter->startElement('vt:vector');
 99					$objWriter->writeAttribute('size', 		$pPHPExcel->getSheetCount());
100					$objWriter->writeAttribute('baseType',	'lpstr');
101
102					$sheetCount = $pPHPExcel->getSheetCount();
103					for ($i = 0; $i < $sheetCount; ++$i) {
104						$objWriter->writeElement('vt:lpstr', $pPHPExcel->getSheet($i)->getTitle());
105					}
106
107				$objWriter->endElement();
108
109			$objWriter->endElement();
110
111			// Company
112			$objWriter->writeElement('Company', 			$pPHPExcel->getProperties()->getCompany());
113
114			// Company
115			$objWriter->writeElement('Manager', 			$pPHPExcel->getProperties()->getManager());
116
117			// LinksUpToDate
118			$objWriter->writeElement('LinksUpToDate', 		'false');
119
120			// SharedDoc
121			$objWriter->writeElement('SharedDoc', 			'false');
122
123			// HyperlinksChanged
124			$objWriter->writeElement('HyperlinksChanged', 	'false');
125
126			// AppVersion
127			$objWriter->writeElement('AppVersion', 			'12.0000');
128
129		$objWriter->endElement();
130
131		// Return
132		return $objWriter->getData();
133	}
134
135	/**
136	 * Write docProps/core.xml to XML format
137	 *
138	 * @param 	PHPExcel	$pPHPExcel
139	 * @return 	string 		XML Output
140	 * @throws 	Exception
141	 */
142	public function writeDocPropsCore(PHPExcel $pPHPExcel = null)
143	{
144		// Create XML writer
145		$objWriter = null;
146		if ($this->getParentWriter()->getUseDiskCaching()) {
147			$objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
148		} else {
149			$objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
150		}
151
152		// XML header
153		$objWriter->startDocument('1.0','UTF-8','yes');
154
155		// cp:coreProperties
156		$objWriter->startElement('cp:coreProperties');
157			$objWriter->writeAttribute('xmlns:cp', 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties');
158			$objWriter->writeAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/');
159			$objWriter->writeAttribute('xmlns:dcterms', 'http://purl.org/dc/terms/');
160			$objWriter->writeAttribute('xmlns:dcmitype', 'http://purl.org/dc/dcmitype/');
161			$objWriter->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
162
163			// dc:creator
164			$objWriter->writeElement('dc:creator',			$pPHPExcel->getProperties()->getCreator());
165
166			// cp:lastModifiedBy
167			$objWriter->writeElement('cp:lastModifiedBy', 	$pPHPExcel->getProperties()->getLastModifiedBy());
168
169			// dcterms:created
170			$objWriter->startElement('dcterms:created');
171				$objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF');
172				$objWriter->writeRawData(date(DATE_W3C, 	$pPHPExcel->getProperties()->getCreated()));
173			$objWriter->endElement();
174
175			// dcterms:modified
176			$objWriter->startElement('dcterms:modified');
177				$objWriter->writeAttribute('xsi:type', 'dcterms:W3CDTF');
178				$objWriter->writeRawData(date(DATE_W3C, 	$pPHPExcel->getProperties()->getModified()));
179			$objWriter->endElement();
180
181			// dc:title
182			$objWriter->writeElement('dc:title', 			$pPHPExcel->getProperties()->getTitle());
183
184			// dc:description
185			$objWriter->writeElement('dc:description', 		$pPHPExcel->getProperties()->getDescription());
186
187			// dc:subject
188			$objWriter->writeElement('dc:subject', 			$pPHPExcel->getProperties()->getSubject());
189
190			// cp:keywords
191			$objWriter->writeElement('cp:keywords', 		$pPHPExcel->getProperties()->getKeywords());
192
193			// cp:category
194			$objWriter->writeElement('cp:category', 		$pPHPExcel->getProperties()->getCategory());
195
196		$objWriter->endElement();
197
198		// Return
199		return $objWriter->getData();
200	}
201
202	/**
203	 * Write docProps/custom.xml to XML format
204	 *
205	 * @param 	PHPExcel	$pPHPExcel
206	 * @return 	string 		XML Output
207	 * @throws 	Exception
208	 */
209	public function writeDocPropsCustom(PHPExcel $pPHPExcel = null)
210	{
211		$customPropertyList = $pPHPExcel->getProperties()->getCustomProperties();
212		if (empty($customPropertyList)) {
213			return;
214		}
215
216		// Create XML writer
217		$objWriter = null;
218		if ($this->getParentWriter()->getUseDiskCaching()) {
219			$objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
220		} else {
221			$objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
222		}
223
224		// XML header
225		$objWriter->startDocument('1.0','UTF-8','yes');
226
227		// cp:coreProperties
228		$objWriter->startElement('Properties');
229			$objWriter->writeAttribute('xmlns', 'http://schemas.openxmlformats.org/officeDocument/2006/custom-properties');
230			$objWriter->writeAttribute('xmlns:vt', 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes');
231
232
233			foreach($customPropertyList as $key => $customProperty) {
234				$propertyValue = $pPHPExcel->getProperties()->getCustomPropertyValue($customProperty);
235				$propertyType = $pPHPExcel->getProperties()->getCustomPropertyType($customProperty);
236
237				$objWriter->startElement('property');
238					$objWriter->writeAttribute('fmtid', 	'{D5CDD505-2E9C-101B-9397-08002B2CF9AE}');
239					$objWriter->writeAttribute('pid', 		$key+2);
240					$objWriter->writeAttribute('name', 		$customProperty);
241
242					switch($propertyType) {
243						case 'i' :
244							$objWriter->writeElement('vt:i4', 		$propertyValue);
245							break;
246						case 'f' :
247							$objWriter->writeElement('vt:r8', 		$propertyValue);
248							break;
249						case 'b' :
250							$objWriter->writeElement('vt:bool', 	($propertyValue) ? 'true' : 'false');
251							break;
252						case 'd' :
253							$objWriter->startElement('vt:filetime');
254								$objWriter->writeRawData(date(DATE_W3C, $propertyValue));
255							$objWriter->endElement();
256							break;
257						default :
258							$objWriter->writeElement('vt:lpwstr', 	$propertyValue);
259							break;
260					}
261
262				$objWriter->endElement();
263			}
264
265
266		$objWriter->endElement();
267
268		// Return
269		return $objWriter->getData();
270	}
271
272}