Commit aff60d0d486da1d5ced5fe42e88e6685980cbe69

Authored by Kevin G Fourie
2 parents 3f0f6da4 183860ec

Merge branch 'master' of git@github.com:ktgit/knowledgetree

bin/luceneserver/ktlucene.jar
No preview for this file type
bin/luceneserver/lib/jodconverter-2.2.2.jar 0 → 100644
No preview for this file type
bin/luceneserver/lib/jodconverter.jar deleted
No preview for this file type
bin/luceneserver/lib/juh-3.0.1.jar 0 → 100644
No preview for this file type
bin/luceneserver/lib/juh.jar deleted
No preview for this file type
bin/luceneserver/lib/jurt-3.0.1.jar 0 → 100644
No preview for this file type
bin/luceneserver/lib/jurt.jar deleted
No preview for this file type
bin/luceneserver/lib/ridl-3.0.1.jar 0 → 100644
No preview for this file type
bin/luceneserver/lib/ridl.jar deleted
No preview for this file type
bin/luceneserver/lib/slf4j-api-1.5.6.jar 0 → 100644
No preview for this file type
bin/luceneserver/lib/slf4j-jdk14-1.5.6.jar 0 → 100644
No preview for this file type
bin/luceneserver/lib/unoil.jar renamed to bin/luceneserver/lib/unoil-3.0.1.jar
No preview for this file type
bin/luceneserver/lib/xstream-1.3.1.jar 0 → 100644
No preview for this file type
plugins/ktstandard/PDFGeneratorAction.php
@@ -257,7 +257,7 @@ class PDFGeneratorAction extends KTDocumentAction { @@ -257,7 +257,7 @@ class PDFGeneratorAction extends KTDocumentAction {
257 257
258 if(!$res){ 258 if(!$res){
259 $default->log->error('PDF Generator: PDF file could not be generated'); 259 $default->log->error('PDF Generator: PDF file could not be generated');
260 - $this->errorRedirectToMain(_kt('PDF file could not be generated, the file may be of an unsupported mime type.')); 260 + $this->errorRedirectToMain(_kt('PDF file could not be generated, the file may be of an unsupported mime type or the PDF Generator could not connect.'));
261 exit(); 261 exit();
262 } 262 }
263 263
plugins/pdfConverter/pdfConverter.php
@@ -32,19 +32,34 @@ class pdfConverter extends BaseProcessor @@ -32,19 +32,34 @@ class pdfConverter extends BaseProcessor
32 { 32 {
33 public $order = 2; 33 public $order = 2;
34 protected $namespace = 'pdf.converter.processor'; 34 protected $namespace = 'pdf.converter.processor';
  35 + private $ooHost = '127.0.0.1';
  36 + private $ooPort = 8100;
35 37
  38 + /**
  39 + * Constructor gets the connection to the java server
  40 + *
  41 + * @return pdfConverter
  42 + */
36 public function pdfConverter() 43 public function pdfConverter()
37 { 44 {
38 $config =& KTConfig::getSingleton(); 45 $config =& KTConfig::getSingleton();
39 $javaServerUrl = $config->get('indexer/javaLuceneURL'); 46 $javaServerUrl = $config->get('indexer/javaLuceneURL');
  47 + $this->ooHost = $config->get('openoffice/host','127.0.0.1');
  48 + $this->ooPort = $config->get('openoffice/port','8100');
40 49
41 $this->xmlrpc = XmlRpcLucene::get($javaServerUrl); 50 $this->xmlrpc = XmlRpcLucene::get($javaServerUrl);
42 } 51 }
43 52
  53 + /**
  54 + * Gets the document path and calls the conversion function
  55 + *
  56 + * @return boolean
  57 + */
44 public function processDocument() 58 public function processDocument()
45 { 59 {
46 $oStorage = KTStorageManagerUtil::getSingleton(); 60 $oStorage = KTStorageManagerUtil::getSingleton();
47 $path = $oStorage->temporaryFile($this->document); 61 $path = $oStorage->temporaryFile($this->document);
  62 + $ext = KTMime::getFileType($this->document->getMimeTypeID());
48 63
49 if(!file_exists($path)){ 64 if(!file_exists($path)){
50 global $default; 65 global $default;
@@ -53,7 +68,7 @@ class pdfConverter extends BaseProcessor @@ -53,7 +68,7 @@ class pdfConverter extends BaseProcessor
53 } 68 }
54 69
55 // do pdf conversion 70 // do pdf conversion
56 - $res = $this->convertFile($path); 71 + $res = $this->convertFile($path, $ext);
57 72
58 if($res === false){ 73 if($res === false){
59 global $default; 74 global $default;
@@ -80,14 +95,17 @@ class pdfConverter extends BaseProcessor @@ -80,14 +95,17 @@ class pdfConverter extends BaseProcessor
80 95
81 // taken from the original list of accepted types in the pdf generator action 96 // taken from the original list of accepted types in the pdf generator action
82 $mime_types = array(); 97 $mime_types = array();
83 - //$mime_types[] = 'text/plain';  
84 - //$mime_types[] = 'text/xml';  
85 - //$mime_types[] = 'chemical/x-pdb';  
86 - //$mime_types[] = 'text/csv'; 98 + $mime_types[] = 'text/plain';
  99 + $mime_types[] = 'text/html';
  100 + $mime_types[] = 'text/csv';
87 $mime_types[] = 'text/rtf'; 101 $mime_types[] = 'text/rtf';
  102 +
  103 + // Office OLE2 - 2003, XP, etc
88 $mime_types[] = 'application/msword'; 104 $mime_types[] = 'application/msword';
89 $mime_types[] = 'application/vnd.ms-powerpoint'; 105 $mime_types[] = 'application/vnd.ms-powerpoint';
90 $mime_types[] = 'application/vnd.ms-excel'; 106 $mime_types[] = 'application/vnd.ms-excel';
  107 +
  108 + // Star Office
91 $mime_types[] = 'application/vnd.sun.xml.writer'; 109 $mime_types[] = 'application/vnd.sun.xml.writer';
92 $mime_types[] = 'application/vnd.sun.xml.writer.template'; 110 $mime_types[] = 'application/vnd.sun.xml.writer.template';
93 $mime_types[] = 'application/vnd.sun.xml.calc'; 111 $mime_types[] = 'application/vnd.sun.xml.calc';
@@ -96,6 +114,8 @@ class pdfConverter extends BaseProcessor @@ -96,6 +114,8 @@ class pdfConverter extends BaseProcessor
96 $mime_types[] = 'application/vnd.sun.xml.draw.template'; 114 $mime_types[] = 'application/vnd.sun.xml.draw.template';
97 $mime_types[] = 'application/vnd.sun.xml.impress'; 115 $mime_types[] = 'application/vnd.sun.xml.impress';
98 $mime_types[] = 'application/vnd.sun.xml.impress.template'; 116 $mime_types[] = 'application/vnd.sun.xml.impress.template';
  117 +
  118 + // Open Office
99 $mime_types[] = 'application/vnd.oasis.opendocument.text'; 119 $mime_types[] = 'application/vnd.oasis.opendocument.text';
100 $mime_types[] = 'application/vnd.oasis.opendocument.text-template'; 120 $mime_types[] = 'application/vnd.oasis.opendocument.text-template';
101 $mime_types[] = 'application/vnd.oasis.opendocument.graphics'; 121 $mime_types[] = 'application/vnd.oasis.opendocument.graphics';
@@ -105,39 +125,65 @@ class pdfConverter extends BaseProcessor @@ -105,39 +125,65 @@ class pdfConverter extends BaseProcessor
105 $mime_types[] = 'application/vnd.oasis.opendocument.spreadsheet'; 125 $mime_types[] = 'application/vnd.oasis.opendocument.spreadsheet';
106 $mime_types[] = 'application/vnd.oasis.opendocument.spreadsheet-template'; 126 $mime_types[] = 'application/vnd.oasis.opendocument.spreadsheet-template';
107 127
  128 + // Office 2007
  129 + $mime_types[] = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
  130 + $mime_types[] = 'application/vnd.openxmlformats-officedocument.wordprocessingml.template';
  131 + $mime_types[] = 'application/vnd.openxmlformats-officedocument.presentationml.template';
  132 + $mime_types[] = 'application/vnd.openxmlformats-officedocument.presentationml.slideshow';
  133 + $mime_types[] = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
  134 + $mime_types[] = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
  135 + $mime_types[] = 'application/vnd.openxmlformats-officedocument.spreadsheetml.template';
  136 +
108 return $mime_types; 137 return $mime_types;
109 } 138 }
110 139
111 - function convertFile($filename) 140 + /**
  141 + * Converts the given file to a pdf
  142 + *
  143 + * @param string $filename The full path to the file
  144 + * @param string $ext The extension of the file
  145 + * @return boolean
  146 + */
  147 + function convertFile($filename, $ext)
112 { 148 {
113 global $default; 149 global $default;
  150 + $tempDir = $default->tmpDirectory;
  151 +
  152 + // Create temporary copy of document
  153 + $sourceFile = tempnam($tempDir, 'pdfconverter') . '.' .$ext;
  154 + $res = @copy($filename, $sourceFile);
  155 +
  156 + // Create a temporary file to store the converted document
  157 + $targetFile = tempnam($tempDir, 'pdfconverter') . '.pdf';
114 158
115 // Get contents and send to converter 159 // Get contents and send to converter
116 - $buffer = file_get_contents($filename);  
117 - $buffer = $this->xmlrpc->convertDocument($buffer, 'pdf'); 160 + $result = $this->xmlrpc->convertDocument($sourceFile, $targetFile, $this->ooHost, $this->ooPort);
118 161
119 - if($buffer === false){ 162 + if($result === false){
120 $default->log->error('PDF Converter Plugin: Conversion to PDF Failed'); 163 $default->log->error('PDF Converter Plugin: Conversion to PDF Failed');
  164 + @unlink($sourceFile);
  165 + @unlink($targetFile);
121 return false; 166 return false;
122 } 167 }
123 168
124 - $dir = $default->pdfDirectory; 169 + $pdfDir = $default->pdfDirectory;
125 170
126 // Ensure the PDF directory exists 171 // Ensure the PDF directory exists
127 - if(!file_exists($dir)){  
128 - mkdir($dir, 0755); 172 + if(!file_exists($pdfDir)){
  173 + mkdir($pdfDir, 0755);
129 } 174 }
130 175
131 - $pdfFile = $dir .'/'. $this->document->iId.'.pdf'; 176 + $pdfFile = $pdfDir .'/'. $this->document->iId.'.pdf';
132 177
133 // if a previous version of the pdf exists - delete it 178 // if a previous version of the pdf exists - delete it
134 if(file_exists($pdfFile)){ 179 if(file_exists($pdfFile)){
135 @unlink($pdfFile); 180 @unlink($pdfFile);
136 } 181 }
137 182
138 - file_put_contents($pdfFile, $buffer);  
139 - unset($buffer);  
140 - 183 + // Copy the generated pdf into the pdf directory
  184 + $res = @copy($targetFile, $pdfFile);
  185 + @unlink($sourceFile);
  186 + @unlink($targetFile);
141 return $pdfFile; 187 return $pdfFile;
142 188
143 } 189 }
search2/indexing/lib/XmlRpcLucene.inc.php
@@ -400,15 +400,44 @@ class XmlRpcLucene @@ -400,15 +400,44 @@ class XmlRpcLucene
400 return $obj['metadata']; 400 return $obj['metadata'];
401 } 401 }
402 402
  403 + /**
  404 + * Converts a document to the format of the given target file based on the extension of both files.
  405 + *
  406 + * @param string $sourceFile The full path of the document to be converted, with extension.
  407 + * @param string $targetFile The full path of the file to save the converted document with the desired extension.
  408 + * @param string $ooHost The host domain or IP address on which OpenOffice is running
  409 + * @param string $ooPort The port on which OpenOffice is listening.
  410 + * @return boolean
  411 + */
  412 + function convertDocument($sourceFile, $targetFile, $ooHost, $ooPort)
  413 + {
  414 + $function = new xmlrpcmsg('openoffice.convertDocument',
  415 + array(
  416 + php_xmlrpc_encode((string) $sourceFile),
  417 + php_xmlrpc_encode((string) $targetFile),
  418 + php_xmlrpc_encode((string) $ooHost),
  419 + php_xmlrpc_encode((int) $ooPort)
  420 + )
  421 + );
  422 +
  423 + $result=&$this->client->send($function, 120);
  424 +
  425 + if($result->faultCode()) {
  426 + $this->error($result, 'convertDocument');
  427 + return false;
  428 + }
  429 + return php_xmlrpc_decode($result->value()) == 0;
  430 + }
403 431
404 /** 432 /**
405 * Convert document to given format. Defaults to pdf 433 * Convert document to given format. Defaults to pdf
406 * 434 *
  435 + * @deprecated
407 * @param $content 436 * @param $content
408 * @param $toExtension 437 * @param $toExtension
409 * @return unknown_type 438 * @return unknown_type
410 */ 439 */
411 - function convertDocument($content, $toExtension = 'pdf') 440 + function convertDocumentStreamed($content, $toExtension = 'pdf')
412 { 441 {
413 $function = new xmlrpcmsg('openoffice.convertDocument', 442 $function = new xmlrpcmsg('openoffice.convertDocument',
414 array( 443 array(