From d62a0b304cbe1a047bdcbf2ff4761ec0b317830d Mon Sep 17 00:00:00 2001 From: Andreas Moik Date: Mon, 28 Nov 2016 09:44:52 +0100 Subject: [PATCH] - bugfix: changedir in dokument_export in cleanup method - bugfix: dokumentenakt errorhandling --- content/dokumentenakt.pdf.php | 25 ++++++++++++++----------- include/dokument_export.class.php | 24 ++++++++++++------------ 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/content/dokumentenakt.pdf.php b/content/dokumentenakt.pdf.php index f0a7f9917..1820288ef 100755 --- a/content/dokumentenakt.pdf.php +++ b/content/dokumentenakt.pdf.php @@ -137,6 +137,7 @@ foreach($prestudent_ids as $pid) $result = $db->db_query($query); while($row = $db->db_fetch_object($result)) { + $docErrors = array(); $convertSuccess = true; $filename = ""; if($row->inhalt != null) @@ -152,24 +153,24 @@ foreach($prestudent_ids as $pid) if ($dms->mimetype != $row->mimetype) { - $preErrors[] = "Mimetype von Akte und DMS der DMS-ID ".$row->dms_id." stimmen nicht ueberein. Bitte kontaktieren Sie einen Administrator"; + $docErrors[] = "Mimetype von Akte und DMS der DMS-ID ".$row->dms_id." stimmen nicht ueberein. Bitte kontaktieren Sie einen Administrator"; } - + $filename = DMS_PATH . $dms->filename; if(!file_exists($filename)) { - $preErrors[] = "'" . $filename . "': Datei nicht gefunden"; + $docErrors[] = "'" . $filename . "': Datei nicht gefunden"; } } // this should never happen if($filename == "") { - $preErrors[] = "'" . $row->akte_id . "': Diese Akte hat keinen Inhalt und keine dms_id"; + $docErrors[] = "'" . $row->akte_id . "': Diese Akte hat keinen Inhalt und keine dms_id"; } - if(empty($preErrors)) + if(empty($docErrors)) { /* * Determine the filetype @@ -205,11 +206,12 @@ foreach($prestudent_ids as $pid) ) { $fullFilename = $tmpDir . "/".uniqid() . ".pdf"; + $convert = $docExp->convert($filename, $fullFilename, "pdf"); - if(!$docExp->convert($filename, $fullFilename, "pdf")) + if(!$convert) { $convertSuccess = false; - $preErrors[] = ($row->titel != ''? $row->titel:$row->bezeichnung)." (Akte_ID ".$row->akte_id."): Konvertierung fehlgeschlagen(".$row->mimetype.")"; + $docErrors[] = ($row->titel != ''? $row->titel:$row->bezeichnung)." (Akte_ID ".$row->akte_id."): Konvertierung fehlgeschlagen(".$row->mimetype.")"; } } else if( @@ -265,11 +267,11 @@ foreach($prestudent_ids as $pid) else $addString = "(DB)"; if($convertSuccess) - $preErrors[] = '"' . $row->titel . '":' . $addString . ' Dokument nicht gefunden'; + $docErrors[] = '"' . $row->titel . '":' . $addString . ' Dokument nicht gefunden'; } } else - $preErrors[] ="'$row->titel' hat einen nicht unterstützten mimetype: $row->mimetype"; + $docErrors[] ="'$row->titel' hat einen nicht unterstützten mimetype: $row->mimetype"; } } @@ -418,7 +420,7 @@ foreach($prestudent_ids as $pid) 'zgvnation' => $zgvnation, array('dokumente'=> $dokumente), array('aufnahme_notizen'=> $notiz_text_array) - + ),"dokumentenakt" ); //echo $doc->getXML();exit; @@ -433,9 +435,10 @@ foreach($prestudent_ids as $pid) unset($doc); } - if(!empty($preErrors)) + if(!empty($docErrors) || !empty($preErrors)) { $errors[$pid] = $preErrors; + $errors[$pid] = array_merge($errors[$pid], $docErrors); } } diff --git a/include/dokument_export.class.php b/include/dokument_export.class.php index 5b34e78ce..7d23cfa3f 100644 --- a/include/dokument_export.class.php +++ b/include/dokument_export.class.php @@ -34,6 +34,7 @@ class dokument_export private $temp_filename; private $temp_folder; private $images=array(); + private $sourceDir; public $errormsg; /** @@ -171,6 +172,7 @@ class dokument_export $this->temp_folder = sys_get_temp_dir().'/fhcunoconv-'.uniqid(); mkdir($this->temp_folder); + $this->sourceDir = getcwd(); chdir($this->temp_folder); file_put_contents($this->temp_folder . '/content.xml', $contentbuffer); @@ -256,18 +258,14 @@ class dokument_export switch($this->outputformat) { case 'pdf': - $this->temp_filename = $this->temp_folder . '/out.pdf'; - exec("unoconv -e IsSkipEmptyPages=false --stdout -f pdf $tempname_zip > ".$this->temp_filename, $out, $ret); - - if($ret!=0) - { - $this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte informieren Sie den Administrator'; - return false; - } - break; case 'doc': - $this->temp_filename='out.doc'; - exec("unoconv -e IsSkipEmptyPages=false --stdout -f doc $tempname_zip > ".$this->temp_filename, $out, $ret); + $this->temp_filename = $this->temp_folder . '/out.' . $this->outputformat; + + $command = 'unoconv -e IsSkipEmptyPages=false -f ' . $this->outputformat . ' --output %s %s 2>&1'; + $command = sprintf($command, $this->temp_filename, $tempname_zip); + + exec($command, $out, $ret); + if($ret!=0) { $this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte informieren Sie den Administrator'; @@ -365,6 +363,7 @@ class dokument_export rmdir($this->temp_folder); + chdir($this->sourceDir); return true; } @@ -412,10 +411,11 @@ class dokument_export */ public function convert($inFile, $outFile, $format = "pdf") { - $command = 'unoconv --format %s --output %s %s'; + $command = 'unoconv -f %s --output %s %s 2>&1'; $command = sprintf($command, $format, $outFile, $inFile); exec($command, $out, $ret); + if($ret!=0) { $this->errormsg = 'Dokumentenkonvertierung ist derzeit nicht möglich. Bitte informieren Sie den Administrator';