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