annotate core/lib/Drupal/Core/Messenger/Messenger.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 1fec387a4317
children
rev   line source
Chris@14 1 <?php
Chris@14 2
Chris@14 3 namespace Drupal\Core\Messenger;
Chris@14 4
Chris@14 5 use Drupal\Component\Render\MarkupInterface;
Chris@14 6 use Drupal\Core\PageCache\ResponsePolicy\KillSwitch;
Chris@14 7 use Drupal\Core\Render\Markup;
Chris@14 8 use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
Chris@14 9
Chris@14 10 /**
Chris@14 11 * The messenger service.
Chris@14 12 */
Chris@14 13 class Messenger implements MessengerInterface {
Chris@14 14
Chris@14 15 /**
Chris@14 16 * The flash bag.
Chris@14 17 *
Chris@14 18 * @var \Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface
Chris@14 19 */
Chris@14 20 protected $flashBag;
Chris@14 21
Chris@14 22 /**
Chris@14 23 * The kill switch.
Chris@14 24 *
Chris@14 25 * @var \Drupal\Core\PageCache\ResponsePolicy\KillSwitch
Chris@14 26 */
Chris@14 27 protected $killSwitch;
Chris@14 28
Chris@14 29 /**
Chris@14 30 * Messenger constructor.
Chris@14 31 *
Chris@14 32 * @param \Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface $flash_bag
Chris@14 33 * The flash bag.
Chris@14 34 * @param \Drupal\Core\PageCache\ResponsePolicy\KillSwitch $killSwitch
Chris@14 35 * The kill switch.
Chris@14 36 */
Chris@14 37 public function __construct(FlashBagInterface $flash_bag, KillSwitch $killSwitch) {
Chris@14 38 $this->flashBag = $flash_bag;
Chris@14 39 $this->killSwitch = $killSwitch;
Chris@14 40 }
Chris@14 41
Chris@14 42 /**
Chris@14 43 * {@inheritdoc}
Chris@14 44 */
Chris@14 45 public function addError($message, $repeat = FALSE) {
Chris@14 46 return $this->addMessage($message, static::TYPE_ERROR, $repeat);
Chris@14 47 }
Chris@14 48
Chris@14 49 /**
Chris@14 50 * {@inheritdoc}
Chris@14 51 */
Chris@14 52 public function addMessage($message, $type = self::TYPE_STATUS, $repeat = FALSE) {
Chris@14 53 if (!($message instanceof Markup) && $message instanceof MarkupInterface) {
Chris@14 54 $message = Markup::create((string) $message);
Chris@14 55 }
Chris@14 56
Chris@14 57 // Do not use strict type checking so that equivalent string and
Chris@14 58 // MarkupInterface objects are detected.
Chris@14 59 if ($repeat || !in_array($message, $this->flashBag->peek($type))) {
Chris@14 60 $this->flashBag->add($type, $message);
Chris@14 61 }
Chris@14 62
Chris@14 63 // Mark this page as being uncacheable.
Chris@14 64 $this->killSwitch->trigger();
Chris@14 65
Chris@14 66 return $this;
Chris@14 67 }
Chris@14 68
Chris@14 69 /**
Chris@14 70 * {@inheritdoc}
Chris@14 71 */
Chris@14 72 public function addStatus($message, $repeat = FALSE) {
Chris@14 73 return $this->addMessage($message, static::TYPE_STATUS, $repeat);
Chris@14 74 }
Chris@14 75
Chris@14 76 /**
Chris@14 77 * {@inheritdoc}
Chris@14 78 */
Chris@14 79 public function addWarning($message, $repeat = FALSE) {
Chris@14 80 return $this->addMessage($message, static::TYPE_WARNING, $repeat);
Chris@14 81 }
Chris@14 82
Chris@14 83 /**
Chris@14 84 * {@inheritdoc}
Chris@14 85 */
Chris@14 86 public function all() {
Chris@14 87 return $this->flashBag->peekAll();
Chris@14 88 }
Chris@14 89
Chris@14 90 /**
Chris@14 91 * {@inheritdoc}
Chris@14 92 */
Chris@14 93 public function deleteAll() {
Chris@14 94 return $this->flashBag->clear();
Chris@14 95 }
Chris@14 96
Chris@14 97 /**
Chris@14 98 * {@inheritdoc}
Chris@14 99 */
Chris@14 100 public function deleteByType($type) {
Chris@14 101 // Flash bag gets and clears flash messages from the stack.
Chris@14 102 return $this->flashBag->get($type);
Chris@14 103 }
Chris@14 104
Chris@14 105 /**
Chris@14 106 * {@inheritdoc}
Chris@14 107 */
Chris@14 108 public function messagesByType($type) {
Chris@14 109 return $this->flashBag->peek($type);
Chris@14 110 }
Chris@14 111
Chris@14 112 }