public function addAnd(Criterion $criterion) { if ($criterion instanceof KalturaCriterion) { $criterion->setParentCriterion($this); $criterion->setSelfConjunction(self::UND); } return parent::addAnd($criterion); }
/** * 增加默认的搜索条件 * * @param string|Criterion $dbColName * @param string $value * @param Watt_Util_Grid_Searchs::Const $type */ public function addHiddenSearch($dbColName, $value = null, $comparison = self::EQUAL, $isOr = false) { /** * 这样将覆盖同 $dbColName 的条件 */ //$this->_criteria->add( $dbColName, $value, $type ); /** * 这样将不覆盖同 $dbColName 的条件 */ if ($dbColName instanceof Criterion) { $newCriterion = $dbColName; } else { $newCriterion = $this->_criteria->getNewCriterion($dbColName, $value, $comparison); } if ($this->_hidden_criterion) { //$this->_hidden_criterion->addAnd( $newCriterion ); // _hidden_criterion 都必须是 and //错误判断,不仅仅如此 if ($isOr) { $this->_hidden_criterion->addOr($newCriterion); } else { $this->_hidden_criterion->addAnd($newCriterion); } } else { $this->_hidden_criterion = $newCriterion; } }
/** * add inner criteria for criterions * ----------------- IMPORTANT ----------------- * for this to work - we have to change the access modifier of the Creterion::getClauses() function from private to public * It's in the Criteria.php file under * /symfony/vendor/propel/util/Criteria.php */ private function addClauses(Criteria $criteria_to_filter, Criterion $filter_criterion, Criterion $crit) { $conjunctions = $filter_criterion->getConjunctions(); if (count($conjunctions) < 1) { return; } $clauses = $filter_criterion->getClauses(); $i = 0; foreach ($clauses as $clause) { $new_crit = $criteria_to_filter->getNewCriterion($clause->getTable() . "." . $clause->getColumn(), $clause->getValue(), $clause->getComparison()); $conj = @$conjunctions[$i]; if ($conj == Criterion::UND) { $crit->addAnd($new_crit); } elseif ($conj == Criterion::ODER) { $crit->addOr($new_crit); } $i++; } }
/** * add inner criteria for criterions * ----------------- IMPORTANT ----------------- * for this to work - we have to change the access modifier of the Creterion::getClauses() function from private to public * It's in the Criteria.php file under * /symfony/vendor/propel/util/Criteria.php */ private function addClauses(Criteria $criteriaToFilter, Criterion $filterCriterion, Criterion $criterion) { $conjunctions = $filterCriterion->getConjunctions(); if (count($conjunctions) < 1) { return; } $clauses = $filterCriterion->getClauses(); $i = 0; foreach ($clauses as $clause) { if ($clause instanceof KalturaCriterion && !$clause->isEnabled()) { continue; } /* @var $clause Criterion */ $newCriterion = $criteriaToFilter->getNewCriterion($clause->getTable() . "." . $clause->getColumn(), $clause->getValue(), $clause->getComparison()); $conj = @$conjunctions[$i]; if ($conj == Criterion::UND) { $criterion->addAnd($newCriterion); } elseif ($conj == Criterion::ODER) { $criterion->addOr($newCriterion); } $i++; } }