https://t.me/RX1948
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/symphony-solusi.co.id/public_html/application/controllers/admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/symphony-solusi.co.id/public_html/application/controllers/admin/Menus.php
<?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()
    {
        $this->db->select('*');
        $this->db->from('configuration');
        $data['config'] = $this->db->get()->result();

        foreach ($data['config'] as $item) {
            $this->data_header['image'] = $item->logo;
            $this->data_header['icon'] = $item->website_icon;
        }
        //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->db->select('*');
        $this->db->from('configuration');
        $data['config'] = $this->db->get()->result();

        foreach ($data['config'] as $item) {
            $this->data_header['image'] = $item->logo;
            $this->data_header['icon'] = $item->website_icon;
        }
        $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);

        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->db->select('*');
        $this->db->from('configuration');
        $data['config'] = $this->db->get()->result();

        foreach ($data['config'] as $item) {
            $this->data_header['image'] = $item->logo;
            $this->data_header['icon'] = $item->website_icon;
        }
        $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 'category':

                //get all parent categories
                $this->db->select('*')->from('categories')->where('status', 1)->where('parent', NULL)->order_by('id_categories', 'ASC');
                $data['categories'] = $this->db->get()->result();

                if ($current_menu_id == NULL) {
                    $data['current_category_id'] = NULL;
                } else {
                    //get current active category_id
                    $this->db->select('category_id, menu_link')->from('menus')->where(
                        'id_menus',
                        (int) $current_menu_id
                    );
                    $category_id = $this->db->get()->row();

                    if ($category_id->category_id == NULL) {

                        if ($category_id->menu_link == 'category/all-categories') {
                            $data['current_category_id'] = 'all';
                        } elseif ($category_id->menu_link == 'new_arrivals') {
                            $data['current_category_id'] = 'new';
                        } elseif ($category_id->menu_link == 'sale') {
                            $data['current_category_id'] = 'sale';
                        } elseif ($category_id->menu_link == 'bestseller') {
                            $data['current_category_id'] = 'bestseller';
                        }
                    } else {
                        $data['current_category_id'] = $category_id->category_id;
                    }
                }
                $this->load->view('admin/menus/ajax_get_category', $data);

                break;

            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)->where('parent', NULL)->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 'sap':

                //get all pages
                $this->db->select('*')->from('sap_pages')->where('status', 1)->order_by('priority', 'ASC');
                $data['sap'] = $this->db->get()->result();

                if ($current_menu_id == NULL) {

                    $data['current_sap_id'] = NULL;
                } else {

                    //get current active page_id
                    $this->db->select('sap_page_id')->from('menus')->where(
                        'id_menus',
                        (int) $current_menu_id
                    );
                    $data['current_sap_id'] = $this->db->get()->row()->sap_page_id;
                }

                $this->load->view('admin/menus/ajax_get_sap_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['project'])) {

            $config[] = array(
                'field'   => 'project',
                'label'   => 'project',
                'rules'   => 'trim|required'
            );
        }

        if (isset($post_data['page'])) {

            $config[] = array(
                'field'   => 'page',
                'label'   => 'page',
                'rules'   => 'trim|required'
            );
        }

        if (isset($post_data['sap'])) {

            $config[] = array(
                'field'   => 'sap',
                'label'   => 'sap',
                '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 == 'category') {

            if ($post_data['category'] == 'all') {

                $data['menu_link'] = 'category/all-categories';
                $data['menu_link_en'] = 'category/all-categories';
                $data['category_id'] = NULL;
                $data['brand_id'] = NULL;
                $data['page_id'] = NULL;
            } elseif ($post_data['category'] == 'new') {

                $data['menu_link'] = 'new_arrivals';
                $data['menu_link_en'] = 'new_arrivals';
                $data['category_id'] = NULL;
                $data['brand_id'] = NULL;
                $data['page_id'] = NULL;
            } elseif ($post_data['category'] == 'sale') {

                $data['menu_link'] = 'sale';
                $data['menu_link_en'] = 'sale';
                $data['category_id'] = NULL;
                $data['brand_id'] = NULL;
                $data['page_id'] = NULL;
            } elseif ($post_data['category'] == 'bestseller') {

                $data['menu_link'] = 'bestseller';
                $data['menu_link_en'] = 'bestseller';
                $data['category_id'] = NULL;
                $data['brand_id'] = NULL;
                $data['page_id'] = NULL;
            } else {

                //individual category item..
                $category_id = (int) $post_data['category'];
                $this->db->select('parent')->from('categories')->where('id_categories', $category_id);
                $parent_id = $this->db->get()->row()->parent;

                //check parent_id
                if ($parent_id === NULL) {

                    //this category is level 1 category	
                    $this->db->select('alias, alias_en')->from('categories')->where('id_categories', $category_id);
                    $aliases = $this->db->get()->row();
                    $data['menu_link'] = 'category/' . $aliases->alias;
                    $data['menu_link_en'] = 'category/' . $aliases->alias_en;
                } elseif ($parent_id !== NULL) {

                    $this->db->select('parent')->from('categories')->where('id_categories', $parent_id);
                    $parent2_id = $this->db->get()->row()->parent;

                    if ($parent2_id == NULL) {

                        //this is level 2 category..
                        //get level 1 alias
                        $this->db->select('alias, alias_en')->from('categories')->where('id_categories', $parent_id);
                        $aliases_level1 = $this->db->get()->row();
                        //get level 2 alias
                        $this->db->select('alias, alias_en')->from('categories')->where('id_categories', $category_id);
                        $aliases_level2 = $this->db->get()->row();

                        $data['menu_link'] = 'category/' . $aliases_level1->alias . '/' . $aliases_level2->alias;
                        $data['menu_link_en'] = 'category/' . $aliases_level1->alias_en . '/' . $aliases_level2->alias_en;
                    } else {

                        //this is level 3 category..
                        //get level 3 alias
                        $this->db->select('alias, alias_en')->from('categories')->where('id_categories', $category_id);
                        $aliases_level3 = $this->db->get()->row();

                        //get level 2 alias
                        $this->db->select('alias, alias_en')->from('categories')->where('id_categories', $parent_id);
                        $aliases_level2 = $this->db->get()->row();

                        //get level 1 parent id
                        $this->db->select('parent')->from('categories')->where('id_categories', $parent_id);
                        $level1_id = $this->db->get()->row()->parent;

                        $this->db->select('alias, alias_en')->from('categories')->where('id_categories', $level1_id);
                        $aliases_level1 = $this->db->get()->row();

                        $data['menu_link'] = 'category/' . $aliases_level1->alias . '/' . $aliases_level2->alias . '/' . $aliases_level3->alias;
                        $data['menu_link_en'] = 'category/' . $aliases_level1->alias_en . '/' . $aliases_level2->alias_en . '/' . $aliases_level3->alias_en;
                    }
                }

                $data['category_id'] = $category_id;
                $data['brand_id'] = NULL;
                $data['page_id'] = NULL;
            }
        }

        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 == 'sap') {
            $sap_id = (int) $post_data['sap'];
            $this->db->select('alias,alias_en')->from('sap_pages')->where('id_sap_pages', $sap_id);
            $alias = $this->db->get()->row();
            $data['menu_link'] = 'sap/' . $alias->alias;
            $data['menu_link_en'] = 'sap/' . $alias->alias_en;
            $data['page_id'] = NULL;
            $data['category_id'] = NULL;
            $data['brand_id'] = NULL;
            $data['sap_page_id'] = $sap_id;
        }

        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/all';
            $data['menu_link_en'] = 'blog/all';
            $data['category_id'] = NULL;
            $data['brand_id'] = NULL;
            $data['page_id'] = NULL;
        }

        if ($menu_type == 'solution') {
            $data['menu_link'] = 'solution/all';
            $data['menu_link_en'] = 'solution/all';
            $data['category_id'] = NULL;
            $data['brand_id'] = NULL;
            $data['page_id'] = NULL;
        }

        if ($menu_type == 'story') {
            $data['menu_link'] = 'story/all';
            $data['menu_link_en'] = 'story/all';
            $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;
        }

        if ($menu_type == 'project') {
            $data['menu_link'] = 'project';
            $data['menu_link_en'] = 'project';
            $data['category_id'] = NULL;
            $data['brand_id'] = NULL;
            $data['page_id'] = NULL;
        }

        if ($menu_type == 'client') {
            $data['menu_link'] = 'client';
            $data['menu_link_en'] = 'client';
            $data['category_id'] = NULL;
            $data['brand_id'] = NULL;
            $data['page_id'] = NULL;
        }

        if ($menu_type == 'video') {
            $data['menu_link'] = 'video';
            $data['menu_link_en'] = 'video';
            $data['category_id'] = NULL;
            $data['brand_id'] = NULL;
            $data['page_id'] = NULL;
        }

        return $data;
    }
}

https://t.me/RX1948 - 2025