interface modified
[living-lab-site.git] / application / controllers / video.php
1 <?php
2
3 /**
4  * Class Video controlls video items handling: watching, commenting, rating,
5  * adding etc.
6  *
7  * @category    Controller
8  * @author              Călin-Andrei Burloiu
9  */
10 class Video extends CI_Controller {
11
12         public function __construct()
13         {
14                 parent::__construct();
15                 
16                 //$this->lang->load('video');
17         }
18         
19         public function index()
20         {
21                 
22         }
23         
24         /**
25          * The page used for watching a video
26          *
27          * @param       string $id      DB id of the video
28          * @param       string $name    `name` of the video from DB
29          * @param       string $plugin  video plugin ('ns-vlc', 'ns-html5'). If it's set 
30          * to NULL or 'auto', the plugin is automatically selected.
31          */
32         public function watch($id, $name = NULL, $plugin = NULL)
33         {
34                 $this->load->helper('url');
35                 
36                 // Retrieve video information.
37                 $this->load->model('videos_model');
38                 $data['video'] = $this->videos_model->get_video($id, $name);
39                 $data['plugin_type'] = ($plugin === NULL ? 'auto' : $plugin);
40                 
41                 // Display page.
42                 $params = array(        'title' => $data['video']['title'] . ' -- '
43                                                                 . $this->config->item('site_name'),
44                                                         'css' => array(
45                                                                 'jquery-ui.css',
46                                                                 'jquery.ui.nsvideo.css',
47                                                                 'video.css'
48                                                         ),
49                                                         'js' => array(
50                                                                 'jquery.js',
51                                                                 'jquery-ui.js',
52                                                                 'jquery.ui.nsvideo.js'
53                                                         ),
54                                                         //'metas' => array('description'=>'','keywords'=>'')
55                                                         );
56                 $this->load->library('html_head_params', $params);
57                 $this->load->view('html_begin', $this->html_head_params);
58                 $this->load->view('header');
59                 
60                 // Preloading video plugin.
61                 // TODO plugin auto: type and format
62                 if ($data['plugin_type'] == 'auto')
63                         $data['plugin_type'] = 'ns-html5';
64                 $data['asset_index'] = 0;
65                 
66                 // TODO remove old AJAX plugin content
67 //              $data['plugin_content'] = $this->_plugin('ns-html5', 
68 //                      $data['video']['url'][0], TRUE);
69                 
70                 $this->load->view('video/watch_view', $data);
71                 
72                 $this->load->view('footer');
73                 $this->load->view('html_end');
74         }
75         
76         /**
77          * AJAX page which retrieves a video plugin.
78          *
79          * The view associated with this controller should be parameter type
80          * concatenated with '_plugin_view' and must be located in
81          * 'application/views/video'.
82          *
83          * @param       string $type    'ns-vlc', 'ns-html5'
84          */
85         public function plugin($type)
86         {
87                 $url = $this->input->post('url', TRUE);
88                 
89                 $this->_plugin($type, $url);
90         }
91         
92         /**
93          * Video plugin controller
94          *
95          * See plugin function for details. If the second parameter is TRUE
96          * the output is return instead of being displayed (used in preloading).
97          */
98         public function _plugin($type, $url, $return_output=FALSE)
99         {       
100                 if ($type == 'ns-html5')
101                         $data['url'] = 'tribe://' . $url;
102                 else if ($type == 'ns-vlc')
103                         $data['url'] = $url;
104                 
105                 $output = $this->load->view('video/'. $type . '_plugin_view', $data, 
106                         $return_output);
107                 
108                 if ($return_output)
109                         return $output;
110         }
111         
112 }
113
114 /* End of file video.php */
115 /* Location: ./application/controllers/video.php */