예제 #1
0
 /**
  * Apply fulltext filters
  *
  * @param DbCollection $collection
  * @param Filter $filter
  * @return void
  */
 public function apply(DbCollection $collection, Filter $filter)
 {
     $columns = $this->getFulltextIndexColumns($collection, $collection->getMainTable());
     if (!$columns) {
         return;
     }
     $collection->getSelect()->where('MATCH(' . implode(',', $columns) . ') AGAINST(?)', $filter->getValue());
 }
예제 #2
0
 /**
  * @return \PHPUnit_Framework_MockObject_MockObject
  */
 protected function getCriteriaBuilder()
 {
     $criteriaBuilder = $this->getMockBuilder('Magento\\Framework\\Api\\Search\\SearchCriteriaBuilder')->setMethods(['addFilter', 'create', 'setRequestName'])->disableOriginalConstructor()->getMock();
     $this->filter = new \Magento\Framework\Api\Filter();
     $this->filter->setField('price_dynamic_algorithm');
     $this->filter->setValue(1);
     $criteriaBuilder->expects($this->once())->method('addFilter')->with($this->filter);
     $criteria = $this->getMock('Magento\\Framework\\Api\\Search\\SearchCriteria', [], [], '', false);
     $criteriaBuilder->expects($this->once())->method('create')->willReturn($criteria);
     $criteria->expects($this->once())->method('setRequestName')->withConsecutive(['catalog_view_container'])->willThrowException(new \Exception('setRequestName', 333));
     return $criteriaBuilder;
 }
예제 #3
0
 public function testApply()
 {
     $filter = new Filter();
     $filter->setValue('test');
     $this->collectionAbstractDbMock->expects($this->any())->method('getMainTable')->willReturn('testTable');
     $this->collectionAbstractDbMock->expects($this->once())->method('getConnection')->willReturn($this->connectionMock);
     $this->connectionMock->expects($this->any())->method('select')->willReturn($this->selectMock);
     $this->connectionMock->expects($this->once())->method('getIndexList')->willReturn([['INDEX_TYPE' => 'FULLTEXT', 'COLUMNS_LIST' => ['col1', 'col2']]]);
     $this->selectMock->expects($this->once())->method('getPart')->willReturn([]);
     $this->selectMock->expects($this->once())->method('where')->willReturn(null);
     $this->collectionAbstractDbMock->expects($this->exactly(2))->method('getSelect')->willReturn($this->selectMock);
     $this->fulltextFilter->apply($this->collectionAbstractDbMock, $filter);
 }
예제 #4
0
 /**
  * Apply fulltext filters
  *
  * @param Collection $collection
  * @param Filter $filter
  * @return void
  */
 public function apply(Collection $collection, Filter $filter)
 {
     if (!$collection instanceof AbstractDb) {
         throw new \InvalidArgumentException('Database collection required.');
     }
     /** @var SearchResult $collection */
     $mainTable = $collection->getMainTable();
     $columns = $this->getFulltextIndexColumns($collection, $mainTable);
     if (!$columns) {
         return;
     }
     $columns = $this->addTableAliasToColumns($columns, $collection, $mainTable);
     $collection->getSelect()->where('MATCH(' . implode(',', $columns) . ') AGAINST(?)', $filter->getValue());
 }
 /**
  * {@inheritdoc}
  */
 public function addFilter(\Magento\Framework\Api\Filter $filter)
 {
     if (isset($this->addFilterStrategies[$filter->getField()])) {
         $this->addFilterStrategies[$filter->getField()]->addFilter($this->getCollection(), $filter->getField(), [$filter->getConditionType() => $filter->getValue()]);
     } else {
         parent::addFilter($filter);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function addFilter(\Magento\Framework\Api\Filter $filter)
 {
     $field = $filter->getField();
     if (in_array($field, ['review_id', 'created_at', 'status_id'])) {
         $filter->setField('rt.' . $field);
     }
     if (in_array($field, ['title', 'nickname', 'detail'])) {
         $filter->setField('rdt.' . $field);
     }
     if ($field === 'review_created_at') {
         $filter->setField('rt.created_at');
     }
     parent::addFilter($filter);
 }
 /**
  * @inheritdoc
  */
 public function addFilter(\Magento\Framework\Api\Filter $filter)
 {
     $this->getCollection()->addFieldToFilter($filter->getField(), [$filter->getConditionType() => $filter->getValue()]);
 }
예제 #8
0
 /**
  * @param FeedInterface $feed
  * @param Filter $filter
  * @return bool
  */
 private function isFeedMatchesFilter(FeedInterface $feed, Filter $filter)
 {
     switch (strtolower($filter->getField())) {
         case 'id':
             $isMatches = $filter->getValue() === $feed->getId();
             break;
         case 'title':
             $isMatches = strpos($feed->getTitle(), $filter->getValue()) !== false;
             break;
         case 'description':
             $isMatches = strpos($feed->getDescription(), $filter->getValue()) !== false;
             break;
         default:
             $isMatches = false;
             break;
     }
     return $isMatches;
 }
예제 #9
0
 /**
  * Apply regular filters like collection filters
  *
  * @param AbstractDb $collection
  * @param Filter $filter
  * @return void
  */
 public function apply(AbstractDb $collection, Filter $filter)
 {
     $collection->addFieldToFilter($filter->getField(), [$filter->getConditionType() => $filter->getValue()]);
 }