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); }
/** * 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; }
/** * 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; }
/** * 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); } } }