Commit 1f59fde31f556176e67a1c4933e4ecc3f386ffbb
1 parent
33b20eaf
Updated the PDF converter to check if open office is running and to display a decent error message.
PT: 1549976 Committed by: Megan Watson
Showing
3 changed files
with
56 additions
and
12 deletions
plugins/ktstandard/PDFGeneratorAction.php
| ... | ... | @@ -255,9 +255,10 @@ class PDFGeneratorAction extends KTDocumentAction { |
| 255 | 255 | $converter->setDocument($this->oDocument); |
| 256 | 256 | $res = $converter->processDocument(); |
| 257 | 257 | |
| 258 | - if(!$res){ | |
| 258 | + if($res !== true){ | |
| 259 | + // please contact your System Administrator | |
| 259 | 260 | $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 or the PDF Generator could not connect.')); | |
| 261 | + $this->errorRedirectToMain($res . ' ' . _kt('Please contact your System Administrator for assistance.')); | |
| 261 | 262 | exit(); |
| 262 | 263 | } |
| 263 | 264 | |
| ... | ... | @@ -268,7 +269,22 @@ class PDFGeneratorAction extends KTDocumentAction { |
| 268 | 269 | } |
| 269 | 270 | exit(); |
| 270 | 271 | } |
| 271 | - $this->errorRedirectToMain(_kt('PDF file could not be generated')); | |
| 272 | + | |
| 273 | + // Check if this is a office 2007 doc | |
| 274 | + $mime = $this->getMimeExtension(); | |
| 275 | + | |
| 276 | + $o2007_types[] = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'; | |
| 277 | + $o2007_types[] = 'application/vnd.openxmlformats-officedocument.presentationml.presentation'; | |
| 278 | + $o2007_types[] = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; | |
| 279 | + | |
| 280 | + if(in_array($mime, $o2007_types)){ | |
| 281 | + $error = _kt('The document is an MS Office 2007 format. This may not be supported by your version of OpenOffice. Please contact your System Administrator for assistance'); | |
| 282 | + $default->log->error('PDF Generator: Document is an MS Office 2007 format. OpenOffice must be version 3.0 or higher to support this format. Please upgrade to the latest version.'); | |
| 283 | + }else{ | |
| 284 | + $error = _kt('PDF file could not be generated. The format may not be supported by your version of OpenOffice. Please contact your System Administrator for assistance'); | |
| 285 | + $default->log->error('PDF Generator: PDF file could not be generated. The format may not be supported by your version of OpenOffice. Please check that you have the latest version installed.'); | |
| 286 | + } | |
| 287 | + $this->errorRedirectToMain($error); | |
| 272 | 288 | exit(); |
| 273 | 289 | } |
| 274 | 290 | ... | ... |
plugins/pdfConverter/pdfConverter.php
| ... | ... | @@ -48,6 +48,25 @@ class pdfConverter extends BaseProcessor |
| 48 | 48 | $this->ooPort = $config->get('openoffice/port','8100'); |
| 49 | 49 | |
| 50 | 50 | $this->xmlrpc = XmlRpcLucene::get($javaServerUrl); |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + } | |
| 55 | + | |
| 56 | + /** | |
| 57 | + * Check that open office is running | |
| 58 | + * | |
| 59 | + * @return boolean | |
| 60 | + */ | |
| 61 | + private function checkOO() | |
| 62 | + { | |
| 63 | + $available = SearchHelper::checkOpenOfficeAvailablity(); | |
| 64 | + | |
| 65 | + if(is_null($available)){ | |
| 66 | + return true; | |
| 67 | + } | |
| 68 | + | |
| 69 | + return false; | |
| 51 | 70 | } |
| 52 | 71 | |
| 53 | 72 | /** |
| ... | ... | @@ -63,17 +82,26 @@ class pdfConverter extends BaseProcessor |
| 63 | 82 | |
| 64 | 83 | if(!file_exists($path)){ |
| 65 | 84 | global $default; |
| 66 | - $default->log->debug('Document, id: '.$this->document->iId.', does not exist at given storage path: '.$path); | |
| 67 | - return false; | |
| 85 | + $default->log->debug('PDF Converter: Document, id: '.$this->document->iId.', does not exist at given storage path: '.$path); | |
| 86 | + return _kt("The document, id: {$this->document->iId}, does not exist at the given storage path: {$path}"); | |
| 68 | 87 | } |
| 69 | 88 | |
| 89 | + // check for OO | |
| 90 | + $available = $this->checkOO(); | |
| 91 | + | |
| 70 | 92 | // do pdf conversion |
| 93 | + if(!$available){ | |
| 94 | + global $default; | |
| 95 | + $default->log->error("PDF Converter: Cannot connect to Open Office Server on host {$this->ooHost} : {$this->ooPort}"); | |
| 96 | + return _kt('Cannot connect to Open Office Server.'); | |
| 97 | + } | |
| 98 | + | |
| 71 | 99 | $res = $this->convertFile($path, $ext); |
| 72 | 100 | |
| 73 | - if($res === false){ | |
| 101 | + if($res !== true){ | |
| 74 | 102 | global $default; |
| 75 | - $default->log->debug('Document, id: '.$this->document->iId.', could not be converted to pdf.'); | |
| 76 | - return false; | |
| 103 | + $default->log->debug('PDF Converter: Document, id: '.$this->document->iId.', could not be converted to pdf.'); | |
| 104 | + return _kt("The document, id: {$this->document->iId}, could not be converted to pdf format. The following error occurred: \"{$res}\"."); | |
| 77 | 105 | } |
| 78 | 106 | |
| 79 | 107 | return true; |
| ... | ... | @@ -169,11 +197,11 @@ class pdfConverter extends BaseProcessor |
| 169 | 197 | // Get contents and send to converter |
| 170 | 198 | $result = $this->xmlrpc->convertDocument($sourceFile, $targetFile, $this->ooHost, $this->ooPort); |
| 171 | 199 | |
| 172 | - if($result === false){ | |
| 200 | + if(is_string($result)){ | |
| 173 | 201 | $default->log->error('PDF Converter Plugin: Conversion to PDF Failed'); |
| 174 | 202 | @unlink($sourceFile); |
| 175 | 203 | @unlink($targetFile); |
| 176 | - return false; | |
| 204 | + return $result; | |
| 177 | 205 | } |
| 178 | 206 | |
| 179 | 207 | $pdfDir = $default->pdfDirectory; |
| ... | ... | @@ -196,7 +224,7 @@ class pdfConverter extends BaseProcessor |
| 196 | 224 | $res = @copy($targetFile, $pdfFile); |
| 197 | 225 | @unlink($sourceFile); |
| 198 | 226 | @unlink($targetFile); |
| 199 | - return $pdfFile; | |
| 227 | + return true; | |
| 200 | 228 | |
| 201 | 229 | } |
| 202 | 230 | } | ... | ... |
search2/indexing/lib/XmlRpcLucene.inc.php