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() == '<'); }
/** * Translates query's criterias into SQL string (without "WHERE") * * @param Tx_PtExtlist_Domain_QueryObject_Query $query * @return string */ public static function getCriterias(Tx_PtExtlist_Domain_QueryObject_Query $query) { $criteriaArray = array(); foreach ($query->getCriterias() as $criteria) { $criteriaArray[] = self::translateCriteria($criteria); } $criteriaString = implode(' AND ', $criteriaArray); return $criteriaString; }
/** * Sets criterias from given query object on given extbase query object. Returns manipulated extbase query object * * @param Tx_PtExtlist_Domain_QueryObject_Query $query * @param \TYPO3\CMS\Extbase\Persistence\Generic\Query $extbaseQuery * @param \TYPO3\CMS\Extbase\Persistence\Repository $repository * @return \TYPO3\CMS\Extbase\Persistence\Generic\Query */ public static function setAllCriteriasOnExtBaseQueryByQueryObject(Tx_PtExtlist_Domain_QueryObject_Query $query, \TYPO3\CMS\Extbase\Persistence\Generic\Query $extbaseQuery, \TYPO3\CMS\Extbase\Persistence\Repository $repository) { foreach ($query->getCriterias() as $criteria) { /* @var $criteria Tx_PtExtlist_Domain_QueryObject_SimpleCriteria */ $extbaseQuery = self::setCriteriaOnExtBaseQueryByCriteria($criteria, $extbaseQuery, $repository); } return $extbaseQuery; }
/** * Checks whether a query has a criteria * * @param Tx_PtExtlist_Domain_QueryObject_Query $query * @param Tx_PtExtlist_Domain_QueryObject_Criteria $criteria * @return bool True, if criteria is contained by query */ protected function queryHasCriteria(Tx_PtExtlist_Domain_QueryObject_Query $query, Tx_PtExtlist_Domain_QueryObject_Criteria $criteria) { $criterias = $query->getCriterias(); foreach ($criterias as $queryCriteria) { /* @var $queryCriteria Tx_PtExtlist_Domain_QueryObject_Criteria */ if ($criteria->isEqualTo($queryCriteria)) { return true; } } return false; }
/** * Merges criterias for two given queries * * TODO put this into query class! * * @param Tx_PtExtlist_Domain_QueryObject_Query $resultQuery Query to be returned after merge * @param Tx_PtExtlist_Domain_QueryObject_Query $queryToBeMerged Query to be merged into other query * @return Tx_PtExtlist_Domain_QueryObject_Query */ protected function mergeGenericQueries(Tx_PtExtlist_Domain_QueryObject_Query $resultQuery, Tx_PtExtlist_Domain_QueryObject_Query $queryToBeMerged) { // TODO merge other things, except criterias foreach ($queryToBeMerged->getCriterias() as $criteria) { $resultQuery->addCriteria($criteria); } return $resultQuery; }
/** * 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; }