diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Search/Lucene/Document/OpenXml.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Search/Lucene/Document/OpenXml.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,129 @@ +getFromName("_rels/.rels")); + foreach ($relations->Relationship as $rel) { + if ($rel["Type"] == Zend_Search_Lucene_Document_OpenXml::SCHEMA_COREPROPERTIES) { + // Found core properties! Read in contents... + $contents = simplexml_load_string( + $package->getFromName(dirname($rel["Target"]) . "/" . basename($rel["Target"])) + ); + + foreach ($contents->children(Zend_Search_Lucene_Document_OpenXml::SCHEMA_DUBLINCORE) as $child) { + $coreProperties[$child->getName()] = (string)$child; + } + foreach ($contents->children(Zend_Search_Lucene_Document_OpenXml::SCHEMA_COREPROPERTIES) as $child) { + $coreProperties[$child->getName()] = (string)$child; + } + foreach ($contents->children(Zend_Search_Lucene_Document_OpenXml::SCHEMA_DUBLINCORETERMS) as $child) { + $coreProperties[$child->getName()] = (string)$child; + } + } + } + + return $coreProperties; + } + + /** + * Determine absolute zip path + * + * @param string $path + * @return string + */ + protected function absoluteZipPath($path) { + $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path); + $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen'); + $absolutes = array(); + foreach ($parts as $part) { + if ('.' == $part) continue; + if ('..' == $part) { + array_pop($absolutes); + } else { + $absolutes[] = $part; + } + } + return implode('/', $absolutes); + } +}