Commit a26bf018ff795538af563dd73f17b87f6829b2cc
1 parent
d76d048f
Replaced unzip binary with peclzip to avoid permissions errors
Jira: KTS-4507 PT: 1697701 Committed by: Megan Watson
Showing
2 changed files
with
25 additions
and
1 deletions
search2/indexing/extractors/OpenOfficeTextExtractor.inc.php
| 1 | <?php | 1 | <?php |
| 2 | 2 | ||
| 3 | +require_once(KT_DIR.'/thirdparty/peclzip/pclzip.lib.php'); | ||
| 4 | + | ||
| 3 | /** | 5 | /** |
| 4 | * $Id:$ | 6 | * $Id:$ |
| 5 | * | 7 | * |
| @@ -41,11 +43,13 @@ class OpenOfficeTextExtractor extends ExternalDocumentExtractor | @@ -41,11 +43,13 @@ class OpenOfficeTextExtractor extends ExternalDocumentExtractor | ||
| 41 | { | 43 | { |
| 42 | public function __construct() | 44 | public function __construct() |
| 43 | { | 45 | { |
| 46 | + /* *** Replaced unzip binary with pclzip *** | ||
| 44 | $config = KTConfig::getSingleton(); | 47 | $config = KTConfig::getSingleton(); |
| 45 | 48 | ||
| 46 | $this->unzip = KTUtil::findCommand("import/unzip", 'unzip'); | 49 | $this->unzip = KTUtil::findCommand("import/unzip", 'unzip'); |
| 47 | $this->unzip = str_replace('\\','/',$this->unzip); | 50 | $this->unzip = str_replace('\\','/',$this->unzip); |
| 48 | $this->unzip_params = $config->get('extractorParameters/unzip', '"{source}" "{part}" -d "{target_dir}"'); | 51 | $this->unzip_params = $config->get('extractorParameters/unzip', '"{source}" "{part}" -d "{target_dir}"'); |
| 52 | + */ | ||
| 49 | parent::__construct(); | 53 | parent::__construct(); |
| 50 | } | 54 | } |
| 51 | 55 | ||
| @@ -94,6 +98,14 @@ class OpenOfficeTextExtractor extends ExternalDocumentExtractor | @@ -94,6 +98,14 @@ class OpenOfficeTextExtractor extends ExternalDocumentExtractor | ||
| 94 | $this->sourcefile = str_replace('\\','/',$this->sourcefile); | 98 | $this->sourcefile = str_replace('\\','/',$this->sourcefile); |
| 95 | $this->openxml_dir = str_replace('\\','/',$this->openxml_dir); | 99 | $this->openxml_dir = str_replace('\\','/',$this->openxml_dir); |
| 96 | 100 | ||
| 101 | + $archive = new PclZip($this->sourcefile); | ||
| 102 | + | ||
| 103 | + if ($archive->extract(PCLZIP_OPT_PATH, $this->openxml_dir) == 0){ | ||
| 104 | + $this->output = _kt('Failed to extract content'); | ||
| 105 | + return false; | ||
| 106 | + } | ||
| 107 | + | ||
| 108 | + /* *** Original code using the unzip binary *** | ||
| 97 | $cmd = '"' . $this->unzip . '"' . ' ' . str_replace( | 109 | $cmd = '"' . $this->unzip . '"' . ' ' . str_replace( |
| 98 | array('{source}','{part}', '{target_dir}'), | 110 | array('{source}','{part}', '{target_dir}'), |
| 99 | array($this->sourcefile, 'content.xml',$this->openxml_dir), $this->unzip_params); | 111 | array($this->sourcefile, 'content.xml',$this->openxml_dir), $this->unzip_params); |
| @@ -105,6 +117,7 @@ class OpenOfficeTextExtractor extends ExternalDocumentExtractor | @@ -105,6 +117,7 @@ class OpenOfficeTextExtractor extends ExternalDocumentExtractor | ||
| 105 | $this->output = _kt('Failed to execute command: ') . $cmd; | 117 | $this->output = _kt('Failed to execute command: ') . $cmd; |
| 106 | return false; | 118 | return false; |
| 107 | } | 119 | } |
| 120 | + *** End unzip code *** */ | ||
| 108 | 121 | ||
| 109 | $filename = $this->openxml_dir . '/content.xml'; | 122 | $filename = $this->openxml_dir . '/content.xml'; |
| 110 | if (!file_exists($filename)) | 123 | if (!file_exists($filename)) |
| @@ -134,4 +147,4 @@ class OpenOfficeTextExtractor extends ExternalDocumentExtractor | @@ -134,4 +147,4 @@ class OpenOfficeTextExtractor extends ExternalDocumentExtractor | ||
| 134 | 147 | ||
| 135 | } | 148 | } |
| 136 | 149 | ||
| 137 | -?> | 150 | -?> |
| 151 | +?> | ||
| 138 | \ No newline at end of file | 152 | \ No newline at end of file |
search2/indexing/extractors/OpenXmlTextExtractor.inc.php
| @@ -43,9 +43,11 @@ class OpenXmlTextExtractor extends ExternalDocumentExtractor | @@ -43,9 +43,11 @@ class OpenXmlTextExtractor extends ExternalDocumentExtractor | ||
| 43 | { | 43 | { |
| 44 | $config = KTConfig::getSingleton(); | 44 | $config = KTConfig::getSingleton(); |
| 45 | 45 | ||
| 46 | + /* ** Using peclzip instead of the unzip binary ** | ||
| 46 | $this->unzip = KTUtil::findCommand("import/unzip", 'unzip'); | 47 | $this->unzip = KTUtil::findCommand("import/unzip", 'unzip'); |
| 47 | $this->unzip = str_replace('\\','/',$this->unzip); | 48 | $this->unzip = str_replace('\\','/',$this->unzip); |
| 48 | $this->unzip_params = $config->get('extractorParameters/unzip', '"{source}" "{part}" -d "{target_dir}"'); | 49 | $this->unzip_params = $config->get('extractorParameters/unzip', '"{source}" "{part}" -d "{target_dir}"'); |
| 50 | + */ | ||
| 49 | parent::__construct(); | 51 | parent::__construct(); |
| 50 | } | 52 | } |
| 51 | 53 | ||
| @@ -158,6 +160,14 @@ class OpenXmlTextExtractor extends ExternalDocumentExtractor | @@ -158,6 +160,14 @@ class OpenXmlTextExtractor extends ExternalDocumentExtractor | ||
| 158 | $this->sourcefile = str_replace('\\','/',$this->sourcefile); | 160 | $this->sourcefile = str_replace('\\','/',$this->sourcefile); |
| 159 | $this->openxml_dir = str_replace('\\','/',$this->openxml_dir); | 161 | $this->openxml_dir = str_replace('\\','/',$this->openxml_dir); |
| 160 | 162 | ||
| 163 | + $archive = new PclZip($this->sourcefile); | ||
| 164 | + | ||
| 165 | + if ($archive->extract(PCLZIP_OPT_PATH, $this->openxml_dir) == 0){ | ||
| 166 | + $this->output = _kt('Failed to extract content'); | ||
| 167 | + return false; | ||
| 168 | + } | ||
| 169 | + | ||
| 170 | + /* *** Original code using the unzip binary *** | ||
| 161 | $cmd = '"' . $this->unzip . '"' . ' ' . str_replace( | 171 | $cmd = '"' . $this->unzip . '"' . ' ' . str_replace( |
| 162 | array('{source}','{part}', '{target_dir}'), | 172 | array('{source}','{part}', '{target_dir}'), |
| 163 | array($this->sourcefile, '*Content_Types*.xml',$this->openxml_dir), $this->unzip_params); | 173 | array($this->sourcefile, '*Content_Types*.xml',$this->openxml_dir), $this->unzip_params); |
| @@ -169,6 +179,7 @@ class OpenXmlTextExtractor extends ExternalDocumentExtractor | @@ -169,6 +179,7 @@ class OpenXmlTextExtractor extends ExternalDocumentExtractor | ||
| 169 | $this->output = _kt('Failed to execute command: ') . $cmd; | 179 | $this->output = _kt('Failed to execute command: ') . $cmd; |
| 170 | return false; | 180 | return false; |
| 171 | } | 181 | } |
| 182 | + *** End unzip code *** */ | ||
| 172 | 183 | ||
| 173 | $filename = $this->openxml_dir . '/[Content_Types].xml'; | 184 | $filename = $this->openxml_dir . '/[Content_Types].xml'; |
| 174 | if (!file_exists($filename)) | 185 | if (!file_exists($filename)) |