/** * Returns WHERE clause for a given filter * * @param Tx_PtExtlist_Domain_Model_Filter_AbstractFilter $filter * @return string WHERE clause for given filter without 'WHERE' */ public function getWhereClauseFromFilter(Tx_PtExtlist_Domain_Model_Filter_AbstractFilter $filter) { $whereClauseFromFilter = $this->queryInterpreter->getCriterias($filter->getFilterQuery()); return $whereClauseFromFilter; }
/** * @param $filterBoxCollection * @return string whereClauseSbippet */ public function getWhereClauseFromFilterboxes($filterBoxCollection) { $whereClauses = array(); foreach ($filterBoxCollection as $filterBox) { /* @var $filterBox Tx_PtExtlist_Domain_Model_Filter_Filterbox */ foreach ($filterBox as $filter) { /* @var $filter Tx_PtExtlist_Domain_Model_Filter_FilterInterface */ $whereClauses[] = Tx_PtExtlist_Domain_DataBackend_MySqlDataBackend_MySqlInterpreter_MySqlInterpreter::getCriterias($filter->getFilterQuery()); } } $whereClauseString = ''; $whereClauses = array_filter($whereClauses); if (count($whereClauses)) { $whereClauseString = sizeof($whereClauses) > 1 ? implode(' AND ', $whereClauses) : current($whereClauses); } return $whereClauseString; }
/** * @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); }