Exemple #1
0
 /**
  * Add organization field to the search mapping
  *
  * @param PrepareEntityMapEvent $event
  */
 public function prepareEntityMapEvent(PrepareEntityMapEvent $event)
 {
     $data = $event->getData();
     $className = $event->getClassName();
     $entity = $event->getEntity();
     $organizationId = self::EMPTY_ORGANIZATION_ID;
     $metadata = $this->metadataProvider->getMetadata($className);
     if ($metadata) {
         $organizationField = null;
         if ($metadata->getGlobalOwnerFieldName()) {
             $organizationField = $metadata->getGlobalOwnerFieldName();
         }
         if ($metadata->isGlobalLevelOwned()) {
             $organizationField = $metadata->getOwnerFieldName();
         }
         if ($organizationField) {
             $propertyAccessor = PropertyAccess::createPropertyAccessor();
             /** @var Organization $organization */
             $organization = $propertyAccessor->getValue($entity, $organizationField);
             if ($organization && null !== $organization->getId()) {
                 $organizationId = $organization->getId();
             }
         }
     }
     $data['integer']['organization'] = $organizationId;
     $event->setData($data);
 }
Exemple #2
0
 /**
  * @param PrepareEntityMapEvent $event
  */
 public function prepareEntityMapEvent(PrepareEntityMapEvent $event)
 {
     $data = $event->getData();
     $className = $event->getClassName();
     if ($className === self::EMAIL_CLASS_NAME) {
         /** @var $entity Email */
         $entity = $event->getEntity();
         $organizationsId = [];
         $recipients = $entity->getRecipients();
         /** @var  $recipient EmailRecipient */
         foreach ($recipients as $recipient) {
             $owner = $recipient->getEmailAddress()->getOwner();
             if ($owner instanceof UserInterface && $owner instanceof OrganizationAwareInterface) {
                 $organizationsId[] = $owner->getOrganization()->getId();
             }
         }
         if (!isset($data['integer'])) {
             $data['integer'] = [];
         }
         if (!empty($organizationsId)) {
             $data['integer']['organization'] = array_unique($organizationsId);
         } else {
             $data['integer']['organization'] = self::EMPTY_ORGANIZATION_ID;
         }
     }
     $event->setData($data);
 }
 public function testEvent()
 {
     $entity = new Product();
     $class = get_class($entity);
     $data = [];
     $entityMapping = ['alias' => 'test'];
     $event = new PrepareEntityMapEvent($entity, $class, $data, $entityMapping);
     $this->assertSame($entity, $event->getEntity());
     $this->assertSame($class, $event->getClassName());
     $this->assertSame($entityMapping, $event->getEntityMapping());
     $this->assertSame($data, $event->getData());
     $newData = [];
     $event->setData($newData);
     $this->assertSame($newData, $event->getData());
 }
Exemple #4
0
 /**
  * Add organization field to the search mapping
  *
  * @param PrepareEntityMapEvent $event
  */
 public function prepareEntityMapEvent(PrepareEntityMapEvent $event)
 {
     $data = $event->getData();
     $className = $event->getClassName();
     $organizationId = self::EMPTY_ORGANIZATION_ID;
     $ownerId = self::EMPTY_OWNER_ID;
     $metadata = $this->metadataProvider->getMetadata($className);
     if ($metadata) {
         $entity = $event->getEntity();
         $ownerId = $this->getOwnerId($metadata, $entity);
         $organizationId = $this->getOrganizationId($metadata, $entity);
     }
     $data['integer'][sprintf('%s_owner', $event->getEntityMapping()['alias'])] = $ownerId;
     $data['integer']['organization'] = $organizationId;
     $event->setData($data);
 }