예제 #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() == '<');
 }
예제 #2
0
 /**
  * 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;
 }
예제 #3
0
 /**
  * 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;
 }
예제 #4
0
 /**
  * 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;
 }
예제 #5
0
 /**
  * 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;
 }
예제 #6
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;
 }