From aa2072d985e6a0737d7dce58f80683ff5501c6a9 Mon Sep 17 00:00:00 2001 From: Daniel Seifert Date: Fri, 29 May 2020 09:41:17 +0200 Subject: [PATCH] prevent module extension from new method in other module extension (depends difficult right order in extension list) --- Application/Controller/orderPdfGenerator.php | 75 +++++++++++++++++++ IntelliSenseHelper.php | 21 ++++++ .../Model/d3_Order_PdfDocuments.php | 44 +---------- 3 files changed, 99 insertions(+), 41 deletions(-) create mode 100644 Application/Controller/orderPdfGenerator.php create mode 100644 IntelliSenseHelper.php diff --git a/Application/Controller/orderPdfGenerator.php b/Application/Controller/orderPdfGenerator.php new file mode 100644 index 0000000..bcdb386 --- /dev/null +++ b/Application/Controller/orderPdfGenerator.php @@ -0,0 +1,75 @@ + + * @link http://www.oxidmodule.com + */ + +namespace D3\PdfDocuments\Application\Controller; + +use D3\PdfDocuments\Application\Model\Documents\deliverynotePdf; +use D3\PdfDocuments\Application\Model\Documents\invoicePdf; +use D3\PdfDocuments\Application\Model\Interfaces\pdfdocuments_order_interface as OrderPdfInterface; +use OxidEsales\Eshop\Application\Model\Order; +use OxidEsales\Eshop\Core\Registry; + +class orderPdfGenerator +{ + /** + * @param Order $order + * @param $sFilename + * @param int $iSelLang + * @param string $target + */ + public function generatePdf(Order $order, $sFilename, $iSelLang = 0, $target = 'I') + { + $Pdf= $this->getPdfClass($order); + + $Pdf->setOrder($order); + $Pdf->genPdf($sFilename, $iSelLang, $target); + } + + public function getPdfClass(Order $order) + { +echo __CLASS__." - ".__FUNCTION__." - ".__LINE__."
"; + switch (Registry::getRequest()->getRequestParameter('pdftype')) { + case ('dnote'): + case ('dnote_without_logo'): +echo __CLASS__." - ".__FUNCTION__." - ".__LINE__."
"; + $pdfInstance= oxNew(deliverynotePdf::class); + $pdfInstance->setOrder($order); + return $pdfInstance; + case ('standart'): + case('standart_without_logo'): +echo __CLASS__." - ".__FUNCTION__." - ".__LINE__."
"; + $pdfInvoice= oxNew(invoicePdf::class); + $pdfInvoice->setOrder($order); + return $pdfInvoice; + default: +echo __CLASS__." - ".__FUNCTION__." - ".__LINE__."
"; + return $this->getCustomPdfClass($order); + } + } + + /** + * @return OrderPdfInterface + * @throws \OxidEsales\Eshop\Core\Exception\SystemComponentException + * @throws \oxSystemComponentException + */ + public function getCustomPdfClass(Order $order) + { +echo __CLASS__." - ".__FUNCTION__." - ".__LINE__."
"; + $pdfInvoice= oxNew(invoicePdf::class); + $pdfInvoice->setOrder($order); + + return $pdfInvoice; + } +} \ No newline at end of file diff --git a/IntelliSenseHelper.php b/IntelliSenseHelper.php new file mode 100644 index 0000000..ea4c112 --- /dev/null +++ b/IntelliSenseHelper.php @@ -0,0 +1,21 @@ + + * @link http://www.oxidmodule.com + */ + +namespace D3\PdfDocuments\Modules\Application\controllers { + + use OxidEsales\Eshop\Application\Controller\Admin\OrderOverview; + + class d3_overview_controller_pdfdocuments_parent extends OrderOverview {} +} \ No newline at end of file diff --git a/Modules/Application/Model/d3_Order_PdfDocuments.php b/Modules/Application/Model/d3_Order_PdfDocuments.php index 06c1064..f31b34b 100644 --- a/Modules/Application/Model/d3_Order_PdfDocuments.php +++ b/Modules/Application/Model/d3_Order_PdfDocuments.php @@ -17,11 +17,7 @@ namespace D3\PdfDocuments\Modules\Application\Model; -use D3\PdfDocuments\Application\Model\Interfaces\pdfdocuments_order_interface as OrderPdfInterface; -use D3\PdfDocuments\Application\Model\Documents\invoicePdf; -use D3\PdfDocuments\Application\Model\Documents\deliverynotePdf; -use OxidEsales\Eshop\Core\Registry; -use Spipu\Html2Pdf\Exception\Html2PdfException; +use D3\PdfDocuments\Application\Controller\orderPdfGenerator; class d3_Order_PdfDocuments extends d3_Order_PdfDocuments_parent { @@ -29,44 +25,10 @@ class d3_Order_PdfDocuments extends d3_Order_PdfDocuments_parent * @param string $sFilename * @param int $iSelLang * @param string $target - * @throws Html2PdfException */ public function genPdf($sFilename, $iSelLang = 0, $target = 'I') { - $Pdf= $this->getPdfClass(); - - $Pdf->setOrder($this); - $Pdf->genPdf($sFilename, $iSelLang = 0, $target = 'I'); - } - - public function getPdfClass() - { - switch (Registry::getRequest()->getRequestParameter('pdftype')) { - case ('dnote'): - case ('dnote_without_logo'): - $pdfInstance= oxNew(deliverynotePdf::class); - $pdfInstance->setOrder($this); - return $pdfInstance; - case ('standart'): - case('standart_without_logo'): - $pdfInvoice= oxNew(invoicePdf::class); - $pdfInvoice->setOrder($this); - return $pdfInvoice; - default: - return $this->getCustomPdfClass(); - } - } - - /** - * @return OrderPdfInterface - * @throws \OxidEsales\Eshop\Core\Exception\SystemComponentException - * @throws \oxSystemComponentException - */ - public function getCustomPdfClass() - { - $pdfInvoice= oxNew(invoicePdf::class); - $pdfInvoice->setOrder($this); - - return $pdfInvoice; + $generator = oxNew( orderPdfGenerator::class ); + $generator->generatePdf($this, $sFilename, $iSelLang, $target); } }