db->placehold('AND u.group_id in(?@)', (array)$filter['group_id']); if(isset($filter['keyword'])) { $keywords = explode(' ', $filter['keyword']); foreach($keywords as $keyword) $keyword_filter .= $this->db->placehold('AND (u.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR u.email LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR u.last_ip LIKE "%'.mysql_real_escape_string(trim($keyword)).'%")'); } $order = 'u.name'; if(!empty($filter['sort'])) switch ($filter['sort']) { case 'date': $order = 'u.created DESC'; break; case 'name': $order = 'u.name'; break; } $sql_limit = $this->db->placehold(' LIMIT ?, ? ', ($page-1)*$limit, $limit); // Выбираем пользователей $query = $this->db->placehold("SELECT u.id, u.email, u.password, u.name, u.group_id, u.enabled, u.last_ip, u.created, g.discount, g.name as group_name, u.name2, u.phone, u.country, u.region, u.city, u.indx, u.adress FROM __users u LEFT JOIN __groups g ON u.group_id=g.id WHERE 1 $group_id_filter $keyword_filter ORDER BY $order $sql_limit"); $this->db->query($query); return $this->db->results(); } function count_users($filter = array()) { $group_id_filter = ''; $keyword_filter = ''; if(isset($filter['group_id'])) $group_id_filter = $this->db->placehold('AND u.group_id in(?@)', (array)$filter['group_id']); if(isset($filter['keyword'])) { $keywords = explode(' ', $filter['keyword']); foreach($keywords as $keyword) $keyword_filter .= $this->db->placehold('AND u.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR u.email LIKE "%'.mysql_real_escape_string(trim($keyword)).'%"'); } // Выбираем пользователей $query = $this->db->placehold("SELECT count(*) as count FROM __users u LEFT JOIN __groups g ON u.group_id=g.id WHERE 1 $group_id_filter $keyword_filter ORDER BY u.name"); $this->db->query($query); return $this->db->result('count'); } function get_user($id) { if(gettype($id) == 'string') $where = $this->db->placehold(' WHERE u.email=? ', $id); else $where = $this->db->placehold(' WHERE u.id=? ', intval($id)); // Выбираем пользователя $query = $this->db->placehold("SELECT u.id, u.email, u.password, u.name, u.group_id, u.enabled, u.last_ip, u.created, g.discount, g.name as group_name, u.name2, u.phone, u.country, u.region, u.city, u.indx, u.adress FROM __users u LEFT JOIN __groups g ON u.group_id=g.id $where LIMIT 1", $id); $this->db->query($query); $user = $this->db->result(); if(empty($user)) return false; $user->discount *= 1; // Убираем лишние нули, чтобы было 5 вместо 5.00 return $user; } public function add_user($user) { $user = (array)$user; if(isset($user['password'])) $user['password'] = md5($this->salt.$user['password'].md5($user['password'])); $query = $this->db->placehold("SELECT count(*) as count FROM __users WHERE email=?", $user['email']); $this->db->query($query); if($this->db->result('count') > 0) return false; $query = $this->db->placehold("INSERT INTO __users SET ?%", $user); $this->db->query($query); return $this->db->insert_id(); } public function update_user($id, $user) { $user = (array)$user; if(isset($user['password'])) $user['password'] = md5($this->salt.$user['password'].md5($user['password'])); $query = $this->db->placehold("UPDATE __users SET ?% WHERE id=? LIMIT 1", $user, intval($id)); $this->db->query($query); return $id; } /* * * Удалить пользователя * @param $post * */ public function delete_user($id) { if(!empty($id)) { $query = $this->db->placehold("UPDATE __orders SET user_id=NULL WHERE id=? LIMIT 1", intval($id)); $this->db->query($query); $query = $this->db->placehold("DELETE FROM __users WHERE id=? LIMIT 1", intval($id)); if($this->db->query($query)) return true; } return false; } function get_groups() { // Выбираем группы $query = $this->db->placehold("SELECT g.id, g.name, g.discount FROM __groups AS g ORDER BY g.discount"); $this->db->query($query); return $this->db->results(); } function get_group($id) { // Выбираем группу $query = $this->db->placehold("SELECT * FROM __groups WHERE id=? LIMIT 1", $id); $this->db->query($query); $group = $this->db->result(); return $group; } public function add_group($group) { $query = $this->db->placehold("INSERT INTO __groups SET ?%", $group); $this->db->query($query); return $this->db->insert_id(); } public function update_group($id, $group) { $query = $this->db->placehold("UPDATE __groups SET ?% WHERE id=? LIMIT 1", $group, intval($id)); $this->db->query($query); return $id; } public function delete_group($id) { if(!empty($id)) { $query = $this->db->placehold("UPDATE __users SET group_id=NULL WHERE group_id=? LIMIT 1", intval($id)); $this->db->query($query); $query = $this->db->placehold("DELETE FROM __groups WHERE id=? LIMIT 1", intval($id)); if($this->db->query($query)) return true; } return false; } public function check_password($email, $password) { $encpassword = md5($this->salt.$password.md5($password)); $query = $this->db->placehold("SELECT id FROM __users WHERE email=? AND password=? LIMIT 1", $email, $encpassword); $this->db->query($query); if($id = $this->db->result('id')) return $id; return false; } }