MMCT TEAM
Server IP : 103.191.208.50  /  Your IP : 216.73.216.53
Web Server : LiteSpeed
System : Linux orion.herosite.pro 4.18.0-553.53.1.lve.el8.x86_64 #1 SMP Wed May 28 17:01:02 UTC 2025 x86_64
User : celkcksm ( 1031)
PHP Version : 7.4.33
Disable Function : show_source, system, shell_exec, passthru, popen, exec
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /home/celkcksm/ecampus.ncriptech.com/application/controllers/admin/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/celkcksm/ecampus.ncriptech.com/application/controllers/admin/Roles.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');


/**
 * 
 */
class Roles  extends BaseAdminController
{

    protected $inst_id='';
    protected $inst_parent_id='';
    protected $inst_code='';
    protected $inst_type='';
    protected $hrms_access='';

    function __construct()
    {
        parent::__construct();

        $institute_data=check_institute($this->data['userdata']);
        $this->inst_id=$institute_data['institute_id'];
        $this->inst_parent_id=$institute_data['inst_parent_id'];
        $this->inst_code=$institute_data['inst_code'];
        $this->inst_type=$institute_data['inst_type'];
    }


    public function index(){
        if($this->data['userdata']->user_type=='student'  ||   $this->data['userdata']->user_type=='agent'){
            redirect($this->data['base_url']);
        }
        if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='Roles & Permissions';

            $view='roles/vw_roles';

            $this->theme->title($this->data['page_title'])->load($view, $this->data);
                
        }else{

            redirect($this->data['base_url']);
        }
    }


    public function indexAddEdit($role_id=null){
        if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='Roles & Permissions';

            $role_permissions=array();
            $role_data=array();

          

                $permission_array=array();

                if(!empty($role_id)){
                    $role_id=decode_data($role_id);

                    $role_data=$this->hrmrm->get_role(array('role_id'=>$role_id));

                    if(!empty($role_data) && !empty($role_data->role_permissions)){
                        $role_permissions=json_decode($role_data->role_permissions);
                    }
                }

                //print_obj($this->config->item('permissions_array'));die;

                $i=0;
                foreach ($this->config->item('permissions_array') as $key => $value) {

                    foreach ($value['access'] as $k => $v) {
                        $access[$key][]=array(
                            $k=>$v,
                            'selected'=>(isset($role_permissions) && ($role_permissions[$i]->{$key}->access==$k))?'selected':''
                        );
                    }

                    // foreach ($value['edit'] as $k => $v) {
                    //     $edit[$key][]=array(
                    //         $k=>$v,
                    //         'selected'=>(isset($role_permissions) && ($role_permissions[$i]->{$key}->edit==$k))?'selected':''
                    //     );
                    // }

                    // foreach ($value['delete'] as $k => $v) {
                    //     $delete[$key][]=array(
                    //         $k=>$v,
                    //         'selected'=>(isset($role_permissions) && ($role_permissions[$i]->{$key}->delete==$k))?'selected':''
                    //     );
                    // }

                    // foreach ($value['view'] as $k => $v) {
                    //     $view[$key][]=array(
                    //         $k=>$v,
                    //         'selected'=>(isset($role_permissions) && ($role_permissions[$i]->{$key}->view==$k))?'selected':''
                    //     );
                    // }

                    $permission_array[]=array(
                        'name'=>$value['name'],
                        'name_value'=>$key,
                        'access'=>$access[$key]
                    );

                    $i++;
                }

                //print_obj($permission_array);die;

                $this->data['role_data']=$role_data;
                $this->data['role_permissions']=$role_permissions;
                $this->data['permission_data']=$permission_array;     

                $view='roles/vw_roles_add_edit';
            

            $this->theme->title($this->data['page_title'])->load($view, $this->data);
                
        }else{

            redirect($this->data['base_url']);
        }
    }


    public function onAddEditRolesPermissions(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                if($this->hrms_access=='yes'){

                    $role_id=post_data('_role_id');
                    $role_name=post_data('hrm_role_name');
                    $role_display_name=post_data('hrm_role_display_name');
                    $hrm_role_status=post_data('hrm_role_status');
                    $role_permission_module=$this->input->post('hrm_role_permission_name');
                    
                    $role_permissions=$this->input->post('hrm_role_permissions');





                    foreach ($role_permission_module as $key => $value) {

                        foreach ($role_permissions[$value] as $k => $v) {
                            $perm_values[$value][$k]=$v;
                        }

                        $permissions[]=array(
                            $value=>$perm_values[$value]
                        );
                    }

                    $roles_data=array(
                        'role_name'=>$role_name,
                        'role_display_name'=>$role_display_name,
                        'role_inst_id'=>$this->inst_id,
                        'role_inst_type'=>$this->inst_type,
                        'role_status'=>$hrm_role_status,
                        'role_permissions'=>json_encode($permissions)
                    );

                    if(empty($role_id)){
                        $get_role=$this->hrmrm->get_role(array('role_name'=>$role_name,'role_inst_id'=>$this->inst_id,'role_inst_type'=>$this->inst_type));

                        if(empty($get_role)){
                            $added=$this->hrmrm->store_role($roles_data);
                            if($added){
                                $return['success']='Role & Permissions added successfully';
                            }else{
                                $return['error']='Role & Permissions not added.';
                            }
                        }else{
                            $return['error']='Role already exists';
                        }
                    }else{
                        $role_id=decode_data($role_id);

                        $get_role=$this->hrmrm->get_role(array('role_inst_id'=>$this->inst_id,'role_inst_type'=>$this->inst_type,'role_id'=>$role_id));

                        if(!empty($get_role)){
                            $_get_role=$this->hrmrm->get_role(array('role_name'=>$role_name,'role_inst_id'=>$this->inst_id,'role_inst_type'=>$this->inst_type,'role_id!='=>$role_id));

                            if(empty($_get_role)){
                                if(is_numeric($role_id)){
                                    $updated=$this->hrmrm->update_role($roles_data,array('role_id'=>$role_id));
                                    if($updated){
                                        $return['success']='Role & Permissions updated successfully';
                                    }else{
                                        $return['error']='Role & Permissions not updated.';
                                    }
                                }else{
                                    $return['error']='Data not found to edit';
                                }
                            }else{
                                $return['error']='Role already exists 1';
                            }
                        }else{
                            $return['error']='Role already exists 2';
                        }
                    }
                }else{
                    $return['error']='Permission denied';
                }

                json_headers($return);

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }


    public function onSearchRolesList(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                
                    $param['column_order'] = array(
                        null,
                        'role_name',
                        'role_display_name'
                    );

                    $param['role_inst_id']=$this->inst_id;
                    $param['role_inst_type']=$this->inst_type;

                    $param['column_search'] = array('role_name','role_display_name');
                    $param['order'] = array('role_id' => 'ASC');
                    $posts=$this->input->post();

                    $list = $this->rm->_get_roles($posts,$param,FALSE,FALSE);

                    $data = array();
                    $no = isset($posts['start'])?$posts['start']:0;

                    $action='';

                    foreach ($list as $role){
                        $no++;

                        $row = array();

                        $row[]  =   $no;
                        $row[]  =   $role->role_name;
                        $row[]  =   $role->role_display_name;

                        if($role->role_status=='active'){
                            $status='<span class="badge badge-sm badge-success">Active</span>';
                        }else if($role->role_status=='inactive'){
                            $status='<span class="badge badge-sm badge-danger">Inactive</span>';
                        }

                        $row[]  =   $status;
                        
                        $row[]  =   '<a class="btn btn-xs btn-dark" href="'.$this->data['base_url'].'/roles/add/'.encode_data($role->role_id).'"><i class="fa fa-pencil"></i></a>
                            <button type="button" class="btn btn-xs btn-danger btn_delete_canteen_vendor" data-role_id="'.encode_data($role->role_id).'"><i class="fa fa-trash"></i></button>';

                        $data[] = $row; 
                    }

                    $output = array(
                        "draw" => isset($posts['draw'])?$posts['draw']:'',
                        "recordsTotal" => $this->rm->_get_roles($posts,$param,TRUE),
                        "recordsFiltered" => $this->rm->_get_roles($posts,$param,TRUE),
                        "data" => $data,
                    );
                                   
                
                echo json_encode($output);

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }



    /*****Users Access*****/


    public function indexRoleAccessAddEdit($emp_id){
        if(session_userdata('isAdminLoggedin')){

            $this->data['page_title']='User Access Permissions';

             if($this->hrms_access=='yes'){

                if(!empty($emp_id)){

                    $this->data['emp_id']=$emp_id;

                    $permissions=array();
                    $user_permissions=array();

                    $emp_id=decode_data($emp_id);

                    $employee_data=$this->em->get_employee(array('emp_id'=>$emp_id));

                    $employee_access_data=$this->um->_get_user(array('user_id'=>$employee_data->emp_user_id));

                    if(!empty($employee_access_data->user_permissions)){
                        $user_permissions=json_decode($employee_access_data->user_permissions);
                    }

                    $get_role=$this->hrmrm->get_role(array('role_id'=>$employee_data->emp_role));

                    $roles_permissions=json_decode($get_role->role_permissions);

                    $user_access_permissions=$this->config->item('action_permissions_array');

                    //print_obj($roles_permissions);die;

                    foreach ($roles_permissions as $key => $value) {
                        foreach ($value as $k => $v) {
                            if(!empty($user_access_permissions[$k])){
                               $permissions[$key]=$user_access_permissions[$k];
                            }                            
                        }                       
                    }
                }

                //print_obj($user_permissions);die;

                $this->data['permissions']=$permissions;
                $this->data['user_permissions']=(!empty($user_permissions))?$user_permissions[0]:null;

                    
                $view='hrm/roles/vw_roles_user_access_add_edit';

             }else{
                $view='hrm/vw_permission_denied';
             }

             $this->theme->title($this->data['page_title'])->load($view, $this->data);

        }else{
            redirect($this->data['base_url']);
        }
    }


    public function onAddEditUserAccess(){
        if(session_userdata('isAdminLoggedin')==TRUE && session_userdata('admin_id')){
            if($this->input->is_ajax_request() && $this->input->server('REQUEST_METHOD')=='POST'){

                $_emp_id=post_data('_emp_id');
                $hrm_access_permissions=$this->input->post('hrm_access_permissions');

                if(!empty($_emp_id)){

                    $emp_id=decode_data($_emp_id);

                    $employee_data=$this->em->get_employee(array('emp_id'=>$emp_id));

                    $employee_user_id=$employee_data->emp_user_id;

                    $data_access=json_encode($hrm_access_permissions);

                    $updated=$this->um->update_users(array('user_permissions'=>$data_access),array('user_id'=>$employee_user_id));

                    if($updated){
                        $return['success']='Access updated';
                    }else{
                        $return['error']='Access not updated';
                    }

                }else{
                    $return['error']='Employee details not found';
                }

                json_headers($return);

            }else{
                redirect($this->data['base_url']);
            }
        }else{
            redirect($this->data['base_url']);
        }
    }

}

MMCT - 2023