app/Plugin/HiddenDeliveryDate42/Event/AdminProductEvent.php line 91

Open in your IDE?
  1. <?php
  2. /*
  3. * Plugin Name : HiddenDeliveryDate
  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\HiddenDeliveryDate42\Event;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Eccube\Event\EccubeEvents;
  14. use Eccube\Event\EventArgs;
  15. use Eccube\Event\TemplateEvent;
  16. use Plugin\HiddenDeliveryDate42\Entity\Hiddenday;
  17. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  18. class AdminProductEvent implements EventSubscriberInterface
  19. {
  20.     private $entityManager;
  21.     public function __construct(
  22.             EntityManagerInterface $entityManager
  23.             )
  24.     {
  25.         $this->entityManager $entityManager;
  26.     }
  27.     /**
  28.      * @return array
  29.      */
  30.     public static function getSubscribedEvents()
  31.     {
  32.         return [
  33.             EccubeEvents::ADMIN_PRODUCT_COPY_COMPLETE => 'hookAdminProductCopyComplete',
  34.             EccubeEvents::ADMIN_PRODUCT_CSV_EXPORT => 'hookAdminProductCsvExport',
  35.             '@admin/Product/index.twig' => 'onTemplateAdminProduct',
  36.             '@admin/Product/product.twig' => 'onTemplateAdminProductEdit',
  37.         ];
  38.     }
  39.     public function hookAdminProductCopyComplete(EventArgs $event)
  40.     {
  41.         $Product $event->getArgument('Product');
  42.         $CopyProduct $event->getArgument('CopyProduct');
  43.         $Hiddendays $Product->getHiddendays();
  44.         if(count($Hiddendays) > 0){
  45.             foreach($Hiddendays as $Hiddenday){
  46.                 $newHiddenday = new Hiddenday();
  47.                 $newHiddenday->setProduct($CopyProduct)
  48.                              ->setDate($Hiddenday->getDate());
  49.                 $CopyProduct->addHiddenday($newHiddenday);
  50.                 $this->entityManager->persist($newHiddenday);
  51.             }
  52.         }
  53.         $this->entityManager->flush();
  54.     }
  55.     public function hookAdminProductCsvExport(EventArgs $event)
  56.     {
  57.         $ExportCsvRow $event->getArgument('ExportCsvRow');
  58.         if ($ExportCsvRow->isDataNull()) {
  59.             $ProductClass $event->getArgument('ProductClass');
  60.             $Product $ProductClass->getProduct();
  61.             $Csv $event->getArgument('Csv');
  62.             $csvEntityName str_replace('\\\\''\\'$Csv->getEntityName());
  63.             if($csvEntityName == 'Plugin\HiddenDeliveryDate42\Entity\Hiddenday'){
  64.                 $ret = [];
  65.                 foreach($Product->getHiddendays() as $Hiddenday){
  66.                     $ret[] = $Hiddenday->getDate()->format('Y/m/d');
  67.                 }
  68.                 $ExportCsvRow->setData(implode(',',$ret));
  69.             }
  70.         }
  71.     }
  72.     public function onTemplateAdminProduct(TemplateEvent $event)
  73.     {
  74.         $twig '@HiddenDeliveryDate42/admin/Product/product_menu.twig';
  75.         $event->addSnippet($twig);
  76.         $js '@HiddenDeliveryDate42/admin/Product/product_menu.js';
  77.         $event->addAsset($js);
  78.     }
  79.     public function onTemplateAdminProductEdit(TemplateEvent $event)
  80.     {
  81.         $twig '@HiddenDeliveryDate42/admin/Product/product_edit_button.twig';
  82.         $event->addSnippet($twig);
  83.         $js '@HiddenDeliveryDate42/admin/Product/product_edit_button.js';
  84.         $event->addAsset($js);
  85.     }
  86. }