Esempio n. 1
0
 public function testGetCriteria()
 {
     $query = new Tx_PtExtlist_Domain_QueryObject_Query();
     $query->addCriteria(Tx_PtExtlist_Domain_QueryObject_Criteria::lessThan('test', 10));
     $this->assertTrue(count($query->getCriterias()) == 1);
     $criterias = $query->getCriterias();
     $this->assertTrue($criterias[0]->getField() == 'test');
     $this->assertTrue($criterias[0]->getValue() == 10);
     $this->assertTrue($criterias[0]->getOperator() == '<');
 }
 public function setup()
 {
     $this->queryObject = new Tx_PtExtlist_Domain_QueryObject_Query();
     // select
     $this->queryObject->addField('name');
     $this->queryObject->addField('age');
     // from
     $this->queryObject->addFrom('Users u');
     $this->queryObject->addFrom('Groups g');
     // where
     $this->queryObject->addCriteria(Tx_PtExtlist_Domain_QueryObject_Criteria::equals('name', 'Michael'));
     // group by
     $this->queryObject->addGroupBy('name');
     $this->queryObject->addGroupBy('company');
     // limit
     $this->queryObject->setLimit('10:10');
     // sortings
     $this->queryObject->addSorting('test');
     $this->queryObject->addSorting('test2', Tx_PtExtlist_Domain_QueryObject_Query::SORTINGSTATE_DESC);
 }
 /** @test */
 public function buildProxyQueryWithSimpleQuery()
 {
     $proxyFilter = $this->buildAccessibleProxyFilter();
     $realQuery = new Tx_PtExtlist_Domain_QueryObject_Query();
     $realQuery->addCriteria(new Tx_PtExtlist_Domain_QueryObject_SimpleCriteria('realField', '100', '>'));
     $proxyQuery = $proxyFilter->_call('buildProxyQuery', $realQuery);
     /* @var $proxyQuery Tx_PtExtlist_Domain_QueryObject_Query */
     $this->assertTrue(is_a($proxyQuery, 'Tx_PtExtlist_Domain_QueryObject_Query'));
     $firstCriteria = current($proxyQuery->getCriterias());
     /* @var $firstCriteria Tx_PtExtlist_Domain_QueryObject_SimpleCriteria */
     $this->assertTrue(is_a($firstCriteria, 'Tx_PtExtlist_Domain_QueryObject_SimpleCriteria'));
     $this->assertEquals($firstCriteria->getField(), 'tableName1.fieldName1');
     $this->assertEquals($firstCriteria->getOperator(), '>');
     $this->assertEquals($firstCriteria->getValue(), '100');
 }
 protected function getFilterMockByCriteria($criteria = null)
 {
     $filterQuery = new Tx_PtExtlist_Domain_QueryObject_Query();
     if ($criteria != null) {
         $filterQuery->addCriteria($criteria);
     }
     $filterMock = $this->getMock('Tx_PtExtlist_Domain_Model_Filter_StringFilter', array('getFilterQuery'));
     $filterMock->expects($this->once())->method('getFilterQuery')->will($this->returnValue($filterQuery));
     return $filterMock;
 }
 /**
  * @test
  * @dataProvider filterValueDataProvider
  *
  * @param $value
  * @param $andToken
  * @param $orToken
  * @param $expected
  * @param string $expectedSQL
  */
 public function buildFilterCriteria($value, $andToken, $orToken, $expected, $expectedSQL = '')
 {
     $additionalSettings = array('andToken' => $andToken, 'orToken' => $orToken);
     $filter = $this->getStringFilterInstance($additionalSettings);
     $filter->_set('filterValue', $value);
     $filter->_call('initFilterByTsConfig');
     $fieldConfig = new Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig($this->configurationBuilderMock, 'testField', array('table' => 'table1', 'field' => 'field1'));
     $actualCriteria = $filter->_call('buildFilterCriteria', $fieldConfig);
     $this->assertInstanceOf('Tx_PtExtlist_Domain_QueryObject_Criteria', $actualCriteria);
     $query = new Tx_PtExtlist_Domain_QueryObject_Query();
     $query->addCriteria($actualCriteria);
     $actualSQL = Tx_PtExtlist_Domain_DataBackend_MySqlDataBackend_MySqlInterpreter_MySqlInterpreter::getCriterias($query);
     $this->assertEquals($expectedSQL, $actualSQL);
 }
Esempio n. 6
0
 /**
  * Builds extlist query object excluding criterias from filters given by parameter
  *
  * @param array $excludeFilters Array of <filterbox>.<filter> identifiers to be excluded from query
  * @return Tx_PtExtlist_Domain_QueryObject_Query
  */
 protected function buildGenericQueryExcludingFilters(array $excludeFilters = array())
 {
     $query = new Tx_PtExtlist_Domain_QueryObject_Query();
     foreach ($this->filterboxCollection as $filterbox) {
         /* @var $filterbox Tx_PtExtlist_Domain_Model_Filter_Filterbox */
         foreach ($filterbox as $filter) {
             /* @var $filter Tx_PtExtlist_Domain_Model_Filter_FilterInterface */
             if (!is_array($excludeFilters[$filterbox->getfilterboxIdentifier()]) || !in_array($filter->getFilterIdentifier(), $excludeFilters[$filterbox->getfilterboxIdentifier()])) {
                 $criterias = $filter->getFilterQuery()->getCriterias();
                 foreach ($criterias as $criteria) {
                     $query->addCriteria($criteria);
                 }
             }
         }
     }
     return $query;
 }
Esempio n. 7
0
 /**
  * Set the fieldIdentifier of the proxy filter as fieldIdentifier in the filterQuery
  *
  * @param Tx_PtExtlist_Domain_QueryObject_Query $filterQuery
  * @throws Exception if filter criteria is not a simple criteria
  * @return Tx_PtExtlist_Domain_QueryObject_Query $proxyQuery
  */
 protected function buildProxyQuery(Tx_PtExtlist_Domain_QueryObject_Query $filterQuery)
 {
     $proxyQuery = new Tx_PtExtlist_Domain_QueryObject_Query();
     $criterias = $filterQuery->getCriterias();
     foreach ($criterias as $criteria) {
         /* @var $criteria Tx_PtExtlist_Domain_QueryObject_SimpleCriteria */
         if (get_class($criteria) != 'Tx_PtExtlist_Domain_QueryObject_SimpleCriteria') {
             throw new Exception('Only simple criterias are supported at the moment in proxy filters.', 1302864386);
         }
         $proxyQuery->addCriteria(new Tx_PtExtlist_Domain_QueryObject_SimpleCriteria($this->filterConfig->getFieldIdentifier()->getItemByIndex(0)->getTableFieldCombined(), $criteria->getValue(), $criteria->getOperator()));
     }
     return $proxyQuery;
 }
Esempio n. 8
0
 /**
  * Build filter query for current filter state
  *
  */
 protected function buildFilterQuery()
 {
     if ($this->filterConfig->getDisableFilterQuery()) {
         return;
     }
     $criteria = null;
     if ($this->isActive) {
         $criteria = $this->buildFilterCriteriaForAllFields();
     }
     if ($criteria) {
         $this->filterQuery->unsetCriterias();
         if ($this->invert) {
             $this->filterQuery->addCriteria(Tx_PtExtlist_Domain_QueryObject_Criteria::notOp($criteria));
         } else {
             $this->filterQuery->addCriteria($criteria);
         }
     }
 }