Skip to content

Commit

Permalink
Merge 2849706 into 4862e17
Browse files Browse the repository at this point in the history
  • Loading branch information
saifulferoz committed Nov 4, 2023
2 parents 4862e17 + 2849706 commit 46fedb6
Show file tree
Hide file tree
Showing 15 changed files with 46 additions and 70 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Expand Up @@ -9,7 +9,7 @@ jobs:
fail-fast: false
matrix:
operating-system: [ ubuntu-latest ]
php-versions: [ '8.0', '8.1' ]
php-versions: [ '8.0', '8.1', '8.2' ]

steps:
- name: Checkout
Expand Down
2 changes: 1 addition & 1 deletion DependencyInjection/Compiler/LoggerFactoryPass.php
Expand Up @@ -17,7 +17,7 @@

class LoggerFactoryPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
public function process(ContainerBuilder $container): void
{
if (false === $container->hasDefinition('xiidea.easy_audit.logger_factory')) {
return;
Expand Down
2 changes: 1 addition & 1 deletion DependencyInjection/Compiler/MonologLoggerPass.php
Expand Up @@ -16,7 +16,7 @@

class MonologLoggerPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
public function process(ContainerBuilder $container): void
{
if (false === $container->hasAlias('logger')) {
$container->removeDefinition('xiidea.easy_audit.mono_logger.service');
Expand Down
2 changes: 1 addition & 1 deletion DependencyInjection/Compiler/ResolverFactoryPass.php
Expand Up @@ -17,7 +17,7 @@

class ResolverFactoryPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
public function process(ContainerBuilder $container): void
{
if (false === $container->hasDefinition('xiidea.easy_audit.event_resolver_factory')) {
return;
Expand Down
2 changes: 1 addition & 1 deletion DependencyInjection/Compiler/SubscriberPass.php
Expand Up @@ -17,7 +17,7 @@

class SubscriberPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
public function process(ContainerBuilder $container): void
{
if (false === $container->hasDefinition('xiidea.easy_audit.event_listener')) {
return;
Expand Down
2 changes: 1 addition & 1 deletion DependencyInjection/Configuration.php
Expand Up @@ -28,7 +28,7 @@ class Configuration implements ConfigurationInterface
/**
* {@inheritdoc}
*/
public function getConfigTreeBuilder()
public function getConfigTreeBuilder(): TreeBuilder
{
$treeBuilder = new TreeBuilder(self::ROOT_NODE_NAME);

Expand Down
6 changes: 3 additions & 3 deletions DependencyInjection/XiideaEasyAuditExtension.php
Expand Up @@ -28,7 +28,7 @@ class XiideaEasyAuditExtension extends Extension implements PrependExtensionInte
/**
* {@inheritdoc}
*/
public function load(array $configs, ContainerBuilder $container)
public function load(array $configs, ContainerBuilder $container): void
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
Expand Down Expand Up @@ -72,7 +72,7 @@ protected function loadDefaultResolverServices($config, LoaderInterface $loader)
* Allow an extension to prepend the extension configurations.
* @param ContainerBuilder $container
*/
public function prepend(ContainerBuilder $container)
public function prepend(ContainerBuilder $container): void
{
$prependConfig = $this->getExtendedConfig($container);

Expand All @@ -86,7 +86,7 @@ public function prepend(ContainerBuilder $container)
*
* @return array
*/
protected function getExtendedConfig(ContainerBuilder $container)
protected function getExtendedConfig(ContainerBuilder $container): array
{
$configs = array_merge(...$container->getExtensionConfig($this->getAlias()));

Expand Down
10 changes: 8 additions & 2 deletions Resources/config/doctrine_services.yml
Expand Up @@ -7,5 +7,11 @@ services:
- [ setDispatcher,[ '@event_dispatcher' ] ]
- [ setAnnotationReader,[ '@annotation_reader' ] ]
tags:
- { name: doctrine.event_subscriber }
- { name: doctrine_mongodb.odm.event_subscriber }
- { name: doctrine.event_listener, event: preRemove }
- { name: doctrine.event_listener, event: postUpdate }
- { name: doctrine.event_listener, event: postRemove }
- { name: doctrine.event_listener, event: postPersist }
- { name: doctrine_mongodb.odm.event_listener, event: preRemove }
- { name: doctrine_mongodb.odm.event_listener, event: postUpdate }
- { name: doctrine_mongodb.odm.event_listener, event: postRemove }
- { name: doctrine_mongodb.odm.event_listener, event: postPersist }
2 changes: 1 addition & 1 deletion Subscriber/DoctrineDeleteEventLogger.php
Expand Up @@ -41,7 +41,7 @@ public function savePendingLogs()
/**
* @return array
*/
public static function getSubscribedEvents()
public static function getSubscribedEvents(): array
{
return [
ConsoleEvents::TERMINATE => 'savePendingLogs',
Expand Down
63 changes: 24 additions & 39 deletions Subscriber/DoctrineSubscriber.php
Expand Up @@ -11,46 +11,26 @@

namespace Xiidea\EasyAuditBundle\Subscriber;

use Doctrine\Common\EventSubscriber;
use Doctrine\Common\Util\ClassUtils;
use Doctrine\Persistence\Event\LifecycleEventArgs;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Xiidea\EasyAuditBundle\Annotation\SubscribeDoctrineEvents;
use Xiidea\EasyAuditBundle\Events\DoctrineObjectEvent;
use Xiidea\EasyAuditBundle\Events\DoctrineEvents;
use Xiidea\EasyAuditBundle\Events\DoctrineObjectEvent;

class DoctrineSubscriber implements EventSubscriber
#[AsDoctrineListener]
class DoctrineSubscriber
{
/** @var \Doctrine\Common\Annotations\Reader */
private $annotationReader;
private array $toBeDeleted = [];
private $dispatcher = null;
private array $entities;

private $toBeDeleted = [];

/**
* @var EventDispatcher
*/
private $dispatcher;

/**
* @var array
*/
private $entities;

public function __construct($entities = array())
public function __construct($entities = [])
{
$this->entities = $entities;
}

public function getSubscribedEvents()
{
return array(
'postPersist',
'postUpdate',
'preRemove',
'postRemove',
);
}

public function postPersist(LifecycleEventArgs $args)
{
$this->handleEvent(DoctrineEvents::ENTITY_CREATED, $args);
Expand Down Expand Up @@ -95,21 +75,22 @@ private function getToBeDeletedId($entity)
}

/**
* @param string $eventName
* @param LifecycleEventArgs $args
* @param string $eventName
* @param LifecycleEventArgs $args
*/
private function handleEvent($eventName, LifecycleEventArgs $args)
{
if (true === $this->isConfiguredToTrack($args->getObject(), $eventName)) {
$this->dispatcher->dispatch(new DoctrineObjectEvent($args, $this->getIdentity($args, ClassUtils::getClass($args->getObject()))),
$this->dispatcher->dispatch(
new DoctrineObjectEvent($args, $this->getIdentity($args, ClassUtils::getClass($args->getObject()))),
$eventName
);
}
}

/**
* @param $entity
* @param string $eventName
* @param string $eventName
*
* @return bool
*/
Expand All @@ -135,7 +116,7 @@ private function isConfiguredToTrack($entity, $eventName = '')

/**
* @param $entity
* @param string $eventType
* @param string $eventType
*
* @return bool|null
*/
Expand Down Expand Up @@ -185,8 +166,8 @@ protected function getReflectionClassFromObject($object)
}

/**
* @param string $eventType
* @param string $class
* @param string $eventType
* @param string $class
*
* @return bool
*/
Expand All @@ -196,7 +177,7 @@ private function shouldTrackEventType($eventType, $class)
}

/**
* @param string $class
* @param string $class
*
* @return bool
*/
Expand All @@ -206,15 +187,15 @@ private function shouldTrackAllEventType($class)
}

/**
* @param \Doctrine\Common\Annotations\Reader $annotationReader
* @param \Doctrine\Common\Annotations\Reader $annotationReader
*/
public function setAnnotationReader($annotationReader = null)
{
$this->annotationReader = $annotationReader;
}

/**
* @param LifecycleEventArgs $args
* @param LifecycleEventArgs $args
* @param $className
*
* @return array
Expand All @@ -233,11 +214,15 @@ private function isScheduledForDelete($entity)
{
$originalClassName = ClassUtils::getClass($entity);

return isset($this->toBeDeleted[$originalClassName]) && isset($this->toBeDeleted[$originalClassName][spl_object_hash($entity)]);
return isset($this->toBeDeleted[$originalClassName]) && isset(
$this->toBeDeleted[$originalClassName][spl_object_hash(
$entity
)]
);
}

/**
* @param EventDispatcher $dispatcher
* @param EventDispatcherInterface $dispatcher
*/
public function setDispatcher($dispatcher)
{
Expand Down
2 changes: 1 addition & 1 deletion Subscriber/EasyAuditEventSubscriberInterface.php
Expand Up @@ -18,5 +18,5 @@ interface EasyAuditEventSubscriberInterface
*
* @return array
*/
public function getSubscribedEvents();
public function getSubscribedEvents(): array;
}
2 changes: 1 addition & 1 deletion Tests/Fixtures/Common/EasySubscriberOne.php
Expand Up @@ -20,7 +20,7 @@ class EasySubscriberOne implements EasyAuditEventSubscriberInterface
*
* @return array
*/
public function getSubscribedEvents()
public function getSubscribedEvents(): array
{
return array(
'custom_resolver1' => 'event1',
Expand Down
2 changes: 1 addition & 1 deletion Tests/Fixtures/Common/EasySubscriberTwo.php
Expand Up @@ -20,7 +20,7 @@ class EasySubscriberTwo implements EasyAuditEventSubscriberInterface
*
* @return array
*/
public function getSubscribedEvents()
public function getSubscribedEvents(): array
{
return array(
'common_event1',
Expand Down
15 changes: 0 additions & 15 deletions Tests/Subscriber/DoctrineSubscriberTest.php
Expand Up @@ -47,21 +47,6 @@ public function setUp(): void {
->getMock();
}

public function testInstanceOnSubscriber()
{
$this->assertInstanceOf('Doctrine\Common\EventSubscriber', new DoctrineSubscriber());
}

public function testSubscribedEvents()
{
$subscriber = new DoctrineSubscriber();
$this->assertEquals(array(
'postPersist',
'postUpdate',
'preRemove',
'postRemove',
), $subscriber->getSubscribedEvents());
}

public function testCreateEventForAnnotatedEntity()
{
Expand Down
2 changes: 1 addition & 1 deletion XiideaEasyAuditBundle.php
Expand Up @@ -20,7 +20,7 @@

class XiideaEasyAuditBundle extends Bundle
{
public function build(ContainerBuilder $container)
public function build(ContainerBuilder $container): void
{
parent::build($container);

Expand Down

0 comments on commit 46fedb6

Please sign in to comment.