farm-2.x-dev/modules/taxonomy/log_category/src/Plugin/Action/LogCategorize.php
modules/taxonomy/log_category/src/Plugin/Action/LogCategorize.php
<?php namespace Drupal\farm_log_category\Plugin\Action; use Drupal\Core\Action\Plugin\Action\EntityActionBase; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Session\AccountInterface; use Drupal\Core\TempStore\PrivateTempStoreFactory; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Redirects to a form to add categories to a log. * * @Action( * id = "log_categorize_action", * action_label = @Translation("Categorize log"), * type = "log", * confirm_form_route_name = "farm_log_category.log_categorize_action_form" * ) */ class LogCategorize extends EntityActionBase { /** * The tempstore object. * * @var \Drupal\Core\TempStore\SharedTempStore */ protected $tempStore; /** * The current user. * * @var \Drupal\Core\Session\AccountInterface */ protected $currentUser; /** * Constructs a new LogCategorize 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\Core\Entity\EntityTypeManagerInterface $entity_type_manager * The entity type manager. * @param \Drupal\Core\TempStore\PrivateTempStoreFactory $temp_store_factory * The tempstore factory. * @param \Drupal\Core\Session\AccountInterface $current_user * Current user. */ public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, PrivateTempStoreFactory $temp_store_factory, AccountInterface $current_user) { $this->currentUser = $current_user; $this->tempStore = $temp_store_factory->get('log_categorize_confirm'); parent::__construct($configuration, $plugin_id, $plugin_definition, $entity_type_manager); } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { return new static( $configuration, $plugin_id, $plugin_definition, $container->get('entity_type.manager'), $container->get('tempstore.private'), $container->get('current_user') ); } /** * {@inheritdoc} */ public function executeMultiple(array $entities) { /** @var \Drupal\Core\Entity\EntityInterface[] $entities */ $this->tempStore->set($this->currentUser->id(), $entities); } /** * {@inheritdoc} */ public function execute($object = NULL) { $this->executeMultiple([$object]); } /** * {@inheritdoc} */ public function access($object, AccountInterface $account = NULL, $return_as_object = FALSE) { $result = $object->get('category')->access('edit', $account, TRUE) ->andIf($object->access('update', $account, TRUE)); return $return_as_object ? $result : $result->isAllowed(); } }