summaryrefslogtreecommitdiff
path: root/framework/Db/schema/TDbCriteria.php
diff options
context:
space:
mode:
authorrojaro <>2009-07-13 13:56:07 +0000
committerrojaro <>2009-07-13 13:56:07 +0000
commitb4b2c7e5e2eadd48b344538823dcf5645939ba44 (patch)
tree7e10a68d038fe37d71f7f7a8552136cecfb38183 /framework/Db/schema/TDbCriteria.php
parentd6ef8e39d858de50107950180ea111349e4b0d6f (diff)
- removed old schema directory
- some cleanups
Diffstat (limited to 'framework/Db/schema/TDbCriteria.php')
-rwxr-xr-xframework/Db/schema/TDbCriteria.php166
1 files changed, 0 insertions, 166 deletions
diff --git a/framework/Db/schema/TDbCriteria.php b/framework/Db/schema/TDbCriteria.php
deleted file mode 100755
index f6bbe7c3..00000000
--- a/framework/Db/schema/TDbCriteria.php
+++ /dev/null
@@ -1,166 +0,0 @@
-<?php
-/**
- * TDbCriteria class file.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @link http://www.yiiframework.com/
- * @copyright Copyright &copy; 2008-2009 Yii Software LLC
- * @license http://www.yiiframework.com/license/
- */
-
-/**
- * TDbCriteria represents a query criteria, such as conditions, ordering by, limit/offset.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Id$
- * @package system.db.schema
- * @since 1.0
- */
-class TDbCriteria
-{
- /**
- * @var mixed the columns being selected. This refers to the SELECT clause in an SQL
- * statement. The property can be either a string (column names separated by commas)
- * or an array of column names. Defaults to '*', meaning all columns.
- */
- public $select='*';
- /**
- * @var string query condition. This refers to the WHERE clause in an SQL statement.
- * For example, <code>age>31 AND team=1</code>.
- */
- public $condition='';
- /**
- * @var array list of query parameter values indexed by parameter placeholders.
- * For example, <code>array(':name'=>'Dan', ':age'=>31)</code>.
- */
- public $params=array();
- /**
- * @var integer maximum number of records to be returned. If less than 0, it means no limit.
- */
- public $limit=-1;
- /**
- * @var integer zero-based offset from where the records are to be returned. If less than 0, it means starting from the beginning.
- */
- public $offset=-1;
- /**
- * @var string how to sort the query results. This refers to the ORDER BY clause in an SQL statement.
- */
- public $order='';
- /**
- * @var string how to group the query results. This refers to the GROUP BY clause in an SQL statement.
- * For example, <code>'projectID, teamID'</code>.
- */
- public $group='';
- /**
- * @var string how to join with other tables. This refers to the JOIN clause in an SQL statement.
- * For example, <code>'LEFT JOIN users ON users.id=authorID'</code>.
- */
- public $join='';
- /**
- * @var string the condition to be applied with GROUP-BY clause.
- * For example, <code>'SUM(revenue)<50000'</code>.
- * @since 1.0.1
- */
- public $having='';
-
- /**
- * Constructor.
- * @param array criteria initial property values (indexed by property name)
- */
- public function __construct($data=array())
- {
- foreach($data as $name=>$value)
- $this->$name=$value;
- }
-
- /**
- * Merges with another criteria.
- * In general, the merging makes the resulting criteria more restrictive.
- * For example, if both criterias have conditions, they will be 'AND' together.
- * Also, the criteria passed as the parameter takes precedence in case
- * two options cannot be merged (e.g. LIMIT, OFFSET).
- * @param TDbCriteria the criteria to be merged with.
- * @param boolean whether to use 'AND' to merge condition and having options.
- * If false, 'OR' will be used instead. Defaults to 'AND'. This parameter has been
- * available since version 1.0.6.
- * @since 1.0.5
- */
- public function mergeWith($criteria,$useAnd=true)
- {
- $and=$useAnd ? 'AND' : 'OR';
- if(is_array($criteria))
- $criteria=new self($criteria);
- if($this->select!==$criteria->select)
- {
- if($this->select==='*')
- $this->select=$criteria->select;
- else if($criteria->select!=='*')
- {
- $select1=is_string($this->select)?preg_split('/\s*,\s*/',trim($this->select),-1,PREG_SPLIT_NO_EMPTY):$this->select;
- $select2=is_string($criteria->select)?preg_split('/\s*,\s*/',trim($criteria->select),-1,PREG_SPLIT_NO_EMPTY):$criteria->select;
- $this->select=array_merge($select1,array_diff($select2,$select1));
- }
- }
-
- if($this->condition!==$criteria->condition)
- {
- if($this->condition==='')
- $this->condition=$criteria->condition;
- else if($criteria->condition!=='')
- $this->condition="({$this->condition}) $and ({$criteria->condition})";
- }
-
- if($this->params!==$criteria->params)
- $this->params=array_merge($this->params,$criteria->params);
-
- if($criteria->limit>0)
- $this->limit=$criteria->limit;
-
- if($criteria->offset>=0)
- $this->offset=$criteria->offset;
-
- if($this->order!==$criteria->order)
- {
- if($this->order==='')
- $this->order=$criteria->order;
- else if($criteria->order!=='')
- $this->order.=', '.$criteria->order;
- }
-
- if($this->group!==$criteria->group)
- {
- if($this->group==='')
- $this->group=$criteria->group;
- else if($criteria->group!=='')
- $this->group.=', '.$criteria->group;
- }
-
- if($this->join!==$criteria->join)
- {
- if($this->join==='')
- $this->join=$criteria->join;
- else if($criteria->join!=='')
- $this->join.=' '.$criteria->join;
- }
-
- if($this->having!==$criteria->having)
- {
- if($this->having==='')
- $this->having=$criteria->having;
- else if($criteria->having!=='')
- $this->having="({$this->having}) $and ({$criteria->having})";
- }
- }
-
- /**
- * @return array the array representation of the criteria
- * @since 1.0.6
- */
- public function toArray()
- {
- $result=array();
- foreach(array('select', 'condition', 'params', 'limit', 'offset', 'order', 'group', 'join', 'having') as $name)
- $result[$name]=$this->$name;
- return $result;
- }
-}