app/Plugin/HiddenDeliveryDate42/Event/CsvImportProductExtEvent.php line 42

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\EventArgs;
  14. use Plugin\HiddenDeliveryDate42\Entity\Hiddenday;
  15. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  16. class CsvImportProductExtEvent implements EventSubscriberInterface
  17. {
  18.     private $entityManager;
  19.     public function __construct(
  20.             EntityManagerInterface $entityManager
  21.             )
  22.     {
  23.         $this->entityManager $entityManager;
  24.     }
  25.     /**
  26.      * @return array
  27.      */
  28.     public static function getSubscribedEvents()
  29.     {
  30.         return [
  31.             'csvimportproductext.admin.product.csv.import.product.descriptions' => 'hookAdminProductCsvImportProductDescriptions',
  32.             'csvimportproductext.admin.product.csv.import.product.check'=> 'hookAdminProductCsvImportProductCheck',
  33.             'csvimportproductext.admin.product.csv.import.product.process' => 'hookAdminProductCsvImportProductProcess',
  34.         ];
  35.     }
  36.     public function hookAdminProductCsvImportProductDescriptions(EventArgs $event)
  37.     {
  38.         $header $event->getArgument('header');
  39.         $key $event->getArgument('key');
  40.         if($key == trans('hiddendeliverydate.common.hiddenday')){
  41.             $header['description'] = trans('hiddendeliverydate.admin.product.product_csv.hidden_delivery_date_description');
  42.             $header['required'] = false;
  43.         }
  44.         $event->setArgument('header',$header);
  45.     }
  46.     public function hookAdminProductCsvImportProductCheck(EventArgs $event)
  47.     {
  48.         $row $event->getArgument('row');
  49.         $lineNo $event->getArgument('lineNo');
  50.         $errors $event->getArgument('errors');
  51.         if(isset($row[trans('hiddendeliverydate.common.hiddenday')]) && strlen($row[trans('hiddendeliverydate.common.hiddenday')]) > 0){
  52.             $hiddendays explode(',',$row[trans('hiddendeliverydate.common.hiddenday')]);
  53.             $format_str '%Y/%m/%d';
  54.             foreach($hiddendays as $hiddenday){
  55.                 $is_date_str strptime($hiddenday$format_str);
  56.                 if(!$is_date_str){
  57.                     $message trans('admin.common.csv_invalid_date_format', [
  58.                         '%line%' => $lineNo,
  59.                         '%name%' => trans('hiddendeliverydate.common.hiddenday'),
  60.                         ]);
  61.                     $errors[] = $message;
  62.                 }
  63.                 list($year$month$day) = explode("/"$hiddenday);
  64.                 if (!checkdate(intval($month), intval($day), intval($year))) {
  65.                     $message trans('admin.common.csv_invalid_not_found_target', [
  66.                         '%line%' => $lineNo,
  67.                         '%name%' => trans('hiddendeliverydate.common.hiddenday'),
  68.                         '%target_name%' => $hiddenday,
  69.                         ]);
  70.                     $errors[] = $message;
  71.                 }
  72.             }
  73.         }
  74.         $event->setArgument('errors',$errors);
  75.     }
  76.     public function hookAdminProductCsvImportProductProcess(EventArgs $event)
  77.     {
  78.         $row $event->getArgument('row');
  79.         $ProductClass $event->getArgument('ProductClass');
  80.         $Product $ProductClass->getProduct();
  81.         if(isset($row[trans('hiddendeliverydate.common.hiddenday')])){
  82.             foreach($Product->getHiddendays() as $Hiddenday){
  83.                 $Product->removeHiddenday($Hiddenday);
  84.                 $this->entityManager->remove($Hiddenday);
  85.             }
  86.             if($row[trans('hiddendeliverydate.common.hiddenday')] != ''){
  87.                 $hiddendays explode(',',$row[trans('hiddendeliverydate.common.hiddenday')]);
  88.                 foreach($hiddendays as $hiddenday){
  89.                     $hiddenDate = new \DateTime($hiddenday , new \DateTimeZone('UTC'));
  90.                     $Hiddenday = new Hiddenday();
  91.                     $Hiddenday->setDate($hiddenDate)
  92.                               ->setProduct($Product);
  93.                     $Product->addHiddenday($Hiddenday);
  94.                     $this->entityManager->persist($Hiddenday);
  95.                 }
  96.             }
  97.         }
  98.     }
  99. }