Mercurial > hg > isophonics-drupal-site
comparison core/modules/comment/src/Plugin/Action/DeleteComment.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 1fec387a4317 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\comment\Plugin\Action; | |
4 | |
5 use Drupal\Core\Action\ActionBase; | |
6 use Drupal\Core\Plugin\ContainerFactoryPluginInterface; | |
7 use Drupal\Core\Session\AccountInterface; | |
8 use Drupal\user\PrivateTempStoreFactory; | |
9 use Symfony\Component\DependencyInjection\ContainerInterface; | |
10 | |
11 /** | |
12 * Deletes a comment. | |
13 * | |
14 * @Action( | |
15 * id = "comment_delete_action", | |
16 * label = @Translation("Delete comment"), | |
17 * type = "comment", | |
18 * confirm_form_route_name = "comment.multiple_delete_confirm" | |
19 * ) | |
20 */ | |
21 class DeleteComment extends ActionBase implements ContainerFactoryPluginInterface { | |
22 | |
23 /** | |
24 * The tempstore object. | |
25 * | |
26 * @var \Drupal\user\PrivateTempStore | |
27 */ | |
28 protected $tempStore; | |
29 | |
30 /** | |
31 * The current user. | |
32 * | |
33 * @var \Drupal\Core\Session\AccountInterface | |
34 */ | |
35 protected $currentUser; | |
36 | |
37 /** | |
38 * Constructs a new DeleteComment object. | |
39 * | |
40 * @param array $configuration | |
41 * A configuration array containing information about the plugin instance. | |
42 * @param string $plugin_id | |
43 * The plugin ID for the plugin instance. | |
44 * @param array $plugin_definition | |
45 * The plugin implementation definition. | |
46 * @param \Drupal\user\PrivateTempStoreFactory $temp_store_factory | |
47 * The tempstore factory. | |
48 * @param \Drupal\Core\Session\AccountInterface $current_user | |
49 * The current user. | |
50 */ | |
51 public function __construct(array $configuration, $plugin_id, array $plugin_definition, PrivateTempStoreFactory $temp_store_factory, AccountInterface $current_user) { | |
52 $this->currentUser = $current_user; | |
53 $this->tempStore = $temp_store_factory->get('comment_multiple_delete_confirm'); | |
54 parent::__construct($configuration, $plugin_id, $plugin_definition); | |
55 } | |
56 | |
57 /** | |
58 * {@inheritdoc} | |
59 */ | |
60 public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { | |
61 return new static( | |
62 $configuration, | |
63 $plugin_id, | |
64 $plugin_definition, | |
65 $container->get('user.private_tempstore'), | |
66 $container->get('current_user') | |
67 ); | |
68 } | |
69 | |
70 /** | |
71 * {@inheritdoc} | |
72 */ | |
73 public function executeMultiple(array $entities) { | |
74 $info = []; | |
75 /** @var \Drupal\comment\CommentInterface $comment */ | |
76 foreach ($entities as $comment) { | |
77 $langcode = $comment->language()->getId(); | |
78 $info[$comment->id()][$langcode] = $langcode; | |
79 } | |
80 $this->tempStore->set($this->currentUser->id(), $info); | |
81 } | |
82 | |
83 /** | |
84 * {@inheritdoc} | |
85 */ | |
86 public function execute($entity = NULL) { | |
87 $this->executeMultiple([$entity]); | |
88 } | |
89 | |
90 /** | |
91 * {@inheritdoc} | |
92 */ | |
93 public function access($comment, AccountInterface $account = NULL, $return_as_object = FALSE) { | |
94 /** @var \Drupal\comment\CommentInterface $comment */ | |
95 return $comment->access('delete', $account, $return_as_object); | |
96 } | |
97 | |
98 } |