MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //home/cafsindia/login_cafsindia_com/application/models/Module.php
<?php
class Module extends CI_Model{
	private $enckey     = 'vDIa5JdknBqfrKOu8d7UpddnBMCH1vza'; //32 characters
    function __construct(){
        parent::__construct();
    }

	public function get_module_name($module_id){
		$query = $this->db->get_where('modules', array('module_id' => $module_id), 1);
		if($query->num_rows() == 1){
			$row = $query->row();
			return $this->lang->line($row->name_lang_key);
		}
		return $this->lang->line('error_unknown');
	}
	
	public function get_allowed_modules($logged_id){
		$this->db->from('modules');
		$this->db->join('permissions', 'permissions.permission_id = modules.module_id');
		$this->db->join('grants', 'permissions.permission_id = grants.permission_id');
		$this->db->where('prime_employees_id', $logged_id);
		$this->db->order_by('sort', 'asc');
		return $this->db->get();	
	}

	public function get_header_menu($logged_id){
		$this->db->select('main_menu.menu_name,modules.module_id,module_name,sub_menu_name');
		$this->db->from('modules');
		$this->db->join('permissions', 'permissions.permission_id = modules.module_id');
		$this->db->join('grants', 'permissions.permission_id = grants.permission_id');
		$this->db->join('main_menu', 'main_menu.prime_menu_id = modules.menu_id');
		$this->db->join('sub_menu', 'cw_sub_menu.prime_sub_menu_id = modules.sub_menu_id','left');
		$this->db->where('prime_employees_id', $logged_id);
		$this->db->where('modules.trans_status',1);
		$this->db->where('modules.show_module',1);
		$this->db->where('main_menu.trans_status',1);
		$this->db->order_by('menu_sort,sort', 'asc');
		$query =  $this->db->get();
		return $query->result();
	}
	
	//GET REPORT DETAILS FOR ROLE BASED HEADER -- 13MARCH2019
	public function get_report_menu($logged_user){
		$logged_id   = $logged_user->prime_employees_id;
		$logged_role = $logged_user->prime_role_id;
		$this->db->select('prime_report_setting_id,report_name');
		$this->db->from('report_setting');
		$this->db->where('report_setting.trans_status',1);
		$this->db->where('FIND_IN_SET("'.$logged_role.'", report_for)');
		$this->db->order_by('prime_report_setting_id', 'asc');
		$query =  $this->db->get();
		return $query->result();
	}
	
	/* USED IN BOTH EMPLOYEE AND CUSTOMER MODULE - START*/
	public function get_all_modules($control_name){
		$this->db->from('modules');
		$this->db->join('cw_main_menu', 'cw_main_menu.prime_menu_id = modules.menu_id');
		$this->db->order_by('abs(menu_sort)', 'asc');
		$query =  $this->db->get();
		return $query->result();
	}
	
	public function has_grant($control_name,$permission_id, $logged_id){
		if($permission_id == null){
			return TRUE;
		}
		if(strtoupper($control_name) === "EMPLOYEES"){
			$query = $this->db->get_where('grants', array('prime_employees_id' => $logged_id, 'permission_id' => $permission_id), 1);			
		}else  
		if(strtoupper($control_name) === "EMPLOYEE_PERMISSION"){
			$query = $this->db->get_where('employee_permission', array('role' => $logged_id, 'permission_id' => $permission_id), 1);			
		}
		return((int)$query->num_rows() === 1);
	}
	public function has_access($control_name,$permission_id, $logged_id){
		$this->db->select('access_add,access_update,access_delete,access_search,access_export,access_import');
		if(strtoupper($control_name) === "EMPLOYEES"){
			$this->db->from('grants');
			$this->db->where('prime_employees_id', $logged_id);			
		}else  
		if(strtoupper($control_name) === "EMPLOYEE_PERMISSION"){
			$this->db->from('employee_permission');
			$this->db->where('role', $logged_id);			
		}
		$this->db->where('permission_id', $permission_id);
		return $this->db->get()->result_array();
	}
	function update_grants($control_name,$logged_id,$grants_data,$access_data){
		$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;
				}
				
				if(strtoupper($control_name) === "EMPLOYEES"){
					$this->db->insert('grants', array('permission_id' => $permission_id, 'prime_employees_id' => $logged_id, 'access_add' => $add, 'access_update' => $update, 'access_delete' => $delete, 'access_search' => $search, 'access_export' => $export, 'access_import' => $import));					
				}
			}
		}
	}
	/* USED IN BOTH EMPLOYEE AND CUSTOMER MODULE - END*/

	# TWO STAGES OF ENCRYPTION AND DECRYPTION BY [MS 08-11-2024] #
	
	public function cryptoEncrypt($data){
		try {
			// For Password Encryption
			$hash1     = hash('sha512', $data);
			$hash2     = hash('sha1', $hash1);
			$Hash3     = hash('haval160,4', $hash2); 
			$Hash4     = hash('haval160,5', $Hash3); 
			// Generate the HMAC hash
			$finalhash = hash_hmac('sha256', $Hash4, $this->enckey);		
			return $finalhash;
		} catch (Exception $e) {
			// Log the error or handle it as needed
			error_log("Encryption Error: " . $e->getMessage()); // Log the error for debugging
			return false;
		}
	}
}
?>