protected function setUp() { $config = (require rtrim(__DIR__, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . 'searchConfig.php'); $this->eventDispatcher = $this->getMock('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface'); $this->registry = $this->getMock('Doctrine\\Common\\Persistence\\ManagerRegistry'); $this->mapper = new ObjectMapper($this->eventDispatcher, $config); $eventDispatcher = $this->getMockBuilder('Symfony\\Component\\EventDispatcher\\EventDispatcher')->disableOriginalConstructor()->getMock(); $mapperProvider = new SearchMappingProvider($eventDispatcher); $mapperProvider->setMappingConfig($config); $this->mapper->setMappingProvider($mapperProvider); $this->doctrineHelper = new DoctrineHelper($this->registry); }
/** * {@inheritdoc} */ public function getValue(ResultRecordInterface $record) { $entity = $record->getValue('entity'); $entityClass = ClassUtils::getRealClass($entity); if (!$this->mappingProvider->isClassSupported($entityClass)) { throw new InvalidConfigurationException(sprintf('Unknown entity type %s, unable to find search configuration', $entityClass)); } else { $searchTemplate = $this->mappingProvider->getMappingConfig()[$entityClass]['search_template']; } if (!$this->params->offsetGetOr('template', false)) { $this->params->offsetSet('template', $searchTemplate); } return $this->getTemplate()->render(['indexer_item' => $record->getValue('indexer_item'), 'entity' => $record->getValue('entity')]); }
protected function setUp() { $this->container = $this->getMockForAbstractClass('Symfony\\Component\\DependencyInjection\\ContainerInterface'); $manufacturer = new Manufacturer(); $manufacturer->setName('adidas'); $this->product = new Product(); $this->product->setName('test product')->setCount(self::TEST_COUNT)->setPrice(self::TEST_PRICE)->setManufacturer($manufacturer)->setDescription('description')->setCreateDate(new \DateTime()); $this->dispatcher = $this->getMock('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface'); $eventDispatcher = $this->getMockBuilder('Symfony\\Component\\EventDispatcher\\EventDispatcher')->disableOriginalConstructor()->getMock(); $mapperProvider = new SearchMappingProvider($eventDispatcher); $mapperProvider->setMappingConfig($this->mappingConfig); $this->mapper = new ObjectMapper($this->dispatcher, $this->mappingConfig); $this->mapper->setMappingProvider($mapperProvider); }
/** * Applies ACL conditions to the search query * * @param Query $query * @param string $permission * * @return Query */ public function apply(Query $query, $permission = 'VIEW') { $queryFromEntities = $query->getFrom(); // in query, from record !== '*' if ($queryFromEntities[0] === '*') { $queryFromEntities = $this->mappingProvider->getEntitiesListAliases(); } $allowedAliases = []; $ownerExpressions = []; $expr = $query->getCriteria()->expr(); if (!empty($queryFromEntities)) { foreach ($queryFromEntities as $entityAlias) { $className = $this->mappingProvider->getEntityClass($entityAlias); if ($className) { $ownerField = sprintf('%s_owner', $entityAlias); $condition = $this->ownershipDataBuilder->getAclConditionData($className, $permission); if (count($condition) === 0 || !($condition[0] === null && $condition[3] === null)) { $allowedAliases[] = $entityAlias; // in case if we should not limit data for entity if (count($condition) === 0 || $condition[1] === null) { $ownerExpressions[] = $expr->gte('integer.' . $ownerField, SearchListener::EMPTY_OWNER_ID); continue; } $owners = [SearchListener::EMPTY_OWNER_ID]; if (!empty($condition[1])) { $owners = $condition[1]; if (is_array($owners) && count($owners) === 1) { $owners = $owners[0]; } } if (is_array($owners)) { $ownerExpressions[] = $expr->in('integer.' . $ownerField, $owners); } else { $ownerExpressions[] = $expr->eq('integer.' . $ownerField, $owners); } } } } } if (!empty($ownerExpressions)) { $query->getCriteria()->andWhere(new CompositeExpression(CompositeExpression::TYPE_OR, $ownerExpressions)); } $query->from($allowedAliases); $this->addOrganizationLimits($query, $expr); return $query; }
/** * Get search query 'from' aliases * * @param Query $query * * @return array Return search aliases from Query. In case if from part = *, return all search aliases */ protected function getSearchAliases(Query $query) { $queryAliases = $query->getFrom(); if ($queryAliases[0] === '*') { $queryAliases = $this->mappingProvider->getEntitiesListAliases(); } return $queryAliases; }
protected function setUp() { $this->config = (require rtrim(__DIR__, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . 'searchConfig.php'); $this->entityManager = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')->disableOriginalConstructor()->getMock(); $this->engine = $this->getMock('Oro\\Bundle\\SearchBundle\\Engine\\EngineInterface'); $this->mapper = new ObjectMapper($this->getMock('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface'), $this->config); $eventDispatcher = $this->getMockBuilder('Symfony\\Component\\EventDispatcher\\EventDispatcher')->disableOriginalConstructor()->getMock(); $mapperProvider = new SearchMappingProvider($eventDispatcher); $mapperProvider->setMappingConfig($this->config); $this->mapper->setMappingProvider($mapperProvider); $this->securityProvider = $this->getMockBuilder('Oro\\Bundle\\SearchBundle\\Security\\SecurityProvider')->disableOriginalConstructor()->getMock(); $this->securityProvider->expects($this->any())->method('isGranted')->will($this->returnValue(true)); $this->securityProvider->expects($this->any())->method('isProtectedEntity')->will($this->returnValue(true)); $this->configManager = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\Config\\ConfigManager')->disableOriginalConstructor()->getMock(); $this->entityProvider = $this->getMockBuilder('Oro\\Bundle\\EntityBundle\\Provider\\EntityProvider')->disableOriginalConstructor()->getMock(); $this->translator = $this->getMockBuilder('Oro\\Bundle\\TranslationBundle\\Translation\\Translator')->disableOriginalConstructor()->getMock(); $this->indexService = new Indexer($this->entityManager, $this->engine, $this->mapper, $this->securityProvider, $this->configManager, $this->entityProvider, $this->translator); }
protected function setUp() { $this->manufacturer = new Manufacturer(); $this->manufacturer->setName('adidas'); $this->product = new Product(); $this->product->setName('test product')->setCount(self::TEST_COUNT)->setPrice(self::TEST_PRICE)->setManufacturer($this->manufacturer)->setDescription('description')->setCreateDate(new \DateTime()); foreach ($this->categories as $categoryName) { $category = new Category(); $category->setName($categoryName)->addProduct($this->product); $this->product->addCategory($category); if (!$this->category) { $this->category = $category; } } $this->manufacturer->addProduct($this->product); $eventDispatcher = $this->getMockBuilder('Symfony\\Component\\EventDispatcher\\EventDispatcher')->disableOriginalConstructor()->getMock(); $mapperProvider = new SearchMappingProvider($eventDispatcher); $mapperProvider->setMappingConfig($this->mappingConfig); $this->dispatcher = $this->getMock('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface'); $this->mapper = new ObjectMapper($this->dispatcher, $this->mappingConfig); $this->mapper->setMappingProvider($mapperProvider); }
public function testGetEntityMapParameter() { $this->assertEquals('test_entity', $this->provider->getEntityMapParameter('Oro\\TestBundle\\Entity\\TestEntity', 'alias')); $this->assertFalse($this->provider->getEntityMapParameter('Oro\\TestBundle\\Entity\\TestEntity', 'badParameter', false)); }
/** * @param object $entity * @return bool */ protected function isSupported($entity) { return $this->mappingProvider->isClassSupported(ClassUtils::getClass($entity)); }
/** * Get mapping config for entity * * @param string $entity * * @return bool|array */ public function getEntityConfig($entity) { return $this->mappingProvider->getEntityConfig($entity); }
/** * @param bool $realTime * @return IndexListener */ protected function createListener($realTime = true) { $listener = new IndexListener($this->doctrineHelper, $this->searchEngine); $listener->setRealTimeUpdate($realTime); $listener->setEntitiesConfig($this->entitiesMapping); $eventDispatcher = $this->getMockBuilder('Symfony\\Component\\EventDispatcher\\EventDispatcher')->disableOriginalConstructor()->getMock(); $mapperProvider = new SearchMappingProvider($eventDispatcher); $mapperProvider->setMappingConfig($this->entitiesMapping); $listener->setMappingProvider($mapperProvider); return $listener; }