Файл: application/controllers/admin/Pages.php
Строк: 606
<?php
 
/**
 * Page controller class
 *
 * Displays the Pages created by administrators
 *
 * @package        ci_fullcalendar
 * @category    Controller
 * @author        sirdre
 * @link        /register
 */
 
class Pages extends CI_Controller {
    /*
     * Pages controller class constructor
     */
    function Pages() {
    parent::__construct();
    $this->load->model('Fullcalendar_admin_model','calendar');
    $this->load->model('gmaps_admin_model');     
    $this->load->model('Member_model');  
    $this->load->model('Page_model');
    
    $this->load->helper('string');
    $this->load->helper('date');    
    $this->load->helper('security');
    $this->load->helper('form');
    $this->load->helper('url');
    $this->load->helper('typography');
    
    $this->load->library('ion_auth');
    $this->load->library('Languages');
    $this->load->library('form_validation');
    // load all settings into an array
    $this->setting = $this->Setting_model->getEverySetting();
    }
    
     /*
     * index function
     *
     * display a custom page
     */
    function index() {
        
        // set the page language, site name, page title, meta keywords and meta description  
        $data['lang'] = $this->setting['site_language'];         
        
        $this->languages->get_lang($data['lang']);
        
        $data['site_name'] = $this->setting['site_name'];
        $data['page_title'] = lang('pages');
        $data['meta_keywords'] = $this->setting['meta_keywords'];
        $data['meta_description'] = $this->setting['meta_description'];  
        $data['current_version'] = $this->setting['current_version'];   
        
        // check if user is logged in
        if ($this->ion_auth->is_admin()) { 
        
            $user = $this->ion_auth->user()->row();
        
            // load a page of custom pages into an array for displaying in the view            
            $data['userinfo'] = $this->Member_model->getUserById($user->id);
            $data['groups'] = $this->ion_auth->groups()->result_array(); 
            
            $data['pagename'] = $this->Page_model->getAllPages(8);                
            $data['allpages'] = $this->Page_model->getAllPages(0, $this->uri->segment(4));       
            
            // if there is a site logo, get the path to the image file
            if ($this->Member_model->userImageExists( $data['userinfo']->image,  $data['userinfo']->id) !== '') {
                $data['current_logo'] = base_url().'assets/img/profile/'. $data['userinfo']->image;;
            } else {
                // no logo so leave it blank
                $data['current_logo'] = base_url().'assets/img/profile/default.png';
            }    
            // display amount summary
            $data['events_count'] = $this->calendar->countCalendarEvents();
            $data['queue_count'] = $this->calendar->countEventsQueues();
            $data['gmaps_count'] = $this->gmaps_model->countlocationMarkers();
            $data['users_count'] = $this->Member_model->countUsers();            
            
            if ($data['allpages']) {
        
                // show the custom pages page
                debug('Initialize index - loading "admin/pages/index" view');
                $sections = array('body_content' => $this->setting['current_theme'] . '/backend/pages/index', 'nav_content' => $this->setting['current_theme'] . '/backend/pages/nav', 'header_content' => $this->setting['current_theme'] . '/backend/pages/header', 'footer_content' => $this->setting['current_theme'] . '/backend/pages/footer');
                $this->template->load($this->setting['current_theme'] . '/backend/masterpage', $sections, $data);
                
            } else {
                // no data... show the 'no pages' page
                debug('Initialize page empty - loading "admin/pages/empty" view');
                $sections = array('body_content' => $this->setting['current_theme'] . '/backend/pages/empty', 'nav_content' => $this->setting['current_theme'] . '/backend/pages/nav', 'header_content' => $this->setting['current_theme'] . '/backend/pages/header', 'footer_content' => $this->setting['current_theme'] . '/backend/pages/footer');
                $this->template->load($this->setting['current_theme'] . '/backend/masterpage', $sections, $data);
            }        
        
        }        
        
    }
    /**
    * get_allpages - calendar categories
    * This function is called to get members categories
    ****
    * @access public
    * @ Param none
    * @return none
    */
     public function get_allpages() { 
        // check if user is logged in
        if ($this->ion_auth->is_admin()) {  
        
            $allpages = $this->Page_model->get_pages(0, $this->uri->segment(4)); 
            echo json_encode($allpages);
        }else {            
            debug('Initialize index - loading "login/index" view');
            redirect('/profile/login', 301);
        }
    }    
    
    /*
     * add function
     *
     * display 'page/add' view, validate form data and add new page to the database
     */
    function add() {
        
        // set the page language, site name, page title, meta keywords and meta description  
        $data['lang'] = $this->setting['site_language'];         
        
        $this->languages->get_lang($data['lang']);
        
        $data['site_name'] = $this->setting['site_name'];
        $data['page_title'] = lang('pages');
        $data['meta_keywords'] = $this->setting['meta_keywords'];
        $data['meta_description'] = $this->setting['meta_description'];  
        $data['current_version'] = $this->setting['current_version'];    
            
        $data[] = '';     
        
        // check if user is logged in
        if ($this->ion_auth->is_admin()) { 
        
            $user = $this->ion_auth->user()->row();
            
            // load a page of events into an array for displaying in the view
            $data['userinfo'] = $this->Member_model->getUserById($user->id);
            $data['groups'] = $this->ion_auth->groups()->result_array(); 
            $data['pagename'] = $this->Page_model->getAllPages(8);                
            $data['allpages'] = $this->Page_model->getAllPages(0);                                    
    
            // if there is a site logo, get the path to the image file
            if ($this->Member_model->userImageExists( $data['userinfo']->image,  $data['userinfo']->id) !== '') {
                $data['current_logo'] = base_url().'assets/img/profile/'. $data['userinfo']->image;;
            } else {
                // no logo so leave it blank
                $data['current_logo'] = base_url().'assets/img/profile/default.png';
            }                
            
            // display amount summary
            $data['events_count'] = $this->calendar->countCalendarEvents();
            $data['queue_count'] = $this->calendar->countEventsQueues();
            $data['gmaps_count'] = $this->gmaps_model->countlocationMarkers();
            $data['users_count'] = $this->Member_model->countUsers();            
            
            if ($this->input->post('page_cancel')) { 
                $last_page = $this->session->userdata('last_page'); 
                if (trim($last_page) !== '') { 
                    redirect($last_page, 301);
                }else{redirect('admin/pages', 301);}            
            }             
            
            // check form data was submitted
            if ($this->input->post('page_submit')) {
                // set up form validation config
                $config = array(
                    array(
                        'field' => 'title',
                        'label' => lang('page_title'),
                        'rules' => 'trim|required|min_length[5]|max_length[150]|xss_clean'
                    ),
                    array(
                        'field' => 'content',
                        'label' => lang('page_content'),
                        'rules' => 'trim|required|min_length[5]'
                    ),
                    array(
                        'field' => 'meta_keywords',
                        'label' => lang('page_meta_keywords'),
                        'rules' => 'trim|max_length[255]|xss_clean'
                    ),
                    array(
                        'field' => 'meta_description',
                        'label' => lang('page_meta_description'),
                        'rules' => 'trim|max_length[255]|xss_clean'
                    ),
                    array(
                        'field' => 'access',
                        'label' => lang('access'),
                        'rules' => 'trim|required|max_length[2]|xss_clean'
                    )
                );
                
                $this->form_validation->set_error_delimiters('', '');
                $this->form_validation->set_rules($config);
                
                // validate the form data
                if ($this->form_validation->run() === FALSE) {
                    
                    // validation failed - reload page with error message(s)
                    debug('Initialize index - loading "admin/pages" validation failed');
                    $sections = array('body_content' => $this->setting['current_theme'] . '/backend/pages/add', 'nav_content' => $this->setting['current_theme'] . '/backend/pages/nav', 'header_content' => $this->setting['current_theme'] . '/backend/pages/header', 'footer_content' => $this->setting['current_theme'] . '/backend/pages/footer');
                    $this->template->load($this->setting['current_theme'] . '/backend/masterpage', $sections, $data);
        
                } else {
                    
                    debug('Initialize index - loading "admin/pages" validation successful'); 
                    $title = $this->input->post('title');
                    $content = $this->input->post('content');
                    $meta_keywords = str_replace('"','',$this->input->post('meta_keywords'));
                    $meta_description = str_replace('"','',$this->input->post('meta_description'));
                    $access = $this->input->post('access');
                    
                    $this->Page_model->addPage($user, $title, $content, $meta_keywords, $meta_description, $access);
                  
                    redirect('/admin/pages', 301); 
                
                }
            } else {
                // form not submitted so just show the form 
                debug('Initialize index - loading "admin/pages/add" view');
                $sections = array('body_content' => $this->setting['current_theme'] . '/backend/pages/add', 'nav_content' => $this->setting['current_theme'] . '/backend/pages/nav', 'header_content' => $this->setting['current_theme'] . '/backend/pages/header', 'footer_content' => $this->setting['current_theme'] . '/backend/pages/footer');
                $this->template->load($this->setting['current_theme'] . '/backend/masterpage', $sections, $data);
            }
            
        }else{
            redirect('admin/login', 301); 
        }
    }
    /*
    * edit page function
    *
    * display 'page/edit' view, validate form data and modify page
    */
    function edit($id) {
        
        // set the page language, site name, page title, meta keywords and meta description  
        $data['lang'] = $this->setting['site_language'];         
        
        $this->languages->get_lang($data['lang']);
        
        $data['site_name'] = $this->setting['site_name'];
        $data['page_title'] = lang('pages');
        $data['meta_keywords'] = $this->setting['meta_keywords'];
        $data['meta_description'] = $this->setting['meta_description'];  
        $data['current_version'] = $this->setting['current_version'];   
            
        $data[] = '';    
        
        // check if user is logged in
        if ($this->ion_auth->is_admin()) { 
        
            $user = $this->ion_auth->user()->row();
            
            // load a page of events into an array for displaying in the view
            $data['userinfo'] = $this->Member_model->getUserById($user->id);
            $data['groups'] = $this->ion_auth->groups()->result_array(); 
            $data['pageinfo'] = $this->Page_model->getPageById($id);
            $data['pagename'] = $this->Page_model->getAllPages(8);                
            $data['allpages'] = $this->Page_model->getAllPages(0);                
            if(empty($data['pageinfo'])) redirect('admin/pages', 301);
    
            $data['pubdate'] = mdate('%M %d, %Y at %h:%m %a',strtotime($data['pageinfo']->pubdates));
    
            // if there is a site logo, get the path to the image file
            if ($this->Member_model->userImageExists( $data['userinfo']->image,  $data['userinfo']->id) !== '') {
                $data['current_logo'] = base_url().'assets/img/profile/'. $data['userinfo']->image;;
            } else {
                // no logo so leave it blank
                $data['current_logo'] = base_url().'assets/img/profile/default.png';
            }    
            
            // display amount summary
            $data['events_count'] = $this->calendar->countCalendarEvents();
            $data['queue_count'] = $this->calendar->countEventsQueues();
            $data['gmaps_count'] = $this->gmaps_model->countlocationMarkers();
            $data['users_count'] = $this->Member_model->countUsers();            
            if ($this->input->post('page_cancel')) { 
                $last_page = $this->session->userdata('last_page'); 
                if (trim($last_page) !== '') { 
                    redirect($last_page, 301);
                }else{redirect('admin/pages', 301);}            
            } 
            
            // check form data was submitted
            if ($this->input->post('page_submit')) {
                
                // set up form validation config
                $config = array(
                array(
                    'field' => 'title',
                    'label' => lang('page_title'),
                    'rules' => 'trim|required|min_length[5]|max_length[150]|xss_clean'
                ),
                array(
                    'field' => 'content',
                    'label' => lang('page_content'),
                    'rules' => 'trim|required|min_length[5]'
                ),
                array(
                    'field' => 'meta_keywords',
                    'label' => lang('page_meta_keywords'),
                    'rules' => 'max_length[255]|xss_clean'
                ),
                array(
                    'field' => 'meta_description',
                    'label' => lang('page_meta_description'),
                    'rules' => 'max_length[255]|xss_clean'
                ),
                array(
                    'field' => 'access',
                    'label' => lang('access'),
                    'rules' => 'trim|required|xss_clean'
                )
                );
                $this->form_validation->set_error_delimiters('', '');
                $this->form_validation->set_rules($config);
                // validate the form data
                debug('validate form data');
                if ($this->form_validation->run() === FALSE) {
                    
                    debug('validation failed - reload page with error message(s)');
                    $sections = array('body_content' => $this->setting['current_theme'] . '/backend/pages/edit', 'nav_content' => $this->setting['current_theme'] . '/backend/pages/nav', 'header_content' => $this->setting['current_theme'] . '/backend/pages/header', 'footer_content' => $this->setting['current_theme'] . '/backend/pages/footer');
                    $this->template->load($this->setting['current_theme'] . '/backend/masterpage', $sections, $data);
                
                } else {
                    
                    $title = $this->input->post('title');
                    $content = auto_typography($this->input->post('content'));
                    $meta_keywords = str_replace('"','',$this->input->post('meta_keywords'));
                    $meta_description = str_replace('"','',$this->input->post('meta_description'));
                    $access = $this->input->post('access');
                    
                    // update the page
                    $this->Page_model->updatePage($id, $title, $content, $meta_keywords, $meta_description, $access); 
                    
                    redirect('/admin/pages/edit/'.$id, 301);
                    
                }
            } else {
                // form not submitted so load the data and show the form
                debug('Initialize index - loading "admin/pages/index" view');
                $sections = array('body_content' => $this->setting['current_theme'] . '/backend/pages/edit', 'nav_content' => $this->setting['current_theme'] . '/backend/pages/nav', 'header_content' => $this->setting['current_theme'] . '/backend/pages/header', 'footer_content' => $this->setting['current_theme'] . '/backend/pages/footer');
                $this->template->load($this->setting['current_theme'] . '/backend/masterpage', $sections, $data);
                
            }            
            
        } else {
            // user not found, redirect to users list
            debug('Initialize index - loading "login/index" view');
            redirect('/admin/login', 301);
        } 
      
    }
    /**
    * del_selected - delete profile in the database
    *
    ****
    * @access public
    * @ Param none
    * @ Return string with the last query 
    */        
    function del_selected() {  
    
        // check if user is logged in
        if ($this->ion_auth->is_admin()) { 
        
            $user = $this->ion_auth->user()->row(); 
            
            $checkbox[] = $this->input->post('id');     
             
            for($i=0;$i<=$this->Page_model->countPages();$i++){
                $del_id = $checkbox[$i]; 
                 $this->Page_model->delPage($del_id, $user->username); 
            }  
                 
        }else {
            // user not found, redirect to users list
            debug('Initialize index - loading "login/index" view');        
            redirect('admin/login', 301); 
        }
        
    }
    
    /**
    * del - the event source in the database
    *
    ****
    * @access public
    * @ Param none
    * @ Return string with the last query 
    */        
    function del($id) { 
    
        // check if user is logged in
        if ($this->ion_auth->is_admin()) { 
        
            $user = $this->ion_auth->user()->row();
            
            $username = $user->username;        
            $delPage = $this->Page_model->getPageById($id);
            
            if ($delPage && $username) { 
                $this->Page_model->delPage($id, $username);     
                redirect('admin/pages', 301);
                 
            }else {
            echo "<script>
                    alert('Alert: ". lang('error_not_found_page_title') ."');
                    history.go(-1);
                 </script>";
            }
            
        }else{
            redirect('admin/login', 301); 
        }
    }
    
}
/* End of file page.php */
/* Location: ./application/controllers/page.php */