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

Автор: auth Написано: 3 г. назад Форматирование: php.
С нумерацией строк
<?
class User extends Public_Model {

        var $is_login = FALSE;
        var $info = array();
        var $last_error = FALSE;

        function User() {
                parent::Public_Model();
               
                $id = $this -> session -> userdata('user_id');
               
                if ($id > 0) {

                        $this -> is_login = TRUE;
                        $this -> info = $this -> session -> get_array('user_', TRUE);
                }
        }
       
        function isset_email($email) {
                $query = $this -> db -> query('SELECT id FROM tbl_users WHERE email = ? LIMIT 1', $email);
                $array = $query -> result_array();
                return isset($array[0]['id']);
        }
       
        function get_password_hash($password) {
                return md5($password . 'key');
        }
       
        function get_user_info($id = array(), $fields = array()) {
                if (!is_array($id)) {
                        $id = array('id' => $id);
                }
               
                $keys = $vals = array();
                foreach ($id as $k => $v) {
                        $keys[] = "$k = ?";
                        $vals[] = $v;
                }

                if (!count($fields)) {
                        $fields = array('*');
                }

                $query = $this -> db -> query('SELECT ' . join(', ', $fields). ' FROM tbl_users WHERE ' . join(' AND ', $keys) . ' LIMIT 1', $vals);
                $user = $query -> result_array();
                return isset($user[0]) ? $user[0] : FALSE;
        }
       
        function login($id = FALSE, $email = FALSE, $password = FALSE) {
                $user = array();
                if ($login && $password) {
                        $user = $this -> get_user_info(array('email' => $email), array('id', 'email', 'pass', 'status', 'active'));
                        if (!$user) {
                                $this -> last_error = 'Пользователь с таким логином в системе не значится';
                                return FALSE;
                        }
                        if ($user['password'] != $this -> get_password_hash($password)) {
                                $this -> last_error = 'Не правильный пароль';
                                return FALSE;
                        }
                } elseif ($id) {
                        $user = $this -> get_user_info($id, array('id', 'email', 'pass', 'status', 'active'));
                        if (!$user) {
                                $this -> last_error = 'Такого пользователя в системе нет';
                                return FALSE;
                        }
                } else {
                        $this -> last_error = 'Не введен логин или пароль';
                        return FALSE;
                }
               
                // Если пользователь не активен
                if ($user['active'] != '1') {
                        $this -> last_error = 'Пользователь с таким логином неактивен';
                        return FALSE;
                }
               
                $this->update_user_sess(array(
                        'id' => $user['id'],
                        'email' => $user['email'],
                        'pass' => $user['pass'],
                        'status' => $user['status']
                ));
               
               
                return TRUE;
               
        }
       
        function logout() {
                if ($this -> is_login) {
                        $this -> session -> unset_userdata('user_id');
                        unset($this -> session -> userdata);
                        $this -> session -> sess_destroy();
                }
                return TRUE;
        }
       
        function activate($id) {
                $act = $this -> db -> query('UPDATE tbl_users SET active = \'1\' WHERE id = ?', $id);
                if ($act) {
                        return TRUE;
                } else {
                        return FALSE;
                }
        }
       
        function create_user($data, $from_userform = TRUE) {

                $errors = array();
               
                $data = array_map('trim', $data);
               
                if (!isset($data['password']) || !strlen($data['password'])) {
                        $errors['password'] = 'Пароль не указан';
                } elseif (strlen($data['password']) < 6) {
                        $errors['password'] = 'Пароль должен содержать 6 и более символов';
                }
               
                if (!isset($data['email']) || !strlen($data['email'])) {
                        $errors['email'] = 'Email не указан';
                } elseif (!$this->test_email($data['email'])) {
                        $errors['email'] = 'Email имеет неверный формат';
                } elseif (strlen($data['email']) > 40) {
                        $errors['email'] = 'У вас нереально длинный Email :-)';
                } elseif ($this -> isset_email($data['email'])) {
                        $errors['email'] = 'Пользователь с таким адресом уже зарегистрирован в системе';
                }
               
                if ($from_userform) {
               
                        if (!isset($data['password_conf']) || !strlen($data['password_conf'])) {
                                $errors['password_conf'] = 'Вы не подтвердили пароль';
                        } elseif ($data['password'] != $data['password_conf']) {
                                $errors['password_conf'] = 'Повторение не соответствует паролю';
                        }
                       
//                      if (!isset($data['captcha']) || !strlen($data['captcha'])) {
//                              $errors['captcha'] = 'Не введены символы';
//                      } elseif (!$this->test_captcha($data['captcha'])) {
//                              $errors['captcha'] = 'Неверно введены символы';
//                      }
                }
               
                $this -> fields_errors += $errors;
               
                if (!count($errors)) {
                        $this -> db -> trans_start();
                       
                        $this -> db -> query(
                                'INSERT INTO tbl_users (email, password) VALUES (?, ?)',
                                array($data['email'], $this -> get_password_hash($data['password']))
                        );
                        $id = $this -> db -> insert_id();
                       
                        $this -> db -> trans_complete();
                       
                        if ($this -> db -> trans_status()) {
                                return TRUE;
                        }
                }
               
                return FALSE;

        }
       
}
Теги: ci, auth, user