File: //home/cafsindia/hrms_allyindian_com/application_bk/controllers/Employee_permission.php
<?php if ( ! defined('BASEPATH')) exit('No direct script is allowed');
require_once("Action_controller.php");
class Employee_permission extends Action_controller{
public function __construct(){
parent::__construct('employee_permission');
if(!$this->Appconfig->isAppvalid()){
redirect('config');
}
}
// LOAD PAGE WITH TABLE DATA
public function index(){
$data['encKey'] = $this->generateKey();
$data['table_head'] = json_decode(json_encode(array(array('label_name'=>'role_name','view_name'=>'Category','field_type'=>1))));
$this->load->view("$this->control_name/manage",$data);
}
//LOAD MODEL PAGE VIEW WITH DATA
public function view($form_view_id=-1){
if($form_view_id !== -1){
//Decrypt prime id from URL
$decRslt = $this->cryptoDecrypt(base64_decode(urldecode($form_view_id)));
$form_view_id = $decRslt['prime_id'];
if(!$form_view_id){
echo json_encode(array('success' => false,'message' => 'Url Expired.. Please refresh the page and try again....','table_data' => ""));
exit(0);
}
}
$role_info[""] = "---- Rights For ----";
$role_data = $this->get_role();
foreach($role_data as $row){
$role_info[$this->xss_clean($row['prime_user_role_id'])] = $this->xss_clean($row['role_name']);
}
$data['role_info'] = $role_info;
$permissin_info = array();
$permision_data = $this->get_permision_data();
foreach($permision_data as $row){
$permissin_info[$row['role']] = $row['permission_id'];
}
$data['permissin_info'] = $permissin_info;
/*============ BSK EMPLOYEE CUSTOME BLOCK ============*/
$arr = array();
foreach($this->Module->get_all_modules($this->control_name) as $module){
$module->module_id = $this->xss_clean($module->module_id);
$module->grant = $this->xss_clean($this->Module->has_grant($this->control_name,$module->module_id, $form_view_id));
$module->access = $this->xss_clean($this->Module->has_access($this->control_name,$module->module_id, $form_view_id));
//$modules[] = $module;
$menu = str_replace(" ","_",strtolower($module->menu_name)); //."_".$module->menu_id
$submenu = str_replace(" ","_",strtolower($module->sub_menu_name));
if(!$submenu){
$submenu = "sub_".$menu;
}
$arr[$menu][$submenu][] = $module;
}
$data['all_modules'] = $arr;
$data['role_id'] = $form_view_id;
$data['encKey'] = $this->generateKey();
/*============ UDY EMPLOYEE CUSTOME BLOCK ============*/
$this->load->view("$this->control_name/form",$data);
}
public function get_role(){
$this->db->from('user_role');
$this->db->where('trans_status',1);
$this->db->order_by('prime_user_role_id', 'asc');
return $this->db->get()->result_array();
}
public function get_permision_data(){
$this->db->from('employee_permission');
$this->db->order_by('prime_employee_permission_id', 'asc');
return $this->db->get()->result_array();
}
//LOAD PAGE TABLE VIEW WITH DATA BASED ON SEARCH FILTERS
public function search(){
$dec_data = $this->cryptoDecrypt($_POST['Payload']);
$_POST = $dec_data['data'];
if(!$_POST){
echo json_encode(array('success' => false,'message' => 'Url Expired.. Please refresh the page and try again....'));
exit(0);
}
$draw = $this->input->post('draw');
$start = $this->input->post('start');
$per_page = $this->input->post('length');
$order = $this->input->post('order');
$order_col = $this->input->post('columns');
$search = $this->input->post('search');
$column = $order[0]['column'];
$order_sor = $order[0]['dir'];
$order_col = $order_col[$column]['data'];
$search = trim($search['value']);
$search_query = str_replace("@SELECT@",$this->select_query."role",$this->base_query);
//ADDED BASIC,FILTER,COMMON QUERY HERE
$role_condition = "";
if($this->role_condition){
$role_condition = $this->role_condition;
}
$fliter_query = "";
foreach($this->fliter_list as $fliter){
$label_id = $fliter['label_id'];
$label_name = $fliter['label_name'];
$field_isdefault = (int)$fliter['field_isdefault'];
$array_list = $fliter['array_list'];
$field_type = (int)$fliter['field_type'];
if($field_isdefault === 1){
$column_name = $this->prime_table .".$label_id";
$search_val = $this->input->post("$label_id");
if($search_val){
if($field_type === 4){
$search_val = date('Y-m-d',strtotime($search_val));
$fliter_query .= " and $column_name = '$search_val'";
}else
if(($field_type === 5) || ($field_type === 7)){
$search_val = trim(implode(",",$search_val));
$fliter_query .= " and $column_name in ($search_val)";
}else
if($field_type === 13){
$search_val = date('Y-m-d H:i:s',strtotime($search_val));
$fliter_query .= " and $column_name = '$search_val'";
}else{
$fliter_query .= " and $column_name LIKE '$search_val%'";
}
}
}
}
$common_search = "";
if($search){
$common_search = ' AND role_name LIKE ("%'.$search.'%") ';
}
$search_query = "select cw_employee_permission.role,role_name from cw_employee_permission inner join cw_user_role on cw_user_role.prime_user_role_id = cw_employee_permission.role where $this->prime_table.trans_status = 1 $role_condition $fliter_query $common_search group by cw_employee_permission.role";
$search_query .= " ORDER BY $order_col $order_sor";
if((int)$per_page !== -1){
$search_query .= " LIMIT $start,$per_page";
}
$search_data = $this->db->query($search_query);
$search_result = $search_data->result();
//echo "search_query :: \n$search_query\n";
$total_count = count($search_result ?? []);
echo json_encode(array("draw" => intval($draw),"recordsTotal" => $total_count,"recordsFiltered" => $total_count,"data" => $search_result));
}
//SAVE MODEL DATA TO DATA BASE
public function save(){
$encString = file_get_contents('php://input');
$_POST = $this->cryptoDecrypt($encString);
if(!$_POST){
echo json_encode(array('success' => false,'message' => 'Url Expired.. Please refresh the page and try again....','table_data' => ""));
exit(0);
}
$previous_pick_value= $this->input->post("previous_pick_value");
$previous_data = json_decode($previous_pick_value, true);
$access_data = $this->input->post('access') != NULL ? $this->input->post('access') : array();
$grants_data = $this->input->post('grants') != NULL ? $this->input->post('grants') : array();
$role = $this->input->post('role');
$update_for_all_employees = $this->input->post('update_for_all_employees');
if(!$update_for_all_employees){
$update_for_all_employees = 0;
}
if((int)$update_for_all_employees === 1){
//Update Grants for Other Roles except Candidate Role
$query = 'SELECT GROUP_CONCAT(prime_employees_id) as ids from cw_employees where cw_employees.user_right = "'.$this->input->post('role').'"';
$ids_info = $this->db->query("CALL sp_a_run ('SELECT','$query')");
$ids_result = $ids_info->result();
$ids_info->next_result();
$ids = explode(',',$ids_result[0]->ids);
$insert_values = "";
foreach ($ids as $logged_id) {
$success = $this->db->delete('grants', array('prime_employees_id' => $logged_id));
if($success){
foreach($grants_data as $permission_id){
$add = 0;
if (in_array("$permission_id::add", $access_data)){
$add = 1;
}
$update = 0;
if (in_array("$permission_id::update", $access_data)){
$update = 1;
}
$delete = 0;
if (in_array("$permission_id::delete", $access_data)){
$delete = 1;
}
$search = 0;
if (in_array("$permission_id::search", $access_data)){
$search = 1;
}
$export = 0;
if (in_array("$permission_id::export", $access_data)){
$export = 1;
}
$import = 0;
if (in_array("$permission_id::import", $access_data)){
$import = 1;
}
$this->db->select('menu_id,sub_menu_id');
$this->db->from('modules');
$this->db->where('module_id', $permission_id);
$menu_data = $this->db->get()->row();
$menu_id = $menu_data->menu_id;
$sub_menu_id = $menu_data->sub_menu_id;
$insert_values .= "(\"$permission_id\",\"$logged_id\",\"$menu_id\",\"$sub_menu_id\",\"$add\",\"$update\",\"$delete\",\"$search\",\"$export\",\"$import\"),";
}
}
}
if(!empty($insert_values)){
$insert_values = rtrim($insert_values,",");
$insert_query = "INSERT INTO cw_grants (`permission_id`, `prime_employees_id`, `grants_menu_id`, `grants_sub_menu_id`, `access_add`, `access_update`, `access_delete`, `access_search`, `access_export`, `access_import`) VALUES $insert_values";
$this->db->query("$insert_query");
}else{
echo json_encode(array('success' => false, 'message' => "Please Choose The Permission"));
exit;
}
}
$delete_success = $this->db->delete('employee_permission', array('role' => $this->input->post('role')));
if($delete_success){
foreach($grants_data as $permission_id){
$add = 0;
if (in_array("$permission_id::add", $access_data)){
$add = 1;
}
$update = 0;
if (in_array("$permission_id::update", $access_data)){
$update = 1;
}
$delete = 0;
if (in_array("$permission_id::delete", $access_data)){
$delete = 1;
}
$search = 0;
if (in_array("$permission_id::search", $access_data)){
$search = 1;
}
$export = 0;
if (in_array("$permission_id::export", $access_data)){
$export = 1;
}
$import = 0;
if (in_array("$permission_id::import", $access_data)){
$import = 1;
}
$this->db->select('menu_id,sub_menu_id');
$this->db->from('modules');
$this->db->where('module_id', $permission_id);
$menu_data = $this->db->get()->row();
$menu_id = $menu_data->menu_id;
$sub_menu_id = $menu_data->sub_menu_id;
$permission_values .= "(\"$permission_id\",\"$role\",\"$menu_id\",\"$sub_menu_id\",\"$add\",\"$update\",\"$delete\",\"$search\",\"$export\",\"$import\"),";
}
if(!empty($permission_values)){
$permission_values = rtrim($permission_values,",");
$insert_query = "INSERT INTO cw_employee_permission (`permission_id`, `role`, `grants_menu_id`, `grants_sub_menu_id`, `access_add`, `access_update`, `access_delete`, `access_search`, `access_export`, `access_import`) VALUES $permission_values";
$this->db->query("$insert_query");
}else{
echo json_encode(array('success' => false, 'message' => "Please Choose The Permission"));
exit;
}
echo json_encode(array('success' => TRUE, 'message' => "Successfully Updated"));
}
}
//UPDATE STATUS TO DELETE IN MODULE PRIMARY TABLE
public function delete(){
$delete_ids = implode(",",$this->xss_clean($this->input->post('ids')));
$created_on = date("Y-m-d h:i:s");
$prime_upd_query .= 'trans_deleted_by = "'. $this->logged_id .'",trans_deleted_date = "'.$created_on.'"';
$prime_update_query = 'UPDATE cw_employee_permission SET trans_status = 0,'. $prime_upd_query .' WHERE cw_employee_permission.role in ('. $delete_ids .')';
if($this->db->query("CALL sp_a_run ('UPDATE','$prime_update_query')")){
echo json_encode(array('success' => TRUE, 'message' => "Successfully Deleted"));
}else{
echo json_encode(array('success' => FALSE, 'message' => "Unable to delete"));
}
}
public function permission_role_exist($role){
$role_exist_qry = 'SELECT count(*) as role_count from cw_employee_permission where role = "'.$role.'" and trans_status = 1';
$role_exist_info = $this->db->query("CALL sp_a_run ('SELECT','$role_exist_qry')");
$role_exist_rslt = $role_exist_info->result();
$role_exist_info->next_result();
$role_count = $role_exist_rslt[0]->role_count;
return $role_count;
}
public function get_permission_list(){
$encString = file_get_contents('php://input');
$_POST = $this->cryptoDecrypt($encString);
if(!$_POST){
echo json_encode(array('success' => false,'message' => 'Url Expired.. Please refresh the page and try again....','table_data' => ""));
exit(0);
}
$role = $this->input->post('role');
/*============ BSK EMPLOYEE CUSTOME BLOCK ============*/
$role_exist = $this->permission_role_exist($role);
if((int)$role_exist > 0){
echo json_encode(array('success'=>FALSE,'message'=>'Role Already exist'));
exit(0);
}
$modules = array();
foreach($this->Module->get_all_modules('EMPLOYEE_PERMISSION') as $module){
$module->module_id = $this->xss_clean($module->module_id);
$module->grant = $this->xss_clean($this->Module->has_grant('employee_permission',$module->module_id, $role));
$module->access = $this->xss_clean($this->Module->has_access('employee_permission',$module->module_id, $role));
$modules[] = $module;
}
$menu_array = array();
$menu_data_array = array();
$submenu_data_array = array();
foreach($modules as $module){
$access_add = $module->access[0]['access_add'];
$access_update = $module->access[0]['access_update'];
$access_delete = $module->access[0]['access_delete'];
$access_search = $module->access[0]['access_search'];
$access_export = $module->access[0]['access_export'];
$access_import = $module->access[0]['access_import'];
$grants_menu_id = $module->access[0]['grants_menu_id'];
$grants_sub_menu_id = $module->access[0]['grants_sub_menu_id'];
$check_box_input = form_checkbox("grants[]", $module->module_id, $module->grant, "class='module_$module->module_id'");
$menu_input = form_checkbox("menu_id", $module->menu_id, $grants_menu_id,"id='".str_replace(" ","_",strtolower($module->menu_name))."'", "class='menu_id'");
$sub_menu_input = form_checkbox("sub_menu_id", $module->sub_menu_id, $grants_sub_menu_id,"id='".str_replace(" ","_",strtolower($module->sub_menu_name."_".$module->menu_id))."'", "class='sub_menu_id'");
$menu_name = $module->menu_name;
$sub_menu_name = $module->sub_menu_name;
$module_name = $module->module_name;
$add_id = $module->module_id ."::add";
$add_checkbox = form_checkbox(array("name" =>'access[]',"value" => $add_id, "class" =>'module_'.$module->module_id, "checked" => ($access_add) ? 1 : 0));
$update_id = $module->module_id ."::update";
$update_checkbox = form_checkbox(array("name" =>'access[]',"value" => $update_id, "class" =>'module_'.$module->module_id, "checked" => ($access_update) ? 1 : 0));
$delete_id = $module->module_id ."::delete";
$delete_checkbox = form_checkbox(array("name" =>'access[]',"value" => $delete_id, "class" =>'module_'.$module->module_id, "checked" => ($access_delete) ? 1 : 0));
$search_id = $module->module_id ."::search";
$search_checkbox = form_checkbox(array("name" =>'access[]',"value" => $search_id, "class" =>'module_'.$module->module_id, "checked" => ($access_search) ? 1 : 0));
$export_id = $module->module_id ."::export";
$export_checkbox = form_checkbox(array("name" =>'access[]',"value" => $export_id, "class" =>'module_'.$module->module_id, "checked" => ($access_export) ? 1 : 0));
$import_id = $module->module_id ."::import";
$import_checkbox = form_checkbox(array("name" =>'access[]',"value" => $import_id, "class" =>'module_'.$module->module_id, "checked" => ($access_import) ? 1 : 0));
$access_data = "<div style='padding:8px 15px;border-bottom:1px dashed #CCCCCC;margin-bottom:15px;background-color: #f2f2f2;'>
<label class='checkbox-inline'> $add_checkbox Add</label>
<label class='checkbox-inline'> $update_checkbox Update</label>
<label class='checkbox-inline'> $delete_checkbox Delete</label>
<label class='checkbox-inline'> $search_checkbox Search</label>
<label class='checkbox-inline'> $export_checkbox Export Data</label>
<label class='checkbox-inline'> $import_checkbox Import Data</label>
</div>";
$grand_data = "<label class='checkbox-inline' style='margin-bottom:6px;'>
$check_box_input <span class='prime_color'><b>$module_name :</b></span> Add, Update, Delete, and Search $module_name
</label>";
$menu_data = "<label class='checkbox-inline' style='margin-bottom:6px;'>
$menu_input <span style='color:#000000;Font-size:16px;'><b>$menu_name</b></span>
</label>";
$sub_menu_data = "<label class='checkbox-inline' style='margin-bottom:6px;'>
$sub_menu_input <span style='color:#4dc147;Font-size:14px;'><b>$sub_menu_name</b></span>
</label>";
if((int)$form_view->role === 1){
$sub_menu_name = str_replace(" ","_",strtolower($sub_menu_name."_".$module->menu_id));
$menu_array[$menu_name][$sub_menu_name][] = array("access_data"=>$access_data,"grand_data"=>$grand_data,"menu_data"=>$menu_data,'sub_menu_data'=>$sub_menu_data);
$menu_data_array[$menu_name] = $menu_data;
$submenu_data_array[$sub_menu_name] = $sub_menu_data;
}else{
$sub_menu_name = str_replace(" ","_",strtolower($sub_menu_name."_".$module->menu_id));
$admin_module = array("module_setting"=>true,"tester"=>true,"config"=>true);
if(!$admin_module[$module->module_id]){
$menu_array[$menu_name][$sub_menu_name][] = array("access_data"=>$access_data,"grand_data"=>$grand_data,"menu_data"=>$menu_data,'sub_menu_data'=>$sub_menu_data);
$menu_data_array[$menu_name] = $menu_data;
$submenu_data_array[$sub_menu_name] = $sub_menu_data;
}
}
}
$li_line = "";
foreach ($menu_array as $menu_name => $value) {
$menu = $menu_data_array[$menu_name];
$name = str_replace(" ","_",strtolower($menu_name));
$sub_line = "";
foreach ($value as $sub_menu_name => $data) {
$sub_menu = $submenu_data_array[$sub_menu_name];
$tr_line = "";
foreach ($data as $key => $tr_value) {
$grand_data = $tr_value['grand_data'];
$access_data = $tr_value['access_data'];
$menu_data = $tr_value['menu_data'];
$sub_menu_data = $tr_value['sub_menu_data'];
$tr_line .= "<li>
$menu_data
$sub_menu_data
$grand_data
$access_data
</li>";
}
$tr_line = "<ul id='ul_$sub_menu_name' style='display:none;'>$tr_line</ul>";
$sub_line .= "<li>
$sub_menu
$tr_line
</li>";
}
$sub_line = "<ul id='ul_$name' style='display:none;'>$sub_line</ul>";
$li_line .= "<li>
$menu
$sub_line
</li>";
}
echo json_encode(array('success'=>TRUE,'message'=>'','li_line'=>$li_line));
}
}
?>