Ignore:
Timestamp:
Nov 6, 2014, 11:29:01 AM (5 years ago)
Author:
kent1@…
Message:

Indentation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/fulltext/trunk/lib/simplepptx.class.php

    r81745 r85892  
    44
    55// Classe SimplePPTX v0.1 pour SPIP.
    6 // Tres inspire de Zend Search Lucene (http://www.chisimba.com/apidocs/fwdocs/Zend_Search_Lucene/Document/Zend_Search_Lucene_Document_Pptx.html) et de la classe SimpleXLSX de Sergey Schuchkin 
    7  
     6// Tres inspire de Zend Search Lucene (http://www.chisimba.com/apidocs/fwdocs/Zend_Search_Lucene/Document/Zend_Search_Lucene_Document_Pptx.html) et de la classe SimpleXLSX de Sergey Schuchkin
     7
    88class SimplePPTX {
    99        // scheme
    10         const SCHEMA_OFFICEDOCUMENT  = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument';
     10        const SCHEMA_OFFICEDOCUMENT = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument';
    1111        const SCHEMA_PRESENTATIONML = 'http://schemas.openxmlformats.org/presentationml/2006/main';
    1212        const SCHEMA_DRAWINGML = 'http://schemas.openxmlformats.org/drawingml/2006/main';
     
    1414        const SCHEMA_SLIDENOTESRELATION = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide';
    1515
    16     function __construct($fileName, $storeContent){
    17         // Document data holders
    18         $slides = array();
    19         $slideNotes = array();
    20         $documentBody = array();
    21         $coreProperties = array();             
    22                
     16        function __construct($fileName, $storeContent) {
     17                // Document data holders
     18                $slides = array();
     19                $slideNotes = array();
     20                $documentBody = array();
     21                $coreProperties = array();
     22
    2323                // Open OpenXML package
    24         $package = new ZipArchive();
    25         $package->open($fileName);
     24                $package = new ZipArchive();
     25                $package -> open($fileName);
    2626
    27                  // Read relations and search for officeDocument
    28         $relationsXml = $package->getFromName('_rels/.rels');
     27                // Read relations and search for officeDocument
     28                $relationsXml = $package -> getFromName('_rels/.rels');
    2929                $relations = simplexml_load_string($relationsXml);
    30         foreach ($relations->Relationship as $rel) {
     30                foreach ($relations->Relationship as $rel) {
    3131                        if ($rel["Type"] == SimplePPTX::SCHEMA_OFFICEDOCUMENT) {
    32                         // Found office document! Search for slides...
    33                 $slideRelations = simplexml_load_string($package->getFromName( $this->absoluteZipPath(dirname($rel["Target"]) . "/_rels/" . basename($rel["Target"]) . ".rels")) );
     32                                // Found office document! Search for slides...
     33                                $slideRelations = simplexml_load_string($package -> getFromName($this -> absoluteZipPath(dirname($rel["Target"]) . "/_rels/" . basename($rel["Target"]) . ".rels")));
    3434                                foreach ($slideRelations->Relationship as $slideRel) {
    35                                          if ($slideRel["Type"] == SimplePPTX::SCHEMA_SLIDERELATION) {
    36                                             // Found slide!
    37                         $slides[ str_replace( 'rId', '', (string)$slideRel["Id"] ) ] = simplexml_load_string(
    38                             $package->getFromName( $this->absoluteZipPath(dirname($rel["Target"]) . "/" . dirname($slideRel["Target"]) . "/" . basename($slideRel["Target"])) )
    39                         );
    40                         // Search for slide notes
    41                         $slideNotesRelations = simplexml_load_string($package->getFromName( $this->absoluteZipPath(dirname($rel["Target"]) . "/" . dirname($slideRel["Target"]) . "/_rels/" . basename($slideRel["Target"]) . ".rels")) );                                             
    42                         foreach ($slideNotesRelations->Relationship as $slideNoteRel) {
    43                             if ($slideNoteRel["Type"] == SimplePPTX::SCHEMA_SLIDENOTESRELATION) {
    44                                 // Found slide notes!
    45                                 $slideNotes[ str_replace( 'rId', '', (string)$slideRel["Id"] ) ] = simplexml_load_string(
    46                                     $package->getFromName( $this->absoluteZipPath(dirname($rel["Target"]) . "/" . dirname($slideRel["Target"]) . "/" . dirname($slideNoteRel["Target"]) . "/" . basename($slideNoteRel["Target"])) )
    47                                 );
     35                                        if ($slideRel["Type"] == SimplePPTX::SCHEMA_SLIDERELATION) {
     36                                                // Found slide!
     37                                                $slides[str_replace('rId', '', (string)$slideRel["Id"])] = simplexml_load_string($package -> getFromName($this -> absoluteZipPath(dirname($rel["Target"]) . "/" . dirname($slideRel["Target"]) . "/" . basename($slideRel["Target"]))));
     38                                                // Search for slide notes
     39                                                $slideNotesRelations = simplexml_load_string($package -> getFromName($this -> absoluteZipPath(dirname($rel["Target"]) . "/" . dirname($slideRel["Target"]) . "/_rels/" . basename($slideRel["Target"]) . ".rels")));
     40                                                foreach ($slideNotesRelations->Relationship as $slideNoteRel) {
     41                                                        if ($slideNoteRel["Type"] == SimplePPTX::SCHEMA_SLIDENOTESRELATION) {
     42                                                                // Found slide notes!
     43                                                                $slideNotes[str_replace('rId', '', (string)$slideRel["Id"])] = simplexml_load_string($package -> getFromName($this -> absoluteZipPath(dirname($rel["Target"]) . "/" . dirname($slideRel["Target"]) . "/" . dirname($slideNoteRel["Target"]) . "/" . basename($slideNoteRel["Target"]))));
    4844
    49                                 break;
    50                             }
    51                         }
    52                                                
    53                                          }
    54                                 }                               
    55                          break;
     45                                                                break;
     46                                                        }
     47                                                }
     48
     49                                        }
     50                                }
     51                                break;
    5652                        }
    5753                }
    58                
     54
    5955                // Sort slides
    60         ksort($slides);
    61         ksort($slideNotes);
    62                
    63         // Extract contents from slides
    64         foreach ($slides as $slideKey => $slide) {
    65             // Register namespaces
    66             $slide->registerXPathNamespace("p", SimplePPTX::SCHEMA_PRESENTATIONML);
    67             $slide->registerXPathNamespace("a", SimplePPTX::SCHEMA_DRAWINGML);
     56                ksort($slides);
     57                ksort($slideNotes);
    6858
    69             // Fetch all text
    70             $textElements = $slide->xpath('//a:t');
    71             foreach ($textElements as $textElement) {
    72                 $documentBody[] = (string)$textElement;
    73             }
     59                // Extract contents from slides
     60                foreach ($slides as $slideKey => $slide) {
     61                        // Register namespaces
     62                        $slide -> registerXPathNamespace("p", SimplePPTX::SCHEMA_PRESENTATIONML);
     63                        $slide -> registerXPathNamespace("a", SimplePPTX::SCHEMA_DRAWINGML);
    7464
    75             // Extract contents from slide notes
    76             if (isset($slideNotes[$slideKey])) {
    77                 // Fetch slide note
    78                 $slideNote = $slideNotes[$slideKey];
     65                        // Fetch all text
     66                        $textElements = $slide -> xpath('//a:t');
     67                        foreach ($textElements as $textElement) {
     68                                $documentBody[] = (string)$textElement;
     69                        }
    7970
    80                 // Register namespaces
    81                 $slideNote->registerXPathNamespace("p", SimplePPTX::SCHEMA_PRESENTATIONML);
    82                 $slideNote->registerXPathNamespace("a", SimplePPTX::SCHEMA_DRAWINGML);
     71                        // Extract contents from slide notes
     72                        if (isset($slideNotes[$slideKey])) {
     73                                // Fetch slide note
     74                                $slideNote = $slideNotes[$slideKey];
    8375
    84                 // Fetch all text
    85                 $textElements = $slideNote->xpath('//a:t');
    86                 foreach ($textElements as $textElement) {
    87                     $documentBody[] = (string)$textElement;
    88                 }
    89             }
    90         }
    91                
    92         // Close file
    93         $package->close();
    94         // Store filename
    95         $this->nom_fichier = $fileName;
     76                                // Register namespaces
     77                                $slideNote -> registerXPathNamespace("p", SimplePPTX::SCHEMA_PRESENTATIONML);
     78                                $slideNote -> registerXPathNamespace("a", SimplePPTX::SCHEMA_DRAWINGML);
    9679
    97             // Store contents
    98         if ($storeContent) {
    99                    $this->contenu = implode(' ', $documentBody);
    100         }
     80                                // Fetch all text
     81                                $textElements = $slideNote -> xpath('//a:t');
     82                                foreach ($textElements as $textElement) {
     83                                        $documentBody[] = (string)$textElement;
     84                                }
     85                        }
     86                }
    10187
    102                
     88                // Close file
     89                $package -> close();
     90                // Store filename
     91                $this -> nom_fichier = $fileName;
     92
     93                // Store contents
     94                if ($storeContent) {
     95                        $this -> contenu = implode(' ', $documentBody);
     96                }
     97
    10398        }
    104        
     99
    105100        function absoluteZipPath($path) {
    106         $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path);
    107         $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen');
    108         $absolutes = array();
    109         foreach ($parts as $part) {
    110             if ('.' == $part) continue;
    111             if ('..' == $part) {
    112                 array_pop($absolutes);
    113             } else {
    114                 $absolutes[] = $part;
    115             }
    116         }
    117         return implode('/', $absolutes);
    118     }
     101                $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path);
     102                $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen');
     103                $absolutes = array();
     104                foreach ($parts as $part) {
     105                        if ('.' == $part)
     106                                continue;
     107                        if ('..' == $part) {
     108                                array_pop($absolutes);
     109                        } else {
     110                                $absolutes[] = $part;
     111                        }
     112                }
     113                return implode('/', $absolutes);
     114        }
     115
    119116}
    120117?>
Note: See TracChangeset for help on using the changeset viewer.