From b9edf92b976329f38366242219440308305fa0bd Mon Sep 17 00:00:00 2001
From: Nathaniel Catchpole <catch@35733.no-reply.drupal.org>
Date: Fri, 2 Feb 2018 12:56:57 +0000
Subject: [PATCH] Issue #2937945 by yo30, kim.pepper, dawehner, voleger,
 larowlan: Add messenger to ControllerBase and FormBase

---
 .../Drupal/Core/Controller/ControllerBase.php |  2 +
 core/lib/Drupal/Core/Form/FormBase.php        |  2 +
 .../Drupal/Core/Messenger/MessengerTrait.php  | 40 +++++++++++++++++++
 .../src/Controller/AggregatorController.php   |  2 +-
 4 files changed, 45 insertions(+), 1 deletion(-)
 create mode 100644 core/lib/Drupal/Core/Messenger/MessengerTrait.php

diff --git a/core/lib/Drupal/Core/Controller/ControllerBase.php b/core/lib/Drupal/Core/Controller/ControllerBase.php
index c0d0cdd964b1..241936753a7a 100644
--- a/core/lib/Drupal/Core/Controller/ControllerBase.php
+++ b/core/lib/Drupal/Core/Controller/ControllerBase.php
@@ -9,6 +9,7 @@
 use Drupal\Core\Routing\UrlGeneratorTrait;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Symfony\Component\DependencyInjection\ContainerInterface;
+use Drupal\Core\Messenger\MessengerTrait;
 
 /**
  * Utility base class for thin controllers.
@@ -35,6 +36,7 @@ abstract class ControllerBase implements ContainerInjectionInterface {
 
   use LinkGeneratorTrait;
   use LoggerChannelTrait;
+  use MessengerTrait;
   use RedirectDestinationTrait;
   use StringTranslationTrait;
   use UrlGeneratorTrait;
diff --git a/core/lib/Drupal/Core/Form/FormBase.php b/core/lib/Drupal/Core/Form/FormBase.php
index 02a1c3940c40..165cb3a8f0cf 100644
--- a/core/lib/Drupal/Core/Form/FormBase.php
+++ b/core/lib/Drupal/Core/Form/FormBase.php
@@ -12,6 +12,7 @@
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\RequestStack;
+use Drupal\Core\Messenger\MessengerTrait;
 
 /**
  * Provides a base class for forms.
@@ -45,6 +46,7 @@ abstract class FormBase implements FormInterface, ContainerInjectionInterface {
   use DependencySerializationTrait;
   use LinkGeneratorTrait;
   use LoggerChannelTrait;
+  use MessengerTrait;
   use RedirectDestinationTrait;
   use StringTranslationTrait;
   use UrlGeneratorTrait;
diff --git a/core/lib/Drupal/Core/Messenger/MessengerTrait.php b/core/lib/Drupal/Core/Messenger/MessengerTrait.php
new file mode 100644
index 000000000000..1454243b8fd7
--- /dev/null
+++ b/core/lib/Drupal/Core/Messenger/MessengerTrait.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace Drupal\Core\Messenger;
+
+/**
+ * Provides a trait for the messenger service.
+ */
+trait MessengerTrait {
+
+  /**
+   * The messenger.
+   *
+   * @var \Drupal\Core\Messenger\MessengerInterface
+   */
+  protected $messenger;
+
+  /**
+   * Sets the messenger.
+   *
+   * @param \Drupal\Core\Messenger\MessengerInterface $messenger
+   *   The messenger.
+   */
+  public function setMessenger(MessengerInterface $messenger) {
+    $this->messenger = $messenger;
+  }
+
+  /**
+   * Gets the messenger.
+   *
+   * @return \Drupal\Core\Messenger\MessengerInterface
+   *   The messenger.
+   */
+  public function messenger() {
+    if (!isset($this->messenger)) {
+      $this->messenger = \Drupal::messenger();
+    }
+    return $this->messenger;
+  }
+
+}
diff --git a/core/modules/aggregator/src/Controller/AggregatorController.php b/core/modules/aggregator/src/Controller/AggregatorController.php
index b459b196ccbd..7fd0743881f1 100644
--- a/core/modules/aggregator/src/Controller/AggregatorController.php
+++ b/core/modules/aggregator/src/Controller/AggregatorController.php
@@ -93,7 +93,7 @@ public function feedRefresh(FeedInterface $aggregator_feed) {
     $message = $aggregator_feed->refreshItems()
       ? $this->t('There is new syndicated content from %site.', ['%site' => $aggregator_feed->label()])
       : $this->t('There is no new syndicated content from %site.', ['%site' => $aggregator_feed->label()]);
-    drupal_set_message($message);
+    $this->messenger()->addStatus($message);
     return $this->redirect('aggregator.admin_overview');
   }
 
-- 
GitLab