File: //var/www/html/pmw24/pmw_live_testing/app/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';
//echo '<pre>';print_r($data);die;
$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');
}
}
}
}
}
}