Skip to content

Commit

Permalink
extract outside loop
Browse files Browse the repository at this point in the history
  • Loading branch information
juliangut committed Oct 7, 2017
1 parent e78b40d commit 88fd0f1
Showing 1 changed file with 17 additions and 7 deletions.
24 changes: 17 additions & 7 deletions src/EventsTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,15 @@ trait EventsTrait
public function disableEventSubscriber($subscriberClass)
{
$subscriberClass = $this->getSubscriberClassName($subscriberClass);
$eventManager = $this->getEventManager();

/* @var EventSubscriber[] $subscribers */
foreach ($this->getEventListeners() as $subscribers) {
while ($subscriber = array_shift($subscribers)) {
if ($subscriber instanceof $subscriberClass) {
$this->disabledSubscribers[] = $subscriber;

$this->getEventManager()->removeEventSubscriber($subscriber);
$eventManager->removeEventSubscriber($subscriber);

return;
}
Expand All @@ -63,8 +64,10 @@ public function disableEventSubscriber($subscriberClass)
*/
public function restoreEventSubscribers()
{
$eventManager = $this->getEventManager();

foreach ($this->disabledSubscribers as $subscriber) {
$this->getEventManager()->addEventSubscriber($subscriber);
$eventManager->addEventSubscriber($subscriber);
}

$this->disabledSubscribers = [];
Expand All @@ -77,12 +80,14 @@ public function restoreEventSubscribers()
*/
public function disableEventListeners(string $event)
{
$eventManager = $this->getEventManager();

if (!array_key_exists($event, $this->disabledListeners)) {
$this->disabledListeners[$event] = [];
}

foreach ($this->getEventListeners($event) as $listener) {
$this->getEventManager()->removeEventListener($event, $listener);
$eventManager->removeEventListener($event, $listener);

$this->disabledListeners[$event][] = $listener;
}
Expand All @@ -104,11 +109,13 @@ public function disableEventListener(string $event, $subscriberClass)
$this->disabledListeners[$event] = [];
}

$eventManager = $this->getEventManager();

foreach ($this->getEventListeners($event) as $listener) {
if ($listener instanceof $subscriberClass) {
$this->disabledListeners[$event][] = $listener;

$this->getEventManager()->removeEventListener($event, $listener);
$eventManager->removeEventListener($event, $listener);
break;
}
}
Expand All @@ -119,10 +126,12 @@ public function disableEventListener(string $event, $subscriberClass)
*/
public function restoreAllEventListeners()
{
$eventManager = $this->getEventManager();

foreach ($this->disabledListeners as $event => $listeners) {
/* @var EventSubscriber[] $listeners */
foreach ($listeners as $listener) {
$this->getEventManager()->addEventListener($event, $listener);
$eventManager->addEventListener($event, $listener);
}

$this->disabledListeners[$event] = [];
Expand All @@ -140,11 +149,12 @@ public function restoreEventListeners(string $event)
return;
}

$eventManager = $this->getEventManager();

/* @var EventSubscriber[] $listeners */
$listeners = $this->disabledListeners[$event];

foreach ($listeners as $listener) {
$this->getEventManager()->addEventListener($event, $listener);
$eventManager->addEventListener($event, $listener);
}

$this->disabledListeners[$event] = [];
Expand Down

0 comments on commit 88fd0f1

Please sign in to comment.