Repository URL to install this package:
|
Version:
6.2.3 ▾
|
<?php
/**
* Created by PhpStorm.
* User: eduarddezacastellano
* Date: 08/10/2018
* Time: 11:59
*/
namespace DigitalAscetic\GoogleApiClientBundle\EventListener;
use DigitalAscetic\GoogleApiClientBundle\Entity\GoogleApiNotificationsChannel;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\Common\EventSubscriber;
use Doctrine\ORM\Events;
use Doctrine\ORM\Event\LoadClassMetadataEventArgs;
class GoogleApiNotificationsChannelMappingListener implements EventSubscriber
{
const SERVICE_NAME = 'ascetic_google_api_client.notifications.channel.mapping_listener';
/**
* @var array
*/
private $config;
/**
* GoogleApiNotificationsChannelMappingListener constructor.
* @param array $config
*/
public function __construct(array $config)
{
$this->config = $config;
}
public function getSubscribedEvents()
{
return array(
Events::loadClassMetadata,
);
}
/**
* @param LoadClassMetadataEventArgs $eventArgs
*/
public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs)
{
/** @var ClassMetadata $metadata */
$metadata = $eventArgs->getClassMetadata();
$reflectionClass = $metadata->getReflectionClass();
if ($reflectionClass->getName() === GoogleApiNotificationsChannel::class) {
if (!$metadata->hasAssociation('user')) {
$metadata->mapManyToOne(
array(
'targetEntity' => $this->config['user_class'],
'fieldName' => 'user',
'joinColumns' => array(
array(
'name' => 'user_id',
'referencedColumnName' => $this->config['property_id'],
'nullable' => false,
),
),
)
);
}
}
}
}