commerce_license-8.x-2.x-dev/src/Plugin/EntityReferenceSelection/ProductVariationSelection.php
src/Plugin/EntityReferenceSelection/ProductVariationSelection.php
<?php
namespace Drupal\commerce_license\Plugin\EntityReferenceSelection;
use Drupal\commerce_product\Plugin\EntityReferenceSelection\ProductVariationSelection as CommerceProductVariationSelection;
/**
* Provides specific access control for the commerce product variation.
*
* @EntityReferenceSelection(
* id = "commerce_license:commerce_product_variation",
* label = @Translation("Commerce license product variation selection"),
* entity_types = {"commerce_product_variation"},
* group = "commerce_license",
* weight = 5
* )
*/
class ProductVariationSelection extends CommerceProductVariationSelection {
/**
* {@inheritdoc}
*/
protected function buildEntityQuery($match = NULL, $match_operator = 'CONTAINS') {
$query = parent::buildEntityQuery($match, $match_operator);
$query->exists('license_type');
return $query;
}
/**
* {@inheritdoc}
*/
public function validateReferenceableNewEntities(array $entities) {
$entities = parent::validateReferenceableNewEntities($entities);
$entities = array_filter($entities, static function ($license) {
/** @var \Drupal\commerce_license\Entity\LicenseInterface $license */
return $license->hasField('license_type');
});
return $entities;
}
}
