link=@mysql_connect($host, $user, $pass) or die ('BD: Сервер баз данных перегружен, зайдите позже'); $this->dblink=@mysql_select_db(MYSQL_DATABASE, $this->link) or die ('BD: Ошибка базы данных'); if ($charset!="") { mysql_query("SET NAMES '".$charset."'"); } $this->qc=0; } function __destruct() { //деструктор mysql_close($this->link); } function query($query,$debug=0) { if ($debug==1) {echo $query."
";} $this->qc++; $x=mysql_query($query,$this->link) or exit ("BD: Запрос кривой: ".mysql_error()); return $x; } function num($result) { $x=mysql_num_rows($result); return $x; } function fetch($result) { $r=mysql_fetch_array($result); return $r; } function id() { $r=mysql_insert_id($this->link); return $r; } } /*Логика работы с базой данных*/ class author { var $sql; function __construct($sql) { $this->sql=$sql; } function create($data) { /* $data['name'] $data['email'] $data['show'] */ if (!isset($data['name'])) { return false; } if (!isset($data['email'])) { $data['email']=""; } if (!isset($data['show'])) { $data['show']="1"; } $this->sql->query("LOCK TABLES `authors` WRITE"); $this->sql->query("INSERT INTO `authors` (`name`,`email`,`show`) VALUES ('".$data['name']."','".$data['email']."','".$data['show']."')"); $id=$this->sql->id(); $this->sql->query("UNLOCK TABLES"); return $id; } function read($id) { $r=$this->sql->query("SELECT * FROM `authors` WHERE `id`='".$id."'"); if ($this->sql->num($r)!=0) { return $this->sql->fetch($r); } else { return false; } } function getlist($limit="",$order="",$where="") { $str=""; if ($where!="") { $str.=" WHERE ".$where; } if ($limit!="") { $str.=" LIMIT ".$limit; } if ($order!="") { $str.=" ORDER BY ".$order; } $r=$this->sql->query("SELECT * FROM `authors`".$str); $result=Array(); while ($d=$this->sql->fetch($r)) { array_push($result,$d); } return $result; } function getformaterial($id) { $r=$this->sql->query("SELECT a.* FROM `authors` AS a JOIN `material_author` AS ma ON (a.id=ma.author) WHERE ma.material='".$id."' ORDER BY ma.id"); $result=Array(); while ($d=$this->sql->fetch($r)) { array_push($result,$d); } return $result; } function update($data) { /* $data['id'] $data['name'] $data['email'] $data['show'] */ if (isset($data['id'])) { $set=""; if (isset($data['name'])) { $set.="`name`='".$data['name']."' "; } if (isset($data['email'])) { if ($set!="") {$set.=",";} $set.="`email`='".$data['email']."' "; } if (isset($data['show'])) { if ($set!="") {$set.=",";} $set.="`show`='".$data['show']."' "; } $this->sql->query("UPDATE `authors` set ".$set." WHERE `id`='".$data['id']."'"); } else { return false; } } function destroy($id) { $this->sql->query("DELETE FROM `authors` WHERE `id`='".$id."'"); $this->sql->query("DELETE FROM `material_author` WHERE `author`='".$id."'"); } } class rubric { var $sql; function __construct($sql) { $this->sql=$sql; } function create($data) { /* $data['name'] $data['path'] $data['parent'] $data['order'] $data['static'] $data['material'] $data['show'] */ if (!isset($data['name'])) { return false; } if (!isset($data['path'])) { return false; } if (!isset($data['parent'])) { $data['parent']=0; } if (!isset($data['order'])) { $data['order']=1; $r=$this->sql->query("SELECT MAX(`order`) FROM `rubrics`"); if ($this->sql->num($r)>0) { $d=$this->sql->fetch($r); $data['order']=$d[0]+1; } else { $data['order']=1; } } if (!isset($data['show'])) { $data['show']=1; } $this->sql->query("LOCK TABLES `rubrics` WRITE"); $this->sql->query("INSERT INTO `rubrics` (`name`,`path`,`parent`,`order`,`show`) VALUES ('".$data['name']."','".$data['path']."','".$data['parent']."','".$data['order']."','".$data['show']."')"); $id=$this->sql->id(); $this->sql->query("UNLOCK TABLES"); $memcache = new Memcache; $memcache->connect('localhost', 11211); $memcache->delete("rubriclist",10); unset($memcache); return $id; } function read($id) { $r=$this->sql->query("SELECT * FROM `rubrics` WHERE `id`='".$id."'"); if ($this->sql->num($r)!=0) { return $this->sql->fetch($r); } else { return false; } } function getlist($limit="",$order="",$where="") { $str=""; if ($where!="") { $str.=" WHERE ".$where; } if ($limit!="") { $str.=" LIMIT ".$limit; } if ($order!="") { $str.=" ORDER BY ".$order; } $r=$this->sql->query("SELECT * FROM `rubrics`".$str); $result=Array(); while ($d=$this->sql->fetch($r)) { array_push($result,$d); } return $result; } function reorder($id,$delta) { $memcache = new Memcache; $memcache->connect('localhost', 11211); $memcache->delete("rubriclist",10); unset($memcache); $r=$this->sql->query("SELECT `order` FROM `rubrics` WHERE `id`='".$id."'"); if ($this->sql->num($r)>0) { $d=$this->sql->fetch($r); $old_order=$d['order']; $new_order=$old_order+$delta; $r=$this->sql->query("SELECT MAX(`order`) AS 'max' FROM `rubrics`"); $max=0; if ($this->sql->num($r)>0) { $d=$this->sql->fetch($r); $max=$d['max']; } if (($new_order<1)||($new_order>$max)) { //echo $new_order.":".$max; return false; } $r=$this->sql->query("SELECT `id` FROM `rubrics` WHERE `order`='".$new_order."'"); if ($this->sql->num($r)==0) { //echo "2:".$new_order; return false; } else { $d=$this->sql->fetch($r); $this->sql->query("LOCK TABLES `rubrics` WRITE"); $this->sql->query("UPDATE `rubrics` SET `order`='0' WHERE `id`='".$d['id']."'"); $this->sql->query("UPDATE `rubrics` SET `order`='".$new_order."' WHERE `id`='".$id."'"); $this->sql->query("UPDATE `rubrics` SET `order`='".$old_order."' WHERE `id`='".$d['id']."'"); $this->sql->query("UNLOCK TABLES"); return true; } } } function update($data) { $memcache = new Memcache; $memcache->connect('localhost', 11211); $memcache->delete("rubriclist",10); unset($memcache); /* $data['name'] $data['path'] $data['parent'] $data['order'] $data['static'] $data['material'] $data['show'] */ if (isset($data['id'])) { $set=""; if (isset($data['name'])) { $set.="`name`='".$data['name']."' "; } if (isset($data['path'])) { if ($set!="") {$set.=",";} $set.="`path`='".$data['path']."' "; } if (isset($data['parent'])) { if ($set!="") {$set.=",";} $set.="`parent`='".$data['parent']."' "; } if (isset($data['show'])) { if ($set!="") {$set.=",";} $set.="`show`='".$data['show']."' "; } $this->sql->query("UPDATE `rubrics` set ".$set." WHERE `id`='".$data['id']."'"); } else { return false; } } function destroy($id) { $memcache = new Memcache; $memcache->connect('localhost', 11211); $memcache->delete("rubriclist",10); unset($memcache); $this->sql->query("DELETE FROM `rubrics` WHERE `id`='".$id."'"); $this->sql->query("UPDATE `materials` SET `rubric`='1' WHERE `rubric`='".$id."'"); //reorder machen $r=$this->sql->query("SELECT * FROM `rubrics` WHERE `parent`='0' ORDER BY `order`"); $i=1; while ($d=$this->sql->fetch($r)) { $this->sql->query("UPDATE `rubrics` SET `order`='".$i."' WHERE `id`='".$d['id']."'"); $i++; } } } include ("admin/material.class.php"); include ("admin/blocks.class.php"); include ("admin/banner.class.php"); ?>