Exemple #1
0
 /**
  * @param CriteriaSet $criteriaSet
  *
  * @return CriteriaSet
  */
 public function addAll(CriteriaSet $criteriaSet)
 {
     foreach ($criteriaSet->all() as $criteria) {
         $this->add($criteria);
     }
     return $this;
 }
 public function generateSelectSQL($grid, array $orderBy = null)
 {
     // Single grid only; criteria are used for larger sets.
     $clauses = array();
     $declarations = array();
     $from = null;
     if ($grid instanceof Grid) {
         $from = $this->gridTableName($grid);
         foreach ($grid->ColumnNames() as $columnName) {
             $declarations[] = $this->escapeDataName($grid->Column($columnName)->getDataName()) . ' ' . $this->asColumnOperator . ' ' . $this->escapeDataNameAlias($grid->Column($columnName)->_getObjName());
         }
         $clauses = $this->makeClauses($grid);
     } else {
         $from = $this->escapeDataName($grid);
         foreach ($this->getTorpor()->{$grid}() as $columnName) {
             $declarations[] = $from . '.' . $this->escapeDataName($this->getTorpor()->dataNameForColumn($grid, $columnName)) . ' ' . $this->asColumnOperator . ' ' . $this->escapeDataNameAlias($columnName);
         }
     }
     $fake_criteria = new CriteriaSet();
     $order_by = '';
     if (is_array($orderBy) && count($orderBy) > 0) {
         $orderClauses = array();
         foreach ($orderBy as $sortSpec) {
             list($gridName, $columnName, $order) = $sortSpec;
             $fake_criteria->addCriteria(new CriteriaNotEquals($gridName, $columnName, null));
             if ($order == GridSet::ORDER_RANDOM) {
                 $orderClauses[] = 'RAND()';
             } else {
                 $orderClauses[] = $this->escapeDataName($gridName) . '.' . $this->escapeDataName($this->getTorpor()->dataNameForColumn($gridName, $columnName)) . ' ' . ($order == GridSet::ORDER_DESCENDING ? 'DESC' : 'ASC');
             }
         }
         $order_by .= ' ORDER BY ' . implode(', ', $orderClauses);
     }
     $sql = 'SELECT DISTINCT ' . implode(', ', $declarations) . ' FROM ' . $this->CriteriaToJoinClause($this->getTorpor()->containerKeyName($grid), $fake_criteria);
     if (count($clauses) > 0) {
         $sql .= ' WHERE ' . implode(' AND ', $clauses);
     }
     return $sql . $order_by;
 }
 public function setType($type)
 {
     return parent::setType(self::TYPE_OR);
 }