rng-3.x-dev/src/Plugin/EntityReferenceSelection/RegistrationGroupSelection.php

src/Plugin/EntityReferenceSelection/RegistrationGroupSelection.php
<?php

namespace Drupal\rng\Plugin\EntityReferenceSelection;

use Drupal\Core\Entity\Plugin\EntityReferenceSelection\DefaultSelection;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Database\Query\SelectInterface;

/**
 * Provides specific access control for registration groups.
 *
 * @EntityReferenceSelection(
 *   id = "default:registration_group",
 *   label = @Translation("Registration group selection"),
 *   entity_types = {"registration_group"},
 *   group = "default",
 *   weight = 1
 * )
 */
class RegistrationGroupSelection extends DefaultSelection {

  /**
   * {@inheritdoc}
   */
  protected function buildEntityQuery($match = NULL, $match_operator = 'CONTAINS') {
    $query = parent::buildEntityQuery($match, $match_operator);
    if (($event = $this->configuration['entity']) instanceof EntityInterface) {
      $group = $query->andConditionGroup()
        ->condition('event__target_type', $event->getEntityTypeId(), '=')
        ->condition('event__target_id', $event->id(), '=');
      $query->condition($group);
      $query->condition('source', NULL, 'IS NULL');
    }
    return $query;
  }

  /**
   * {@inheritdoc}
   */
  public function entityQueryAlter(SelectInterface $query) {
    // @todo allow global groups via query alter
    // ->condition('event__target_type', NULL, 'IS NULL')
    // ->condition('event__target_id', NULL, 'IS NULL');
  }

}

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

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