load->library('table'); $this->table->set_template($this->template); $this->load->model('combo_model'); $this->load->model('Acl_Whitelist_model', 'acl_whitelist'); $this->load->model('Acl_Whitelist_Extra_model', 'acl_whitelist_extra'); // Load Pagination library $this->load->library('pagination'); $this->options_array = $this->acl_whitelist->getControllerAndMethod(); $this->viewData['class_method'] = $this->combo_model->getControllerCombo('class_method', $this->options_array, ''); $this->viewData['msg'] = null; // filter $controller = $this->getController(); $options_array = array_combine($controller, $controller); $options_array = array_merge($options_array, ['' => 'Select']); ksort($options_array); $this->viewData['card_class_filter'] = $this->combo_model->getControllerCombo('card_class_filter', $options_array, ''); $this->viewData['card_permission_level_filter'] = $this->combo_model->getPermissionLevel('card_permission_level_filter', ''); } private function getController() { $path = __DIR__; $controller = array(); $allFiles = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)); $phpFiles = new RegexIterator($allFiles, '/\.php$/'); foreach ($phpFiles as $phpFile) { $content = file_get_contents($phpFile->getRealPath()); $tokens = token_get_all($content); $namespace = ''; for ($index = 0; isset($tokens[$index]); $index++) { if (!isset($tokens[$index][0])) { continue; } if (T_CLASS === $tokens[$index][0]) { $index += 2; // Skip class keyword and whitespace $controller[] = $tokens[$index][1]; } } } sort($controller); return $controller; } protected function renderToolsPage($page_name, $data) { $this->load->view('admin/view_admin_header', $data); $this->load->view('acl_whitelist/' . $page_name, $data); $this->load->view('admin/view_admin_footer', $data); } public function index() { $this->renderToolsPage("view_acl_whitelist", $this->viewData); } private function setFormRuleCreate() { $this->form_validation->set_rules('class_method', 'Class and Method', 'required|callback_existsAclWhitelist'); $this->form_validation->set_rules('parameter_name', 'Parameter name', 'required|max_length[50]|callback_checkDuplicateAclWhiltelistExtra'); $this->form_validation->set_rules('parameter_value', 'Parameter value', 'required|max_length[50]'); } public function existsAclWhitelist() { $id = $this->input->post('class_method'); if (!$id) { $this->form_validation->set_message('existsAclWhitelist', 'Please enter an existing class and method'); return FALSE; } if (!$this->acl_whitelist->getRecordAclWhitelistById(['id' => $id])) { $this->form_validation->set_message('existsAclWhitelist', 'Please enter an existing class and method'); return FALSE; } else { return TRUE; } } public function checkDuplicateAclWhiltelistExtra() { if ($this->acl_whitelist_extra->getRecordAclWhiteListExtraByParamNameAndParamValueAndAclWhiteListID($this->getFormValue())) { $this->form_validation->set_message('checkDuplicateAclWhiltelistExtra', 'Oops !!! The value you entered is already in the list'); return FALSE; } else { return TRUE; } } private function getFormValue() { return [ 'bko_acl_whitelist_id' => $this->input->post('class_method'), 'parameter_name' => $this->input->post('parameter_name'), 'parameter_value' => $this->input->post('parameter_value') ]; } public function create() { $this->load->helper(array('form', 'url')); $this->load->database(); $this->load->library('form_validation'); $this->setFormRuleCreate(); $params = $this->getFormValue(); if ($this->form_validation->run() == false) { $this->viewData['class_method'] = $this->combo_model->getControllerCombo('class_method', $this->options_array, $params['bko_acl_whitelist_id']); $this->viewData = array_merge($this->viewData, $params); $this->viewData['msg'] = validation_errors(); $this->renderToolsPage('view_acl_whitelist', $this->viewData); return; } if (!$this->acl_whitelist_extra->insertAclWhitelistExtra($params)) { $this->viewData['msg'] = "Insert Failed"; } else { $this->viewData['msg'] = "Insert Succesful"; } $this->renderToolsPage('view_acl_whitelist', $this->viewData); } private function setFormRuleSearchForm() { $this->form_validation->set_rules( 'card_permission_level_filter', 'Permission Level', 'numeric' ); } public function loadRecord() { $rowno = $this->input->get('rowno'); parse_str($this->input->get('filters'), $filters); $filters = array_filter($filters, function($val) { return $val !== ''; }); $this->form_validation->set_data($filters); $this->setFormRuleSearchForm(); $errors = []; if ($this->form_validation->run() == false) { $errors = $this->form_validation->error_array(); } $filters = array_diff_key($filters, $errors); // Row per page $rowperpage = 10; $cur_page = $rowno; // Row position if($rowno != 0){ $rowno = ($rowno-1) * $rowperpage; } // All records count $allcount = $this->acl_whitelist->getrecordCount($filters); // Get records $users_record = $this->acl_whitelist->getData($rowno,$rowperpage,$filters); // Pagination Configuration $config['base_url'] = '/Acl_Whitelist/loadRecord'; $config['use_page_numbers'] = TRUE; $config['total_rows'] = $allcount; $config['per_page'] = $rowperpage; $config['cur_page'] = $cur_page; $config['full_tag_open'] = ""; $config['num_tag_open'] = '
  • '; $config['num_tag_close'] = '
  • '; $config['cur_tag_open'] = "
  • "; $config['cur_tag_close'] = "
  • "; $config['next_tag_open'] = "
  • "; $config['next_tagl_close'] = "
  • "; $config['prev_tag_open'] = "
  • "; $config['prev_tagl_close'] = "
  • "; $config['first_tag_open'] = "
  • "; $config['first_tagl_close'] = "
  • "; $config['last_tag_open'] = "
  • "; $config['last_tagl_close'] = "
  • "; // Initialize $this->pagination->initialize($config); // Initialize $data Array $data['pagination'] = $this->pagination->create_links(); $data['result'] = $users_record; $data['row'] = $rowno; echo json_encode($data); } private function setFormRuleUpdate() { $this->form_validation->set_rules('id', 'White list Extra', 'required|callback_existsAclWhitelistExtra'); $this->form_validation->set_rules('parameter_name', 'Parameter name', 'required|max_length[50]|callback_checkDuplicateAclWhiltelistExtra'); $this->form_validation->set_rules('parameter_value', 'Parameter value', 'required|max_length[50]'); } public function existsAclWhitelistExtra($id) { if (!$id || !is_numeric($id)) { $this->form_validation->set_message('existsAclWhitelistExtra', 'Please enter an existing white list extra'); return FALSE; } if (!$this->acl_whitelist_extra->getRecordAclWhitelistExtraByID(['id' => $id])) { $this->form_validation->set_message('existsAclWhitelistExtra', 'Please enter an existing white list extra'); return FALSE; } else { return TRUE; } } public function update($id) { $this->load->helper(array('form', 'url')); $this->load->database(); $this->load->library('form_validation'); $params = $this->getFormValue(); $params = array_merge($params, ['id' => $id]); $this->form_validation->set_data($params); $this->setFormRuleUpdate(); if ($this->form_validation->run() == false) { $this->viewData['class_method'] = $this->combo_model->getControllerCombo('class_method', $this->options_array, $params['bko_acl_whitelist_id']); $this->viewData = array_merge($this->viewData, $params); $this->viewData['msg'] = validation_errors(); $this->renderToolsPage('view_acl_whitelist', $this->viewData); return; } $result = $this->acl_whitelist_extra->updateAclWhitelistExtra($params); $this->viewData['msg'] = $result === 0 ? "Update Failed" : "Update Succesful"; $this->renderToolsPage('view_acl_whitelist', $this->viewData); } private function setFormRuleDelete() { $this->form_validation->set_rules('id', 'White list Extra', 'required|callback_existsAclWhitelistExtra'); } public function destroy($id) { $this->load->helper(array('form', 'url')); $this->load->database(); $this->load->library('form_validation'); $params = $this->getFormValue(); $this->form_validation->set_data(['id' => $id]); $this->setFormRuleDelete(); if ($this->form_validation->run() == false) { $this->viewData['class_method'] = $this->combo_model->getControllerCombo('class_method', $this->options_array, $params['bko_acl_whitelist_id']); $this->viewData = array_merge($this->viewData, $params); $this->viewData['msg'] = validation_errors(); $this->renderToolsPage('view_acl_whitelist', $this->viewData); return; } $result = $this->acl_whitelist_extra->deleteAclWhitelistExtra($id); $this->viewData['msg'] = $result === 0 ? "Delete Failed" : "Delete Successful"; $this->renderToolsPage('view_acl_whitelist', $this->viewData); } }