Beispiel #1
0
 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')]);
 }
Beispiel #3
0
 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);
 }
Beispiel #4
0
 /**
  * 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;
 }
Beispiel #5
0
 /**
  * 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;
 }
Beispiel #6
0
 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);
 }
Beispiel #7
0
 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));
 }
Beispiel #9
0
 /**
  * @param object $entity
  * @return bool
  */
 protected function isSupported($entity)
 {
     return $this->mappingProvider->isClassSupported(ClassUtils::getClass($entity));
 }
Beispiel #10
0
 /**
  * Get mapping config for entity
  *
  * @param string $entity
  *
  * @return bool|array
  */
 public function getEntityConfig($entity)
 {
     return $this->mappingProvider->getEntityConfig($entity);
 }
Beispiel #11
0
 /**
  * @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;
 }