commerce_product_bundles-8.x-1.0/src/Plugin/Commerce/Condition/OrderBundleVariationType.php
src/Plugin/Commerce/Condition/OrderBundleVariationType.php
<?php namespace Drupal\commerce_product_bundles\Plugin\Commerce\Condition; use Drupal\commerce\Plugin\Commerce\Condition\ConditionBase; use Drupal\Core\Entity\EntityInterface; /** * Provides the product bundle variation type condition for orders. * * @CommerceCondition( * id = "order_bundle_variation_type", * label = @Translation("Product bundle variation type"), * display_label = @Translation("Order contains product bundle variation types"), * category = @Translation("Commerce Product Bundles"), * entity_type = "commerce_order", * ) */ class OrderBundleVariationType extends ConditionBase { use ProductBundleVariationTypeTrait; /** * {@inheritdoc} */ public function evaluate(EntityInterface $entity) { $this->assertEntity($entity); /** @var \Drupal\commerce_order\Entity\OrderInterface $order */ $order = $entity; foreach ($order->getItems() as $order_item) { /** @var \Drupal\commerce_product_bundles\Entity\ProductBundleVariationInterface $purchased_entity */ $purchased_entity = $order_item->getPurchasedEntity(); if (!$purchased_entity || $purchased_entity->getEntityTypeId() != 'commerce_bundle_variation') { continue; } if (in_array($purchased_entity->bundle(), $this->configuration['bundle_variation_types'])) { return TRUE; } } return FALSE; } }