/** * 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); }
/** * @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 = []; $event = new PrepareEntityMapEvent($entity, $class, $data); $this->assertSame($entity, $event->getEntity()); $this->assertSame($class, $event->getClassName()); $this->assertSame($data, $event->getData()); $newData = []; $event->setData($newData); $this->assertSame($newData, $event->getData()); }
/** * 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); }