$this->load->library('singleton_db');
$this->db = $this->singleton_db->connect();
}
-
- $this->load->helper('url');
}
/**
$category_id);
if ($query->num_rows() > 0)
- return $row = $query->row()->count;
+ return $query->row()->count;
// Error
return NULL;
return $thumbs;
}
- public function search_videos($str_search)
+ /**
+ * Searches videos in DB based on a search query string and returns an
+ * associative array of results.
+ * If count is zero the function only return the number of results.
+ * @param string $search_query
+ * @param int $offset
+ * @param int $count
+ * @param int $category_id if NULL, all categories are searched
+ * @return array an associative array with the same keys as that from
+ * get_videos_summary's result, but with two additional keys:
+ * description and date.
+ */
+ public function search_videos($search_query, $offset = 0, $count = 0,
+ $category_id = NULL)
{
- // TODO offset, count for search
- $offset = 0;
- $count = 100;
-
- $str_search = trim($str_search);
+ if ($count === 0)
+ {
+ $selected_columns = "COUNT(*) count";
+ $limit = "";
+ }
+ else
+ {
+ $selected_columns = "id, name, title, duration, user_id, views, thumbs_count, default_thumb, date, description";
+ $limit = "LIMIT $offset, $count";
+ }
+
+ if ($category_id !== NULL)
+ $category_cond = "category_id = '$category_id' AND ";
+ else
+ $category_cond = "";
- $this->load->helper('text');
+ $search_query = trim($search_query);
$query = $this->db->query(
- "SELECT id, name, title, duration, user_id, views, thumbs_count,
- default_thumb
+ "SELECT $selected_columns
FROM `videos`
- WHERE title LIKE '%". $str_search . "%'
- ORDER BY name
- LIMIT ?, ?", // TODO summary order
- array($offset, $count));
+ WHERE $category_cond MATCH (title, description, tags) AGAINST (?)
+ $limit",
+ array($search_query));
if ($query->num_rows() > 0)
- $videos = $query->result_array();
+ {
+ if ($count === 0)
+ return $query->row()->count;
+ else
+ $videos = $query->result_array();
+ }
else
return NULL;
+ $this->load->helper('text');
+
foreach ($videos as & $video)
{
// P2P-Tube Video URL