|
@@ -6,7 +6,8 @@ use Doctrine\Common\Persistence\ObjectManager,
|
|
Doctrine\Common\Persistence\Mapping\ClassMetadata,
|
|
Doctrine\Common\Persistence\Mapping\ClassMetadata,
|
|
Gedmo\Mapping\MappedEventSubscriber,
|
|
Gedmo\Mapping\MappedEventSubscriber,
|
|
Gedmo\Loggable\Mapping\Event\LoggableAdapter,
|
|
Gedmo\Loggable\Mapping\Event\LoggableAdapter,
|
|
- Doctrine\Common\EventArgs;
|
|
|
|
|
|
+ Doctrine\Common\EventArgs,
|
|
|
|
+ Doctrine\ORM\Event\LifecycleEventArgs;
|
|
|
|
|
|
/**
|
|
/**
|
|
* SoftDeleteable listener
|
|
* SoftDeleteable listener
|
|
@@ -20,6 +21,21 @@ use Doctrine\Common\Persistence\ObjectManager,
|
|
*/
|
|
*/
|
|
class SoftDeleteableListener extends MappedEventSubscriber
|
|
class SoftDeleteableListener extends MappedEventSubscriber
|
|
{
|
|
{
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Pre soft-delete event
|
|
|
|
+ *
|
|
|
|
+ * @var string
|
|
|
|
+ */
|
|
|
|
+ const PRE_SOFT_DELETE = "preSoftDelete";
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Post soft-delete event
|
|
|
|
+ *
|
|
|
|
+ * @var string
|
|
|
|
+ */
|
|
|
|
+ const POST_SOFT_DELETE = "postSoftDelete";
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* {@inheritdoc}
|
|
* {@inheritdoc}
|
|
*/
|
|
*/
|
|
@@ -43,12 +59,18 @@ class SoftDeleteableListener extends MappedEventSubscriber
|
|
$ea = $this->getEventAdapter($args);
|
|
$ea = $this->getEventAdapter($args);
|
|
$om = $ea->getObjectManager();
|
|
$om = $ea->getObjectManager();
|
|
$uow = $om->getUnitOfWork();
|
|
$uow = $om->getUnitOfWork();
|
|
|
|
+ $evm = $om->getEventManager();
|
|
|
|
|
|
foreach ($uow->getScheduledEntityDeletions() as $entity) {
|
|
foreach ($uow->getScheduledEntityDeletions() as $entity) {
|
|
$meta = $om->getClassMetadata(get_class($entity));
|
|
$meta = $om->getClassMetadata(get_class($entity));
|
|
$config = $this->getConfiguration($om, $meta->name);
|
|
$config = $this->getConfiguration($om, $meta->name);
|
|
|
|
|
|
if (isset($config['softDeleteable']) && $config['softDeleteable']) {
|
|
if (isset($config['softDeleteable']) && $config['softDeleteable']) {
|
|
|
|
+ $evm->dispatchEvent(self::PRE_SOFT_DELETE, new LifecycleEventArgs(
|
|
|
|
+ $entity,
|
|
|
|
+ $om
|
|
|
|
+ ));
|
|
|
|
+
|
|
$reflProp = $meta->getReflectionProperty($config['fieldName']);
|
|
$reflProp = $meta->getReflectionProperty($config['fieldName']);
|
|
$date = new \DateTime();
|
|
$date = new \DateTime();
|
|
$oldValue = $reflProp->getValue($entity);
|
|
$oldValue = $reflProp->getValue($entity);
|
|
@@ -59,6 +81,11 @@ class SoftDeleteableListener extends MappedEventSubscriber
|
|
$uow->scheduleExtraUpdate($entity, array(
|
|
$uow->scheduleExtraUpdate($entity, array(
|
|
$config['fieldName'] => array($oldValue, $date)
|
|
$config['fieldName'] => array($oldValue, $date)
|
|
));
|
|
));
|
|
|
|
+
|
|
|
|
+ $evm->dispatchEvent(self::POST_SOFT_DELETE, new LifecycleEventArgs(
|
|
|
|
+ $entity,
|
|
|
|
+ $om
|
|
|
|
+ ));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -82,4 +109,4 @@ class SoftDeleteableListener extends MappedEventSubscriber
|
|
{
|
|
{
|
|
return __NAMESPACE__;
|
|
return __NAMESPACE__;
|
|
}
|
|
}
|
|
-}
|
|
|
|
|
|
+}
|