Substitue SVG Redmine logos with PNG in contact page.
[living-lab-site.git] / application / models / videos_model.php
index 536c92d..1ba9e8f 100644 (file)
@@ -7,7 +7,7 @@
  * @author             Călin-Andrei Burloiu
  */
 class Videos_model extends CI_Model {
-       private $db = NULL;
+       public $db = NULL;
        
        public function __construct()
        {
@@ -29,11 +29,13 @@ class Videos_model extends CI_Model {
         * @param               int $offset
         * @param               int $count
         * @return              array   a list of videos, each one being an assoc array with:
-        *   * id, name, title, duration, thumbs_count, default_thumb, views => from DB
-        *   * shorted_title => ellipsized title
-        *   * video_url => P2P-Tube video URl
-        *   * TODO: user_id, user_name
-        *   * thumbs => thumbnail images' URLs
+        * <ul>
+        *   <li>id, name, title, duration, thumbs_count, default_thumb, views => from DB</li>
+        *   <li>shorted_title => ellipsized title</li>
+        *   <li>video_url => P2P-Tube video URl</li>
+        *   <li>TODO: user_id, user_name</li>
+        *   <li>thumbs => thumbnail images' URLs</li>
+        * </ul>
         */
        public function get_videos_summary($category_id, $offset, $count)
        {
@@ -66,6 +68,9 @@ class Videos_model extends CI_Model {
                        // Ellipsized title
                        //$video['shorted_title'] = ellipsize($video['title'], 45, 0.75);
                        $video['shorted_title'] = character_limiter($video['title'], 50);
+                       
+                       // TODO: user information
+                       $video['user_name'] = 'TODO';
                }
                
                return $videos;
@@ -98,20 +103,24 @@ class Videos_model extends CI_Model {
         * table. NULL means there is no name provided.
         * @return              array   an associative list with information about a video
         * with the following keys:
-        *   * all columns form DB with some exceptions that are overwritten or new
-        *   * formats content is moved in assets
-        *   * assets => list of associative lists where each one represents a
-        * video asset having keys: "src", "def" and "ext". Value of key "src" is
-        * the video torrent formated as
-        * {name}_{format}.{default_video_ext}.{default_torrent_ext}
-        *   * user_name => TODO: user name from `users` table
-        *   * category_title => a human-friendly category name
-        *   * tags => associative list of "tag => score"
-        *   * date => date and time when the video was created
-        *   * thumbs => thumbnail images' URLs
+        * <ul>
+        *   <li>all columns form DB with some exceptions that are overwritten or new</li>
+        *   <li>content is moved in assets</li>
+        *   <li>assets => list of associative lists where each one represents a</li>
+        * video asset having keys: "src", "res", "par" and "ext". Value of key
+        * "src" is the video torrent formated as
+        * {name}_{format}.{video_ext}.{default_torrent_ext}</li>
+        *   <li>user_name => TODO: user name from `users` table</li>
+        *   <li>category_title => a human-friendly category name</li>
+        *   <li>tags => associative list of "tag => score"</li>
+        *   <li>date => date and time when the video was created</li>
+        *   <li>thumbs => thumbnail images' URLs</li>
+        * </ul>
         */
        public function get_video($id, $name = NULL)
        {
+               $this->load->helper('video');
+               
                $query = $this->db->query('SELECT * 
                                                                FROM `videos` 
                                                                WHERE id = ?', $id);
@@ -134,16 +143,21 @@ class Videos_model extends CI_Model {
                unset($video['formats']);
                $video['tags'] = json_decode($video['tags'], TRUE);
                asort($video['tags']);
-               $video['tags'] = array_reverse($video['tags'], true);
+               $video['tags'] = array_reverse($video['tags'], TRUE);
+               
+               // Sort assets by their megapixels number.
+               function access_function($a) { return $a['res']; }
+               function assets_cmp($a, $b) 
+                       { return megapixels_cmp($a, $b, "access_function"); }
+               usort($video['assets'], "assets_cmp");
                
                // Torrents
                $video['url'] = array();
                foreach ($video['assets'] as & $asset)
                {
-                       $ext = isset($asset['ext']) ? 
-                               $asset['ext'] : $this->config->item('default_video_ext');
+                       $def = substr($asset['res'], strpos($asset['res'], 'x') + 1) . 'p';
                        $asset['src'] = site_url('data/torrents/'. $video['name'] . '_'
-                               . $asset['def'] . '.'. $ext
+                               . $def . '.'. $asset['ext']
                                . '.'. $this->config->item('default_torrent_ext'));
                }
                
@@ -156,9 +170,27 @@ class Videos_model extends CI_Model {
                // Thumbnails
                $video['thumbs'] = $this->get_thumbs($video['name'], $video['thumbs_count']);
                
+               // TODO: user information
+               $video['user_name'] = 'TODO';
+               
                return $video;
        }
        
+       /**
+        * Increment a video parameter from DB: `views`, `likes` or `dislikes`.
+        * 
+        * @param int $id       DB video id
+        * @param string $param DB parameter column name.
+        * @return void
+        */
+       public function inc_video_var($id, $var)
+       {
+               // TODO error report if query returns FALSE
+               $this->db->query('UPDATE `videos` '
+                                               . 'SET `'. $var. '`=`'. $var. '`+1 '
+                                               . 'WHERE id='. $id); 
+       }
+       
        public function get_thumbs($name, $count)
        {
                $thumbs = array();