commerce_gc_client-8.x-1.9/src/EventSubscriber/CartEventSubscriber.php

src/EventSubscriber/CartEventSubscriber.php
<?php

namespace Drupal\commerce_gc_client\EventSubscriber;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Drupal\commerce_cart\Event\CartEntityAddEvent;
use Drupal\commerce_cart\Event\CartEvents;

/**
 * Class EntityTypeSubscriber.
 *
 * @package Drupal\commerce_gc_client\EventSubscriber
 */
class CartEventSubscriber implements EventSubscriberInterface {

  /**
   * {@inheritdoc}
   *
   * @return array
   *   The event names to listen for, and the methods that should be executed.
   */
  public static function getSubscribedEvents() {
    return [
      CartEvents::CART_ENTITY_ADD => 'orderItemSetData',
    ];
  }

  /**
   * Adds GoCardless specific data to the OrderItem object.
   *
   * @param \Drupal\commerce_cart\Event\CartEntityAddEvent $event
   *   The add to cart event.
   */
  public function orderItemSetData(CartEntityAddEvent $event) {
    $variation_id = $event->getEntity()->get('variation_id')->value;
    if (!$result = commerce_gc_client_get_variation_data($variation_id)) {
      return;
    }

    $gc = unserialize($result->data);
    $interval_params = [];

    if ($gc['gc_interval_length']) {
      $interval_params['length'] = $gc['gc_interval_length'];
      $interval_params['unit'] = $gc['gc_interval_unit'];
    }

    if ($interval_params) {
      $interval_params['string'] = $interval_params['length'] . ' ' . str_replace("ly", "", $interval_params['unit']);
      $interval_params['gc'] = $interval_params['length'] . ' ' . $interval_params['unit'];
      $gc['interval_params'] = $interval_params;
    }

    $event->getOrderItem()->setData('gc', $gc)->save();
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc