|
Server : Apache/2.4.18 (Ubuntu) System : Linux canvaswebdesign 3.13.0-71-generic #114-Ubuntu SMP Tue Dec 1 02:34:22 UTC 2015 x86_64 User : oppastar ( 1041) PHP Version : 7.0.33-0ubuntu0.16.04.15 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, Directory : /var/www/iatax.com.au/public_html/application/controllers/admin/ |
Upload File : |
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Menus extends Admin_Controller {
//this property is used for validating existing menu title on call back edit menu
private $menu_current_id = NULL;
function __construct() {
parent::__construct();
$this->load->model('menu_m');
}
//this is to list all menus
public function index() {
//pagination in action. 50 results per page
$this->load->library('pagination');
$config['base_url'] = base_url() . 'admin/menus/index';
$config['per_page'] = 50;
$config["uri_segment"] = 4;
//get parent menus only
$this->data['parent_menus'] = $this->menu_m->get_all_parent_menus($config["per_page"], $this->uri->segment($config['uri_segment']));
//fetch all menus
$config['total_rows'] = $this->menu_m->record_count();
$this->pagination->initialize($config);
$this->data['menus'] = $this->menu_m->get_all_menus($config["per_page"],
$this->uri->segment(4));
//load view
$this->data['subview'] = 'admin/menus/index';
$this->load->view('admin/templates/header', $this->data_header);
$this->load->view('admin/_layout_main', $this->data);
$this->load->view('admin/templates/footer');
}
//to add a new menu
public function add() {
$this->data['menus'] = $this->menu_m->get_new();
$this->data['parent_menus'] = $this->menu_m->get_parent_menus();
//get ordering number and display at add form
$this->db->select_max('priority')->from('menus');
$current_priority = $this->db->get()->row()->priority;
if($current_priority == NULL) {
$this->data['menus']->priority = 1;
} else {
$this->data['menus']->priority = $current_priority + 1;
}
//validation in action
//validation check in action
$rules = $this->menu_m->rules;
$config = $this->check_form_validation($rules, $_POST);
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<div class="error">', '</div>'); //above is to add class to form validation error, to be styled
$this->form_validation->set_rules($config);
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
if($this->form_validation->run($this) == TRUE) {
$data = $this->process_data($_POST);
$this->menu_m->add_menu($data);
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Menu Add Successful</p>');
redirect('admin/menus');
}
$this->data['subview'] = 'admin/menus/edit';
$this->load->view('admin/templates/header', $this->data_header);
$this->load->view('admin/_layout_main', $this->data);
$this->load->view('admin/templates/footer');
}
//to edit menu in admin
public function edit($id = NULL) {
//check if id exist. If not exist, show 404.
$count = $this->menu_m->count_exist($id);
if ($count == 0) {
//page not exist
show_404();
}
$this->menu_current_id = (int) $id;
$this->data['menus'] = $this->menu_m->get($id);
//validation check in action
$rules = $this->menu_m->rules;
$config = $this->check_form_validation($rules, $_POST);
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<div class="error">', '</div>'); //above is to add class to form validation error, to be styled
$this->form_validation->set_rules($config);
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
if($this->form_validation->run($this) == TRUE) {
$data = $this->process_data($_POST);
$this->menu_m->edit_menu($id, $data);
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">menu Edit Successful</p>');
redirect('admin/menus');
}
$this->data['parent_menus'] = $this->menu_m->get_parent_menus();
$this->data['subview'] = 'admin/menus/edit';
$this->load->view('admin/templates/header', $this->data_header);
$this->load->view('admin/_layout_main', $this->data);
$this->load->view('admin/templates/footer');
}
//to delete a menu
public function delete($id) {
//check if id exist. If not exist, show 404.
$count = $this->menu_m->count_exist($id);
if ($count == 0) {
//page not exist
show_404();
}
//delete menu
$this->menu_m->delete($id);
$this->session->set_flashdata('success', '<br><p style="background:green; color:white; padding:5px; font-weight:bold;">Menu Delete Successful</p>');
redirect('admin/menus');
}
public function ajax_get_menutype() {
$this->load->helper('form');
//test if ajax call to prevent direct access
if (!$this->input->is_ajax_request()) {
exit('No direct script access allowed');
}
$menu_type = $this->input->post('menu_type');
$current_menu_id = $this->input->post('current_menu_id');
switch ($menu_type) {
case 'brand':
//get all brands
$this->db->select('*')->from('brands')->where('status', 1)->order_by('id_brands', 'ASC');
$data['brands'] = $this->db->get()->result();
if ($current_menu_id == NULL) {
$data['current_brand_id'] = NULL;
} else {
//get current active brand_id
$this->db->select('brand_id, menu_link')->from('menus')->where('id_menus', (int) $current_menu_id);
$brand_id = $this->db->get()->row();
if ($brand_id->brand_id == NULL) {
if ($brand_id->menu_link == 'brand/all') {
$data['current_brand_id'] = 'all';
}
} else {
$data['current_brand_id'] = $brand_id->brand_id;
}
}
$this->load->view('admin/menus/ajax_get_brands', $data);
break;
case 'page':
//get all pages
$this->db->select('*')->from('pages')->where('status', 1)->order_by('id_pages', 'ASC');
$data['pages'] = $this->db->get()->result();
if ($current_menu_id == NULL) {
$data['current_page_id'] = NULL;
} else {
//get current active page_id
$this->db->select('page_id')->from('menus')->where('id_menus',
(int) $current_menu_id);
$data['current_page_id'] = $this->db->get()->row()->page_id;
}
$this->load->view('admin/menus/ajax_get_pages', $data);
break;
case 'external':
if ($current_menu_id == NULL) {
$this->load->view('admin/menus/ajax_get_external');
} else {
//get current external link
$this->db->select('menu_link')->from('menus')->where('id_menus',
(int) $current_menu_id);
$data['current_external_link'] = $this->db->get()->row();
$this->load->view('admin/menus/ajax_get_external', $data);
}
break;
}
}
//callback function validation add new menu
public function _cek_existing_menu_title($str) {
$num_rows = $this->menu_m->cek_existing_menu_title($str, $this->menu_current_id);
if ($num_rows != 0 ) {
$this->form_validation->set_message('_cek_existing_menu_title', 'Menu name Indonesian already exist !');
return FALSE;
} else {
return TRUE;
}
}
//callback function validation add new menu english
public function _cek_existing_menu_en_title($str) {
$num_rows = $this->menu_m->cek_existing_menu_en_title($str, $this->menu_current_id);
if ($num_rows != 0 ) {
$this->form_validation->set_message('_cek_existing_menu_en_title', 'Menu name English already exist !');
return FALSE;
} else {
return TRUE;
}
}
private function check_form_validation($config, $post_data) {
if (isset($post_data['category'])) {
$config[] = array(
'field' => 'category',
'label' => 'category',
'rules' => 'trim|required'
);
}
if (isset($post_data['brand'])) {
$config[] = array(
'field' => 'brand',
'label' => 'brand',
'rules' => 'trim|required'
);
}
if (isset($post_data['page'])) {
$config[] = array(
'field' => 'page',
'label' => 'page',
'rules' => 'trim|required'
);
}
if (isset($post_data['external_link'])) {
$config[] = array(
'field' => 'external_link',
'label' => 'External Link',
'rules' => 'trim|required'
);
}
return $config;
}
private function process_data($post_data) {
$menu_type = $post_data['menu_type'];
$data = array(
'menu' => $this->security->xss_clean($post_data['menu']),
'menu_en' => $this->security->xss_clean($post_data['menu_en']),
'alias' => url_title($this->security->xss_clean($post_data['menu'])),
'alias_en' => url_title($this->security->xss_clean($post_data['menu_en'])),
'menu_type' => $menu_type,
'status' => $post_data['status'],
'priority' => (int) $post_data['priority'],
);
if ($this->input->post('parent_id') == 'no-parent') {
$data['parent_id'] = NULL;
} else {
$data['parent_id'] = (int) $this->input->post('parent_id');
}
if ($menu_type == 'brand') {
if ($post_data['brand'] == 'all') {
$data['menu_link'] = 'brand/all';
$data['menu_link_en'] = 'brand/all';
$data['category_id'] = NULL;
$data['brand_id'] = NULL;
$data['page_id'] = NULL;
} else {
$brand_id = (int) $post_data['brand'];
$this->db->select('alias')->from('brands')->where('id_brands', $brand_id);
$brand_alias = $this->db->get()->row();
$data['menu_link'] = 'brand/' . $brand_alias->alias;
$data['menu_link_en'] = 'brand/' . $brand_alias->alias;
$data['brand_id'] = $brand_id;
$data['category_id'] = NULL;
$data['page_id'] = NULL;
}
}
if ($menu_type == 'page') {
$page_id = (int) $post_data['page'];
$this->db->select('alias, alias_en')->from('pages')->where('id_pages', $page_id);
$page_alias = $this->db->get()->row();
$data['menu_link'] = 'page/' . $page_alias->alias;
$data['menu_link_en'] = 'page/' . $page_alias->alias_en;
$data['page_id'] = $page_id;
$data['category_id'] = NULL;
$data['brand_id'] = NULL;
}
if ($menu_type == 'management') {
// $page_id = (int) $post_data['management'];
$data['menu_link'] = 'management';
$data['menu_link_en'] = 'management';
$data['page_id'] = NULL;
$data['category_id'] = NULL;
$data['brand_id'] = NULL;
}
if ($menu_type == 'product') {
$page_id = (int) $post_data['product'];
$data['menu_link'] = 'product';
$data['menu_link_en'] = 'product';
$data['page_id'] = NULL;
$data['category_id'] = NULL;
$data['brand_id'] = NULL;
}
if ($menu_type == 'services') {
$page_id = (int) $post_data['services'];
$data['menu_link'] = 'services';
$data['menu_link_en'] = 'services';
$data['page_id'] = NULL;
$data['category_id'] = NULL;
$data['brand_id'] = NULL;
}
if ($menu_type == 'clients') {
// $page_id = (int) $post_data['clients'];
$data['menu_link'] = 'clients';
$data['menu_link_en'] = 'clients';
$data['page_id'] = NULL;
$data['category_id'] = NULL;
$data['brand_id'] = NULL;
}
if ($menu_type == 'reports') {
// $page_id = (int) $post_data['reports'];
$data['menu_link'] = 'reports';
$data['menu_link_en'] = 'reports';
$data['page_id'] = NULL;
$data['category_id'] = NULL;
$data['brand_id'] = NULL;
}
if ($menu_type == 'careers') {
// $page_id = (int) $post_data['careers'];
$data['menu_link'] = 'careers';
$data['menu_link_en'] = 'careers';
$data['page_id'] = NULL;
$data['category_id'] = NULL;
$data['brand_id'] = NULL;
}
if ($menu_type == 'external') {
$data['menu_link'] = $this->security->xss_clean($post_data['external_link']);
$data['menu_link_en'] = $this->security->xss_clean($post_data['external_link']);
$data['category_id'] = NULL;
$data['brand_id'] = NULL;
$data['page_id'] = NULL;
}
if ($menu_type == 'homepage') {
$data['menu_link'] = '';
$data['menu_link_en'] = '';
$data['category_id'] = NULL;
$data['brand_id'] = NULL;
$data['page_id'] = NULL;
}
if ($menu_type == 'blog') {
$data['menu_link'] = 'blog';
$data['menu_link_en'] = 'blog';
$data['category_id'] = NULL;
$data['brand_id'] = NULL;
$data['page_id'] = NULL;
}
if ($menu_type == 'contact') {
$data['menu_link'] = 'contact';
$data['menu_link_en'] = 'contact';
$data['category_id'] = NULL;
$data['brand_id'] = NULL;
$data['page_id'] = NULL;
}
return $data;
}
}