Version 1
[yaffs-website] / web / modules / contrib / entityqueue / src / Plugin / EntityQueueHandler / Simple.php
1 <?php
2
3 namespace Drupal\entityqueue\Plugin\EntityQueueHandler;
4
5 use Drupal\Core\Entity\EntityStorageInterface;
6 use Drupal\entityqueue\Entity\EntitySubqueue;
7 use Drupal\entityqueue\EntityQueueHandlerBase;
8 use Drupal\entityqueue\EntityQueueInterface;
9
10 /**
11  * Defines an entity queue handler that manages a single subqueue.
12  *
13  * @EntityQueueHandler(
14  *   id = "simple",
15  *   title = @Translation("Simple queue")
16  * )
17  */
18 class Simple extends EntityQueueHandlerBase {
19
20   /**
21    * {@inheritdoc}
22    */
23   public function supportsMultipleSubqueues() {
24     return FALSE;
25   }
26
27   /**
28    * {@inheritdoc}
29    */
30   public function hasAutomatedSubqueues() {
31     return TRUE;
32   }
33
34   /**
35    * {@inheritdoc}
36    */
37   public function getQueueListBuilderOperations() {
38     // Simple queues have just one subqueue so we can link directly to the edit
39     // form.
40     $operations['edit_subqueue'] = [
41       'title' => $this->t('Edit items'),
42       'weight' => -9,
43       'url' => EntitySubqueue::load($this->queue->id())->urlInfo('edit-form'),
44     ];
45
46     return $operations;
47   }
48
49   /**
50    * {@inheritdoc}
51    */
52   public function onQueuePostSave(EntityQueueInterface $queue, EntityStorageInterface $storage, $update = TRUE) {
53     // Make sure that every simple queue has a subqueue.
54     if (!$update) {
55       $subqueue = EntitySubqueue::create([
56         'queue' => $queue->id(),
57         'name' => $queue->id(),
58         'title' => $queue->label(),
59         'langcode' => $queue->language()->getId(),
60       ]);
61       $subqueue->save();
62     }
63   }
64
65   /**
66    * {@inheritdoc}
67    */
68   public function onQueuePostDelete(EntityQueueInterface $queue, EntityStorageInterface $storage) {
69     // Delete the subqueue when the parent queue is deleted.
70     if ($subqueue = EntitySubqueue::load($queue->id())) {
71       $subqueue->delete();
72     }
73   }
74
75 }