PHPPowerPoint_Writer_PowerPoint2007
[ class tree: PHPPowerPoint_Writer_PowerPoint2007 ] [ index: PHPPowerPoint_Writer_PowerPoint2007 ] [ all elements ]

Source for file ContentTypes.php

Documentation is available at ContentTypes.php

  1. <?php
  2. /**
  3.  * PHPPowerPoint
  4.  *
  5.  * Copyright (c) 2009 - 2010 PHPPowerPoint
  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   PHPPowerPoint
  22.  * @package    PHPPowerPoint_Writer_PowerPoint2007
  23.  * @copyright  Copyright (c) 2009 - 2010 PHPPowerPoint (http://www.codeplex.com/PHPPowerPoint)
  24.  * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
  25.  * @version    0.1.0, 2009-04-27
  26.  */
  27.  
  28.  
  29. /** PHPPowerPoint */
  30. require_once 'PHPPowerPoint.php';
  31.  
  32. /** PHPPowerPoint_Writer_PowerPoint2007 */
  33. require_once 'PHPPowerPoint/Writer/PowerPoint2007.php';
  34.  
  35. /** PHPPowerPoint_Writer_PowerPoint2007_WriterPart */
  36. require_once 'PHPPowerPoint/Writer/PowerPoint2007/WriterPart.php';
  37.  
  38. /** PHPPowerPoint_Shared_File */
  39. require_once 'PHPPowerPoint/Shared/File.php';
  40.  
  41. /** PHPPowerPoint_Shared_XMLWriter */
  42. require_once 'PHPPowerPoint/Shared/XMLWriter.php';
  43.  
  44.  
  45. /**
  46.  * PHPPowerPoint_Writer_PowerPoint2007_ContentTypes
  47.  *
  48.  * @category   PHPPowerPoint
  49.  * @package    PHPPowerPoint_Writer_PowerPoint2007
  50.  * @copyright  Copyright (c) 2009 - 2010 PHPPowerPoint (http://www.codeplex.com/PHPPowerPoint)
  51.  */
  52. {
  53.     /**
  54.      * Write content types to XML format
  55.      *
  56.      * @param     PHPPowerPoint $pPHPPowerPoint 
  57.      * @return     string                         XML Output
  58.      * @throws     Exception
  59.      */
  60.     public function writeContentTypes(PHPPowerPoint $pPHPPowerPoint null)
  61.     {
  62.         // Create XML writer
  63.         $objWriter null;
  64.         if ($this->getParentWriter()->getUseDiskCaching()) {
  65.             $objWriter new PHPPowerPoint_Shared_XMLWriter(PHPPowerPoint_Shared_XMLWriter::STORAGE_DISK$this->getParentWriter()->getDiskCachingDirectory());
  66.         else {
  67.             $objWriter new PHPPowerPoint_Shared_XMLWriter(PHPPowerPoint_Shared_XMLWriter::STORAGE_MEMORY);
  68.         }
  69.  
  70.         // XML header
  71.         $objWriter->startDocument('1.0','UTF-8','yes');
  72.  
  73.         // Types
  74.         $objWriter->startElement('Types');
  75.         $objWriter->writeAttribute('xmlns''http://schemas.openxmlformats.org/package/2006/content-types');
  76.  
  77.             // Rels
  78.             $this->_writeDefaultContentType(
  79.                 $objWriter'rels''application/vnd.openxmlformats-package.relationships+xml'
  80.             );
  81.  
  82.             // XML
  83.             $this->_writeDefaultContentType(
  84.                 $objWriter'xml''application/xml'
  85.             );
  86.             
  87.             // Theme
  88.             $this->_writeOverrideContentType(
  89.                 $objWriter'/ppt/theme/theme1.xml''application/vnd.openxmlformats-officedocument.theme+xml'
  90.             );
  91.  
  92.             // Presentation
  93.             $this->_writeOverrideContentType(
  94.                 $objWriter'/ppt/presentation.xml''application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml'
  95.             );
  96.  
  97.             // DocProps
  98.             $this->_writeOverrideContentType(
  99.                 $objWriter'/docProps/app.xml''application/vnd.openxmlformats-officedocument.extended-properties+xml'
  100.             );
  101.  
  102.             $this->_writeOverrideContentType(
  103.                 $objWriter'/docProps/core.xml''application/vnd.openxmlformats-package.core-properties+xml'
  104.             );
  105.             
  106.             // Slide master
  107.             $this->_writeOverrideContentType(
  108.                 $objWriter'/ppt/slideMasters/slideMaster1.xml''application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml'
  109.             );
  110.             
  111.             // Slide layouts
  112.             $slideLayouts $this->getParentWriter()->getLayoutPack()->getLayouts();
  113.             for ($i 0$i count($slideLayouts)++$i{
  114.                 $this->_writeOverrideContentType(
  115.                     $objWriter'/ppt/slideLayouts/slideLayout' ($i 1'.xml''application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml'
  116.                 );
  117.             }
  118.  
  119.             // Slides
  120.             $slideCount $pPHPPowerPoint->getSlideCount();
  121.             for ($i 0$i $slideCount++$i{
  122.                 $this->_writeOverrideContentType(
  123.                     $objWriter'/ppt/slides/slide' ($i 1'.xml''application/vnd.openxmlformats-officedocument.presentationml.slide+xml'
  124.                 );
  125.             }
  126.  
  127.             // Add media content-types
  128.             $aMediaContentTypes array();
  129.             $mediaCount $this->getParentWriter()->getDrawingHashTable()->count();
  130.             for ($i 0$i $mediaCount++$i{
  131.                 $extension     '';
  132.                 $mimeType     '';
  133.                 
  134.                 if ($this->getParentWriter()->getDrawingHashTable()->getByIndex($iinstanceof PHPPowerPoint_Shape_Drawing{
  135.                     $extension     strtolower($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getExtension());
  136.                     $mimeType     $this->_getImageMimeType$this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getPath() );
  137.                 else if ($this->getParentWriter()->getDrawingHashTable()->getByIndex($iinstanceof PHPPowerPoint_Shape_MemoryDrawing{
  138.                     $extension     strtolower($this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getMimeType());
  139.                     $extension     explode('/'$extension);
  140.                     $extension     $extension[1];
  141.                     
  142.                     $mimeType     $this->getParentWriter()->getDrawingHashTable()->getByIndex($i)->getMimeType();
  143.                 }
  144.                 
  145.                 if (!isset$aMediaContentTypes[$extension]) ) {
  146.                         $aMediaContentTypes[$extension$mimeType;
  147.  
  148.                         $this->_writeDefaultContentType(
  149.                             $objWriter$extension$mimeType
  150.                         );
  151.                 }
  152.             }
  153.  
  154.         $objWriter->endElement();
  155.  
  156.         // Return
  157.         return $objWriter->getData();
  158.     }
  159.  
  160.     /**
  161.      * Get image mime type
  162.      *
  163.      * @param     string    $pFile    Filename
  164.      * @return     string    Mime Type
  165.      * @throws     Exception
  166.      */
  167.     private function _getImageMimeType($pFile '')
  168.     {
  169.         if (PHPPowerPoint_Shared_File::file_exists($pFile)) {
  170.             $image getimagesize($pFile);
  171.             return image_type_to_mime_type($image[2]);
  172.         else {
  173.             throw new Exception("File $pFile does not exist");
  174.         }
  175.     }
  176.  
  177.     /**
  178.      * Write Default content type
  179.      *
  180.      * @param     PHPPowerPoint_Shared_XMLWriter     $objWriter         XML Writer
  181.      * @param     string                         $pPartname         Part name
  182.      * @param     string                         $pContentType     Content type
  183.      * @throws     Exception
  184.      */
  185.     private function _writeDefaultContentType(PHPPowerPoint_Shared_XMLWriter $objWriter null$pPartname ''$pContentType '')
  186.     {
  187.         if ($pPartname != '' && $pContentType != ''{
  188.             // Write content type
  189.             $objWriter->startElement('Default');
  190.             $objWriter->writeAttribute('Extension',     $pPartname);
  191.             $objWriter->writeAttribute('ContentType',     $pContentType);
  192.             $objWriter->endElement();
  193.         else {
  194.             throw new Exception("Invalid parameters passed.");
  195.         }
  196.     }
  197.  
  198.     /**
  199.      * Write Override content type
  200.      *
  201.      * @param     PHPPowerPoint_Shared_XMLWriter     $objWriter         XML Writer
  202.      * @param     string                         $pPartname         Part name
  203.      * @param     string                         $pContentType     Content type
  204.      * @throws     Exception
  205.      */
  206.     private function _writeOverrideContentType(PHPPowerPoint_Shared_XMLWriter $objWriter null$pPartname ''$pContentType '')
  207.     {
  208.         if ($pPartname != '' && $pContentType != ''{
  209.             // Write content type
  210.             $objWriter->startElement('Override');
  211.             $objWriter->writeAttribute('PartName',         $pPartname);
  212.             $objWriter->writeAttribute('ContentType',     $pContentType);
  213.             $objWriter->endElement();
  214.         else {
  215.             throw new Exception("Invalid parameters passed.");
  216.         }
  217.     }
  218. }

Documentation generated on Sat, 25 Apr 2009 11:36:53 +0200 by phpDocumentor 1.4.1