app/Plugin/ProductOption42/Event/CartEvent.php line 30

Open in your IDE?
  1. <?php
  2. /*
  3. * Plugin Name : ProductOption
  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\ProductOption42\Event;
  12. use Eccube\Event\TemplateEvent;
  13. use Plugin\ProductOption42\Entity\OptionCategory;
  14. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  15. class CartEvent implements EventSubscriberInterface
  16. {
  17.     /**
  18.      * @return array
  19.      */
  20.     public static function getSubscribedEvents()
  21.     {
  22.         return [
  23.             'Cart/index.twig' => 'onTemplateCart',
  24.         ];
  25.     }
  26.     public function onTemplateCart(TemplateEvent $event)
  27.     {
  28.         $source $event->getSource();
  29.         if(preg_match("/url\('cart\_handle\_item'\s*,\s*\{'operation'\s*:\s*'down'\s*,\s*'productClassId'\s*:\s*ProductClass\.id/",$source$result)){
  30.             $search $result[0];
  31.             $snipet "url('productoption_cart_handle_item', {'operation': 'down', 'cartItemId': CartItem.id";
  32.             $replace $snipet;
  33.             $source str_replace($search$replace$source);
  34.         }
  35.         if(preg_match("/url\('cart\_handle\_item'\s*,\s*\{'operation'\s*:\s*'up'\s*,\s*'productClassId'\s*:\s*ProductClass\.id/",$source$result)){
  36.             $search $result[0];
  37.             $snipet "url('productoption_cart_handle_item', {'operation': 'up', 'cartItemId': CartItem.id";
  38.             $replace $snipet;
  39.             $source str_replace($search$replace$source);
  40.         }
  41.         if(preg_match("/url\('cart\_handle\_item',\s\{'operation'\:\s'remove',\s'productClassId'\:\sProductClass\.id/",$source$result)){
  42.             $search $result[0];
  43.             $snipet "url('productoption_cart_handle_item', {'operation': 'remove', 'cartItemId': CartItem.id";
  44.             $replace $snipet;
  45.             $source str_replace($search$replace$source);
  46.         }
  47.         if(preg_match("/\<\/div\>[\n|\r\n\\r]\s*<div\sclass\=\"ec\-cartRow\_\_unitPrice\"\>/",$source$result)){
  48.             $search $result[0];
  49.             $replace "{{ include('@ProductOption42/default/Cart/cart_option.twig') }}" $search;
  50.             $source str_replace($search$replace$source);
  51.         }
  52.         $event->setSource($source);
  53.         $parameters $event->getParameters();
  54.         $Carts $parameters['Carts'];
  55.         $isDeliveryFree $parameters['is_delivery_free'];
  56.         foreach($Carts as $Cart){
  57.             foreach($Cart->getCartItems() as $CartItem){
  58.                 $flg $CartItem->getDeliveryFreeFlg();
  59.                 if($flg == OptionCategory::ON){
  60.                     if(!$isDeliveryFree[$Cart->getCartKey()]){
  61.                         $isDeliveryFree[$Cart->getCartKey()] = true;
  62.                     }
  63.                 }
  64.             }
  65.         }
  66.         $parameters['is_delivery_free'] = $isDeliveryFree;
  67.         $event->setParameters($parameters);
  68.     }
  69. }