HEX
Server: Apache/2.4.41 (Amazon) OpenSSL/1.0.2k-fips PHP/5.6.40
System: Linux ip-172-31-40-18 4.14.146-93.123.amzn1.x86_64 #1 SMP Tue Sep 24 00:45:23 UTC 2019 x86_64
User: apache (48)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: //var/www/html/pmw24/pmw_live_testing/OLD_Root_BAK/application/controllers/admin/Role.php
<?php 
defined('BASEPATH') OR exit('No direct script access allowed');

class Role extends MY_Controller {
	public function __construct() {
		parent::__construct();
		$this->redirect_guest();
		$this->admin=$this->session->userdata('admin');		
		$this->load->model('admin/mrole');
	}
	
	public function index() { 				
		$this->_load_list_view();		
	}
	
	private function _load_list_view() {
		$data['admin'] = $this->admin;
		$data['content'] = 'admin/role/list';		
		$this->load->view('admin/layouts/index', $data);
	}
	
	public function all_content_list(){
		$list = $this->mrole->get_datatables();		
		$data = array();
        $no = $_POST['start'];
		$i=1;
		foreach ($list as $person) {
			$row = array();	
			$row[]=$i;		
			$row[] = $person->role_name;     
			
			$admin = $this->admin;
			$CI =& get_instance();
			$CI->db->select('*');
			$CI->db->from('role_menu');	
			$CI->db->join('menu', 'menu.menu_id = role_menu.menu_id', 'left');
			$CI->db->where('role_id',$admin['role_id']);
			$CI->db->where('parent_id',8);					
			$query=$CI->db->get();
			$menus = $query->result_array();		
			
			$status_result = $this->searcharray('Status', menu_name, $menus);
			
			$edit_result = $this->searcharray('Edit', menu_name, $menus);
			
			if(!empty($status_result))
			{
				$row[] = ($person->status==1?'<a class="cstm_view_status btn btn-success" id="active" href="javascript:void(0)" data-title="'.$person->role_id.'"><span class="glyphicon glyphicon-ok"></span></a>':'<a class="cstm_view_status btn btn-danger" id="inactive" href="javascript:void(0)" data-title="'.$person->role_id.'"><span class="glyphicon glyphicon-remove"></span></a>');
			}			
			
			 if(!empty($edit_result)){				
				$row[] = '<a href="'.base_url('admin/role/details/'.$person->role_id).'" title="Edit" class="btn btn-info"><span class="glyphicon glyphicon-pencil"></span></a>';
			 }
            $data[] = $row;
			$i++;
        }
		
		$output = array(
                        "draw" => $_POST['draw'],
                        "recordsTotal" => $this->mrole->count_all(),
                        "recordsFiltered" => $this->mrole->count_filtered(),
                        "data" => $data,
                );
        echo json_encode($output);
	}

	public function all_content_list_inactive(){
		$list = $this->mrole->get_datatables(2);		
		$data = array();
        $no = $_POST['start'];
		$i=1;
		foreach ($list as $person) {
			$row = array();	
			$row[]=$i;		
			$row[] = $person->role_name;     
			
			$admin = $this->admin;
			$CI =& get_instance();
			$CI->db->select('*');
			$CI->db->from('role_menu');	
			$CI->db->join('menu', 'menu.menu_id = role_menu.menu_id', 'left');
			$CI->db->where('role_id',$admin['role_id']);
			$CI->db->where('parent_id',8);					
			$query=$CI->db->get();
			$menus = $query->result_array();		
			
			$status_result = $this->searcharray('Status', menu_name, $menus);
			
			$edit_result = $this->searcharray('Edit', menu_name, $menus);
			
			if(!empty($status_result))
			{
				$row[] = ($person->status==1?'<a class="cstm_view_status btn btn-success" id="active" href="javascript:void(0)" data-title="'.$person->role_id.'"><span class="glyphicon glyphicon-ok"></span></a>':'<a class="cstm_view_status btn btn-danger" id="inactive" href="javascript:void(0)" data-title="'.$person->role_id.'"><span class="glyphicon glyphicon-remove"></span></a>');
			}			
			
			 if(!empty($edit_result)){				
				$row[] = '<a href="'.base_url('admin/role/details/'.$person->role_id).'" title="Edit" class="btn btn-info"><span class="glyphicon glyphicon-pencil"></span></a>';
			 }
            $data[] = $row;
			$i++;
        }
		
		$output = array(
                        "draw" => $_POST['draw'],
                        "recordsTotal" => $this->mrole->count_all(),
                        "recordsFiltered" => $this->mrole->count_filtered(),
                        "data" => $data,
                );
        echo json_encode($output);
	}
	
	private function searcharray($value, $key, $array) {
	   foreach ($array as $k => $val) {
		   if ($val[$key] == $value) {
			   return $val;
		   }
	   }
	   return null;
	}
	
	public function active()
	{
		$condition['role_id']=$this->input->post('role_id');
		$udata['status'] = 1;
		$this->mrole->active($condition,$udata);
		$response=array('status'=>1,'message'=>'Success');		
		echo json_encode($response);
	}
	
	public function inactive()
	{
		$condition['role_id']=$this->input->post('role_id');
		$udata['status'] = 0;
		$this->mrole->active($condition,$udata);
		$response=array('status'=>1,'message'=>'Success');		
		echo json_encode($response);
	}
	
	public function add()
	{
		$this->_load_add_view();
	}
	
	private function _load_add_view(){	
		$condition = array('parent_id'=>0);
		$menus = $this->mrole->getRows('menu',$condition);
		$data['menus'] = $menus;
		foreach($menus as $key=>$menu)
		{
			$condition = array('parent_id'=>$menu['menu_id']);
			$sub_menus = $this->mrole->getRows('menu',$condition);
			$data['menus'][$key]['sub_menus'] = $sub_menus;
			
			foreach($sub_menus as $skey=>$sub_menu)
			{
				$condition = array('parent_id'=>$sub_menu['menu_id']);
				$sub_sub_menus = $this->mrole->getRows('menu',$condition);
				$data['menus'][$key]['sub_menus'][$skey]['sub_sub_menus'] = $sub_sub_menus;
			}
		}
		
		$data['content']='admin/role/add';
		$this->load->view('admin/layouts/index',$data);
	}
	
	public function add_content()
	{
		if($this->input->post()){
			$this->form_validation->set_rules('role_name','Role Name','required|is_unique[roles.role_name]');
			
			if($this->form_validation->run()==FALSE){
				$this->_load_add_view();
			}else{
				$data['role_name'] = $this->input->post('role_name');
				$data['status'] = 0;
				$data['date_of_creation'] = date('Y-m-d H:i:s');
				$role_id = $this->mrole->add($data);
				
				$menus = $this->input->post('menus');
				
				$menu_data = array();
				foreach($menus as $key=>$menu)
				{
					$menu_data[$key]['menu_id'] = $menu;
					$menu_data[$key]['role_id'] = $role_id;					
				}				
				
				$this->mrole->batch_insert('role_menu',$menu_data);
				
				$this->session->set_flashdata('success_msg','Role added successfully');
				redirect('admin/role/content');
			}	
			
		}
	}
	
	public function edit($role_id){
		$data['cms']=$this->mrole->get_details($role_id);
		if(empty($data['cms'])){
			$this->_load_list_view();
		}else{			
			$this->_load_details_view($data);
		}
	}
	
	private function _load_details_view($parms){
		$condition = array('parent_id'=>0);
		$menus = $this->mrole->getRows('menu',$condition);
		$data['menus'] = $menus;
		foreach($menus as $key=>$menu)
		{
			$condition = array('parent_id'=>$menu['menu_id']);
			$sub_menus = $this->mrole->getRows('menu',$condition);
			$data['menus'][$key]['sub_menus'] = $sub_menus;
			
			foreach($sub_menus as $skey=>$sub_menu)
			{
				$condition = array('parent_id'=>$sub_menu['menu_id']);
				$sub_sub_menus = $this->mrole->getRows('menu',$condition);
				$data['menus'][$key]['sub_menus'][$skey]['sub_sub_menus'] = $sub_sub_menus;
			}
		}
		
		$selected_menu_condition = array("role_id"=>$parms['cms']['role_id']);
		$selected_menus = $this->mrole->getRows('role_menu',$selected_menu_condition);	
		
		
		$new_array_selected_menu = array();
		foreach($selected_menus as $selected_menu)
		{
			$new_array_selected_menu[] = $selected_menu['menu_id'];
		}
		
		$data['selectedmenus'] = $new_array_selected_menu;

		
		
		$data['cms']=$parms['cms'];	
		$data['content'] = 'admin/role/detail';
		$this->load->view('admin/layouts/index', $data);
	}
	
	public function update(){
		if($this->input->post()){
			$role_id = $this->input->post('role_id');
			$this->form_validation->set_rules('role_name','Role Name','required');
			
			if($this->form_validation->run()==FALSE){
				$data['cms']=$this->mrole->get_details($role_id);
				$this->_load_details_view($data);
			}else{
				$role_name = $this->input->post('role_name');
				$condition = array("role_id"=>$role_id);
				$role = $this->mrole->getRow('roles',$condition);
				if($role['role_name'] == $role_name)
				{
					$udata['role_name'] = $role_name;
					$udata['date_of_update'] = date('Y-m-d H:i:s');
					
					$delete_condition = array('role_id'=>$role_id);
					$this->mrole->delete_menus($delete_condition);
					
					$menus = $this->input->post('menus');
				
					$menu_data = array();
					foreach($menus as $key=>$menu)
					{
						$menu_data[$key]['menu_id'] = $menu;
						$menu_data[$key]['role_id'] = $role_id;					
					}				
					
					$this->mrole->batch_insert('role_menu',$menu_data);
					
					$this->mrole->update($condition,$udata);					
					$this->session->set_flashdata('success_msg','Role updated successfully');
					redirect('admin/role');
				}else{
					$role_name = $this->input->post('role_name');
					$conditionRoleDetails = array("role_name"=>$role_name);
					$roleDetail = $this->mrole->getRow('roles',$conditionRoleDetails);
					if(empty($roleDetail))
					{
						$udata['role_name'] = $role_name;
						$udata['date_of_update'] = date('Y-m-d H:i:s');	

						$delete_condition = array('role_id'=>$role_id);
						$this->mrole->delete_menus($delete_condition);
						
						$menus = $this->input->post('menus');
					
						$menu_data = array();
						foreach($menus as $key=>$menu)
						{
							$menu_data[$key]['menu_id'] = $menu;
							$menu_data[$key]['role_id'] = $role_id;					
						}				
						
						$this->mrole->batch_insert('role_menu',$menu_data);

					
						$this->mrole->update($condition,$udata);						
						$this->session->set_flashdata('success_msg','Role updated successfully');
						redirect('admin/role');
					}else{
						$this->session->set_flashdata('error_msg','Role Already Exsits');
						redirect('admin/role');
					}
				}
			}				
		}
	}
}