From 0edb64153a37cecb08dda1f8093bb6f030fd30eb Mon Sep 17 00:00:00 2001 From: Daniel Seifert Date: Fri, 5 Jun 2020 10:06:58 +0200 Subject: [PATCH] add filename extension if it's missing --- .../AbstractClasses/pdfdocumentsGeneric.php | 33 +++++++++++++++++++ .../AbstractClasses/pdfdocumentsOrder.php | 18 +++++----- .../pdfdocumentsGenericInterface.php | 7 ++++ 3 files changed, 50 insertions(+), 8 deletions(-) diff --git a/Application/Model/AbstractClasses/pdfdocumentsGeneric.php b/Application/Model/AbstractClasses/pdfdocumentsGeneric.php index eb70aa5..9009880 100644 --- a/Application/Model/AbstractClasses/pdfdocumentsGeneric.php +++ b/Application/Model/AbstractClasses/pdfdocumentsGeneric.php @@ -36,6 +36,8 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface const PDF_ORIENTATION_PORTRAIT = 'P'; const PDF_ORIENTATION_LANDSCAPE = 'L'; + public $filenameExtension = 'pdf'; + /** @var Smarty */ public $oSmarty; @@ -137,6 +139,37 @@ abstract class pdfdocumentsGeneric extends Base implements genericInterface $this->filename = $filename; } + /** + * @param string $sFilename + * + * @return string + */ + public function getFilename() + { + // forced filename from setFilename() + if ($this->filename) { + return $this->addFilenameExtension($this->filename); + } + + return $this->addFilenameExtension($this->getTypeForFilename()); + } + + /** + * @param string $filename + * + * @return string + */ + public function addFilenameExtension($filename) + { + $extension = $this->filenameExtension; + $extensionLength = (strlen($extension) + 1) * -1; + if ((bool) strlen($extension) && substr($filename, $extensionLength) != '.'.$extension) { + $filename .= '.'.$extension; + } + + return $filename; + } + /** * Gets proper file name * diff --git a/Application/Model/AbstractClasses/pdfdocumentsOrder.php b/Application/Model/AbstractClasses/pdfdocumentsOrder.php index 14f7b1c..78b3b62 100644 --- a/Application/Model/AbstractClasses/pdfdocumentsOrder.php +++ b/Application/Model/AbstractClasses/pdfdocumentsOrder.php @@ -68,18 +68,20 @@ abstract class pdfdocumentsOrder extends pdfdocumentsGeneric implements orderInt { // forced filename from setFilename() if ($this->filename) { - return $this->filename; + return $this->addFilenameExtension($this->filename); } $sTrimmedBillName = trim($this->getOrder()->getFieldData('oxbilllname')); - return implode( - '_', - [ - $this->getTypeForFilename(), - $this->getOrder()->getFieldData('oxordernr'), - $sTrimmedBillName . ".pdf" - ] + return $this->addFilenameExtension( + implode( + '_', + [ + $this->getTypeForFilename(), + $this->getOrder()->getFieldData('oxordernr'), + $sTrimmedBillName + ] + ) ); } diff --git a/Application/Model/Interfaces/pdfdocumentsGenericInterface.php b/Application/Model/Interfaces/pdfdocumentsGenericInterface.php index b8b1a97..a57fa81 100644 --- a/Application/Model/Interfaces/pdfdocumentsGenericInterface.php +++ b/Application/Model/Interfaces/pdfdocumentsGenericInterface.php @@ -65,4 +65,11 @@ interface pdfdocumentsGenericInterface * @return string */ public function getFilename(); + + /** + * @param string $filename + * + * @return string + */ + public function addFilenameExtension($filename); } \ No newline at end of file