app/Plugin/CustomerPlusAddonSearch/CustomerPlusAddonSearchEvent.php line 58

Open in your IDE?
  1. <?php
  2. /*
  3. * Plugin Name : CustomerPlusAddonSearch
  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\CustomerPlusAddonSearch;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Eccube\Event\EccubeEvents;
  14. use Eccube\Event\TemplateEvent;
  15. use Eccube\Event\EventArgs;
  16. use Plugin\CustomerPlus4\Entity\CustomerItem;
  17. use Plugin\CustomerPlusAddonSearch\Service\CustomerPlusAddonSearchService;
  18. use Symfony\Component\Form\Extension\Core\Type;
  19. use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
  20. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  21. use Symfony\Component\HttpFoundation\RequestStack;
  22. class CustomerPlusAddonSearchEvent implements EventSubscriberInterface
  23. {
  24.     private $entityManager;
  25.     private $customerPlusAddonService;
  26.     private $requestStack;
  27.     public function __construct(
  28.             EntityManagerInterface $entityManager,
  29.             CustomerPlusAddonSearchService $customerPlusAddonService,
  30.             RequestStack $requestStack
  31.             )
  32.     {
  33.         $this->entityManager $entityManager;
  34.         $this->customerPlusAddonService $customerPlusAddonService;
  35.         $this->requestStack $requestStack;
  36.     }
  37.     /**
  38.      * @return array
  39.      */
  40.     public static function getSubscribedEvents()
  41.     {
  42.         return [
  43.             '@admin/Customer/index.twig' => 'onTemplateAdminCustomer',
  44.             '@admin/Order/index.twig' => 'onTemplateAdminOrder',
  45.             '@admin/Order/edit.twig' => 'onTemplateAdminOrderEdit',
  46.             EccubeEvents::ADMIN_ORDER_EDIT_SEARCH_CUSTOMER_SEARCH => 'hookAdminOrderEditSearchCustomerSearch',
  47.             '@MailMagazine4/admin/index.twig' => 'onTemplateAdminCustomer',
  48.             '@MailMagazine4/admin/history_condition.twig' => 'onTemplateMailmagazineHistoryCondition',
  49.         ];
  50.     }
  51.     public function onTemplateAdminCustomer(TemplateEvent $event)
  52.     {
  53.         if(!$this->customerPlusAddonService->checkInstallPlugin('CustomerPlus4'))return;
  54.         $parameters $event->getParameters();
  55.         $CustomerItems $this->customerPlusAddonService->getEnabledCustomerPlusForm('customer');
  56.         $AdminCustomerItems $this->customerPlusAddonService->getCustomerPlusForm('admin_customer');
  57.         $CustomerItems array_merge($CustomerItems$AdminCustomerItems);
  58.         $parameters['CustomerItems'] = $CustomerItems;
  59.         $event->setParameters($parameters);
  60.         if($event->getView() == '@MailMagazine4/admin/index.twig'){
  61.             $twig '@CustomerPlusAddonSearch/admin/ext_search_mailmagazine.twig';
  62.         }else{
  63.             $twig '@CustomerPlusAddonSearch/admin/ext_search.twig';
  64.         }
  65.         $event->addSnippet($twig);
  66.         $js '@CustomerPlusAddonSearch/admin/ext_search.js';
  67.         $event->addAsset($js);
  68.     }
  69.     public function onTemplateAdminOrder(TemplateEvent $event)
  70.     {
  71.         if(!$this->customerPlusAddonService->checkInstallPlugin('CustomerPlus4'))return;
  72.         $parameters $event->getParameters();
  73.         $CustomerItems $this->customerPlusAddonService->getEnabledCustomerPlusForm('order');
  74.         $AdminCustomerItems $this->customerPlusAddonService->getCustomerPlusForm('admin_order');
  75.         $CustomerItems array_merge($CustomerItems$AdminCustomerItems);
  76.         $parameters['CustomerItems'] = $CustomerItems;
  77.         $event->setParameters($parameters);
  78.         $twig '@CustomerPlusAddonSearch/admin/ext_search.twig';
  79.         $event->addSnippet($twig);
  80.         $js '@CustomerPlusAddonSearch/admin/ext_search.js';
  81.         $event->addAsset($js);
  82.     }
  83.     public function onTemplateAdminOrderEdit(TemplateEvent $event)
  84.     {
  85.         if(!$this->customerPlusAddonService->checkInstallPlugin('CustomerPlus4'))return;
  86.         $parameters $event->getParameters();
  87.         $CustomerItems $this->customerPlusAddonService->getEnabledCustomerPlusForm('customer');
  88.         $AdminCustomerItems $this->customerPlusAddonService->getCustomerPlusForm('admin_customer');
  89.         $CustomerItems array_merge($CustomerItems$AdminCustomerItems);
  90.         $parameters['CustomerItems'] = $CustomerItems;
  91.         $event->setParameters($parameters);
  92.         $twig '@CustomerPlusAddonSearch/admin/Order/ext_search.twig';
  93.         $event->addSnippet($twig);
  94.         $source $event->getSource();
  95.         if(preg_match("/admin\_search\_customer\_multi\'\)\.val\(\)/",$source$result)){
  96.             $search $result[0];
  97.             $replace $search ",{{ include('@CustomerPlusAddonSearch/admin/Order/ext_js.twig') }}";
  98.             $source str_replace($search$replace$source);
  99.         }
  100.         $event->setSource($source);
  101.     }
  102.     public function hookAdminOrderEditSearchCustomerSearch(EventArgs $event)
  103.     {
  104.         if(!$this->customerPlusAddonService->checkInstallPlugin('CustomerPlus4'))return;
  105.         $qb $event->getArgument('qb');
  106.         $request $this->requestStack->getMasterRequest();
  107.         $CustomerItems $this->customerPlusAddonService->getEnabledCustomerPlusForm('customer');
  108.         $AdminCustomerItems $this->customerPlusAddonService->getCustomerPlusForm('admin_customer');
  109.         $CustomerItems array_merge($CustomerItems$AdminCustomerItems);
  110.         foreach($CustomerItems as $CustomerItem){
  111.             if($CustomerItem->getInputType() == \Plugin\CustomerPlus4\Entity\CustomerItem::DATE_TYPE){
  112.                 $start $request->get('customerplus_'.$CustomerItem->getId().'_date_start');
  113.                 $end $request->get('customerplus_'.$CustomerItem->getId().'_date_end');
  114.                 if(strlen($start) > 0)$searchData['customerplus_'.$CustomerItem->getId().'_date_start'] = new \DateTime($start);
  115.                 if(strlen($end) > 0)$searchData['customerplus_'.$CustomerItem->getId().'_date_end'] = new \DateTime($end);
  116.             }else{
  117.                 $searchData['customerplus_'.$CustomerItem->getId()] = $request->get('customerplus_'.$CustomerItem->getId());
  118.             }
  119.         }
  120.         $this->customerPlusAddonService->createQueryBuilder($qb$searchData);
  121.         $event->setArgument('qb',$qb);
  122.     }
  123.     public function onTemplateMailmagazineHistoryCondition(TemplateEvent $event)
  124.     {
  125.         if(!$this->customerPlusAddonService->checkInstallPlugin('CustomerPlus4'))return;
  126.         $parameters $event->getParameters();
  127.         $CustomerItems $this->customerPlusAddonService->getEnabledCustomerPlusForm('customer');
  128.         $AdminCustomerItems $this->customerPlusAddonService->getCustomerPlusForm('admin_customer');
  129.         $CustomerItems array_merge($CustomerItems$AdminCustomerItems);
  130.         $parameters['CustomerItems'] = $CustomerItems;
  131.         $searchData $parameters['search_data'];
  132.         foreach($CustomerItems as $CustomerItem){
  133.             if($CustomerItem->getInputType() >= CustomerItem::SELECT_TYPE){
  134.                 if(isset($searchData['customerplus_'.$CustomerItem->getId()]) && is_array($searchData['customerplus_'.$CustomerItem->getId()])){
  135.                     $customerItemOptionRepository $this->entityManager->getRepository('Plugin\CustomerPlus4\Entity\CustomerItemOption');
  136.                     $val = [];
  137.                     foreach($searchData['customerplus_'.$CustomerItem->getId()] as $id){
  138.                         $option $customerItemOptionRepository->find($id);
  139.                         if($option){
  140.                             $val[] = $option->getText();
  141.                         }
  142.                     }
  143.                     if(count($val) != 0){
  144.                         $searchData['customerplus_'.$CustomerItem->getId()] = implode(', '$val);
  145.                     }else{
  146.                         $searchData['customerplus_'.$CustomerItem->getId()] = null;
  147.                     }
  148.                 }
  149.             }
  150.         }
  151.         $parameters['search_data'] = $searchData;
  152.         $event->setParameters($parameters);
  153.         $twig '@CustomerPlusAddonSearch/admin/mailmagazine_history_condition_add.twig';
  154.         $event->addSnippet($twig);
  155.     }
  156. }