12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- <?php
- namespace Base\OAuthClientBundle\EventListener;
- use Doctrine\ORM\Events;
- use Doctrine\ORM\Event\LoadClassMetadataEventArgs;
- use Doctrine\Common\EventSubscriber;
- class DynamicRelationSubscriber implements EventSubscriber
- {
- /**
- * {@inheritDoc}
- */
- public function getSubscribedEvents()
- {
- return array(
- Events::loadClassMetadata,
- );
- }
- /**
- * @param LoadClassMetadataEventArgs $eventArgs
- */
- public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs)
- {
- // the $metadata is the whole mapping info for this class
- $metadata = $eventArgs->getClassMetadata();
- $classes = array(
- 'Base\OAuthServerBundle\Entity\AccessToken',
- 'Base\OAuthServerBundle\Entity\AuthCode',
- 'Base\OAuthServerBundle\Entity\RefreshToken'
- );
-
- if (!in_array($metadata->getName(), $classes)) {
- return;
- }
-
- $userClass = 'Base\UserBundle\Entity\User';
- $OAuthUserClass = 'Base\OAuthClientBundle\Security\Core\User\CustomOAuthUser';
-
- $metadata->mapManyToOne(array(
- 'targetEntity' => class_exists($userClass) ? $userClass : $OAuthUserClass,
- 'fieldName' => 'user'
- ));
- }
- }
|