Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Manager.php
Go to the documentation of this file.
1 <?php
7 
9 use Psr\Log\LoggerInterface;
11 
16 class Manager implements ManagerInterface
17 {
21  const DEFAULT_GROUP = 'default';
22 
26  protected $session;
27 
31  protected $messageFactory;
32 
36  protected $messagesFactory;
37 
41  protected $eventManager;
42 
46  protected $logger;
47 
51  protected $defaultGroup;
52 
56  protected $hasMessages = false;
57 
61  private $exceptionMessageFactory;
62 
72  public function __construct(
77  LoggerInterface $logger,
78  $defaultGroup = self::DEFAULT_GROUP,
79  ExceptionMessageFactoryInterface $exceptionMessageFactory = null
80  ) {
81  $this->session = $session;
82  $this->messageFactory = $messageFactory;
83  $this->messagesFactory = $messagesFactory;
84  $this->eventManager = $eventManager;
85  $this->logger = $logger;
86  $this->defaultGroup = $defaultGroup;
87  $this->exceptionMessageFactory = $exceptionMessageFactory ?: ObjectManager::getInstance()
88  ->get(ExceptionMessageLookupFactory::class);
89  }
90 
94  public function getDefaultGroup()
95  {
96  return $this->defaultGroup;
97  }
98 
105  protected function prepareGroup($group)
106  {
107  return !empty($group) ? $group : $this->defaultGroup;
108  }
109 
117  public function getMessages($clear = false, $group = null)
118  {
119  $group = $this->prepareGroup($group);
120  if (!$this->session->getData($group)) {
121  $this->session->setData($group, $this->messagesFactory->create());
122  }
123 
124  if ($clear) {
125  $messages = clone $this->session->getData($group);
126  $this->session->getData($group)->clear();
127  $this->eventManager->dispatch('session_abstract_clear_messages');
128  return $messages;
129  }
130  return $this->session->getData($group);
131  }
132 
140  public function addMessage(MessageInterface $message, $group = null)
141  {
142  $this->hasMessages = true;
143  $this->getMessages(false, $group)->addMessage($message);
144  $this->eventManager->dispatch('session_abstract_add_message');
145  return $this;
146  }
147 
155  public function addMessages(array $messages, $group = null)
156  {
157  foreach ($messages as $message) {
158  if ($message instanceof MessageInterface) {
159  $this->addMessage($message, $group);
160  }
161  }
162  return $this;
163  }
164 
172  public function addError($message, $group = null)
173  {
174  $this->addMessage($this->messageFactory->create(MessageInterface::TYPE_ERROR, $message), $group);
175  return $this;
176  }
177 
185  public function addWarning($message, $group = null)
186  {
187  $this->addMessage($this->messageFactory->create(MessageInterface::TYPE_WARNING, $message), $group);
188  return $this;
189  }
190 
198  public function addNotice($message, $group = null)
199  {
200  $this->addMessage($this->messageFactory->create(MessageInterface::TYPE_NOTICE, $message), $group);
201  return $this;
202  }
203 
211  public function addSuccess($message, $group = null)
212  {
213  $this->addMessage($this->messageFactory->create(MessageInterface::TYPE_SUCCESS, $message), $group);
214  return $this;
215  }
216 
224  public function addUniqueMessages(array $messages, $group = null)
225  {
226  $items = $this->getMessages(false, $group)->getItems();
227 
228  foreach ($messages as $message) {
229  if ($message instanceof MessageInterface and !in_array($message, $items, false)) {
230  $this->addMessage($message, $group);
231  }
232  }
233 
234  return $this;
235  }
236 
245  public function addException(\Exception $exception, $alternativeText = null, $group = null)
246  {
247  $message = sprintf(
248  'Exception message: %s%sTrace: %s',
249  $exception->getMessage(),
250  "\n",
251  $exception->getTraceAsString()
252  );
253 
254  $this->logger->critical($message);
255 
256  if ($alternativeText) {
257  $this->addError($alternativeText, $group);
258  } else {
259  $this->addMessage($this->exceptionMessageFactory->createMessage($exception), $group);
260  }
261 
262  return $this;
263  }
264 
270  public function hasMessages()
271  {
272  return $this->hasMessages;
273  }
274 
283  public function addExceptionMessage(\Exception $exception, $alternativeText = null, $group = null)
284  {
285  $message = sprintf(
286  'Exception message: %s%sTrace: %s',
287  $exception->getMessage(),
288  "\n",
289  $exception->getTraceAsString()
290  );
291 
292  $this->logger->critical($message);
293 
294  if ($alternativeText) {
295  $this->addErrorMessage($alternativeText, $group);
296  } else {
297  $this->addMessage($this->exceptionMessageFactory->createMessage($exception), $group);
298  }
299 
300  return $this;
301  }
302 
310  public function addErrorMessage($message, $group = null)
311  {
312  $this->addMessage(
314  ->setText($message),
315  $group
316  );
317  return $this;
318  }
319 
327  public function addWarningMessage($message, $group = null)
328  {
329  $this->addMessage(
331  ->setText($message),
332  $group
333  );
334  return $this;
335  }
336 
344  public function addNoticeMessage($message, $group = null)
345  {
346  $this->addMessage(
348  ->setText($message),
349  $group
350  );
351  return $this;
352  }
353 
361  public function addSuccessMessage($message, $group = null)
362  {
363  $this->addMessage(
365  ->setText($message),
366  $group
367  );
368  return $this;
369  }
370 
380  public function addComplexErrorMessage($identifier, array $data = [], $group = null)
381  {
382  $this->assertNotEmptyIdentifier($identifier);
383  $this->addMessage(
384  $this->createMessage(MessageInterface::TYPE_ERROR, $identifier)
385  ->setData($data),
386  $group
387  );
388 
389  return $this;
390  }
391 
401  public function addComplexWarningMessage($identifier, array $data = [], $group = null)
402  {
403  $this->assertNotEmptyIdentifier($identifier);
404  $this->addMessage(
405  $this->createMessage(MessageInterface::TYPE_WARNING, $identifier)
406  ->setData($data),
407  $group
408  );
409 
410  return $this;
411  }
412 
422  public function addComplexNoticeMessage($identifier, array $data = [], $group = null)
423  {
424  $this->assertNotEmptyIdentifier($identifier);
425  $this->addMessage(
426  $this->createMessage(MessageInterface::TYPE_NOTICE, $identifier)
427  ->setData($data),
428  $group
429  );
430 
431  return $this;
432  }
433 
443  public function addComplexSuccessMessage($identifier, array $data = [], $group = null)
444  {
445  $this->assertNotEmptyIdentifier($identifier);
446  $this->addMessage(
447  $this->createMessage(MessageInterface::TYPE_SUCCESS, $identifier)
448  ->setData($data),
449  $group
450  );
451 
452  return $this;
453  }
454 
463  public function createMessage($type, $identifier = null)
464  {
465  return $this->messageFactory->create($type)
466  ->setIdentifier(
467  empty($identifier)
469  : $identifier
470  );
471  }
472 
480  private function assertNotEmptyIdentifier($identifier)
481  {
482  if (empty($identifier)) {
483  throw new \InvalidArgumentException('Message identifier should not be empty');
484  }
485  }
486 }
addErrorMessage($message, $group=null)
Definition: Manager.php:310
addException(\Exception $exception, $alternativeText=null, $group=null)
Definition: Manager.php:245
addMessage(MessageInterface $message, $group=null)
Definition: Manager.php:140
addComplexNoticeMessage($identifier, array $data=[], $group=null)
Definition: Manager.php:422
addSuccessMessage($message, $group=null)
Definition: Manager.php:361
addMessages(array $messages, $group=null)
Definition: Manager.php:155
$group
Definition: sections.phtml:16
addComplexSuccessMessage($identifier, array $data=[], $group=null)
Definition: Manager.php:443
$message
createMessage($type, $identifier=null)
Definition: Manager.php:463
addError($message, $group=null)
Definition: Manager.php:172
addUniqueMessages(array $messages, $group=null)
Definition: Manager.php:224
$type
Definition: item.phtml:13
addWarningMessage($message, $group=null)
Definition: Manager.php:327
addNotice($message, $group=null)
Definition: Manager.php:198
__construct(Session $session, Factory $messageFactory, CollectionFactory $messagesFactory, Event\ManagerInterface $eventManager, LoggerInterface $logger, $defaultGroup=self::DEFAULT_GROUP, ExceptionMessageFactoryInterface $exceptionMessageFactory=null)
Definition: Manager.php:72
addSuccess($message, $group=null)
Definition: Manager.php:211
getMessages($clear=false, $group=null)
Definition: Manager.php:117
addComplexWarningMessage($identifier, array $data=[], $group=null)
Definition: Manager.php:401
addExceptionMessage(\Exception $exception, $alternativeText=null, $group=null)
Definition: Manager.php:283
addNoticeMessage($message, $group=null)
Definition: Manager.php:344
addWarning($message, $group=null)
Definition: Manager.php:185
$items
addComplexErrorMessage($identifier, array $data=[], $group=null)
Definition: Manager.php:380