/** * 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); } }
/** * 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); } }
/** * 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); } } }