예제 #1
0
 /**
  * @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));
             }
         }
     }
 }
예제 #2
0
 /**
  * @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');
 }
예제 #3
0
 /**
  * @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);
     }
 }
예제 #5
0
 /**
  * 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;
 }
예제 #6
0
 /**
  * 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));
 }
예제 #8
0
 /**
  * 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);
 }