/** * @param BuildAfter $event */ public function onBuildAfter(BuildAfter $event) { /** @var OrmDatasource $dataSource */ $datagrid = $event->getDatagrid(); $config = $datagrid->getConfig(); $configParameters = $config->toArray(); if (!array_key_exists('extended_entity_name', $configParameters) || !$configParameters['extended_entity_name']) { return; } $targetClass = $configParameters['extended_entity_name']; $parameters = $datagrid->getParameters(); $dataSource = $datagrid->getDatasource(); $queryBuilder = $dataSource->getQueryBuilder(); $alias = current($queryBuilder->getDQLPart('from'))->getAlias(); if ($dataSource instanceof OrmDatasource && $parameters->has('activityId') && $parameters->has('activityClass')) { $id = $parameters->get('activityId'); $class = $parameters->get('activityClass'); $entityClass = $this->entityClassNameHelper->resolveEntityClass($class, true); $entity = $this->doctrineHelper->getEntity($entityClass, $id); if ($entity && $entity instanceof ActivityInterface) { $targetsArray = $entity->getActivityTargets($targetClass); $targetIds = []; foreach ($targetsArray as $target) { $targetIds[] = $target->getId(); } if ($targetIds) { $queryBuilder->andWhere($queryBuilder->expr()->notIn(sprintf('%s.id', $alias), $targetIds)); } } } }
/** * @param $className * * @return null|string */ public function getGridName($className) { $className = $this->entityClassNameHelper->resolveEntityClass($className); if (!$this->configManager->hasConfig($className)) { return null; } return $this->configManager->getProvider('security')->getConfig($className)->get('share_grid'); }
/** * @param string $entityName * * @return bool */ protected function isValidEntityClass($entityName) { try { $entityName = $this->entityClassNameHelper->resolveEntityClass($entityName); } catch (EntityAliasNotFoundException $e) { return false; } return $this->doctrineHelper->isManageableEntity($entityName); }
/** * {@inheritdoc} */ public function filter($rawValue, $operator) { if (is_array($rawValue)) { return array_map(function ($val) { return $this->helper->resolveEntityClass($val); }, $rawValue); } else { return $this->helper->resolveEntityClass($rawValue); } }
/** * Get search aliases for all entities which can be associated with specified activity. * * @return string[] */ protected function getSearchAliases() { $class = $this->entityClassNameHelper->resolveEntityClass($this->class, true); $aliases = []; foreach ($this->activityManager->getActivityTargets($class) as $targetEntityClass => $fieldName) { $alias = $this->indexer->getEntityAlias($targetEntityClass); if (null !== $alias) { $aliases[] = $alias; } } return $aliases; }
/** * Get search aliases for all entities which can be associated with specified activity. * * @return string[] */ protected function getSearchAliases() { $class = $this->entityClassNameHelper->resolveEntityClass($this->class, true); $aliases = []; $targetEntityClasses = array_keys($this->activityManager->getActivityTargets($class)); foreach ($targetEntityClasses as $targetEntityClass) { $alias = $this->indexer->getEntityAlias($targetEntityClass); if (null !== $alias) { $aliases[] = $alias; } } /** dispatch oro_activity.search_aliases event */ $event = new SearchAliasesEvent($aliases, $targetEntityClasses); $this->dispatcher->dispatch(SearchAliasesEvent::EVENT_NAME, $event); $aliases = $event->getAliases(); return $aliases; }
/** * @dataProvider resolveEntityClassProvider */ public function testResolveEntityClass($className, $isPluralAlias, $expected) { $this->assertEquals($expected, $this->entityClassNameHelper->resolveEntityClass($className, $isPluralAlias)); }
/** * Resolves the entity class name * * @param string $entityName The class name, url-safe class name, alias or plural alias of the entity * @param bool $isPluralAlias Determines whether the entity name may be a singular of plural alias * * @return string The FQCN of an entity */ public function resolveEntityClass($entityName, $isPluralAlias = false) { return $this->entityClassNameHelper->resolveEntityClass($entityName, $isPluralAlias); }