<?
global $DB;
class SimpleORM implements Iterator
{
private $sel ect = "";
private $fr om = "";
private $where = "";
private $order_by = "";
private $limit = "";
private $arr = array();
public function __construct()
{
$this->db = $DB;
$this->fr om = strtolower(get_class($this));
}
public function rewind()
{
$sql = "SELECT ".($this->select ? substr($this->select, -3) : " *")." ";
$sql .= "FR OM ".$this->fr om." ";
$sql .= "WH ERE ".($this->where ? substr($this->where, -5) : " 1");
$sql .= ($this->order_by ? " ORDER BY ".substr($this->order_by, -3) : "");
$sql .= $this->lim it;
$this->res = $this->db->Query($sql.";");
}
private parse_order_by($arg)
{
if(substr($arg, 0, 1) == "!")
return substr($arg, 1)." DESC";
return $arg." ASC";
}
private parse_where($arg)
{
if(substr($arg, 0, 1) == "!")
return str_replace("=", "!=", substr($arg, 1));
return $arg;
}
public function valid()
{
return true;
}
public function current()
{
return $arr;
}
public function key()
{
return $arr["ID"];
}
public function next()
{
$this->arr = $this->res->Fetch();
return $this->arr;
}
public function __call($name, $args)
{
if(count($args) == 1 && is_array($args[0]))
$args = $args[0];
$args = array_map("mysql_real_escape_string", $args);
if($name == "Fields")
$this->select .= implode(", ", $args).", ";
elseif($name == "Filter")
$this->where .= implode(" AND ", array_map(array($this, "parse_where"), $args)." AND ";
elseif($name == "OrderBy")
$this->order_by .= implode(", ", array_map(array($this, "parse_order_by"), $args).", ";
elseif($name == "Splice")
$this->order_by = " LIM IT ".$args[0].", ".$args[1];
//elseif($name == "GroupBy");
}
public function getArray()
{
$arResult = array()
while($this->next())
$arResult[] = $this->$arr;
return $arResult;
}
}
?> |
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».