예제 #1
0
 public static function doSelectFiltered(Criteria $criteria, $con = null)
 {
     $criteria->add(VSpecPeer::PARENT, 1, Criteria::IN);
     $c3 = $criteria->getCriterion(VSpecPeer::PARENT);
     $c4 = new Criterion($criteria, VSpecPeer::PARENT, 7, Criteria::IN);
     $c5 = new Criterion($criteria, VSpecPeer::PARENT, 0, Criteria::IN);
     $c4->addOr($c5);
     $c3->addOr($c4);
     $tmp_depts = VSpecPeer::doSelect($criteria);
     $depts = array();
     foreach ($tmp_depts as $key => $val) {
         $pi = $val->getParentalIndex();
         $prefix = '';
         for ($i = 0; $i < $val->level - 1; $i++) {
             $prefix .= ParamsPeer::retrieveByCode('tree_node_mark')->getValue();
         }
         $val->setCode($prefix . $val->getCode());
         $val->setDescription($prefix . $val->getDescription());
         $depts[$pi] = $val;
     }
     ksort($depts);
     $result = array();
     foreach ($depts as $r) {
         $result[] = $r;
     }
     return $result;
 }
예제 #2
0
 public function addOr(Criterion $criterion)
 {
     if ($criterion instanceof KalturaCriterion) {
         $criterion->setSelfConjunction(self::ODER);
         $criterion->setParentCriterion($this);
     }
     return parent::addOr($criterion);
 }
예제 #3
0
 /**
  * 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++;
     }
 }
예제 #4
0
 /**
  * 增加默认的搜索条件
  *
  * @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 $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++;
     }
 }
예제 #6
0
 /**
  * Append an OR Criterion onto this Criterion's list.
  * @return     Criterion
  */
 public function addOr(Criterion $criterion)
 {
     $this->hasOr = true;
     return parent::addOr($criterion);
 }