first commit
This commit is contained in:
52
vendor/php-flasher/flasher/EventDispatcher/Event/FilterEvent.php
vendored
Normal file
52
vendor/php-flasher/flasher/EventDispatcher/Event/FilterEvent.php
vendored
Normal file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher\Event;
|
||||
|
||||
use Flasher\Prime\Filter\Filter;
|
||||
use Flasher\Prime\Notification\Envelope;
|
||||
|
||||
final class FilterEvent
|
||||
{
|
||||
/**
|
||||
* @var Filter
|
||||
*/
|
||||
private $filter;
|
||||
|
||||
/**
|
||||
* @param Envelope[] $envelopes
|
||||
* @param array<string, mixed> $criteria
|
||||
*/
|
||||
public function __construct(array $envelopes, array $criteria)
|
||||
{
|
||||
$this->filter = new Filter($envelopes, $criteria);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Envelope[]
|
||||
*/
|
||||
public function getEnvelopes()
|
||||
{
|
||||
return $this->filter->getResult();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Filter
|
||||
*/
|
||||
public function getFilter()
|
||||
{
|
||||
return $this->filter;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function setFilter(Filter $filter)
|
||||
{
|
||||
$this->filter = $filter;
|
||||
}
|
||||
}
|
44
vendor/php-flasher/flasher/EventDispatcher/Event/PersistEvent.php
vendored
Normal file
44
vendor/php-flasher/flasher/EventDispatcher/Event/PersistEvent.php
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher\Event;
|
||||
|
||||
use Flasher\Prime\Notification\Envelope;
|
||||
|
||||
final class PersistEvent
|
||||
{
|
||||
/**
|
||||
* @var Envelope[]
|
||||
*/
|
||||
private $envelopes;
|
||||
|
||||
/**
|
||||
* @param Envelope[] $envelopes
|
||||
*/
|
||||
public function __construct(array $envelopes)
|
||||
{
|
||||
$this->envelopes = $envelopes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Envelope[]
|
||||
*/
|
||||
public function getEnvelopes()
|
||||
{
|
||||
return $this->envelopes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Envelope[] $envelopes
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setEnvelopes(array $envelopes)
|
||||
{
|
||||
$this->envelopes = $envelopes;
|
||||
}
|
||||
}
|
34
vendor/php-flasher/flasher/EventDispatcher/Event/PostPersistEvent.php
vendored
Normal file
34
vendor/php-flasher/flasher/EventDispatcher/Event/PostPersistEvent.php
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher\Event;
|
||||
|
||||
use Flasher\Prime\Notification\Envelope;
|
||||
|
||||
final class PostPersistEvent
|
||||
{
|
||||
/**
|
||||
* @var Envelope[]
|
||||
*/
|
||||
private $envelopes;
|
||||
|
||||
/**
|
||||
* @param Envelope[] $envelopes
|
||||
*/
|
||||
public function __construct(array $envelopes)
|
||||
{
|
||||
$this->envelopes = $envelopes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Envelope[]
|
||||
*/
|
||||
public function getEnvelopes()
|
||||
{
|
||||
return $this->envelopes;
|
||||
}
|
||||
}
|
49
vendor/php-flasher/flasher/EventDispatcher/Event/PostRemoveEvent.php
vendored
Normal file
49
vendor/php-flasher/flasher/EventDispatcher/Event/PostRemoveEvent.php
vendored
Normal file
@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher\Event;
|
||||
|
||||
use Flasher\Prime\Notification\Envelope;
|
||||
|
||||
final class PostRemoveEvent
|
||||
{
|
||||
/**
|
||||
* @var Envelope[]
|
||||
*/
|
||||
private $envelopesToRemove;
|
||||
|
||||
/**
|
||||
* @var Envelope[]
|
||||
*/
|
||||
private $envelopesToKeep;
|
||||
|
||||
/**
|
||||
* @param Envelope[] $envelopesToRemove
|
||||
* @param Envelope[] $envelopesToKeep
|
||||
*/
|
||||
public function __construct(array $envelopesToRemove = array(), array $envelopesToKeep = array())
|
||||
{
|
||||
$this->envelopesToRemove = $envelopesToRemove;
|
||||
$this->envelopesToKeep = $envelopesToKeep;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Envelope[]
|
||||
*/
|
||||
public function getEnvelopesToRemove()
|
||||
{
|
||||
return $this->envelopesToRemove;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Envelope[]
|
||||
*/
|
||||
public function getEnvelopesToKeep()
|
||||
{
|
||||
return $this->envelopesToKeep;
|
||||
}
|
||||
}
|
34
vendor/php-flasher/flasher/EventDispatcher/Event/PostUpdateEvent.php
vendored
Normal file
34
vendor/php-flasher/flasher/EventDispatcher/Event/PostUpdateEvent.php
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher\Event;
|
||||
|
||||
use Flasher\Prime\Notification\Envelope;
|
||||
|
||||
final class PostUpdateEvent
|
||||
{
|
||||
/**
|
||||
* @var Envelope[]
|
||||
*/
|
||||
private $envelopes;
|
||||
|
||||
/**
|
||||
* @param Envelope[] $envelopes
|
||||
*/
|
||||
public function __construct(array $envelopes)
|
||||
{
|
||||
$this->envelopes = $envelopes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Envelope[]
|
||||
*/
|
||||
public function getEnvelopes()
|
||||
{
|
||||
return $this->envelopes;
|
||||
}
|
||||
}
|
49
vendor/php-flasher/flasher/EventDispatcher/Event/PresentationEvent.php
vendored
Normal file
49
vendor/php-flasher/flasher/EventDispatcher/Event/PresentationEvent.php
vendored
Normal file
@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher\Event;
|
||||
|
||||
use Flasher\Prime\Notification\Envelope;
|
||||
|
||||
final class PresentationEvent
|
||||
{
|
||||
/**
|
||||
* @var Envelope[]
|
||||
*/
|
||||
private $envelopes;
|
||||
|
||||
/**
|
||||
* @var mixed[]
|
||||
*/
|
||||
private $context;
|
||||
|
||||
/**
|
||||
* @param Envelope[] $envelopes
|
||||
* @param mixed[] $context
|
||||
*/
|
||||
public function __construct(array $envelopes, array $context)
|
||||
{
|
||||
$this->envelopes = $envelopes;
|
||||
$this->context = $context;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Envelope[]
|
||||
*/
|
||||
public function getEnvelopes()
|
||||
{
|
||||
return $this->envelopes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed[]
|
||||
*/
|
||||
public function getContext()
|
||||
{
|
||||
return $this->context;
|
||||
}
|
||||
}
|
67
vendor/php-flasher/flasher/EventDispatcher/Event/RemoveEvent.php
vendored
Normal file
67
vendor/php-flasher/flasher/EventDispatcher/Event/RemoveEvent.php
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher\Event;
|
||||
|
||||
use Flasher\Prime\Notification\Envelope;
|
||||
|
||||
final class RemoveEvent
|
||||
{
|
||||
/**
|
||||
* @var Envelope[]
|
||||
*/
|
||||
private $envelopesToRemove = array();
|
||||
|
||||
/**
|
||||
* @var Envelope[]
|
||||
*/
|
||||
private $envelopesToKeep = array();
|
||||
|
||||
/**
|
||||
* @param Envelope[] $envelopesToRemove
|
||||
*/
|
||||
public function __construct(array $envelopesToRemove)
|
||||
{
|
||||
$this->envelopesToRemove = $envelopesToRemove;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Envelope[]
|
||||
*/
|
||||
public function getEnvelopesToRemove()
|
||||
{
|
||||
return $this->envelopesToRemove;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Envelope[] $envelopesToRemove
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setEnvelopesToRemove($envelopesToRemove)
|
||||
{
|
||||
$this->envelopesToRemove = $envelopesToRemove;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Envelope[]
|
||||
*/
|
||||
public function getEnvelopesToKeep()
|
||||
{
|
||||
return $this->envelopesToKeep;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Envelope[] $envelopesToKeep
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setEnvelopesToKeep($envelopesToKeep)
|
||||
{
|
||||
$this->envelopesToKeep = $envelopesToKeep;
|
||||
}
|
||||
}
|
57
vendor/php-flasher/flasher/EventDispatcher/Event/ResponseEvent.php
vendored
Normal file
57
vendor/php-flasher/flasher/EventDispatcher/Event/ResponseEvent.php
vendored
Normal file
@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher\Event;
|
||||
|
||||
final class ResponseEvent
|
||||
{
|
||||
/**
|
||||
* @var mixed
|
||||
*/
|
||||
private $response;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $presenter;
|
||||
|
||||
/**
|
||||
* @param mixed $response
|
||||
* @param string $presenter
|
||||
*/
|
||||
public function __construct($response, $presenter)
|
||||
{
|
||||
$this->response = $response;
|
||||
$this->presenter = $presenter;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getResponse()
|
||||
{
|
||||
return $this->response;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $response
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setResponse($response)
|
||||
{
|
||||
$this->response = $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getPresenter()
|
||||
{
|
||||
return $this->presenter;
|
||||
}
|
||||
}
|
16
vendor/php-flasher/flasher/EventDispatcher/Event/StoppableEventInterface.php
vendored
Normal file
16
vendor/php-flasher/flasher/EventDispatcher/Event/StoppableEventInterface.php
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher\Event;
|
||||
|
||||
interface StoppableEventInterface
|
||||
{
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function isPropagationStopped();
|
||||
}
|
44
vendor/php-flasher/flasher/EventDispatcher/Event/UpdateEvent.php
vendored
Normal file
44
vendor/php-flasher/flasher/EventDispatcher/Event/UpdateEvent.php
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher\Event;
|
||||
|
||||
use Flasher\Prime\Notification\Envelope;
|
||||
|
||||
final class UpdateEvent
|
||||
{
|
||||
/**
|
||||
* @var Envelope[]
|
||||
*/
|
||||
private $envelopes;
|
||||
|
||||
/**
|
||||
* @param Envelope[] $envelopes
|
||||
*/
|
||||
public function __construct(array $envelopes)
|
||||
{
|
||||
$this->envelopes = $envelopes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Envelope[]
|
||||
*/
|
||||
public function getEnvelopes()
|
||||
{
|
||||
return $this->envelopes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Envelope[] $envelopes
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setEnvelopes(array $envelopes)
|
||||
{
|
||||
$this->envelopes = $envelopes;
|
||||
}
|
||||
}
|
89
vendor/php-flasher/flasher/EventDispatcher/EventDispatcher.php
vendored
Normal file
89
vendor/php-flasher/flasher/EventDispatcher/EventDispatcher.php
vendored
Normal file
@ -0,0 +1,89 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher;
|
||||
|
||||
use Flasher\Prime\EventDispatcher\Event\StoppableEventInterface;
|
||||
use Flasher\Prime\EventDispatcher\EventListener\AddToStorageListener;
|
||||
use Flasher\Prime\EventDispatcher\EventListener\EventSubscriberInterface;
|
||||
use Flasher\Prime\EventDispatcher\EventListener\RemoveListener;
|
||||
use Flasher\Prime\EventDispatcher\EventListener\StampsListener;
|
||||
|
||||
final class EventDispatcher implements EventDispatcherInterface
|
||||
{
|
||||
/**
|
||||
* @var array<string, EventSubscriberInterface[]>
|
||||
*/
|
||||
private $listeners = array();
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->addSubscriber(new RemoveListener());
|
||||
$this->addSubscriber(new StampsListener());
|
||||
$this->addSubscriber(new AddToStorageListener());
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function dispatch($event)
|
||||
{
|
||||
$listeners = $this->getListeners(\get_class($event));
|
||||
|
||||
$this->callListeners($listeners, $event); // @phpstan-ignore-line
|
||||
|
||||
return $event;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function addListener($eventName, $listener)
|
||||
{
|
||||
$this->listeners[$eventName][] = $listener; // @phpstan-ignore-line
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function addSubscriber(EventSubscriberInterface $subscriber)
|
||||
{
|
||||
foreach ((array) $subscriber->getSubscribedEvents() as $eventName) {
|
||||
$this->addListener($eventName, array($subscriber, '__invoke')); // @phpstan-ignore-line
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $eventName
|
||||
*
|
||||
* @return array<int, EventSubscriberInterface[]>
|
||||
*/
|
||||
public function getListeners($eventName)
|
||||
{
|
||||
if (\array_key_exists($eventName, $this->listeners)) {
|
||||
return $this->listeners[$eventName]; // @phpstan-ignore-line
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param callable[] $listeners
|
||||
* @param object $event
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function callListeners(array $listeners, $event)
|
||||
{
|
||||
foreach ($listeners as $listener) {
|
||||
if ($event instanceof StoppableEventInterface && $event->isPropagationStopped()) {
|
||||
break;
|
||||
}
|
||||
\call_user_func($listener, $event);
|
||||
}
|
||||
}
|
||||
}
|
33
vendor/php-flasher/flasher/EventDispatcher/EventDispatcherInterface.php
vendored
Normal file
33
vendor/php-flasher/flasher/EventDispatcher/EventDispatcherInterface.php
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher;
|
||||
|
||||
use Flasher\Prime\EventDispatcher\EventListener\EventSubscriberInterface;
|
||||
|
||||
interface EventDispatcherInterface
|
||||
{
|
||||
/**
|
||||
* @param object $event
|
||||
*
|
||||
* @return object
|
||||
*/
|
||||
public function dispatch($event);
|
||||
|
||||
/**
|
||||
* @param string $eventName
|
||||
* @param callable $listener
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function addListener($eventName, $listener);
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function addSubscriber(EventSubscriberInterface $subscriber);
|
||||
}
|
58
vendor/php-flasher/flasher/EventDispatcher/EventListener/AddToStorageListener.php
vendored
Normal file
58
vendor/php-flasher/flasher/EventDispatcher/EventListener/AddToStorageListener.php
vendored
Normal file
@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher\EventListener;
|
||||
|
||||
use Flasher\Prime\EventDispatcher\Event\PersistEvent;
|
||||
use Flasher\Prime\Notification\Envelope;
|
||||
use Flasher\Prime\Stamp\UnlessStamp;
|
||||
use Flasher\Prime\Stamp\WhenStamp;
|
||||
|
||||
final class AddToStorageListener implements EventSubscriberInterface
|
||||
{
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function __invoke(PersistEvent $event)
|
||||
{
|
||||
$envelopesToKeep = array();
|
||||
|
||||
foreach ($event->getEnvelopes() as $envelope) {
|
||||
if ($this->shouldKeep($envelope)) {
|
||||
$envelopesToKeep[] = $envelope;
|
||||
}
|
||||
}
|
||||
|
||||
$event->setEnvelopes($envelopesToKeep);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return 'Flasher\Prime\EventDispatcher\Event\PersistEvent';
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
private function shouldKeep(Envelope $envelope)
|
||||
{
|
||||
$stamp = $envelope->get('Flasher\Prime\Stamp\WhenStamp');
|
||||
if ($stamp instanceof WhenStamp && false === $stamp->getCondition()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$stamp = $envelope->get('Flasher\Prime\Stamp\UnlessStamp');
|
||||
if ($stamp instanceof UnlessStamp && true === $stamp->getCondition()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
16
vendor/php-flasher/flasher/EventDispatcher/EventListener/EventSubscriberInterface.php
vendored
Normal file
16
vendor/php-flasher/flasher/EventDispatcher/EventListener/EventSubscriberInterface.php
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher\EventListener;
|
||||
|
||||
interface EventSubscriberInterface
|
||||
{
|
||||
/**
|
||||
* @return string|string[]
|
||||
*/
|
||||
public static function getSubscribedEvents();
|
||||
}
|
97
vendor/php-flasher/flasher/EventDispatcher/EventListener/PresetListener.php
vendored
Normal file
97
vendor/php-flasher/flasher/EventDispatcher/EventListener/PresetListener.php
vendored
Normal file
@ -0,0 +1,97 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher\EventListener;
|
||||
|
||||
use Flasher\Prime\EventDispatcher\Event\PersistEvent;
|
||||
use Flasher\Prime\Exception\PresetNotFoundException;
|
||||
use Flasher\Prime\Notification\Envelope;
|
||||
use Flasher\Prime\Stamp\PresetStamp;
|
||||
|
||||
/**
|
||||
* @phpstan-type PresetType array<string, array{
|
||||
* type: string,
|
||||
* title: string,
|
||||
* message: string,
|
||||
* options: array<string, mixed>,
|
||||
* }>
|
||||
*/
|
||||
final class PresetListener implements EventSubscriberInterface
|
||||
{
|
||||
/**
|
||||
* @phpstan-var PresetType
|
||||
*/
|
||||
private $presets = array();
|
||||
|
||||
/**
|
||||
* @phpstan-param PresetType $presets
|
||||
*/
|
||||
public function __construct(array $presets)
|
||||
{
|
||||
$this->presets = $presets;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*
|
||||
* @throws PresetNotFoundException
|
||||
*/
|
||||
public function __invoke(PersistEvent $event)
|
||||
{
|
||||
foreach ($event->getEnvelopes() as $envelope) {
|
||||
$this->attachPresets($envelope);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return 'Flasher\Prime\EventDispatcher\Event\PersistEvent';
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*
|
||||
* @throws PresetNotFoundException
|
||||
*/
|
||||
private function attachPresets(Envelope $envelope)
|
||||
{
|
||||
$presetStamp = $envelope->get('Flasher\Prime\Stamp\PresetStamp');
|
||||
if (!$presetStamp instanceof PresetStamp) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isset($this->presets[$presetStamp->getPreset()])) {
|
||||
throw new PresetNotFoundException($presetStamp->getPreset(), array_keys($this->presets));
|
||||
}
|
||||
|
||||
$preset = $this->presets[$presetStamp->getPreset()];
|
||||
$preset = array_merge(array(
|
||||
'type' => 'info',
|
||||
'title' => null,
|
||||
'message' => null,
|
||||
'options' => array(),
|
||||
), $preset);
|
||||
|
||||
if (null === $envelope->getType()) {
|
||||
$envelope->setType($preset['type']);
|
||||
}
|
||||
|
||||
if (null === $envelope->getTitle()) {
|
||||
$envelope->setTitle($preset['title']);
|
||||
}
|
||||
|
||||
if (null === $envelope->getMessage()) {
|
||||
$envelope->setMessage($preset['message']);
|
||||
}
|
||||
|
||||
$options = array_merge($preset['options'], $envelope->getOptions());
|
||||
$envelope->setOptions($options);
|
||||
}
|
||||
}
|
46
vendor/php-flasher/flasher/EventDispatcher/EventListener/RemoveListener.php
vendored
Normal file
46
vendor/php-flasher/flasher/EventDispatcher/EventListener/RemoveListener.php
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher\EventListener;
|
||||
|
||||
use Flasher\Prime\EventDispatcher\Event\RemoveEvent;
|
||||
use Flasher\Prime\Stamp\HopsStamp;
|
||||
|
||||
final class RemoveListener implements EventSubscriberInterface
|
||||
{
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function __invoke(RemoveEvent $event)
|
||||
{
|
||||
$envelopesToKeep = $event->getEnvelopesToKeep();
|
||||
$envelopesToRemove = array();
|
||||
|
||||
foreach ($event->getEnvelopesToRemove() as $envelope) {
|
||||
$hopsStamp = $envelope->get('Flasher\Prime\Stamp\HopsStamp');
|
||||
if (!$hopsStamp instanceof HopsStamp || 1 === $hopsStamp->getAmount()) {
|
||||
$envelopesToRemove[] = $envelope;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$envelope->with(new HopsStamp($hopsStamp->getAmount() - 1));
|
||||
$envelopesToKeep[] = $envelope;
|
||||
}
|
||||
|
||||
$event->setEnvelopesToKeep($envelopesToKeep);
|
||||
$event->setEnvelopesToRemove($envelopesToRemove);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return 'Flasher\Prime\EventDispatcher\Event\RemoveEvent';
|
||||
}
|
||||
}
|
69
vendor/php-flasher/flasher/EventDispatcher/EventListener/StampsListener.php
vendored
Normal file
69
vendor/php-flasher/flasher/EventDispatcher/EventListener/StampsListener.php
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher\EventListener;
|
||||
|
||||
use Flasher\Prime\EventDispatcher\Event\PersistEvent;
|
||||
use Flasher\Prime\EventDispatcher\Event\UpdateEvent;
|
||||
use Flasher\Prime\Notification\Envelope;
|
||||
use Flasher\Prime\Stamp\CreatedAtStamp;
|
||||
use Flasher\Prime\Stamp\DelayStamp;
|
||||
use Flasher\Prime\Stamp\HopsStamp;
|
||||
use Flasher\Prime\Stamp\PriorityStamp;
|
||||
use Flasher\Prime\Stamp\UuidStamp;
|
||||
|
||||
final class StampsListener implements EventSubscriberInterface
|
||||
{
|
||||
/**
|
||||
* @param PersistEvent|UpdateEvent $event
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __invoke($event)
|
||||
{
|
||||
foreach ($event->getEnvelopes() as $envelope) {
|
||||
$this->attachStamps($envelope);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return array(
|
||||
'Flasher\Prime\EventDispatcher\Event\PersistEvent',
|
||||
'Flasher\Prime\EventDispatcher\Event\UpdateEvent',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
private function attachStamps(Envelope $envelope)
|
||||
{
|
||||
if (null === $envelope->get('Flasher\Prime\Stamp\CreatedAtStamp')) {
|
||||
$envelope->withStamp(new CreatedAtStamp());
|
||||
}
|
||||
|
||||
if (null === $envelope->get('Flasher\Prime\Stamp\UuidStamp')) {
|
||||
$envelope->withStamp(new UuidStamp(spl_object_hash($envelope)));
|
||||
}
|
||||
|
||||
if (null === $envelope->get('Flasher\Prime\Stamp\DelayStamp')) {
|
||||
$envelope->withStamp(new DelayStamp(0));
|
||||
}
|
||||
|
||||
if (null === $envelope->get('Flasher\Prime\Stamp\HopsStamp')) {
|
||||
$envelope->withStamp(new HopsStamp(1));
|
||||
}
|
||||
|
||||
if (null === $envelope->get('Flasher\Prime\Stamp\PriorityStamp')) {
|
||||
$envelope->withStamp(new PriorityStamp(0));
|
||||
}
|
||||
}
|
||||
}
|
89
vendor/php-flasher/flasher/EventDispatcher/EventListener/TranslationListener.php
vendored
Normal file
89
vendor/php-flasher/flasher/EventDispatcher/EventListener/TranslationListener.php
vendored
Normal file
@ -0,0 +1,89 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the PHPFlasher package.
|
||||
* (c) Younes KHOUBZA <younes.khoubza@gmail.com>
|
||||
*/
|
||||
|
||||
namespace Flasher\Prime\EventDispatcher\EventListener;
|
||||
|
||||
use Flasher\Prime\EventDispatcher\Event\PresentationEvent;
|
||||
use Flasher\Prime\Stamp\PresetStamp;
|
||||
use Flasher\Prime\Stamp\TranslationStamp;
|
||||
use Flasher\Prime\Translation\EchoTranslator;
|
||||
use Flasher\Prime\Translation\Language;
|
||||
use Flasher\Prime\Translation\TranslatorInterface;
|
||||
|
||||
final class TranslationListener implements EventSubscriberInterface
|
||||
{
|
||||
/**
|
||||
* @var TranslatorInterface
|
||||
*/
|
||||
private $translator;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $autoTranslate;
|
||||
|
||||
/**
|
||||
* @param bool $autoTranslate
|
||||
*/
|
||||
public function __construct(TranslatorInterface $translator = null, $autoTranslate = true)
|
||||
{
|
||||
$this->translator = $translator ?: new EchoTranslator();
|
||||
$this->autoTranslate = $autoTranslate;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
public function __invoke(PresentationEvent $event)
|
||||
{
|
||||
foreach ($event->getEnvelopes() as $envelope) {
|
||||
$stamp = $envelope->get('Flasher\Prime\Stamp\TranslationStamp');
|
||||
if (!$stamp instanceof TranslationStamp && !$this->autoTranslate) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$locale = $stamp instanceof TranslationStamp && $stamp->getLocale()
|
||||
? $stamp->getLocale()
|
||||
: $this->translator->getLocale();
|
||||
|
||||
$parameters = $stamp instanceof TranslationStamp && $stamp->getParameters()
|
||||
? $stamp->getParameters()
|
||||
: array();
|
||||
|
||||
$preset = $envelope->get('Flasher\Prime\Stamp\PresetStamp');
|
||||
if ($preset instanceof PresetStamp) {
|
||||
foreach ($preset->getParameters() as $key => $value) {
|
||||
$parameters[$key] = $this->translator->translate($value, $parameters, $locale); // @phpstan-ignore-line
|
||||
}
|
||||
}
|
||||
|
||||
$title = $envelope->getTitle() ?: $envelope->getType();
|
||||
if (null !== $title) {
|
||||
$title = $this->translator->translate($title, $parameters, $locale);
|
||||
$envelope->setTitle($title);
|
||||
}
|
||||
|
||||
$message = $envelope->getMessage();
|
||||
if (null !== $message) {
|
||||
$message = $this->translator->translate($message, $parameters, $locale);
|
||||
$envelope->setMessage($message);
|
||||
}
|
||||
|
||||
if (Language::isRTL($locale)) {
|
||||
$envelope->setOption('rtl', true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static function getSubscribedEvents()
|
||||
{
|
||||
return 'Flasher\Prime\EventDispatcher\Event\PresentationEvent';
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user