Contains \Drupal\system\Plugin\Core\Entity\Action.
<?php
/**
* @file
* Contains \Drupal\system\Plugin\Core\Entity\Action.
*/
namespace Drupal\system\Plugin\Core\Entity;
use Drupal\Core\Config\Entity\ConfigEntityBase;
use Drupal\Core\Entity\Annotation\EntityType;
use Drupal\Core\Annotation\Translation;
use Drupal\system\ActionConfigEntityInterface;
use Drupal\Core\Action\ActionBag;
use Drupal\Core\Action\ConfigurableActionInterface;
/**
* Defines the configured action entity.
*
* @EntityType(
* id = "action",
* label = @Translation("Action"),
* module = "system",
* controllers = {
* "storage" = "Drupal\system\ActionStorageController"
* },
* config_prefix = "action.action",
* entity_keys = {
* "id" = "id",
* "label" = "label",
* "uuid" = "uuid"
* }
* )
*/
class Action extends ConfigEntityBase implements ActionConfigEntityInterface {
/**
* The name (plugin ID) of the action.
*
* @var string
*/
public $id;
/**
* The label of the action.
*
* @var string
*/
public $label;
/**
* The UUID of the action.
*
* @var string
*/
public $uuid;
/**
* The action type.
*
* @var string
*/
protected $type;
/**
* The configuration of the action.
*
* @var array
*/
protected $configuration = array();
/**
* The plugin ID of the action.
*
* @var string
*/
protected $plugin;
/**
* The plugin bag that stores action plugins.
*
* @var \Drupal\Core\Action\ActionBag
*/
protected $pluginBag;
/**
* {@inheritdoc}
*/
public function __construct(array $values, $entity_type) {
parent::__construct($values, $entity_type);
$this->pluginBag = new ActionBag(\Drupal::service('plugin.manager.action'), array(
$this->plugin,
), $this->configuration);
}
/**
* {@inheritdoc}
*/
public function getPlugin() {
return $this->pluginBag
->get($this->plugin);
}
/**
* {@inheritdoc}
*/
public function setPlugin($plugin_id) {
$this->plugin = $plugin_id;
$this->pluginBag
->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 ConfigurableActionInterface;
}
/**
* {@inheritdoc}
*/
public function getType() {
return $this->type;
}
/**
* {@inheritdoc}
*/
public function uri() {
return array(
'path' => 'admin/config/system/actions/configure/' . $this
->id(),
'options' => array(
'entity_type' => $this->entityType,
'entity' => $this,
),
);
}
/**
* {@inheritdoc}
*/
public static function sort($a, $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);
}
/**
* {@inheritdoc}
*/
public function getExportProperties() {
$properties = parent::getExportProperties();
$names = array(
'type',
'plugin',
'configuration',
);
foreach ($names as $name) {
$properties[$name] = $this
->get($name);
}
return $properties;
}
}