/**
  * @param Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $fieldStart
  * @param Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $fieldEnd
  * @return Tx_PtExtlist_Domain_QueryObject_Criteria
  *
  * TODO: Optimize this for a 1-field query
  */
 protected function buildTimeSpanFilterCriteria(Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $fieldStart, Tx_PtExtlist_Domain_Configuration_Data_Fields_FieldConfig $fieldEnd)
 {
     $fieldStartName = Tx_PtExtlist_Utility_DbUtils::getSelectPartByFieldConfig($fieldStart);
     $fieldEndName = Tx_PtExtlist_Utility_DbUtils::getSelectPartByFieldConfig($fieldEnd);
     $startValueCriteria = Tx_PtExtlist_Domain_QueryObject_Criteria::andOp(Tx_PtExtlist_Domain_QueryObject_Criteria::lessThanEquals($fieldStartName, $this->getFilterValueStartInDBFormat()), Tx_PtExtlist_Domain_QueryObject_Criteria::greaterThanEquals($fieldEndName, $this->getFilterValueStartInDBFormat()));
     $endValueCriteria = Tx_PtExtlist_Domain_QueryObject_Criteria::andOp(Tx_PtExtlist_Domain_QueryObject_Criteria::lessThanEquals($fieldStartName, $this->getFilterValueEndInDBFormat()), Tx_PtExtlist_Domain_QueryObject_Criteria::greaterThanEquals($fieldEndName, $this->getFilterValueEndInDBFormat()));
     $betweenValuesCriteria = Tx_PtExtlist_Domain_QueryObject_Criteria::andOp(Tx_PtExtlist_Domain_QueryObject_Criteria::greaterThanEquals($fieldStartName, $this->getFilterValueStartInDBFormat()), Tx_PtExtlist_Domain_QueryObject_Criteria::lessThanEquals($fieldEndName, $this->getFilterValueEndInDBFormat()));
     $criteria = Tx_PtExtlist_Domain_QueryObject_Criteria::orOp(Tx_PtExtlist_Domain_QueryObject_Criteria::orOp($startValueCriteria, $endValueCriteria), $betweenValuesCriteria);
     return $criteria;
 }
 /**
  * Build the filterCriteria for a timeSpan filter
  *
  * @return Tx_PtExtlist_Domain_QueryObject_Criteria
  */
 protected function buildFilterCriteriaForAllFields()
 {
     $criteria = null;
     foreach ($this->dateFieldConfigs as $dateFieldTuple) {
         $singleCriteria = $this->buildTimeSpanFilterCriteria($dateFieldTuple['start'], $dateFieldTuple['end']);
         if ($criteria) {
             $criteria = Tx_PtExtlist_Domain_QueryObject_Criteria::orOp($criteria, $singleCriteria);
         } else {
             $criteria = $singleCriteria;
         }
     }
     return $criteria;
 }
Example #3
0
 public function testOr()
 {
     $criteria1 = Tx_PtExtlist_Domain_QueryObject_Criteria::lessThan('test', 1);
     $criteria2 = Tx_PtExtlist_Domain_QueryObject_Criteria::greaterThan('test', 0);
     $orCriteria = Tx_PtExtlist_Domain_QueryObject_Criteria::orOp($criteria1, $criteria2);
     $this->assertTrue(is_a($orCriteria, 'Tx_PtExtlist_Domain_QueryObject_OrCriteria'));
 }
Example #4
0
 /**
  * @param $fieldName
  * @param $orLevelArray
  * @return null|Tx_PtExtlist_Domain_QueryObject_AndCriteria|Tx_PtExtlist_Domain_QueryObject_OrCriteria|Tx_PtExtlist_Domain_QueryObject_SimpleCriteria
  */
 protected function buildOrCriteria($fieldName, $orLevelArray)
 {
     $criteria = null;
     foreach ($orLevelArray as $andLevelArray) {
         $singleORCriteria = $this->buildAndCriteria($fieldName, $andLevelArray);
         if ($criteria) {
             $criteria = Tx_PtExtlist_Domain_QueryObject_Criteria::orOp($criteria, $singleORCriteria);
         } else {
             $criteria = $singleORCriteria;
         }
     }
     return $criteria;
 }
 /**
  * Build the filterCriteria for filter
  *
  * @return Tx_PtExtlist_Domain_QueryObject_Criteria
  */
 protected function buildFilterCriteriaForAllFields()
 {
     $criteria = NULL;
     foreach ($this->fieldIdentifierCollection as $fieldIdentifier) {
         $singleCriteria = $this->buildFilterCriteria($fieldIdentifier);
         if ($criteria) {
             $criteria = Tx_PtExtlist_Domain_QueryObject_Criteria::orOp($criteria, $singleCriteria);
         } else {
             $criteria = $singleCriteria;
         }
     }
     return $criteria;
 }