UsersRenamedEvent now dispatches instead of GenericEvent on users rename. Some events refactoring.
This commit is contained in:
parent
3db25e9bdb
commit
9488eddd9f
|
@ -0,0 +1,37 @@
|
|||
<?php
|
||||
|
||||
namespace Skobkin\Bundle\PointToolsBundle\Event;
|
||||
|
||||
use Skobkin\Bundle\PointToolsBundle\Entity\UserRenameEvent;
|
||||
use Symfony\Component\EventDispatcher\Event;
|
||||
|
||||
/**
|
||||
* Dispatched when one or more users were renamed
|
||||
*/
|
||||
class UsersRenamedEvent extends Event
|
||||
{
|
||||
const NAME = 'app.users.renamed';
|
||||
|
||||
/**
|
||||
* @var UserRenameEvent[]
|
||||
*/
|
||||
private $renames;
|
||||
|
||||
/**
|
||||
* UsersRenamedEvent constructor.
|
||||
*
|
||||
* @param UserRenameEvent[] $renames
|
||||
*/
|
||||
public function __construct(array $renames)
|
||||
{
|
||||
$this->renames = $renames;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return UserRenameEvent[]
|
||||
*/
|
||||
public function getRenames(): array
|
||||
{
|
||||
return $this->renames;
|
||||
}
|
||||
}
|
|
@ -2,11 +2,10 @@
|
|||
|
||||
namespace Skobkin\Bundle\PointToolsBundle\EventListener;
|
||||
|
||||
|
||||
use Skobkin\Bundle\PointToolsBundle\Event\UsersRenamedEvent;
|
||||
use Skobkin\Bundle\PointToolsBundle\Service\Telegram\Notifier;
|
||||
use Symfony\Component\EventDispatcher\GenericEvent;
|
||||
|
||||
class UsersRenameNotifierListener
|
||||
class UsersRenamedNotifierListener
|
||||
{
|
||||
/**
|
||||
* @var Notifier
|
||||
|
@ -24,8 +23,8 @@ class UsersRenameNotifierListener
|
|||
$this->notifier = $notifier;
|
||||
}
|
||||
|
||||
public function onAppUsersRenamed(GenericEvent $event)
|
||||
public function onAppUsersRenamed(UsersRenamedEvent $event)
|
||||
{
|
||||
$this->notifier->sendUsersRenamedNotification((array) $event->getIterator());
|
||||
$this->notifier->sendUsersRenamedNotification($event->getRenames());
|
||||
}
|
||||
}
|
|
@ -10,15 +10,15 @@ use Doctrine\ORM\Event\PostFlushEventArgs;
|
|||
use Doctrine\ORM\Event\PreUpdateEventArgs;
|
||||
use Skobkin\Bundle\PointToolsBundle\Entity\User;
|
||||
use Skobkin\Bundle\PointToolsBundle\Entity\UserRenameEvent;
|
||||
use Skobkin\Bundle\PointToolsBundle\Event\UsersRenamedEvent;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Component\EventDispatcher\GenericEvent;
|
||||
|
||||
class UserRenameSubscriber implements EventSubscriber
|
||||
class UsersUpdatedSubscriber implements EventSubscriber
|
||||
{
|
||||
/**
|
||||
* @var UserRenameEvent[]
|
||||
*/
|
||||
private $items = [];
|
||||
private $renames = [];
|
||||
|
||||
/**
|
||||
* @var EventDispatcherInterface
|
||||
|
@ -54,27 +54,27 @@ class UserRenameSubscriber implements EventSubscriber
|
|||
}
|
||||
|
||||
if ($event->hasChangedField('login')) {
|
||||
$this->items[] = new UserRenameEvent($entity, $event->getOldValue('login'));
|
||||
$this->renames[] = new UserRenameEvent($entity, $event->getOldValue('login'));
|
||||
}
|
||||
}
|
||||
|
||||
public function postFlush(PostFlushEventArgs $event)
|
||||
{
|
||||
if (0 !== count($this->items)) {
|
||||
if (0 !== count($this->renames)) {
|
||||
// Creating event for dispatch
|
||||
$usersRenamedEvent = new GenericEvent(null, $this->items);
|
||||
$usersRenamedEvent = new UsersRenamedEvent($this->renames);
|
||||
|
||||
$em = $event->getEntityManager();
|
||||
|
||||
foreach ($this->items as $item) {
|
||||
foreach ($this->renames as $item) {
|
||||
$em->persist($item);
|
||||
}
|
||||
|
||||
$this->items = [];
|
||||
$this->renames = [];
|
||||
|
||||
$em->flush();
|
||||
|
||||
$this->eventDispatcher->dispatch('app.users.renamed', $usersRenamedEvent);
|
||||
$this->eventDispatcher->dispatch(UsersRenamedEvent::NAME, $usersRenamedEvent);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -85,14 +85,14 @@ services:
|
|||
|
||||
|
||||
# Event listener
|
||||
point_tools.event_listener.user_rename_subscriber:
|
||||
class: Skobkin\Bundle\PointToolsBundle\EventListener\UserRenameSubscriber
|
||||
point_tools.event_listener.users_updated:
|
||||
class: Skobkin\Bundle\PointToolsBundle\EventListener\UsersUpdatedSubscriber
|
||||
arguments: [@event_dispatcher]
|
||||
tags:
|
||||
- { name: doctrine.event_subscriber, connection: default }
|
||||
|
||||
point_tools.event_listener.users_renamed_notifier_listener:
|
||||
class: Skobkin\Bundle\PointToolsBundle\EventListener\UsersRenameNotifierListener
|
||||
point_tools.event_listener.users_renamed_notifier:
|
||||
class: Skobkin\Bundle\PointToolsBundle\EventListener\UsersRenamedNotifierListener
|
||||
arguments: [@point_tools.telegram.notifier]
|
||||
tags:
|
||||
- { name: kernel.event_listener, event: app.users.renamed }
|
||||
|
|
Loading…
Reference in a new issue