Без заголовка

Автор: auth Написано: 3 г. назад Форматирование: php.
Без нумерации строк
  1. <?
  2. class User extends Public_Model {
  3.  
  4.         var $is_login = FALSE;
  5.         var $info = array();
  6.         var $last_error = FALSE;
  7.  
  8.         function User() {
  9.                 parent::Public_Model();
  10.                
  11.                 $id = $this -> session -> userdata('user_id');
  12.                
  13.                 if ($id > 0) {
  14.  
  15.                         $this -> is_login = TRUE;
  16.                         $this -> info = $this -> session -> get_array('user_', TRUE);
  17.                 }
  18.         }
  19.        
  20.         function isset_email($email) {
  21.                 $query = $this -> db -> query('SELECT id FROM tbl_users WHERE email = ? LIMIT 1', $email);
  22.                 $array = $query -> result_array();
  23.                 return isset($array[0]['id']);
  24.         }
  25.        
  26.         function get_password_hash($password) {
  27.                 return md5($password . 'key');
  28.         }
  29.        
  30.         function get_user_info($id = array(), $fields = array()) {
  31.                 if (!is_array($id)) {
  32.                         $id = array('id' => $id);
  33.                 }
  34.                
  35.                 $keys = $vals = array();
  36.                 foreach ($id as $k => $v) {
  37.                         $keys[] = "$k = ?";
  38.                         $vals[] = $v;
  39.                 }
  40.  
  41.                 if (!count($fields)) {
  42.                         $fields = array('*');
  43.                 }
  44.  
  45.                 $query = $this -> db -> query('SELECT ' . join(', ', $fields). ' FROM tbl_users WHERE ' . join(' AND ', $keys) . ' LIMIT 1', $vals);
  46.                 $user = $query -> result_array();
  47.                 return isset($user[0]) ? $user[0] : FALSE;
  48.         }
  49.        
  50.         function login($id = FALSE, $email = FALSE, $password = FALSE) {
  51.                 $user = array();
  52.                 if ($login && $password) {
  53.                         $user = $this -> get_user_info(array('email' => $email), array('id', 'email', 'pass', 'status', 'active'));
  54.                         if (!$user) {
  55.                                 $this -> last_error = 'Пользователь с таким логином в системе не значится';
  56.                                 return FALSE;
  57.                         }
  58.                         if ($user['password'] != $this -> get_password_hash($password)) {
  59.                                 $this -> last_error = 'Не правильный пароль';
  60.                                 return FALSE;
  61.                         }
  62.                 } elseif ($id) {
  63.                         $user = $this -> get_user_info($id, array('id', 'email', 'pass', 'status', 'active'));
  64.                         if (!$user) {
  65.                                 $this -> last_error = 'Такого пользователя в системе нет';
  66.                                 return FALSE;
  67.                         }
  68.                 } else {
  69.                         $this -> last_error = 'Не введен логин или пароль';
  70.                         return FALSE;
  71.                 }
  72.                
  73.                 // Если пользователь не активен
  74.                 if ($user['active'] != '1') {
  75.                         $this -> last_error = 'Пользователь с таким логином неактивен';
  76.                         return FALSE;
  77.                 }
  78.                
  79.                 $this->update_user_sess(array(
  80.                         'id' => $user['id'],
  81.                         'email' => $user['email'],
  82.                         'pass' => $user['pass'],
  83.                         'status' => $user['status']
  84.                 ));
  85.                
  86.                
  87.                 return TRUE;
  88.                
  89.         }
  90.        
  91.         function logout() {
  92.                 if ($this -> is_login) {
  93.                         $this -> session -> unset_userdata('user_id');
  94.                         unset($this -> session -> userdata);
  95.                         $this -> session -> sess_destroy();
  96.                 }
  97.                 return TRUE;
  98.         }
  99.        
  100.         function activate($id) {
  101.                 $act = $this -> db -> query('UPDATE tbl_users SET active = \'1\' WHERE id = ?', $id);
  102.                 if ($act) {
  103.                         return TRUE;
  104.                 } else {
  105.                         return FALSE;
  106.                 }
  107.         }
  108.        
  109.         function create_user($data, $from_userform = TRUE) {
  110.  
  111.                 $errors = array();
  112.                
  113.                 $data = array_map('trim', $data);
  114.                
  115.                 if (!isset($data['password']) || !strlen($data['password'])) {
  116.                         $errors['password'] = 'Пароль не указан';
  117.                 } elseif (strlen($data['password']) < 6) {
  118.                         $errors['password'] = 'Пароль должен содержать 6 и более символов';
  119.                 }
  120.                
  121.                 if (!isset($data['email']) || !strlen($data['email'])) {
  122.                         $errors['email'] = 'Email не указан';
  123.                 } elseif (!$this->test_email($data['email'])) {
  124.                         $errors['email'] = 'Email имеет неверный формат';
  125.                 } elseif (strlen($data['email']) > 40) {
  126.                         $errors['email'] = 'У вас нереально длинный Email :-)';
  127.                 } elseif ($this -> isset_email($data['email'])) {
  128.                         $errors['email'] = 'Пользователь с таким адресом уже зарегистрирован в системе';
  129.                 }
  130.                
  131.                 if ($from_userform) {
  132.                
  133.                         if (!isset($data['password_conf']) || !strlen($data['password_conf'])) {
  134.                                 $errors['password_conf'] = 'Вы не подтвердили пароль';
  135.                         } elseif ($data['password'] != $data['password_conf']) {
  136.                                 $errors['password_conf'] = 'Повторение не соответствует паролю';
  137.                         }
  138.                        
  139. //                      if (!isset($data['captcha']) || !strlen($data['captcha'])) {
  140. //                              $errors['captcha'] = 'Не введены символы';
  141. //                      } elseif (!$this->test_captcha($data['captcha'])) {
  142. //                              $errors['captcha'] = 'Неверно введены символы';
  143. //                      }
  144.                 }
  145.                
  146.                 $this -> fields_errors += $errors;
  147.                
  148.                 if (!count($errors)) {
  149.                         $this -> db -> trans_start();
  150.                        
  151.                         $this -> db -> query(
  152.                                 'INSERT INTO tbl_users (email, password) VALUES (?, ?)',
  153.                                 array($data['email'], $this -> get_password_hash($data['password']))
  154.                         );
  155.                         $id = $this -> db -> insert_id();
  156.                        
  157.                         $this -> db -> trans_complete();
  158.                        
  159.                         if ($this -> db -> trans_status()) {
  160.                                 return TRUE;
  161.                         }
  162.                 }
  163.                
  164.                 return FALSE;
  165.  
  166.         }
  167.        
  168. }
Теги: ci, auth, user