class EntityQueueRelationship in Entityqueue 8
A relationship handler for entity queues.
Plugin annotation
@ViewsRelationship("entity_queue");Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait- class \Drupal\views\Plugin\views\PluginBase implements DependentPluginInterface, ContainerFactoryPluginInterface, TrustedCallbackInterface, ViewsPluginInterface- class \Drupal\views\Plugin\views\HandlerBase implements ViewsHandlerInterface- class \Drupal\views\Plugin\views\relationship\RelationshipPluginBase- class \Drupal\entityqueue\Plugin\views\relationship\EntityQueueRelationship implements CacheableDependencyInterface
 
 
- class \Drupal\views\Plugin\views\relationship\RelationshipPluginBase
 
- class \Drupal\views\Plugin\views\HandlerBase implements ViewsHandlerInterface
 
- class \Drupal\views\Plugin\views\PluginBase implements DependentPluginInterface, ContainerFactoryPluginInterface, TrustedCallbackInterface, ViewsPluginInterface
 
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of EntityQueueRelationship
4 files declare their use of EntityQueueRelationship
- EntityQueueInQueue.php in src/Plugin/ views/ filter/ EntityQueueInQueue.php 
- EntityQueueInQueue.php in src/Plugin/ views/ sort/ EntityQueueInQueue.php 
- EntityQueuePosition.php in src/Plugin/ views/ sort/ EntityQueuePosition.php 
- EntityQueuePosition.php in src/Plugin/ views/ field/ EntityQueuePosition.php 
File
- src/Plugin/ views/ relationship/ EntityQueueRelationship.php, line 23 
Namespace
Drupal\entityqueue\Plugin\views\relationshipView source
class EntityQueueRelationship extends RelationshipPluginBase implements CacheableDependencyInterface {
  /**
   * The Views join manager.
   *
   * @var \Drupal\views\Plugin\ViewsHandlerManager
   */
  protected $joinManager;
  /**
   * Constructs an EntityQueueRelationship object.
   *
   * @param array $configuration
   *   A configuration array containing information about the plugin instance.
   * @param string $plugin_id
   *   The plugin_id for the plugin instance.
   * @param mixed $plugin_definition
   *   The plugin implementation definition.
   * @param \Drupal\views\Plugin\ViewsHandlerManager $join_manager
   *   The views plugin join manager.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, ViewsHandlerManager $join_manager) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->joinManager = $join_manager;
  }
  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static($configuration, $plugin_id, $plugin_definition, $container
      ->get('plugin.manager.views.join'));
  }
  /**
   * {@inheritdoc}
   */
  protected function defineOptions() {
    $options = parent::defineOptions();
    $options['limit_queue'] = [
      'default' => NULL,
    ];
    return $options;
  }
  /**
   * {@inheritdoc}
   */
  public function buildOptionsForm(&$form, FormStateInterface $form_state) {
    $queues = EntityQueue::loadMultipleByTargetType($this
      ->getEntityType());
    $options = [];
    foreach ($queues as $queue) {
      $options[$queue
        ->id()] = $queue
        ->label();
    }
    $form['limit_queue'] = [
      '#type' => 'radios',
      '#title' => $this
        ->t('Limit to a specific entity queue'),
      '#options' => $options,
      '#default_value' => $this->options['limit_queue'],
    ];
    parent::buildOptionsForm($form, $form_state);
  }
  /**
   * {@inheritdoc}
   */
  public function init(ViewExecutable $view, DisplayPluginBase $display, array &$options = NULL) {
    parent::init($view, $display, $options);
    // Add an extra condition to limit results based on the queue selection.
    if ($this->options['limit_queue']) {
      $this->definition['extra'][] = [
        'field' => 'bundle',
        'value' => $this->options['limit_queue'],
      ];
    }
  }
  /**
   * {@inheritdoc}
   */
  public function calculateDependencies() {
    $dependencies = parent::calculateDependencies();
    if ($this->options['limit_queue']) {
      $queue = EntityQueue::load($this->options['limit_queue']);
      $dependencies[$queue
        ->getConfigDependencyKey()][] = $queue
        ->getConfigDependencyName();
    }
    return $dependencies;
  }
  /**
   * {@inheritdoc}
   */
  public function getCacheContexts() {
    return [];
  }
  /**
   * {@inheritdoc}
   */
  public function getCacheTags() {
    $tags = [];
    if ($this->options['limit_queue']) {
      $queue = EntityQueue::load($this->options['limit_queue']);
      $tags = $queue
        ->getCacheTags();
    }
    return $tags;
  }
  /**
   * {@inheritdoc}
   */
  public function getCacheMaxAge() {
    return Cache::PERMANENT;
  }
  /**
   * {@inheritdoc}
   */
  public function query() {
    // Add a 'where' condition if needed.
    if (!empty($this->definition['extra'])) {
      $bundles = [];
      // Future-proofing: support any number of selected bundles.
      foreach ($this->definition['extra'] as $extra) {
        if ($extra['field'] == 'bundle') {
          $bundles[] = $extra['value'];
        }
      }
      if (count($bundles) > 0) {
        $this->definition['join_extra'][] = [
          'field' => 'bundle',
          'value' => $bundles,
        ];
      }
    }
    // Now - let's build the query.
    // @todo We can't simply call parent::query() because the parent class does
    //   not handle the 'join_id' configuration correctly, so we can't use our
    //   custom 'casted_field_join' plugin.
    $this
      ->ensureMyTable();
    // First, relate our base table to the current base table to the
    // field, using the base table's id field to the field's column.
    $views_data = Views::viewsData()
      ->get($this->table);
    $left_field = $views_data['table']['base']['field'];
    $first = [
      'left_table' => $this->tableAlias,
      'left_field' => $left_field,
      'table' => $this->definition['field table'],
      'field' => $this->definition['field field'],
      'adjusted' => TRUE,
      'entity_type' => isset($views_data['table']['entity type']) ? $views_data['table']['entity type'] : NULL,
    ];
    if (!empty($this->options['required'])) {
      $first['type'] = 'INNER';
    }
    if (!empty($this->definition['join_extra'])) {
      $first['extra'] = $this->definition['join_extra'];
    }
    // Use our custom 'casted_field_join' handler in order to handle
    // relationships to integers and strings IDs from the same table properly.
    $first_join = $this->joinManager
      ->createInstance('casted_field_join', $first);
    $this->first_alias = $this->query
      ->addTable($this->definition['field table'], $this->relationship, $first_join);
    // Second, relate the field table to the entity specified using
    // the entity id on the field table and the entity's id field.
    $second = [
      'left_table' => $this->first_alias,
      'left_field' => 'entity_id',
      'table' => $this->definition['base'],
      'field' => $this->definition['base field'],
      'adjusted' => TRUE,
    ];
    if (!empty($this->options['required'])) {
      $second['type'] = 'INNER';
    }
    if (!empty($this->definition['join_id'])) {
      $id = $this->definition['join_id'];
    }
    else {
      $id = 'standard';
    }
    $second_join = $this->joinManager
      ->createInstance($id, $second);
    $second_join->adjusted = TRUE;
    // Use a short alias for this:
    $alias = $this->definition['field_name'] . '_' . $this->table;
    $this->alias = $this->query
      ->addRelationship($alias, $second_join, $this->definition['base'], $this->relationship);
  }
}Members
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| DependencySerializationTrait:: | protected | property | An array of entity type IDs keyed by the property name of their storages. | |
| DependencySerializationTrait:: | protected | property | An array of service IDs keyed by property name used for serialization. | |
| DependencySerializationTrait:: | public | function | 1 | |
| DependencySerializationTrait:: | public | function | 2 | |
| EntityQueueRelationship:: | protected | property | The Views join manager. | |
| EntityQueueRelationship:: | public | function | Provide a form to edit options for this plugin. Overrides RelationshipPluginBase:: | |
| EntityQueueRelationship:: | public | function | Calculates dependencies for the configured plugin. Overrides RelationshipPluginBase:: | |
| EntityQueueRelationship:: | public static | function | Creates an instance of the plugin. Overrides PluginBase:: | |
| EntityQueueRelationship:: | protected | function | Information about options for all kinds of purposes will be held here. Overrides RelationshipPluginBase:: | |
| EntityQueueRelationship:: | public | function | The cache contexts associated with this object. Overrides CacheableDependencyInterface:: | |
| EntityQueueRelationship:: | public | function | The maximum age for which this object may be cached. Overrides CacheableDependencyInterface:: | |
| EntityQueueRelationship:: | public | function | The cache tags associated with this object. Overrides CacheableDependencyInterface:: | |
| EntityQueueRelationship:: | public | function | Overrides \Drupal\views\Plugin\views\HandlerBase::init(). Overrides RelationshipPluginBase:: | |
| EntityQueueRelationship:: | public | function | Add anything to the query that we might need to. Overrides RelationshipPluginBase:: | |
| EntityQueueRelationship:: | public | function | Constructs an EntityQueueRelationship object. Overrides HandlerBase:: | |
| HandlerBase:: | public | property | With field you can override the realField if the real field is not set. | |
| HandlerBase:: | protected | property | The module handler. | 3 | 
| HandlerBase:: | public | property | Where the $query object will reside: | 7 | 
| HandlerBase:: | public | property | The actual field in the database table, maybe different on other kind of query plugins/special handlers. | |
| HandlerBase:: | public | property | The relationship used for this field. | |
| HandlerBase:: | public | property | The table this handler is attached to. | |
| HandlerBase:: | public | property | The alias of the table of this handler which is used in the query. | |
| HandlerBase:: | protected | property | The views data service. | |
| HandlerBase:: | public | function | Take input from exposed handlers and assign to this handler, if necessary. | 1 | 
| HandlerBase:: | public | function | Check whether given user has access to this handler. Overrides ViewsHandlerInterface:: | 4 | 
| HandlerBase:: | public | function | Return a string representing this handler's name in the UI. Overrides ViewsHandlerInterface:: | 4 | 
| HandlerBase:: | public | function | Provide text for the administrative summary. Overrides ViewsHandlerInterface:: | 4 | 
| HandlerBase:: | public static | function | Breaks x,y,z and x+y+z into an array. Overrides ViewsHandlerInterface:: | |
| HandlerBase:: | public | function | Determines if the handler is considered 'broken', meaning it's a
placeholder used when a handler can't be found. Overrides ViewsHandlerInterface:: | |
| HandlerBase:: | public | function | Render our chunk of the exposed handler form when selecting | 1 | 
| HandlerBase:: | public | function | Form for exposed handler options. | 2 | 
| HandlerBase:: | public | function | Provide a form for setting options. | 1 | 
| HandlerBase:: | public | function | Provide a form for aggregation settings. | 1 | 
| HandlerBase:: | public | function | Determine if a handler can be exposed. | 2 | 
| HandlerBase:: | protected | function | Transform a string by a certain method. | |
| HandlerBase:: | public | function | Set new exposed option defaults when exposed setting is flipped on. | 2 | 
| HandlerBase:: | public | function | Provide defaults for the handler. | |
| HandlerBase:: | public | function | Displays the Expose form. | |
| HandlerBase:: | public | function | Ensure the main table for this handler is in the query. This is used
a lot. Overrides ViewsHandlerInterface:: | 2 | 
| HandlerBase:: | public | function | Get information about the exposed form for the form renderer. | 1 | 
| HandlerBase:: | public | function | Creates cross-database SQL dates. | 2 | 
| HandlerBase:: | public | function | Creates cross-database SQL date formatting. | 2 | 
| HandlerBase:: | public | function | Determines the entity type used by this handler. Overrides ViewsHandlerInterface:: | |
| HandlerBase:: | public | function | Shortcut to get a handler's raw field value. Overrides ViewsHandlerInterface:: | |
| HandlerBase:: | public | function | Get the join object that should be used for this handler. Overrides ViewsHandlerInterface:: | |
| HandlerBase:: | protected | function | Gets the module handler. | |
| HandlerBase:: | public static | function | Fetches a handler to join one table to a primary table from the data cache. Overrides ViewsHandlerInterface:: | |
| HandlerBase:: | protected | function | Gets views data service. | |
| HandlerBase:: | public | function | If a handler has 'extra options' it will get a little settings widget and another form called extra_options. | 1 | 
| HandlerBase:: | public | function | Returns TRUE if the exposed filter works like a grouped filter. | 1 | 
| HandlerBase:: | public | function | Determine if this item is 'exposed', meaning it provides form elements to let users modify the view. | |
| HandlerBase:: | public | function | Define if the exposed input has to be submitted multiple times. This is TRUE when exposed filters grouped are using checkboxes as widgets. | 1 | 
| HandlerBase:: | protected | function | Provides a unique placeholders for handlers. | |
| HandlerBase:: | public | function | Run after the view is executed, before the result is cached. Overrides ViewsHandlerInterface:: | |
| HandlerBase:: | public | function | Run before the view is built. Overrides ViewsHandlerInterface:: | 2 | 
| HandlerBase:: | public | function | Sanitize the value for output. Overrides ViewsHandlerInterface:: | |
| HandlerBase:: | public | function | Sets the module handler. | |
| HandlerBase:: | public | function | Called just prior to query(), this lets a handler set up any relationship
it needs. Overrides ViewsHandlerInterface:: | |
| HandlerBase:: | public | function | ||
| HandlerBase:: | public | function | Shortcut to display the expose/hide button. | 2 | 
| HandlerBase:: | public | function | Shortcut to display the exposed options form. Overrides ViewsHandlerInterface:: | |
| HandlerBase:: | public | function | If set to remember exposed input in the session, store it there. | 1 | 
| HandlerBase:: | public | function | Submit the exposed handler form | |
| HandlerBase:: | public | function | Perform any necessary changes to the form exposes prior to storage. There is no need for this function to actually store the data. | |
| HandlerBase:: | public | function | Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data. | |
| HandlerBase:: | public | function | Calculates options stored on the handler | 1 | 
| HandlerBase:: | public | function | Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data. | 1 | 
| HandlerBase:: | public | function | A submit handler that is used for storing temporary items when using multi-step changes, such as ajax requests. | |
| HandlerBase:: | public | function | Validate that the plugin is correct and can be saved. Overrides PluginBase:: | 2 | 
| HandlerBase:: | public | function | Validate the exposed handler form | 4 | 
| HandlerBase:: | public | function | Validate the options form. | 1 | 
| HandlerBase:: | public | function | Validate the options form. | |
| MessengerTrait:: | protected | property | The messenger. | 29 | 
| MessengerTrait:: | public | function | Gets the messenger. | 29 | 
| MessengerTrait:: | public | function | Sets the messenger. | |
| PluginBase:: | protected | property | Configuration information passed into the plugin. | 1 | 
| PluginBase:: | public | property | Plugins's definition | |
| PluginBase:: | public | property | The display object this plugin is for. | |
| PluginBase:: | public | property | Options for this plugin will be held here. | |
| PluginBase:: | protected | property | The plugin implementation definition. | 1 | 
| PluginBase:: | protected | property | The plugin_id. | |
| PluginBase:: | protected | property | Stores the render API renderer. | 3 | 
| PluginBase:: | protected | property | Denotes whether the plugin has an additional options form. | 8 | 
| PluginBase:: | public | property | The top object of a view. | 1 | 
| PluginBase:: | constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
| PluginBase:: | public | function | Clears a plugin. Overrides ViewsPluginInterface:: | 2 | 
| PluginBase:: | protected | function | Do the work to filter out stored options depending on the defined options. | |
| PluginBase:: | public | function | Filter out stored options depending on the defined options. Overrides ViewsPluginInterface:: | |
| PluginBase:: | public | function | Returns an array of available token replacements. Overrides ViewsPluginInterface:: | |
| PluginBase:: | public | function | Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: | |
| PluginBase:: | public | function | Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: | |
| PluginBase:: | public | function | Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: | 3 | 
| PluginBase:: | public | function | Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: | |
| PluginBase:: | public | function | Returns the plugin provider. Overrides ViewsPluginInterface:: | |
| PluginBase:: | protected | function | Returns the render API renderer. | 1 | 
| PluginBase:: | public | function | Adds elements for available core tokens to a form. Overrides ViewsPluginInterface:: | |
| PluginBase:: | public | function | Returns a string with any core tokens replaced. Overrides ViewsPluginInterface:: | |
| PluginBase:: | constant | Include entity row languages when listing languages. | ||
| PluginBase:: | constant | Include negotiated languages when listing languages. | ||
| PluginBase:: | public | function | Determines if the plugin is configurable. | |
| PluginBase:: | protected | function | Makes an array of languages, optionally including special languages. | |
| PluginBase:: | public | function | Return the human readable name of the display. Overrides ViewsPluginInterface:: | |
| PluginBase:: | public static | function | Moves form elements into fieldsets for presentation purposes. Overrides ViewsPluginInterface:: | |
| PluginBase:: | public static | function | Flattens the structure of form elements. Overrides ViewsPluginInterface:: | |
| PluginBase:: | public static | function | Returns substitutions for Views queries for languages. | |
| PluginBase:: | protected | function | Fills up the options of the plugin with defaults. | |
| PluginBase:: | public | function | Handle any special handling on the validate form. Overrides ViewsPluginInterface:: | 16 | 
| PluginBase:: | public | function | Returns the summary of the settings in the display. Overrides ViewsPluginInterface:: | 6 | 
| PluginBase:: | public | function | Provide a full list of possible theme templates used by this style. Overrides ViewsPluginInterface:: | 1 | 
| PluginBase:: | public static | function | Lists the trusted callbacks provided by the implementing class. Overrides TrustedCallbackInterface:: | 6 | 
| PluginBase:: | public | function | Unpack options over our existing defaults, drilling down into arrays
so that defaults don't get totally blown away. Overrides ViewsPluginInterface:: | |
| PluginBase:: | public | function | Returns the usesOptions property. Overrides ViewsPluginInterface:: | 8 | 
| PluginBase:: | public | function | Validate the options form. Overrides ViewsPluginInterface:: | 15 | 
| PluginBase:: | protected | function | Replaces Views' tokens in a given string. The resulting string will be sanitized with Xss::filterAdmin. | 1 | 
| PluginBase:: | constant | Query string to indicate the site default language. | ||
| RelationshipPluginBase:: | public | property | The relationship alias. | |
| RelationshipPluginBase:: | public | function | Provides the handler some groupby. Overrides HandlerBase:: | |
| StringTranslationTrait:: | protected | property | The string translation service. | 1 | 
| StringTranslationTrait:: | protected | function | Formats a string containing a count of items. | |
| StringTranslationTrait:: | protected | function | Returns the number of plurals supported by a given language. | |
| StringTranslationTrait:: | protected | function | Gets the string translation service. | |
| StringTranslationTrait:: | public | function | Sets the string translation service to use. | 2 | 
| StringTranslationTrait:: | protected | function | Translates a string to the current language or to a given language. | |
| TrustedCallbackInterface:: | constant | Untrusted callbacks throw exceptions. | ||
| TrustedCallbackInterface:: | constant | Untrusted callbacks trigger silenced E_USER_DEPRECATION errors. | ||
| TrustedCallbackInterface:: | constant | Untrusted callbacks trigger E_USER_WARNING errors. | 
