\!/ KyuuKazami \!/

Path : /home/kohli/public_html/application/controllers/
Upload :
Current File : /home/kohli/public_html/application/controllers/user.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class User extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
        $this->load->library("common_lib");
        
        if($this->common_lib->get_route_action() != "verify_email"){        
            $this->common_lib->render_security();
        }
                
        $this->load->model('userm');
        
        if($this->common_lib->get_session("sess_status",true) == "Pending" && $this->common_lib->get_route_action() != "account" && $this->common_lib->get_route_action() != "resend_verification_email" && $this->common_lib->get_route_action() != "logout" && $this->common_lib->get_route_action() != "resetpassword" && $this->common_lib->get_route_action() != "verify_email"){
            
            redirect("user/account");
            exit;    
        }
        $this->load->model('commonm');
    }	
     
    public function index(){
        redirect("user/myaccount");
        exit;		
    }
    
    public function account(){
        $data = array();        
        $data['inner_template'] = "user/account";
        $this->load->view('layout/layout_main.php',$data);		
    }
    
    public function profile(){
        
        $data = array();
        
        if($this->common_lib->run_profile_validation()){
            $user_data = array();			
            $user_data = $this->common_lib->user_form_personal_fields();            
            $this->load->model('userm');			
            $this->userm->_up_profile($this->common_lib->get_login_id(),$user_data);
            $this->common_lib->set_session(array("success-msg" => "Profile updated successfully"));
            redirect("user/profile");
            
        }else{
            $this->common_lib->set_session(array("danger-msg" => validation_errors()));            
        }
        
        $data = array();        
        $data['country_list'] = $this->commonm->get_all("countries",array(),array(),"country");
        $data['user_profile'] = $this->common_lib->get_login_detail();       
        $data['inner_template'] = "user/profile";
        $this->load->view('layout/layout_main.php',$data);		
    }
    
    public function editdeliveryaddress(){
        
        if($this->common_lib->run_shipping_validation()){
            $user_data = array();			
            $user_data = $this->common_lib->user_form_shipping_fields();            
            $this->load->model('userm');			
            $this->userm->_up_profile($this->common_lib->get_login_id(),$user_data);
            $this->common_lib->set_session(array("success-msg" => "Shipping Detail updated successfully"));
            redirect("user/editdeliveryaddress");
            
        }else{
            $this->common_lib->set_session(array("danger-msg" => validation_errors()));            
        }
        
	    $data = array();
        $this->load->model('commonm');
        $data['country_list'] = $this->commonm->get_all("countries",array(),array(),"country");
        $data['user_profile'] = $this->common_lib->get_login_detail();        	    
        $data['inner_template'] = "user/editdeliveryaddress";
	    $this->load->view('layout/layout_main.php',$data);		
    }
    
    public function wishlist(){        
	   $data = array();       
                
        $data['wishlist'] = $this->common_lib->get_user_wishlist(); 
        $data['inner_template'] = "user/wishlist";
        $this->load->view('layout/layout_main.php',$data);		
    }        
    
    public function user_exist($str){
        return $this->common_lib->check_user_exist($str);		
    }
    
    public function email_exist($str){
        return $this->common_lib->check_email_exist($str);
    }
    
    public function check_password($str){
        $this->load->model("userm");
        $password = $this->common_lib->one_way_encrypt($str);
        if($this->userm->_check_password($this->common_lib->get_login_id(),$password)){
            return true; 
        }else{
            $this->form_validation->set_message('check_password', '%s is wrong!');
            return false;               
        }
    }
    
    public function resend_verification_email($username){
        $username = $this->common_lib->get_session("sess_username",true);
        $user_detail = $this->commonm->get_all("users",array("is_active" => "Pending","username" => $username));        
        if(count($user_detail) == 1){
            $email_var = array();
            $email_var['username'] = $username;
            $email_var['password'] = "";
            $email_var['verification_link'] = $this->common_lib->generate_verification_link($username); 
            $this->common_lib->send_registration_email($email_var,$user_detail[0]->email);
            $this->common_lib->set_session(array("success-msg" => "Verification link send successfully. Please check your email"));
        }else{
            $this->common_lib->set_session(array("danger-msg" => "Verification link cannot be sent. Please try clicking \"Resend Verification Link\" button again"));
        }
        redirect("user/account");
        exit;
    }
    
    public function verify_email($username,$security_code){        
        //$username = urldecode($this->common_lib->decode($username));
        $user_detail = $this->commonm->get_all("users",array("username" => $username));
                
        if(count($user_detail) == 1){
            if($user_detail[0]->email_verified == 1){
                $this->common_lib->set_session(array("info-msg" => "Your email is already verified. You will be able to login to your account after your account will be approved by our staff."));
            }else{
                $this->commonm->db_update(array("email_verified" => 1),"users","user_id",$user_detail[0]->user_id);
                $this->common_lib->set_session(array("success-msg" => "Congratulation, Your email is verified successfully. You will be able to login to your account after your account will be approved by our staff."));    
            }            
        }else{
            $this->common_lib->set_session(array("danger-msg" => "Verification link seems to be broken"));    
        }        
        $this->common_lib->do_logout();      
        redirect("user/login");
        exit;
    }
    
    public function register(){        
        $data = array();        
                
        if($this->common_lib->run_register_validation(true,true)){
            $user_data = array();
            
            $username = $this->common_lib->get_post('rg_username',true);
            $password = $this->common_lib->get_post('rg_password',true);
            $password = $this->common_lib->one_way_encrypt($password);
            
            $personal_fields = $this->common_lib->user_form_personal_fields();                                                
                                                            
            $user_data['is_active'] = "Approved";
            $user_data['username'] = $username;
            $user_data['password'] = $password;
            
            $user_data = array_merge($user_data,$personal_fields);
            
            $this->load->model('userm');
            $user_id = $this->userm->_insert($user_data);
            
            $sdata = array(							  
                            'sess_username' => $this->common_lib->encode($username),                              
                            'sess_status' => $this->common_lib->encode("Approved"),                              
                            'sess_uid' => $this->common_lib->encode($user_id),
                            'sess_display_name' => $this->common_lib->encode($personal_fields['first_name']),
                            'sess_lastlogin' => $data['lastlogin'],
                            'sess_signature' => $this->common_lib->encode($user_id.$username)
                        );
            $this->common_lib->set_session($sdata);
            $email_var = array();
            $email_var['username'] = $username;
            $email_var['password'] = $this->common_lib->get_post('rg_password',true);
            $email_var['verification_link'] = $this->common_lib->generate_verification_link($username); 
            $this->common_lib->send_registration_email($email_var,$personal_fields['email']);
            $this->userm->_update($user_id, time());
            redirect("user/account");
            
        }else{
            $this->common_lib->set_session(array("danger-msg" => validation_errors()));             
        }
        $this->load->model('commonm');       
        $data['country_list'] = $this->commonm->get_all("countries",array(),array(),"country"); 
        $data['inner_template'] = "user/register";
        $this->load->view('layout/layout_main.php',$data);		
    }
    
    public function logout(){
        $this->common_lib->do_logout();
        redirect("user/login");
        exit;
    }
    
    public function login(){        
        $login_status = $this->common_lib->do_login();
        
        $data = array();        
        $data['inner_template'] = "user/login";
        $this->load->view('layout/layout_main.php',$data);		
    }
    
    public function resetpassword($un,$token){
        if($this->userm->_is_exists($un,"username")){
            $this->form_validation->set_rules('rg_password', 'New Password', 'trim|required|min_length[5]|max_length[15]|matches[rg_cpassword]|xss_clean');
            $this->form_validation->set_rules('rg_cpassword', 'New Confirm Password', 'trim|required|min_length[5]|max_length[15]|xss_clean');
            if($this->form_validation->run()){
                $un = $this->common_lib->get_post("un");
                $user_data = array();
                $user_detail = $this->commonm->get_all("users",array("username" => $un));
                $password = $this->common_lib->get_post('rg_password',true);                                                            
                $password = $this->common_lib->one_way_encrypt($password);            
                $user_data['password'] = $password;                        
                $this->load->model('userm');			
                $this->userm->_up_profile($user_detail[0]->user_id,$user_data);
                $this->common_lib->set_session(array("success-msg" => "Password reset successfully"));
                redirect("user/login");            
            }else{
                $this->common_lib->set_session(array("danger-msg" => validation_errors())); 
            }
        }else{
            $this->common_lib->set_session(array("danger-msg" => "Looks like password reset email has been broken. Please try to copy and paste reset link from email or choose forgot password option again."));
            redirect("user/forgotpassword");
            exit;
        }
	    $data = array(); 
        $data['un'] = $un;
        $data['token'] = $token;       
        $data['inner_template'] = "user/resetpassword";
	    $this->load->view('layout/layout_main.php',$data);
    }
    
    public function forgotpassword(){
        
        if($this->common_lib->run_forgot_password_validation()){
            $email_address = $this->common_lib->get_post("email");
            if($this->userm->_is_exists($email_address,"email")){
                $user_detail = $this->commonm->get_all("users",array("email" => $email_address));
                $this->common_lib->send_forgot_password($user_detail[0]->username,$email_address);
                $this->common_lib->set_session(array("success-msg" => "<b>Thank you</b><br>We have send you an email that will allow you to change your password."));
            }else{
                $this->common_lib->set_session(array("danger-msg" => "This email address is not exist!"));    
            }
        }else{
            $this->common_lib->set_session(array("danger-msg" => validation_errors()));
        }
        
        $data = array();        
        $data['inner_template'] = "user/forgotpassword";
        $this->load->view('layout/layout_main.php',$data);		
    }
    
    public function changepassword(){
        $this->form_validation->set_rules('rg_opassword', 'Old Password', 'trim|required|max_length[15]|xss_clean|callback_check_password');
        $this->form_validation->set_rules('rg_password', 'New Password', 'trim|required|min_length[5]|max_length[15]|matches[rg_cpassword]|xss_clean');
        $this->form_validation->set_rules('rg_cpassword', 'New Confirm Password', 'trim|required|min_length[5]|max_length[15]|xss_clean');
        if($this->form_validation->run()){
            $user_data = array();			
            $password = $this->common_lib->get_post('rg_password',true);                                                            
            $password = $this->common_lib->one_way_encrypt($password);            
            $user_data['password'] = $password;                        
            $this->load->model('userm');			
            $this->userm->_up_profile($this->common_lib->get_login_id(),$user_data);
            $this->common_lib->set_session(array("success-msg" => "Password changed successfully"));
            redirect("user/changepassword");
            
        }else{
            $data['form-error-msg']  = validation_errors(); 
        }
	    $data = array();        
        $data['inner_template'] = "user/changepassword";
	    $this->load->view('layout/layout_main.php',$data);		
    }
    
    public function orders(){
	$data = array();
        $data['order_list'] = $this->userm->get_customer_orders($this->common_lib->get_login_id());
        $data['inner_template'] = "user/orders";
        $this->load->view('layout/layout_main.php',$data);		
    }
    
    public function order_detail($order_id){
        $order_id = $this->common_lib->fSafeNum($order_id);
	$data = array();
        if(count($this->userm->get_valid_order($this->common_lib->get_login_id(),$order_id)) == 0){
            $this->common_lib->set_session(array("danger-msg" => "Order not found!"));
            redirect("user/orders");
            exit;
        }
        $data['order_id'] = $order_id;
        $data['order_detail'] = $this->common_lib->get_order_summary($order_id,true);
        $data['inner_template'] = "user/order_detail";
        $this->load->view('layout/layout_main.php',$data);		
    }
    
}

/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */

@KyuuKazami