app/Plugin/OrderPlus42/Event/AdminOrderEvent.php line 112

Open in your IDE?
  1. <?php
  2. /*
  3. * Plugin Name : OrderPlus
  4. *
  5. * Copyright (C) BraTech Co., Ltd. All Rights Reserved.
  6. * http://www.bratech.co.jp/
  7. *
  8. * For the full copyright and license information, please view the LICENSE
  9. * file that was distributed with this source code.
  10. */
  11. namespace Plugin\OrderPlus42\Event;
  12. use Eccube\Event\EccubeEvents;
  13. use Eccube\Event\EventArgs;
  14. use Eccube\Event\TemplateEvent;
  15. use Plugin\OrderPlus42\Entity\CustomItem;
  16. use Plugin\OrderPlus42\Entity\ShippingBridge;
  17. use Plugin\OrderPlus42\Repository\CustomItemRepository;
  18. use Plugin\OrderPlus42\Service\OrderPlusService;
  19. use Symfony\Component\DependencyInjection\ContainerInterface;
  20. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  21. class AdminOrderEvent implements EventSubscriberInterface
  22. {
  23.     private $container;
  24.     private $customItemRepository;
  25.     private $orderPlusService;
  26.     public function __construct(
  27.             ContainerInterface $container,
  28.             CustomItemRepository $customItemRepository,
  29.             orderPlusService $orderPlusService
  30.             )
  31.     {
  32.         $this->container $container;
  33.         $this->customItemRepository $customItemRepository;
  34.         $this->orderPlusService $orderPlusService;
  35.     }
  36.     /**
  37.      * @return array
  38.      */
  39.     public static function getSubscribedEvents()
  40.     {
  41.         return [
  42.             '@admin/Order/edit.twig' => 'onTemplateAdminOrderEdit',
  43.             '@admin/Order/shipping.twig' => 'onTemplateAdminOrderShipping',
  44.             EccubeEvents::ADMIN_ORDER_CSV_EXPORT_ORDER => 'hookAdminOrderCsvExport',
  45.                ];
  46.     }
  47.     public function onTemplateAdminOrderEdit(TemplateEvent $event)
  48.     {
  49.         $parameters $event->getParameters();
  50.         $source $event->getSource();
  51.         $OrderCustomItems $this->customItemRepository->getList(CustomItem::ORDER_CLASS);
  52.         $AdminOrderCustomItems $this->orderPlusService->getOrderPlusForm('admin_order');
  53.         foreach($OrderCustomItems as $key => $OrderCustomItem){
  54.             foreach($AdminOrderCustomItems as $AdminOrderCustomItem){
  55.                 if($OrderCustomItem->getId() == $AdminOrderCustomItem->getId())unset($OrderCustomItems[$key]);
  56.             }
  57.         }
  58.         $ShippingCustomItems $this->customItemRepository->getList(CustomItem::SHIPPING_CLASS);
  59.         if(preg_match('/\{\{\sform\_errors\(form\.message\)\s\}\}[\n|\r\n|\r]\s*\<\/div\>[\n|\r\n|\r]\s*\<\/div\>[\n|\r\n|\r]\s*\<\/div\>[\n|\r\n|\r]\s*\<\/div\>/',$source$result)){
  60.             $search $result[0];
  61.             $snippet file_get_contents($this->container->getParameter('plugin_realdir'). '/OrderPlus42/Resource/template/admin/Order/ext_order_edit.twig');
  62.             $replace $search $snippet;
  63.             $source str_replace($search$replace$source);
  64.         }
  65.         if(preg_match('/\{\{\sform\_errors\(form\.Shipping\.DeliveryTime\)\s\}\}[\n|\r\n|\r]\s*\<\/div\>[\n|\r\n|\r]\s*\<\/div\>[\n|\r\n|\r]\s*\<\/div\>/',$source$result)){
  66.             $search $result[0];
  67.             $snippet file_get_contents($this->container->getParameter('plugin_realdir'). '/OrderPlus42/Resource/template/admin/Order/ext_shipping_edit.twig');
  68.             $replace $search $snippet;
  69.             $source str_replace($search$replace$source);
  70.         }
  71.         $event->setSource($source);
  72.         $parameters['OrderCustomItems'] = $OrderCustomItems;
  73.         $parameters['ShippingCustomItems'] = $ShippingCustomItems;
  74.         $event->setParameters($parameters);
  75.         $this->insertDatePickerJSAdmin($event);
  76.     }
  77.     public function onTemplateAdminOrderShipping(TemplateEvent $event)
  78.     {
  79.         $parameters $event->getParameters();
  80.         $source $event->getSource();
  81.         $ShippingCustomItems $this->customItemRepository->getList(CustomItem::SHIPPING_CLASS);
  82.         if(preg_match('/shippingForm\.vars\.value\.creator\s\}\}\<\/span\>[\n|\r\n|\r]\s*\<\/div\>[\n|\r\n|\r]\s*\<\/div\>[\n|\r\n|\r]\s*\<\/div\>[\n|\r\n|\r]\s*\<\/div\>/',$source$result)){
  83.             $search $result[0];
  84.             $snippet file_get_contents($this->container->getParameter('plugin_realdir'). '/OrderPlus42/Resource/template/admin/Order/ext_shipping.twig');
  85.             $replace $search $snippet;
  86.             $source str_replace($search$replace$source);
  87.         }
  88.         $event->setSource($source);
  89.         $parameters['ShippingCustomItems'] = $ShippingCustomItems;
  90.         $event->setParameters($parameters);
  91.         $this->insertDatePickerJSAdmin($event);
  92.     }
  93.     public function hookAdminOrderCsvExport(EventArgs $event)
  94.     {
  95.         $ExportCsvRow $event->getArgument('ExportCsvRow');
  96.         if ($ExportCsvRow->isDataNull()) {
  97.             $entityManager $this->container->get('doctrine.orm.entity_manager');
  98.             $shippingReposiory $entityManager->getRepository(ShippingBridge::class);
  99.             $OrderItem $event->getArgument('OrderItem');
  100.             $Order $OrderItem->getOrder();
  101.             $Shipping $OrderItem->getShipping();
  102.             $Csv $event->getArgument('Csv');
  103.             $csvEntityName str_replace('\\\\''\\'$Csv->getEntityName());
  104.             $data null;
  105.             if($csvEntityName == 'Plugin\OrderPlus42\Entity\OrderBridge'){
  106.                 $data $Order->getPlusViewData($Csv->getFieldName());
  107.             }elseif($csvEntityName == 'Plugin\OrderPlus42\Entity\ShippingBridge'){
  108.                 $plgShipping $shippingReposiory->findOneBy(['Shipping' => $Shipping'custom_item_id' =>  $Csv->getFieldName()]);
  109.                 if($plgShipping){
  110.                     $data $plgShipping->getViewValue();
  111.                 }
  112.             }
  113.             $ExportCsvRow->setData($data);
  114.         }
  115.     }
  116.     private function insertDatePickerJSAdmin(TemplateEvent $event)
  117.     {
  118.         $twig '@OrderPlus42/admin/datepicker_js.twig';
  119.         $event->addAsset($twig);
  120.     }
  121. }