From bf6655a534a6775d30cafa67bd801276bda1d98d Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 13 Aug 2024 23:45:21 +0200 Subject: =?UTF-8?q?VERSION=200.2=20doctrine=20ORM=20et=20entit=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vendor/doctrine/orm/src/Event/ListenersInvoker.php | 98 ++++++++++++++++++++ .../orm/src/Event/LoadClassMetadataEventArgs.php | 25 ++++++ .../src/Event/OnClassMetadataNotFoundEventArgs.php | 49 ++++++++++ vendor/doctrine/orm/src/Event/OnClearEventArgs.php | 19 ++++ vendor/doctrine/orm/src/Event/OnFlushEventArgs.php | 19 ++++ .../doctrine/orm/src/Event/PostFlushEventArgs.php | 19 ++++ .../doctrine/orm/src/Event/PostLoadEventArgs.php | 13 +++ .../orm/src/Event/PostPersistEventArgs.php | 13 +++ .../doctrine/orm/src/Event/PostRemoveEventArgs.php | 13 +++ .../doctrine/orm/src/Event/PostUpdateEventArgs.php | 13 +++ .../doctrine/orm/src/Event/PreFlushEventArgs.php | 19 ++++ .../doctrine/orm/src/Event/PrePersistEventArgs.php | 13 +++ .../doctrine/orm/src/Event/PreRemoveEventArgs.php | 13 +++ .../doctrine/orm/src/Event/PreUpdateEventArgs.php | 100 +++++++++++++++++++++ 14 files changed, 426 insertions(+) create mode 100644 vendor/doctrine/orm/src/Event/ListenersInvoker.php create mode 100644 vendor/doctrine/orm/src/Event/LoadClassMetadataEventArgs.php create mode 100644 vendor/doctrine/orm/src/Event/OnClassMetadataNotFoundEventArgs.php create mode 100644 vendor/doctrine/orm/src/Event/OnClearEventArgs.php create mode 100644 vendor/doctrine/orm/src/Event/OnFlushEventArgs.php create mode 100644 vendor/doctrine/orm/src/Event/PostFlushEventArgs.php create mode 100644 vendor/doctrine/orm/src/Event/PostLoadEventArgs.php create mode 100644 vendor/doctrine/orm/src/Event/PostPersistEventArgs.php create mode 100644 vendor/doctrine/orm/src/Event/PostRemoveEventArgs.php create mode 100644 vendor/doctrine/orm/src/Event/PostUpdateEventArgs.php create mode 100644 vendor/doctrine/orm/src/Event/PreFlushEventArgs.php create mode 100644 vendor/doctrine/orm/src/Event/PrePersistEventArgs.php create mode 100644 vendor/doctrine/orm/src/Event/PreRemoveEventArgs.php create mode 100644 vendor/doctrine/orm/src/Event/PreUpdateEventArgs.php (limited to 'vendor/doctrine/orm/src/Event') diff --git a/vendor/doctrine/orm/src/Event/ListenersInvoker.php b/vendor/doctrine/orm/src/Event/ListenersInvoker.php new file mode 100644 index 0000000..c0c327e --- /dev/null +++ b/vendor/doctrine/orm/src/Event/ListenersInvoker.php @@ -0,0 +1,98 @@ +eventManager = $em->getEventManager(); + $this->resolver = $em->getConfiguration()->getEntityListenerResolver(); + } + + /** + * Get the subscribed event systems + * + * @param ClassMetadata $metadata The entity metadata. + * @param string $eventName The entity lifecycle event. + * + * @psalm-return int-mask-of Bitmask of subscribed event systems. + */ + public function getSubscribedSystems(ClassMetadata $metadata, string $eventName): int + { + $invoke = self::INVOKE_NONE; + + if (isset($metadata->lifecycleCallbacks[$eventName])) { + $invoke |= self::INVOKE_CALLBACKS; + } + + if (isset($metadata->entityListeners[$eventName])) { + $invoke |= self::INVOKE_LISTENERS; + } + + if ($this->eventManager->hasListeners($eventName)) { + $invoke |= self::INVOKE_MANAGER; + } + + return $invoke; + } + + /** + * Dispatches the lifecycle event of the given entity. + * + * @param ClassMetadata $metadata The entity metadata. + * @param string $eventName The entity lifecycle event. + * @param object $entity The Entity on which the event occurred. + * @param EventArgs $event The Event args. + * @psalm-param int-mask-of $invoke Bitmask to invoke listeners. + */ + public function invoke( + ClassMetadata $metadata, + string $eventName, + object $entity, + EventArgs $event, + int $invoke, + ): void { + if ($invoke & self::INVOKE_CALLBACKS) { + foreach ($metadata->lifecycleCallbacks[$eventName] as $callback) { + $entity->$callback($event); + } + } + + if ($invoke & self::INVOKE_LISTENERS) { + foreach ($metadata->entityListeners[$eventName] as $listener) { + $class = $listener['class']; + $method = $listener['method']; + $instance = $this->resolver->resolve($class); + + $instance->$method($entity, $event); + } + } + + if ($invoke & self::INVOKE_MANAGER) { + $this->eventManager->dispatchEvent($eventName, $event); + } + } +} diff --git a/vendor/doctrine/orm/src/Event/LoadClassMetadataEventArgs.php b/vendor/doctrine/orm/src/Event/LoadClassMetadataEventArgs.php new file mode 100644 index 0000000..b450616 --- /dev/null +++ b/vendor/doctrine/orm/src/Event/LoadClassMetadataEventArgs.php @@ -0,0 +1,25 @@ +, EntityManagerInterface> + */ +class LoadClassMetadataEventArgs extends BaseLoadClassMetadataEventArgs +{ + /** + * Retrieve associated EntityManager. + */ + public function getEntityManager(): EntityManagerInterface + { + return $this->getObjectManager(); + } +} diff --git a/vendor/doctrine/orm/src/Event/OnClassMetadataNotFoundEventArgs.php b/vendor/doctrine/orm/src/Event/OnClassMetadataNotFoundEventArgs.php new file mode 100644 index 0000000..762c083 --- /dev/null +++ b/vendor/doctrine/orm/src/Event/OnClassMetadataNotFoundEventArgs.php @@ -0,0 +1,49 @@ + + */ +class OnClassMetadataNotFoundEventArgs extends ManagerEventArgs +{ + private ClassMetadata|null $foundMetadata = null; + + /** @param EntityManagerInterface $objectManager */ + public function __construct( + private readonly string $className, + ObjectManager $objectManager, + ) { + parent::__construct($objectManager); + } + + public function setFoundMetadata(ClassMetadata|null $classMetadata): void + { + $this->foundMetadata = $classMetadata; + } + + public function getFoundMetadata(): ClassMetadata|null + { + return $this->foundMetadata; + } + + /** + * Retrieve class name for which a failed metadata fetch attempt was executed + */ + public function getClassName(): string + { + return $this->className; + } +} diff --git a/vendor/doctrine/orm/src/Event/OnClearEventArgs.php b/vendor/doctrine/orm/src/Event/OnClearEventArgs.php new file mode 100644 index 0000000..29a42f2 --- /dev/null +++ b/vendor/doctrine/orm/src/Event/OnClearEventArgs.php @@ -0,0 +1,19 @@ + + */ +class OnClearEventArgs extends BaseOnClearEventArgs +{ +} diff --git a/vendor/doctrine/orm/src/Event/OnFlushEventArgs.php b/vendor/doctrine/orm/src/Event/OnFlushEventArgs.php new file mode 100644 index 0000000..b0594ca --- /dev/null +++ b/vendor/doctrine/orm/src/Event/OnFlushEventArgs.php @@ -0,0 +1,19 @@ + + */ +class OnFlushEventArgs extends ManagerEventArgs +{ +} diff --git a/vendor/doctrine/orm/src/Event/PostFlushEventArgs.php b/vendor/doctrine/orm/src/Event/PostFlushEventArgs.php new file mode 100644 index 0000000..ca41ba8 --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PostFlushEventArgs.php @@ -0,0 +1,19 @@ + + */ +class PostFlushEventArgs extends ManagerEventArgs +{ +} diff --git a/vendor/doctrine/orm/src/Event/PostLoadEventArgs.php b/vendor/doctrine/orm/src/Event/PostLoadEventArgs.php new file mode 100644 index 0000000..8344e68 --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PostLoadEventArgs.php @@ -0,0 +1,13 @@ + */ +final class PostLoadEventArgs extends LifecycleEventArgs +{ +} diff --git a/vendor/doctrine/orm/src/Event/PostPersistEventArgs.php b/vendor/doctrine/orm/src/Event/PostPersistEventArgs.php new file mode 100644 index 0000000..926ac1c --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PostPersistEventArgs.php @@ -0,0 +1,13 @@ + */ +final class PostPersistEventArgs extends LifecycleEventArgs +{ +} diff --git a/vendor/doctrine/orm/src/Event/PostRemoveEventArgs.php b/vendor/doctrine/orm/src/Event/PostRemoveEventArgs.php new file mode 100644 index 0000000..8bf857e --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PostRemoveEventArgs.php @@ -0,0 +1,13 @@ + */ +final class PostRemoveEventArgs extends LifecycleEventArgs +{ +} diff --git a/vendor/doctrine/orm/src/Event/PostUpdateEventArgs.php b/vendor/doctrine/orm/src/Event/PostUpdateEventArgs.php new file mode 100644 index 0000000..c9ff004 --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PostUpdateEventArgs.php @@ -0,0 +1,13 @@ + */ +final class PostUpdateEventArgs extends LifecycleEventArgs +{ +} diff --git a/vendor/doctrine/orm/src/Event/PreFlushEventArgs.php b/vendor/doctrine/orm/src/Event/PreFlushEventArgs.php new file mode 100644 index 0000000..671535c --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PreFlushEventArgs.php @@ -0,0 +1,19 @@ + + */ +class PreFlushEventArgs extends ManagerEventArgs +{ +} diff --git a/vendor/doctrine/orm/src/Event/PrePersistEventArgs.php b/vendor/doctrine/orm/src/Event/PrePersistEventArgs.php new file mode 100644 index 0000000..e70c3cf --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PrePersistEventArgs.php @@ -0,0 +1,13 @@ + */ +final class PrePersistEventArgs extends LifecycleEventArgs +{ +} diff --git a/vendor/doctrine/orm/src/Event/PreRemoveEventArgs.php b/vendor/doctrine/orm/src/Event/PreRemoveEventArgs.php new file mode 100644 index 0000000..3af0d02 --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PreRemoveEventArgs.php @@ -0,0 +1,13 @@ + */ +final class PreRemoveEventArgs extends LifecycleEventArgs +{ +} diff --git a/vendor/doctrine/orm/src/Event/PreUpdateEventArgs.php b/vendor/doctrine/orm/src/Event/PreUpdateEventArgs.php new file mode 100644 index 0000000..090487b --- /dev/null +++ b/vendor/doctrine/orm/src/Event/PreUpdateEventArgs.php @@ -0,0 +1,100 @@ + + */ +class PreUpdateEventArgs extends LifecycleEventArgs +{ + /** @var array */ + private array $entityChangeSet; + + /** + * @param mixed[][] $changeSet + * @psalm-param array $changeSet + */ + public function __construct(object $entity, EntityManagerInterface $em, array &$changeSet) + { + parent::__construct($entity, $em); + + $this->entityChangeSet = &$changeSet; + } + + /** + * Retrieves entity changeset. + * + * @return mixed[][] + * @psalm-return array + */ + public function getEntityChangeSet(): array + { + return $this->entityChangeSet; + } + + /** + * Checks if field has a changeset. + */ + public function hasChangedField(string $field): bool + { + return isset($this->entityChangeSet[$field]); + } + + /** + * Gets the old value of the changeset of the changed field. + */ + public function getOldValue(string $field): mixed + { + $this->assertValidField($field); + + return $this->entityChangeSet[$field][0]; + } + + /** + * Gets the new value of the changeset of the changed field. + */ + public function getNewValue(string $field): mixed + { + $this->assertValidField($field); + + return $this->entityChangeSet[$field][1]; + } + + /** + * Sets the new value of this field. + */ + public function setNewValue(string $field, mixed $value): void + { + $this->assertValidField($field); + + $this->entityChangeSet[$field][1] = $value; + } + + /** + * Asserts the field exists in changeset. + * + * @throws InvalidArgumentException + */ + private function assertValidField(string $field): void + { + if (! isset($this->entityChangeSet[$field])) { + throw new InvalidArgumentException(sprintf( + 'Field "%s" is not a valid field of the entity "%s" in PreUpdateEventArgs.', + $field, + get_debug_type($this->getObject()), + )); + } + } +} -- cgit v1.2.3