da2120a23e90a1ea6f1f21c36e879e74ae4d85a2
[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::load($queue->id());
56       $subqueue->setTitle($queue->label());
57     }
58     else {
59       $subqueue = EntitySubqueue::create([
60         'queue' => $queue->id(),
61         'name' => $queue->id(),
62         'title' => $queue->label(),
63         'langcode' => $queue->language()->getId(),
64       ]);
65     }
66
67     $subqueue->save();
68   }
69
70   /**
71    * {@inheritdoc}
72    */
73   public function onQueuePostDelete(EntityQueueInterface $queue, EntityStorageInterface $storage) {
74     // Delete the subqueue when the parent queue is deleted.
75     if ($subqueue = EntitySubqueue::load($queue->id())) {
76       $subqueue->delete();
77     }
78   }
79
80 }