+
+ /**
+ * Increments likes count for video with the specified id and returns to
+ * the client as plain text the number if likes.
+ *
+ * @param string $action 'like' or 'dislike'
+ * @param string $video_id
+ * @param string $user_id
+ */
+ public function ajax_vote($action, $video_id, $user_id = NULL)
+ {
+ $video_id = intval($video_id);
+ $user_id = intval($user_id);
+ $this->load->model('videos_model');
+
+ $res = $this->videos_model->vote($video_id, $user_id,
+ (strcmp($action, 'like') == 0 ? TRUE : FALSE));
+
+ if ($res !== -1)
+ echo $res;
+ }
+
+ public function ajax_comment($video_id,
+ $ordering = 'newest', $offset = '0')
+ {
+ $this->_ajax_comment(FALSE, $video_id, $ordering, $offset);
+ }
+
+ public function _ajax_comment($return_output, $video_id,
+ $ordering = 'newest', $offset = '0')
+ {
+ $video_id = intval($video_id);
+
+ $this->load->library('form_validation');
+ $this->form_validation->set_error_delimiters('<span class="error">',
+ '</span>');
+ $this->form_validation->run('comment_video');
+
+ // **
+ // ** MODEL **
+ // **
+ $this->load->model('videos_model');
+ $data['comments'] = $this->videos_model->get_video_comments($video_id,
+ $offset, $this->config->item('video_comments_per_page'), $ordering);
+ $data['comments_count'] =
+ $this->videos_model->get_video_comments_count($video_id);
+ $data['video_id'] = $video_id;
+
+ // Pagination
+ $this->load->library('pagination');
+ $pg_config['base_url'] = site_url("video/ajax_comment/$video_id/$ordering/");
+ $pg_config['uri_segment'] = 5;
+ $pg_config['total_rows'] = $data['comments_count'];
+ $pg_config['per_page'] = $this->config->item('video_comments_per_page');
+ $this->pagination->initialize($pg_config);
+ $data['comments_pagination'] = $this->pagination->create_links();
+
+ // **
+ // ** VIEWS **
+ // **
+ $output = $this->load->view('video/comments_view',
+ $data, $return_output);
+
+ if ($return_output)
+ return $output;
+ }
+
+ public function _is_user_loggedin($param)
+ {
+ if (! $this->session->userdata('user_id'))
+ return FALSE;
+
+ return TRUE;
+ }
+
+ public function _do_comment($comment)
+ {
+ // Note: Videos_model must be already loaded.
+ $this->load->model('videos_model');
+
+ $video_id = intval($this->input->post('video-id'));
+ $user_id = intval($this->session->userdata('user_id'));
+
+ $this->videos_model->comment_video($video_id, $user_id, $comment);
+ }
+
+ /**
+ * OBSOLETE: AJAX page which retrieves a video plugin.
+ *
+ * The view associated with this controller should be parameter type
+ * concatenated with '_plugin_view' and must be located in
+ * 'application/views/video'.
+ *
+ * @param string $type 'ns-vlc', 'ns-html5'
+ */
+ public function plugin($type)
+ {
+ $url = $this->input->post('url', TRUE);
+
+ $this->_plugin($type, $url);
+ }
+
+ /**
+ * OBSOLETE: Video plugin controller
+ *
+ * See plugin function for details. If the second parameter is TRUE
+ * the output is return instead of being displayed (used in preloading).
+ */
+ public function _plugin($type, $url, $return_output=FALSE)
+ {
+ if ($type == 'ns-html5')
+ $data['url'] = 'tribe://' . $url;
+ else if ($type == 'ns-vlc')
+ $data['url'] = $url;
+
+ $output = $this->load->view('video/'. $type . '_plugin_view', $data,
+ $return_output);
+
+ if ($return_output)
+ return $output;
+ }
+