Skip to content

Commit

Permalink
use dedicated eventArgs
Browse files Browse the repository at this point in the history
  • Loading branch information
yassinefikri committed Jul 13, 2023
1 parent eef4b49 commit 0fad774
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 2 deletions.
11 changes: 11 additions & 0 deletions src/SoftDeleteable/Event/ODM/PostSoftDeleteEventArgs.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

declare(strict_types=1);

namespace Gedmo\SoftDeleteable\Event\ODM;

use Doctrine\ODM\MongoDB\Event\LifecycleEventArgs;

final class PostSoftDeleteEventArgs extends LifecycleEventArgs
{
}
11 changes: 11 additions & 0 deletions src/SoftDeleteable/Event/ODM/PreSoftDeleteEventArgs.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

declare(strict_types=1);

namespace Gedmo\SoftDeleteable\Event\ODM;

use Doctrine\ODM\MongoDB\Event\LifecycleEventArgs;

final class PreSoftDeleteEventArgs extends LifecycleEventArgs
{
}
11 changes: 11 additions & 0 deletions src/SoftDeleteable/Event/ORM/PostSoftDeleteEventArgs.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

declare(strict_types=1);

namespace Gedmo\SoftDeleteable\Event\ORM;

use Doctrine\ORM\Event\LifecycleEventArgs;

final class PostSoftDeleteEventArgs extends LifecycleEventArgs
{
}
11 changes: 11 additions & 0 deletions src/SoftDeleteable/Event/ORM/PreSoftDeleteEventArgs.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

declare(strict_types=1);

namespace Gedmo\SoftDeleteable\Event\ORM;

use Doctrine\ORM\Event\LifecycleEventArgs;

final class PreSoftDeleteEventArgs extends LifecycleEventArgs
{
}
47 changes: 45 additions & 2 deletions src/SoftDeleteable/SoftDeleteableListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,12 @@
use Doctrine\ODM\MongoDB\UnitOfWork as MongoDBUnitOfWork;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\Persistence\Event\LoadClassMetadataEventArgs;
use Doctrine\Persistence\ObjectManager;
use Gedmo\Mapping\MappedEventSubscriber;
use Gedmo\SoftDeleteable\Event\ODM\PostSoftDeleteEventArgs as OdmPostSoftDeleteEventArgs;
use Gedmo\SoftDeleteable\Event\ODM\PreSoftDeleteEventArgs as OdmPreSoftDeleteEventArgs;
use Gedmo\SoftDeleteable\Event\ORM\PostSoftDeleteEventArgs as OrmPreSoftDeleteEventArgs;
use Gedmo\SoftDeleteable\Event\ORM\PreSoftDeleteEventArgs as OrmPostSoftDeleteEventArgs;

/**
* SoftDeleteable listener
Expand Down Expand Up @@ -81,7 +86,7 @@ public function onFlush(EventArgs $args)

$evm->dispatchEvent(
self::PRE_SOFT_DELETE,
$ea->createLifecycleEventArgsInstance($object, $om)
$this->createAppropriatePreSoftDeleteEventArgs($object, $om)
);

$reflProp->setValue($object, $date);
Expand All @@ -98,7 +103,7 @@ public function onFlush(EventArgs $args)

$evm->dispatchEvent(
self::POST_SOFT_DELETE,
$ea->createLifecycleEventArgsInstance($object, $om)
$this->createAppropriatePostSoftDeleteEventArgs($object, $om)
);
}
}
Expand All @@ -120,4 +125,42 @@ protected function getNamespace()
{
return __NAMESPACE__;
}

/**
* create the appropriate event args for pre_soft_delete event
*
* @param $object
* @param ObjectManager $om
*
* @return OdmPreSoftDeleteEventArgs|OrmPreSoftDeleteEventArgs|void
*/
private function createAppropriatePreSoftDeleteEventArgs($object, ObjectManager $om)
{
if ($om instanceof EntityManagerInterface) {
return new OrmPreSoftDeleteEventArgs($object, $om);
} elseif ($om instanceof DocumentManager) {
return new OdmPreSoftDeleteEventArgs($object, $om);
} else {
// TODO : implement unknown object manager case
}
}

/**
* create the appropriate event args for post_soft_delete event
*
* @param $object
* @param ObjectManager $om
*
* @return OdmPostSoftDeleteEventArgs|OrmPostSoftDeleteEventArgs|void
*/
private function createAppropriatePostSoftDeleteEventArgs($object, ObjectManager $om)
{
if ($om instanceof EntityManagerInterface) {
return new OrmPostSoftDeleteEventArgs($object, $om);
} elseif ($om instanceof DocumentManager) {
return new OdmPostSoftDeleteEventArgs($object, $om);
} else {
// TODO : implement unknown object manager case
}
}
}

0 comments on commit 0fad774

Please sign in to comment.