diff --git a/Classes/EventListener/Order/Finish/DocumentRenderer.php b/Classes/EventListener/Order/Finish/DocumentRenderer.php index a65e169..ac886a1 100644 --- a/Classes/EventListener/Order/Finish/DocumentRenderer.php +++ b/Classes/EventListener/Order/Finish/DocumentRenderer.php @@ -11,24 +11,28 @@ * LICENSE file that was distributed with this source code. */ -use Extcode\Cart\Domain\Repository\Order\ItemRepository as OrderItemRepository; -use Extcode\Cart\Event\Order\FinishEvent; use Extcode\CartPdf\Service\PdfService; +use Extcode\Cart\Domain\Repository\Order\ItemRepository as OrderItemRepository; +use Extcode\Cart\Event\Order\EventInterface; +use Psr\Log\LoggerAwareInterface; +use Psr\Log\LoggerAwareTrait; use TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager; -class DocumentRenderer +class DocumentRenderer implements LoggerAwareInterface { + use LoggerAwareTrait; + public function __construct( protected PersistenceManager $persistenceManager, protected OrderItemRepository $orderItemRepository, protected PdfService $pdfService, ) {} - public function __invoke(FinishEvent $event): void + public function __invoke(EventInterface $event): void { $orderItem = $event->getOrderItem(); $settings = $event->getSettings(); - + $this->logger->debug('DocumentRenderer', $settings); $generateDocuments = (array)($settings['autoGenerateDocuments'] ?? []); if (empty($generateDocuments)) { diff --git a/Classes/Service/PdfService.php b/Classes/Service/PdfService.php index 2056282..f760490 100644 --- a/Classes/Service/PdfService.php +++ b/Classes/Service/PdfService.php @@ -233,7 +233,7 @@ private function renderCartHeader(OrderItem $orderItem, string $pdfType): string $view->assign('orderItem', $orderItem); $header = $view->render(); - return trim(preg_replace('~[\\n]+~', '', $header)); + return trim(preg_replace('~[\\n]+~', '', $header ?? '')); } private function renderCartBody(OrderItem $orderItem, string $pdfType): string @@ -247,7 +247,7 @@ private function renderCartBody(OrderItem $orderItem, string $pdfType): string $view->assign('product', $product); $product = $view->render(); - $bodyOut .= trim(preg_replace('~[\\n]+~', '', $product)); + $bodyOut .= trim(preg_replace('~[\\n]+~', '', $product ?? '')); } return $bodyOut; @@ -260,7 +260,7 @@ private function renderCartFooter(OrderItem $orderItem, string $pdfType): string $view->assign('orderItem', $orderItem); $footer = $view->render(); - return trim(preg_replace('~[\\n]+~', '', $footer)); + return trim(preg_replace('~[\\n]+~', '', $footer ?? '')); } private function createFileReferenceFromFalFileObject(File $file): FileReference diff --git a/Configuration/Services.php b/Configuration/Services.php new file mode 100644 index 0000000..491b970 --- /dev/null +++ b/Configuration/Services.php @@ -0,0 +1,44 @@ +services(); + $services->defaults() + ->private() + ->autowire() + ->autoconfigure(); + + $services->load('Extcode\\CartPdf\\', __DIR__ . '/../Classes/') + ->exclude(__DIR__ . '/../Classes/Domain/Model/'); + + // Make PdfService public + $services->set(\Extcode\CartPdf\Service\PdfService::class) + ->public(); + + // Conditionally register event listeners based on cart_payone availability + if (class_exists('\\Extcode\\CartPayone\\Event\\Order\\FinishEvent')) { + // Register listeners for cart_payone events + $services->set('cart_pdf.event_listener.document_renderer.payone') + ->class(\Extcode\CartPdf\EventListener\Order\Finish\DocumentRenderer::class) + ->tag('event.listener', [ + 'identifier' => 'cart-pdf--order--finish--document-renderer-payone', + 'event' => \Extcode\CartPayone\Event\Order\FinishEvent::class, + 'before' => 'cart--order--finish--email', + ]); + } else { + // Register listeners for standard cart events + $services->set('cart_pdf.event_listener.document_renderer.cart') + ->class(\Extcode\CartPdf\EventListener\Order\Finish\DocumentRenderer::class) + ->tag('event.listener', [ + 'identifier' => 'cart--order--finish--document-renderer', + 'event' => \Extcode\Cart\Event\Order\FinishEvent::class, + 'before' => 'cart--order--finish--email', + ]); + } +}; diff --git a/Configuration/Services.yaml b/Configuration/Services.yaml deleted file mode 100644 index b4dbe95..0000000 --- a/Configuration/Services.yaml +++ /dev/null @@ -1,16 +0,0 @@ -services: - _defaults: - autowire: true - autoconfigure: true - public: false - - Extcode\CartPdf\EventListener\Order\Finish\DocumentRenderer: - tags: - - name: event.listener - identifier: 'cart-pdf--order--finish--document-renderer' - event: Extcode\Cart\Event\Order\FinishEvent - before: 'cart--order--finish--email' - - Extcode\CartPdf\Service\PdfService: - public: true -