Commit 0cc768dd158cc08054cc025605abbdea4da4652e
1 parent
362b659e
KTS-2811
"KnowledgeTree Indexer plugin not indexing in 3.4.5 on a windows machine" Fixed. Replaced the exec function on the word indexer with popen. Committed by: Megan Watson Reviewed by: Conrad Vermeulen git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@7897 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
3 changed files
with
41 additions
and
7 deletions
plugins/ktstandard/contents/BaseIndexer.php
| @@ -147,6 +147,7 @@ class KTBaseIndexerTrigger { | @@ -147,6 +147,7 @@ class KTBaseIndexerTrigger { | ||
| 147 | $cmdline[] = $sFilename; | 147 | $cmdline[] = $sFilename; |
| 148 | 148 | ||
| 149 | $aOptions = array(); | 149 | $aOptions = array(); |
| 150 | + $aOptions['exec_wait'] = 'true'; | ||
| 150 | if ($this->use_pipes) { | 151 | if ($this->use_pipes) { |
| 151 | $aOptions["append"] = $sTempFilename; | 152 | $aOptions["append"] = $sTempFilename; |
| 152 | } else { | 153 | } else { |
plugins/ktstandard/contents/OpenDocumentIndexer.php
| @@ -118,7 +118,10 @@ class KTOpenDocumentIndexerTrigger extends KTBaseIndexerTrigger { | @@ -118,7 +118,10 @@ class KTOpenDocumentIndexerTrigger extends KTBaseIndexerTrigger { | ||
| 118 | if (empty($sUnzipCommand)) { | 118 | if (empty($sUnzipCommand)) { |
| 119 | return; | 119 | return; |
| 120 | } | 120 | } |
| 121 | - $this->sTmpPath = tempnam('/tmp', 'opendocumentextract'); | 121 | + $oKTConfig =& KTConfig::getSingleton(); |
| 122 | + $sBasedir = $oKTConfig->get("urls/tmpDirectory"); | ||
| 123 | + | ||
| 124 | + $this->sTmpPath = tempnam($sBasedir, 'opendocumentextract'); | ||
| 122 | if ($this->sTmpPath === false) { | 125 | if ($this->sTmpPath === false) { |
| 123 | return; | 126 | return; |
| 124 | } | 127 | } |
| @@ -131,14 +134,20 @@ class KTOpenDocumentIndexerTrigger extends KTBaseIndexerTrigger { | @@ -131,14 +134,20 @@ class KTOpenDocumentIndexerTrigger extends KTBaseIndexerTrigger { | ||
| 131 | "-d", $this->sTmpPath, | 134 | "-d", $this->sTmpPath, |
| 132 | $sFilename, | 135 | $sFilename, |
| 133 | ); | 136 | ); |
| 134 | - KTUtil::pexec($sCmd); | 137 | + KTUtil::pexec($sCmd, array('exec_wait' => 'true')); |
| 135 | 138 | ||
| 136 | $sManifest = sprintf("%s/%s", $this->sTmpPath, "META-INF/manifest.xml"); | 139 | $sManifest = sprintf("%s/%s", $this->sTmpPath, "META-INF/manifest.xml"); |
| 140 | + if (OS_WINDOWS) { | ||
| 141 | + $sManifest = str_replace( '/','\\',$sManifest); | ||
| 142 | + } | ||
| 137 | if (!file_exists($sManifest)) { | 143 | if (!file_exists($sManifest)) { |
| 138 | $this->cleanup(); | 144 | $this->cleanup(); |
| 139 | return; | 145 | return; |
| 140 | } | 146 | } |
| 141 | $sContentFile = sprintf("%s/%s", $this->sTmpPath, "content.xml"); | 147 | $sContentFile = sprintf("%s/%s", $this->sTmpPath, "content.xml"); |
| 148 | + if (OS_WINDOWS) { | ||
| 149 | + $sContentFile = str_replace( '/','\\',$sContentFile ); | ||
| 150 | + } | ||
| 142 | if (!file_exists($sContentFile)) { | 151 | if (!file_exists($sContentFile)) { |
| 143 | $this->cleanup(); | 152 | $this->cleanup(); |
| 144 | return; | 153 | return; |
| @@ -152,7 +161,8 @@ class KTOpenDocumentIndexerTrigger extends KTBaseIndexerTrigger { | @@ -152,7 +161,8 @@ class KTOpenDocumentIndexerTrigger extends KTBaseIndexerTrigger { | ||
| 152 | } | 161 | } |
| 153 | 162 | ||
| 154 | function cleanup() { | 163 | function cleanup() { |
| 155 | - KTUtil::deleteDirectory($this->sTmpPath); | 164 | + return; |
| 165 | + //KTUtil::deleteDirectory($this->sTmpPath); | ||
| 156 | } | 166 | } |
| 157 | } | 167 | } |
| 158 | 168 |
plugins/ktstandard/contents/WordIndexer.php
| @@ -51,12 +51,35 @@ class KTWordIndexerTrigger extends KTBaseIndexerTrigger { | @@ -51,12 +51,35 @@ class KTWordIndexerTrigger extends KTBaseIndexerTrigger { | ||
| 51 | $this->command = 'c:\antiword\antiword.exe'; | 51 | $this->command = 'c:\antiword\antiword.exe'; |
| 52 | $this->commandconfig = 'indexer/antiword'; | 52 | $this->commandconfig = 'indexer/antiword'; |
| 53 | $this->args = array(); | 53 | $this->args = array(); |
| 54 | + } | ||
| 55 | + putenv('LANG=en_US.UTF-8'); | ||
| 56 | + | ||
| 57 | + $sCommand = KTUtil::findCommand($this->commandconfig, $this->command); | ||
| 58 | + if (empty($sCommand)) { | ||
| 59 | + return false; | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + if (OS_WINDOWS) { | ||
| 63 | + $sDir = dirname(dirname($sCommand)); | ||
| 64 | + putenv('HOME=' . $sDir); | ||
| 54 | 65 | ||
| 55 | - $sCommand = KTUtil::findCommand($this->commandconfig, $this->command); | ||
| 56 | - $sDir = dirname(dirname($sCommand)); | ||
| 57 | - putenv('HOME=' . $sDir); | 66 | + $cmdline = array($sCommand); |
| 67 | + $cmdline = kt_array_merge($cmdline, $this->args); | ||
| 68 | + $cmdline[] = $sFilename; | ||
| 69 | + | ||
| 70 | + $sCmd = KTUtil::safeShellString($cmdline); | ||
| 71 | + $sCmd .= " >> " . escapeshellarg($sTempFilename); | ||
| 72 | + | ||
| 73 | + $sCmd = str_replace( '/','\\',$sCmd); | ||
| 74 | + | ||
| 75 | + $sCmd = "start /b \"kt\" " . $sCmd; | ||
| 76 | + | ||
| 77 | + pclose(popen($sCmd, 'r')); | ||
| 78 | + | ||
| 79 | + $this->aCommandOutput = 1; | ||
| 80 | + $contents = file_get_contents($sTempFilename); | ||
| 81 | + return $contents; | ||
| 58 | } | 82 | } |
| 59 | - putenv('LANG=en_US.UTF-8'); | ||
| 60 | return parent::extract_contents($sFilename, $sTempFilename); | 83 | return parent::extract_contents($sFilename, $sTempFilename); |
| 61 | } | 84 | } |
| 62 | 85 |