Ejemplo n.º 1
0
 /**
  * Grab our parsed template routes from the database
  *
  * @access protected
  * @return void
  */
 public function set_routes()
 {
     $site_id = ee()->config->item('site_id');
     $config = TemplateRoute::getConfig();
     if (!empty($config)) {
         foreach ($config as $template => $route) {
             list($group_name, $template_name) = explode('/', $template);
             $route_parsed = new EE_Route($route);
             $this->end_points[$route_parsed->compile()] = array("template" => $template_name, "group" => $group_name);
         }
     }
     ee()->db->select('route_parsed, template_name, group_name');
     ee()->db->from('templates');
     ee()->db->join('template_routes', 'templates.template_id = template_routes.template_id');
     ee()->db->join('template_groups', 'templates.group_id = template_groups.group_id');
     ee()->db->where('route_parsed is not null');
     ee()->db->where('templates.site_id', $site_id);
     ee()->db->order_by('order, group_name, template_name', 'ASC');
     $query = ee()->db->get();
     foreach ($query->result() as $template) {
         $this->end_points[$template->route_parsed] = array("template" => $template->template_name, "group" => $template->group_name);
     }
 }
Ejemplo n.º 2
0
 /**
  * Update Template Routes
  *
  * Set routes for the route manager page
  *
  * @access	public
  * @return	type
  */
 function update_template_routes()
 {
     if (!$this->cp->allowed_group('can_access_design', 'can_admin_design')) {
         show_error(lang('unauthorized_access'));
     }
     if ($this->config->item('enable_template_routes') == 'n') {
         $this->functions->redirect(cp_url('design/manager'));
     }
     if (empty($_POST)) {
         $this->functions->redirect(cp_url('design/url_manager'));
     }
     ee()->load->library('template_router');
     ee()->load->model('template_model');
     $errors = array();
     $error_ids = array();
     $updated_routes = array();
     $query = $this->template_model->get_templates();
     foreach ($query->result() as $template) {
         $error = FALSE;
         $id = $template->template_id;
         $route_required = $this->input->post('required_' . $id);
         $route = $this->input->post('route_' . $id);
         $ee_route = NULL;
         if ($route_required !== FALSE) {
             $required = $route_required;
         } else {
             $required = 'n';
         }
         if (!empty($route)) {
             try {
                 $ee_route = new EE_Route($route, $required == 'y');
                 $compiled = $ee_route->compile();
             } catch (Exception $error) {
                 $error = $error->getMessage();
                 $error_ids[] = $id;
                 $errors[$id] = $error;
             }
         } else {
             $compiled = NULL;
             $route = NULL;
             $required = 'n';
         }
         // Check if we have a duplicate route
         if (!empty($ee_route)) {
             foreach ($updated_routes as $existing_route) {
                 if ($ee_route->equals($existing_route)) {
                     $error_ids[] = $id;
                     $errors[$id] = lang('duplicate_route');
                     $error = TRUE;
                 }
             }
             if ($error === FALSE) {
                 $updated_routes[] = $ee_route;
             }
         }
         if ($error === FALSE) {
             $data = array('route' => $route, 'route_parsed' => $compiled, 'route_required' => $required);
             $this->template_model->update_template_route($id, $data);
         }
     }
     // Update Template Route order
     $route_order = json_decode($this->input->post('route_order'));
     $update = array();
     if (!empty($route_order)) {
         foreach ($route_order as $index => $id) {
             $update[] = array('template_id' => $id, 'order' => $index);
         }
         $this->db->update_batch('template_routes', $update, 'template_id');
     }
     if (empty($errors)) {
         $this->session->set_flashdata('message_success', lang('template_routes_saved'));
         $this->functions->redirect(cp_url('design/url_manager'));
     } else {
         $this->url_manager($_POST, $error_ids, $errors);
     }
 }
Ejemplo n.º 3
0
 /**
  * Load all routes and resave to get rid of md5 hashes
  *
  * @access private
  * @return void
  */
 private function _recompile_template_routes()
 {
     // Core will not have the necessary files
     if (!IS_CORE) {
         ee()->load->model('template_model');
         ee()->lang->load('template_router', ee()->lang->user_lang, FALSE, TRUE, EE_APPPATH);
         require_once EE_APPPATH . 'libraries/template_router/Route.php';
         ee()->db->select('template_routes.template_id, route_required, route');
         ee()->db->from('templates');
         ee()->db->join('template_routes', 'templates.template_id = template_routes.template_id');
         ee()->db->where('route_parsed is not null');
         $query = ee()->db->get();
         foreach ($query->result() as $template) {
             $ee_route = new EE_Route($template->route, $template->route_required == 'y');
             $compiled = $ee_route->compile();
             $data = array('route_parsed' => $compiled);
             ee()->template_model->update_template_route($template->template_id, $data);
         }
     }
 }