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