13 * to license@zend.com so we can send you a copy immediately. |
13 * to license@zend.com so we can send you a copy immediately. |
14 * |
14 * |
15 * @category Zend |
15 * @category Zend |
16 * @package Zend_Search_Lucene |
16 * @package Zend_Search_Lucene |
17 * @subpackage Document |
17 * @subpackage Document |
18 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) |
18 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) |
19 * @license http://framework.zend.com/license/new-bsd New BSD License |
19 * @license http://framework.zend.com/license/new-bsd New BSD License |
20 * @version $Id: Docx.php 24593 2012-01-05 20:35:02Z matthew $ |
20 * @version $Id$ |
21 */ |
21 */ |
22 |
22 |
23 /** Zend_Search_Lucene_Document_OpenXml */ |
23 /** Zend_Search_Lucene_Document_OpenXml */ |
24 require_once 'Zend/Search/Lucene/Document/OpenXml.php'; |
24 require_once 'Zend/Search/Lucene/Document/OpenXml.php'; |
|
25 |
|
26 /** Zend_Xml_Security */ |
|
27 require_once 'Zend/Xml/Security.php'; |
25 |
28 |
26 /** |
29 /** |
27 * Docx document. |
30 * Docx document. |
28 * |
31 * |
29 * @category Zend |
32 * @category Zend |
30 * @package Zend_Search_Lucene |
33 * @package Zend_Search_Lucene |
31 * @subpackage Document |
34 * @subpackage Document |
32 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) |
35 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) |
33 * @license http://framework.zend.com/license/new-bsd New BSD License |
36 * @license http://framework.zend.com/license/new-bsd New BSD License |
34 */ |
37 */ |
35 class Zend_Search_Lucene_Document_Docx extends Zend_Search_Lucene_Document_OpenXml { |
38 class Zend_Search_Lucene_Document_Docx extends Zend_Search_Lucene_Document_OpenXml { |
36 /** |
39 /** |
37 * Xml Schema - WordprocessingML |
40 * Xml Schema - WordprocessingML |
65 $relationsXml = $package->getFromName('_rels/.rels'); |
68 $relationsXml = $package->getFromName('_rels/.rels'); |
66 if ($relationsXml === false) { |
69 if ($relationsXml === false) { |
67 require_once 'Zend/Search/Lucene/Exception.php'; |
70 require_once 'Zend/Search/Lucene/Exception.php'; |
68 throw new Zend_Search_Lucene_Exception('Invalid archive or corrupted .docx file.'); |
71 throw new Zend_Search_Lucene_Exception('Invalid archive or corrupted .docx file.'); |
69 } |
72 } |
70 $relations = simplexml_load_string($relationsXml); |
73 $relations = Zend_Xml_Security::scan($relationsXml); |
71 foreach($relations->Relationship as $rel) { |
74 foreach($relations->Relationship as $rel) { |
72 if ($rel ["Type"] == Zend_Search_Lucene_Document_OpenXml::SCHEMA_OFFICEDOCUMENT) { |
75 if ($rel ["Type"] == Zend_Search_Lucene_Document_OpenXml::SCHEMA_OFFICEDOCUMENT) { |
73 // Found office document! Read in contents... |
76 // Found office document! Read in contents... |
74 $contents = simplexml_load_string($package->getFromName( |
77 $contents = Zend_Xml_Security::scan($package->getFromName( |
75 $this->absoluteZipPath(dirname($rel['Target']) |
78 $this->absoluteZipPath(dirname($rel['Target']) |
76 . '/' |
79 . '/' |
77 . basename($rel['Target'])) |
80 . basename($rel['Target'])) |
78 )); |
81 )); |
79 |
82 |