summaryrefslogtreecommitdiff
path: root/framework/Db/ActiveRecord/TActiveRecordCriteria.php
diff options
context:
space:
mode:
Diffstat (limited to 'framework/Db/ActiveRecord/TActiveRecordCriteria.php')
-rw-r--r--framework/Db/ActiveRecord/TActiveRecordCriteria.php254
1 files changed, 0 insertions, 254 deletions
diff --git a/framework/Db/ActiveRecord/TActiveRecordCriteria.php b/framework/Db/ActiveRecord/TActiveRecordCriteria.php
deleted file mode 100644
index 9dded69a..00000000
--- a/framework/Db/ActiveRecord/TActiveRecordCriteria.php
+++ /dev/null
@@ -1,254 +0,0 @@
-<?php
-/**
- * TActiveRecordCriteria class file
- * Adapts *deprecated* Prado TActiveRecordCriteria to TDbCriteria (Yii)
- * @class TActiveRecordCriteria
- * @deprecated
- * @author Daniel Mueller <tux@penguinfriends.org>
- */
-
-Prado::using('System.Db.Schema.TDbCriteria');
-
-class TSqlCriteria extends TDbCriteria
-{
-
- private $_TDbCriteria = null;
-
- public function __construct($condition=null, $parameters=array())
- {
- if(!is_array($parameters) && func_num_args() > 1)
- $parameters = array_slice(func_get_args(), 1);
-
- $this->_TDbCriteria = $this;
-
- $this->_TDbCriteria->params = new ArrayObject();
-
- $param = array(
- 'condition' => ($condition !== null) ? $condition : '',
- 'params' => $parameters
- );
- }
-
- public function getCondition()
- {
- return $this->_TDbCriteria->condition;
- }
-
- public function setCondition($value)
- {
- if(empty($value))
- return;
-
- // supporting the following SELECT-syntax:
- // [ORDER BY {col_name | expr | position}
- // [ASC | DESC], ...]
- // [LIMIT {[offset,] row_count | row_count OFFSET offset}]
- // See: http://dev.mysql.com/doc/refman/5.0/en/select.html
-
-
- if(preg_match('/ORDER\s+BY\s+(.*?)(?=LIMIT)|ORDER\s+BY\s+(.*?)$/i', $value, $matches) > 0) {
- // condition contains ORDER BY
- $value = str_replace($matches[0], '', $value);
- if(strlen($matches[1]) > 0) {
- $this->_TDbCriteria->setOrdersBy($matches[1]);
- } else if(strlen($matches[2]) > 0) {
- $this->setOrdersBy($matches[2]);
- }
- }
-
- if(preg_match('/LIMIT\s+([\d\s,]+)/i', $value, $matches) > 0) {
- // condition contains limit
- $value = str_replace($matches[0], '', $value);
- // remove limit from query
- if(strpos($matches[1], ',')) { // both offset and limit given
- list($offset, $limit) = explode(',', $matches[1]);
- $this->_TDbCriteria->limit = (int)$limit;
- $this->_TDbCriteria->offset = (int)$offset;
- } else { // only limit given
- $this->_TDbCriteria->limit = (int)$matches[1];
- }
- }
-
- if(preg_match('/OFFSET\s+(\d+)/i', $value, $matches) > 0) {
- // condition contains offset
- $value = str_replace($matches[0], '', $value);
- // remove offset from query
- $this->_TDbCriteria->offset = (int)$matches[1]; // set offset in criteria
- }
-
- $this->_TDbCriteria->condition = trim($value);
- }
-
- public function getParameters()
- {
- return $this->_TDbCriteria->params;
- }
-
- public function setParameters($value)
- {
- if(is_array($value))
- {
- $this->_TDbCriteria->params = $value;
- }
- elseif ($value instanceof ArrayAccess)
- {
- $this->_TDbCriteria->params = (array)$value;
- }
- else
- throw new TException('Value must be an array or of type ArrayAccess.');
- }
-
- public function getIsNamedParameters()
- {
- foreach($this->_TDbCriteria->params as $key=>$val)
- return is_string($key);
- }
-
- public function getLimit()
- {
- return ($this->_TDbCriteria->limit != -1) ? $this->_TDbCriteria->limit : null;
- }
-
- public function setLimit($value)
- {
- $this->_TDbCriteria->limit = (int)$value;
- }
-
- public function getOffset()
- {
- return ($this->_TDbCriteria->offset != -1) ? $this->_TDbCriteria->offset : null;
- }
-
- public function setOffset($value)
- {
- $this->_TDbCriteria->offset = (int)$value;
- }
-
- public function getOrdersBy()
- {
- if(empty($this->_TDbCriteria->order))
- return array();
-
- $value=trim(preg_replace('/\s+/',' ', $this->_TDbCriteria->order));
- $orderBys=array();
- foreach(explode(',',$value) as $orderBy)
- {
- $vs=explode(' ',trim($orderBy));
-
- $orderBys[$vs[0]]=isset($vs[1])?$vs[1]:'asc';
- }
- return $orderBys;
- }
-
- public function setOrdersBy($value)
- {
- if(is_string($value))
- $this->TDbCriteria->order = $value;
- elseif (is_array($value) || $value instanceof Traversable)
- {
- $str = '';
- foreach($value as $key => $val)
- $str .= (($str != '') ? ', ': '').$key.' '.$val;
-
- $this->_TDbCriteria->order = $str;
- }
- }
-
- public function __toString()
- {
- $str = '';
- if(strlen((string)$this->getCondition()) > 0)
- $str .= '"'.(string)$this->getCondition().'"';
- $params = array();
- foreach($this->getParameters() as $k=>$v)
- $params[] = "{$k} => ${v}";
- if(count($params) > 0)
- $str .= ', "'.implode(', ',$params).'"';
- $orders = array();
- foreach($this->getOrdersBy() as $k=>$v)
- $orders[] = "{$k} => ${v}";
- if(count($orders) > 0)
- $str .= ', "'.implode(', ',$orders).'"';
- if($this->getLimit() !==null)
- $str .= ', '.$this->_limit;
- if($this->getOffset() !== null)
- $str .= ', '.$this->_offset;
- return $str;
- }
-
- /**
- * Returns a property value or an event handler list by property or event name.
- * Do not call this method. This is a PHP magic method that we override
- * to allow using the following syntax to read a property:
- * <code>
- * $value=$component->PropertyName;
- * </code>
- * and to obtain the event handler list for an event,
- * <code>
- * $eventHandlerList=$component->EventName;
- * </code>
- * @param string the property name or the event name
- * @return mixed the property value or the event handler list
- * @throws TInvalidOperationException if the property/event is not defined.
- */
- public function __get($name)
- {
- $getter='get'.$name;
- if(method_exists($this,$getter))
- {
- // getting a property
- return $this->$getter();
- }
- else if(strncasecmp($name,'on',2)===0 && method_exists($this,$name))
- {
- // getting an event (handler list)
- $name=strtolower($name);
- if(!isset($this->_e[$name]))
- $this->_e[$name]=new TList;
- return $this->_e[$name];
- }
- else
- {
- throw new TInvalidOperationException('component_property_undefined',get_class($this),$name);
- }
- }
-
- /**
- * Sets value of a component property.
- * Do not call this method. This is a PHP magic method that we override
- * to allow using the following syntax to set a property or attach an event handler.
- * <code>
- * $this->PropertyName=$value;
- * $this->EventName=$handler;
- * </code>
- * @param string the property name or event name
- * @param mixed the property value or event handler
- * @throws TInvalidOperationException If the property is not defined or read-only.
- */
- public function __set($name,$value)
- {
- $setter='set'.$name;
- if(method_exists($this,$setter))
- {
- $this->$setter($value);
- }
- else if(strncasecmp($name,'on',2)===0 && method_exists($this,$name))
- {
- $this->attachEventHandler($name,$value);
- }
- else if(method_exists($this,'get'.$name))
- {
- throw new TInvalidOperationException('component_property_readonly',get_class($this),$name);
- }
- else
- {
- throw new TInvalidOperationException('component_property_undefined',get_class($this),$name);
- }
- }
-
-}
-
-class TActiveRecordCriteria extends TSqlCriteria
-{
-
-}