4 * Class Catalog controls video hierarchy and searching
7 * @author Călin-Andrei Burloiu
9 class Catalog extends CI_Controller {
11 public function __construct()
13 parent::__construct();
15 //$this->lang->load('catalog');
18 public function index()
23 // Retrieve videos summary.
24 $this->load->model('videos_model');
25 foreach ($this->config->item('categories') as $id => $name)
28 $vs_data['videos'] = $this->videos_model->get_videos_summary(
29 $id, 0, $this->config->item('videos_per_row'));
32 $vs_data['category_name'] = $name;
33 $vs_data['category_title'] = $name ?
34 $this->lang->line("ui_categ_$name") : $name;
35 $vs_data['category_id'] = $id;
37 // Pagination (not required)
38 $vs_data['pagination'] = '';
40 $data['videos_summaries'][] =
41 $this->load->view('catalog/videos_summary_view',
45 $params = array( 'title' => $this->config->item('site_name'),
50 //'metas' => array('description'=>'','keywords'=>'')
52 $this->load->library('html_head_params', $params);
57 $this->load->view('html_begin', $this->html_head_params);
58 $this->load->view('header', array(
59 'selected_menu'=> 'home',
60 'username'=> $this->session->userdata('username')
63 $main_params['content'] = $this->load->view('catalog/index_view', $data, TRUE);
64 $main_params['side'] = $this->load->view('side_default', NULL, TRUE);
65 $this->load->view('main', $main_params);
67 $this->load->view('footer');
68 $this->load->view('html_end');
71 public function test($page = 0)
73 echo $this->uri->segment(1);
76 public function category($category_name, $ordering = 'hottest', $offset = 0)
82 $vs_data = $this->_get_category_data($category_name);
84 // Retrieve videos summary.
85 $this->load->model('videos_model');
86 $vs_data['videos'] = $this->videos_model->get_videos_summary(
87 $vs_data['category_id'], intval($offset),
88 $this->config->item('videos_per_page'), $ordering);
90 $vs_data['ordering'] = $ordering;
93 $this->load->library('pagination');
94 $pg_config['base_url'] = site_url("catalog/category/$category_name/$ordering/");
95 $pg_config['uri_segment'] = 5;
96 $pg_config['total_rows'] = $this->videos_model->get_videos_count(
97 $vs_data['category_id']);
98 $pg_config['per_page'] = $this->config->item('videos_per_page');
99 $this->pagination->initialize($pg_config);
100 $vs_data['pagination'] = $this->pagination->create_links();
103 // $data['video_summary'] = $this->load->view('catalog/videos_summary_view',
106 $params = array( 'title' => $this->config->item('site_name'),
111 //'metas' => array('description'=>'','keywords'=>'')
113 $this->load->library('html_head_params', $params);
118 $this->load->view('html_begin', $this->html_head_params);
119 $this->load->view('header', array(
120 'search_category_name'=>$vs_data['category_name'],
123 // $main_params['content'] = $this->load->view('catalog/category_view', $data, TRUE);
124 $main_params['content'] =
125 $this->load->view('catalog/videos_summary_view', $vs_data, TRUE);
126 $main_params['side'] = $this->load->view('side_default', NULL, TRUE);
127 $this->load->view('main', $main_params);
129 $this->load->view('footer');
130 $this->load->view('html_end');
133 public function search($search_query = "", $offset = 0, $category_name = NULL)
135 $this->load->model('videos_model');
136 $this->load->library('security');
138 // Redirect to an URL which contains search string if data was passed
139 // via POST method and not via URL segments.
140 $str_post_search = $this->input->post('search');
141 $str_post_category = $this->input->post('search-category');
142 if ($search_query === "" && $str_post_search !== FALSE)
144 redirect('catalog/search/'
145 . $this->videos_model->encode_search_query($str_post_search)
147 . ($str_post_category === FALSE ? '' : "/$str_post_category"));
154 // Search query is encoded for URL and must be decoded.
155 $enc_search_query = $search_query;
156 $search_query = $this->videos_model->decode_search_query($search_query);
158 // Security filtering
159 $search_query = $this->security->xss_clean($search_query);
160 $results_data['search_query'] = $search_query;
163 $results_data = $this->_get_category_data($category_name);
164 if ($results_data === NULL)
165 $results_data = array('category_id'=>NULL);
168 $header_data['search_query'] = $search_query;
169 if ($category_name !== NULL)
171 $header_data['search_category_name'] = $results_data['category_name'];
174 // Check if search string is valid.
175 if (strlen($search_query) === 0)
177 //$results_data['videos'] = NULL;
178 $this->error($this->lang->line('error_search_query_empty'),
184 // Retrieve search results.
185 $results_data['count'] = $this->videos_model->search_videos(
186 $search_query, 0, 0, $results_data['category_id']);
187 $results_data['videos'] = $this->videos_model->search_videos(
188 $search_query, intval($offset),
189 $this->config->item('search_results_per_page'),
190 $results_data['category_id']);
191 if ($results_data['videos'] === NULL)
192 $results_data['videos'] = array();
195 $this->load->library('pagination');
196 $pg_config['base_url'] = site_url("catalog/search/$enc_search_query/");
197 $pg_config['uri_segment'] = 4;
198 $pg_config['total_rows'] = $results_data['count'];
199 $pg_config['per_page'] =
200 $this->config->item('search_results_per_page');
201 $this->pagination->initialize($pg_config);
202 $results_data['pagination'] = $this->pagination->create_links();
205 // HTML head parameters
206 $params = array( 'title' => $this->config->item('site_name'),
211 //'metas' => array('description'=>'','keywords'=>'')
213 $this->load->library('html_head_params', $params);
218 $this->load->view('html_begin', $this->html_head_params);
219 $this->load->view('header', $header_data);
222 $main_params['content'] =
223 $this->load->view('catalog/search_results_view',
224 $results_data, TRUE);
225 $main_params['side'] = $this->load->view('side_default', NULL, TRUE);
226 $this->load->view('main', $main_params);
228 $this->load->view('footer');
229 $this->load->view('html_end');
232 public function error($msg, $header_data)
234 $params = array( 'title' => 'Error - '. $this->config->item('site_name'),
237 //'metas' => array('description'=>'','keywords'=>'')
239 $this->load->library('html_head_params', $params);
244 $this->load->view('html_begin', $this->html_head_params);
245 $this->load->view('header', $header_data);
247 $main_params['content'] = $this->load->view('error_view', array('msg'=>$msg), TRUE);
248 $main_params['side'] = $this->load->view('side_default', NULL, TRUE);
249 $this->load->view('main', $main_params);
251 $this->load->view('footer');
252 $this->load->view('html_end');
255 public function _get_category_data($category_name)
257 if ($category_name === NULL)
260 $categories = $this->config->item('categories');
261 $category_id = array_search($category_name, $categories);
262 $results_data['category_name'] = $category_name;
263 $results_data['category_id'] = $category_id;
264 $results_data['category_title'] = $category_name ?
265 $this->lang->line("ui_categ_$category_name") : $category_name;
267 return $results_data;
271 /* End of file catalog.php */
272 /* Location: ./application/controllers/catalog.php */