Mercurial > hg > isophonics-drupal-site
view core/modules/system/src/Entity/Action.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 129ea1e6d783 |
line wrap: on
line source
<?php namespace Drupal\system\Entity; use Drupal\Core\Config\Entity\ConfigEntityBase; use Drupal\Core\Config\Entity\ConfigEntityInterface; use Drupal\Core\Entity\EntityWithPluginCollectionInterface; use Drupal\system\ActionConfigEntityInterface; use Drupal\Core\Action\ActionPluginCollection; use Drupal\Component\Plugin\ConfigurablePluginInterface; /** * Defines the configured action entity. * * @ConfigEntityType( * id = "action", * label = @Translation("Action"), * admin_permission = "administer actions", * entity_keys = { * "id" = "id", * "label" = "label" * }, * config_export = { * "id", * "label", * "type", * "plugin", * "configuration", * } * ) */ class Action extends ConfigEntityBase implements ActionConfigEntityInterface, EntityWithPluginCollectionInterface { /** * The name (plugin ID) of the action. * * @var string */ protected $id; /** * The label of the action. * * @var string */ protected $label; /** * The action type. * * @var string */ protected $type; /** * The configuration of the action. * * @var array */ protected $configuration = []; /** * The plugin ID of the action. * * @var string */ protected $plugin; /** * The plugin collection that stores action plugins. * * @var \Drupal\Core\Action\ActionPluginCollection */ protected $pluginCollection; /** * Encapsulates the creation of the action's LazyPluginCollection. * * @return \Drupal\Component\Plugin\LazyPluginCollection * The action's plugin collection. */ protected function getPluginCollection() { if (!$this->pluginCollection) { $this->pluginCollection = new ActionPluginCollection(\Drupal::service('plugin.manager.action'), $this->plugin, $this->configuration); } return $this->pluginCollection; } /** * {@inheritdoc} */ public function getPluginCollections() { return ['configuration' => $this->getPluginCollection()]; } /** * {@inheritdoc} */ public function getPlugin() { return $this->getPluginCollection()->get($this->plugin); } /** * {@inheritdoc} */ public function setPlugin($plugin_id) { $this->plugin = $plugin_id; $this->getPluginCollection()->addInstanceId($plugin_id); } /** * {@inheritdoc} */ public function getPluginDefinition() { return $this->getPlugin()->getPluginDefinition(); } /** * {@inheritdoc} */ public function execute(array $entities) { return $this->getPlugin()->executeMultiple($entities); } /** * {@inheritdoc} */ public function isConfigurable() { return $this->getPlugin() instanceof ConfigurablePluginInterface; } /** * {@inheritdoc} */ public function getType() { return $this->type; } /** * {@inheritdoc} */ public static function sort(ConfigEntityInterface $a, ConfigEntityInterface $b) { /** @var \Drupal\system\ActionConfigEntityInterface $a */ /** @var \Drupal\system\ActionConfigEntityInterface $b */ $a_type = $a->getType(); $b_type = $b->getType(); if ($a_type != $b_type) { return strnatcasecmp($a_type, $b_type); } return parent::sort($a, $b); } }