app/Plugin/ApexOrderItemOption/Event/AdminOrderEvent.php line 70

Open in your IDE?
  1. <?php
  2. namespace Plugin\ApexOrderItemOption\Event;
  3. use Eccube\Common\EccubeConfig;
  4. use Eccube\Event\EccubeEvents;
  5. use Eccube\Event\EventArgs;
  6. use Eccube\Event\TemplateEvent;
  7. use Plugin\ApexOrderItemOption\Service\ProductOptionService;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. class AdminOrderEvent implements EventSubscriberInterface
  10. {
  11.     private $eccubeConfig;
  12.     private $productOptionService;
  13.     public function __construct(
  14.         EccubeConfig $eccubeConfig,
  15.         ProductOptionService $productOptionService
  16.     ){
  17.         $this->eccubeConfig $eccubeConfig;
  18.         $this->productOptionService $productOptionService;
  19.     }
  20.     /**
  21.      * @return array
  22.      */
  23.     public static function getSubscribedEvents()
  24.     {
  25.         return [
  26.             '@admin/Order/edit.twig' => 'onTemplateAdminOrderEdit',
  27.             '@admin/Order/order_item_prototype.twig' => 'onTemplateAdminOrderItemPrototype',
  28.             '@admin/Order/shipping.twig' => 'onTemplateAdminOrderEdit',
  29.             '@admin/Order/search_product.twig' => 'onTemplateAdminOrderSearchProduct',
  30.             EccubeEvents::ADMIN_ORDER_CSV_EXPORT_ORDER => 'hookAdminOrderCsvExport',
  31.         ];
  32.     }
  33.     public function onTemplateAdminOrderEdit(TemplateEvent $event)
  34.     {
  35.         $source $event->getSource();
  36.         if(preg_match("/\{\{\sOrderItem\.product\_name\s\}\}/",$source$result)){
  37.             $search $result[0];
  38.             $replace $search "{{ include('@ApexOrderItemOption/admin/Order/orderitem_option.twig') }}";
  39.             $source str_replace($search$replace$source);
  40.         }
  41.         if(preg_match("/\{\{\s*form\_widget\(orderItemForm\.product\_name,\s*\{\s*'type'\:\s*'hidden'\s*\}\)\s*\}\}/",$source$result)){
  42.             $search $result[0];
  43.             $replace $search "{{ form_widget(orderItemForm.option_serial, { 'type': 'hidden' }) }}";
  44.             $source str_replace($search$replace$source);
  45.         }
  46.         $event->setSource($source);
  47.     }
  48.     public function onTemplateAdminOrderItemPrototype(TemplateEvent $event)
  49.     {
  50.         $source $event->getSource();
  51.         if(preg_match("/\{\{\s*form\_widget\(orderItemForm\.tax\_type\)\s*\}\}/",$source$result)){
  52.             $search $result[0];
  53.             $replace $search "{{ form_widget(orderItemForm.option_serial) }}";
  54.             $source str_replace($search$replace$source);
  55.         }
  56.         $event->setSource($source);
  57.     }
  58.     public function onTemplateAdminOrderSearchProduct(TemplateEvent $event)
  59.     {
  60.         $source $event->getSource();
  61.         if(preg_match("/\<\/script\>/",$source$result)){
  62.             $search $result[0];
  63.             $replace $search "{{ include('@ApexOrderItemOption/admin/Order/search_product_js.twig') }}";
  64.             $source str_replace($search$replace$source);
  65.         }
  66.         if(preg_match("/fnAddOrderItem/",$source$result)){
  67.             $search $result[0];
  68.             $replace "fnAddOrderItemOption";
  69.             $source str_replace($search$replace$source);
  70.         }
  71.         if(preg_match("/\{\{\s\'admin\.product\.product\_class\_\_short\'\|trans\s\}\}/",$source$result)){
  72.             $search $result[0];
  73.             $replace $search "/{{ 'aoio.admin.common.option'|trans }}";
  74.             $source str_replace($search$replace$source);
  75.         }
  76.         if(preg_match("/\<\/td\>[\n|\r\n|\r]\s*\<td class=\"align\-middle pr\-3 text\-end\"\>/",$source$result)){
  77.             $search $result[0];
  78.             $snippet file_get_contents($this->eccubeConfig->get('plugin_realdir'). '/ApexOrderItemOption/Resource/template/admin/Order/search_product_option.twig');
  79.             $replace $snippet $search;
  80.             $source str_replace($search$replace$source);
  81.         }elseif(preg_match("/\<\/td\>[\n|\r\n|\r]\s*\{\%\sif\sProduct\.stock_find\s\%\}/",$source$result)){
  82.             $search $result[0];
  83.             $snippet file_get_contents($this->eccubeConfig->get('plugin_realdir'). '/ApexOrderItemOption/Resource/template/admin/Order/search_product_option.twig');
  84.             $replace $snippet $search;
  85.             $source str_replace($search$replace$source);
  86.         }
  87.         $event->setSource($source);
  88.         $parameters $event->getParameters();
  89.         $Products $parameters['Products'];
  90.         $optionParameters $this->productOptionService->getOptionParameters($Products);
  91.         $parameters array_merge($parameters$optionParameters);
  92.         $event->setParameters($parameters);
  93.     }
  94.     public function hookAdminOrderCsvExport(EventArgs $event)
  95.     {
  96.         $ExportCsvRow $event->getArgument('ExportCsvRow');
  97.         if ($ExportCsvRow->isDataNull()) {
  98.             $OrderItem $event->getArgument('OrderItem');
  99.             $Csv $event->getArgument('Csv');
  100.             $csvEntityName str_replace('\\\\''\\'$Csv->getEntityName());
  101.             if($csvEntityName == 'Plugin\ApexOrderItemOption\Entity\OrderItemOption'){
  102.                 $data null;
  103.                 $arrData = [];
  104.                 $OrderItemOptions $OrderItem->getOrderItemOptions();
  105.                 if(!is_null($Csv->getReferenceFieldName())){
  106.                     $optionId $Csv->getReferenceFieldName();
  107.                     foreach($OrderItemOptions as $OrderItemOption){
  108.                         if($optionId == $OrderItemOption->getOptionId()){
  109.                             foreach($OrderItemOption->getOrderItemOptionCategories() as $OrderItemOptionCategory){
  110.                                 $arrData[] = $OrderItemOptionCategory->getValue();
  111.                             }
  112.                         }
  113.                     }
  114.                     if(count($arrData) > 0)$data implode(',',$arrData);
  115.                 }else{
  116.                     foreach($OrderItemOptions as $OrderItemOption){
  117.                         $text $OrderItemOption->getLabel(). ':';
  118.                         foreach($OrderItemOption->getOrderItemOptionCategories() as $OrderItemOptionCategory){
  119.                             $text .= $OrderItemOptionCategory->getValue() .',';
  120.                         }
  121.                         $arrData[] = rtrim($text,',');
  122.                     }
  123.                     if(count($arrData) > 0)$data implode(',',$arrData);
  124.                 }
  125.                 $ExportCsvRow->setData($data);
  126.             }
  127.         }
  128.     }
  129. }