full functionality of media library now available using datatables, advanced search is not done.

This commit is contained in:
Naomi 2011-01-26 14:17:52 -05:00
parent a0ecbecf3b
commit f6d270616a
4 changed files with 80 additions and 13 deletions

View file

@ -1742,11 +1742,14 @@ class StoredFile {
return $CC_CONFIG['accessDir']."/$p_token.$p_ext";
}
public static function searchFiles($offset, $limit, $md=NULL, $order=NULL, $quick=false)
public static function searchFiles($offset, $limit, $data)
{
global $CC_CONFIG, $CC_DBC, $g_metadata_xml_to_db_mapping;
$columnsDisplayed = array("id", "track_title", "artist_name", "album_title", "track_number", "length", "ftype");
$columnsDisplayed = explode(",", $data["sColumns"]);
if($data["sSearch"] !== "")
$searchTerms = explode(" ", $data["sSearch"]);
$plSelect = "SELECT ";
$fileSelect = "SELECT ";
@ -1788,14 +1791,67 @@ class StoredFile {
UNION
(".$fileSelect."id FROM ".$CC_CONFIG["filesTable"]." AS FILES)) AS RESULTS ";
(".$fileSelect."id FROM ".$CC_CONFIG["filesTable"]." AS FILES)) AS RESULTS";
$sql = $selectorCount." ".$fromTable;
$totalRows = $CC_DBC->getOne($sql);
// Where clause
if(isset($searchTerms)) {
$searchCols = array();
for($i=0; $i<$data["iColumns"]; $i++) {
if($data["bSearchable_".$i] == "true") {
$searchCols[] = $columnsDisplayed[$i];
}
}
$outerCond = array();
foreach($searchTerms as $term) {
$innerCond = array();
foreach($searchCols as $col) {
$innerCond[] = "{$col}::text ILIKE '%{$term}%'";
}
$outerCond[] = join(" OR ", $innerCond);
}
$where = join(" AND ", $outerCond);
$sql = $selectorCount." ".$fromTable." WHERE ".$where;
$totalDisplayRows = $CC_DBC->getOne($sql);
}
// End Where clause
// Order By clause
$orderby = array();
for($i=0; $i<$data["iSortingCols"]; $i++){
$orderby[] = $columnsDisplayed[$data["iSortCol_".$i]]." ".$data["sSortDir_".$i];
}
$orderby[] = "id";
$orderby = join("," , $orderby);
// End Order By clause
//ordered by integer as expected by datatables.
$CC_DBC->setFetchMode(DB_FETCHMODE_ORDERED);
$sql = $selectorRows." ".$fromTable." ORDER BY id OFFSET ".$offset." LIMIT ".$limit;
if(isset($where)) {
$sql = $selectorRows." ".$fromTable." WHERE ".$where." ORDER BY ".$orderby." OFFSET ".$offset." LIMIT ".$limit;
}
else {
$sql = $selectorRows." ".$fromTable." ORDER BY ".$orderby." OFFSET ".$offset." LIMIT ".$limit;
}
$results = $CC_DBC->getAll($sql);
//echo $results;
//echo $sql;
@ -1803,7 +1859,11 @@ class StoredFile {
//put back to default fetch mode.
$CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC);
return array("iTotalDisplayRecords" => $totalRows, "iTotalRecords" => $totalRows, "aaData" => $results);
if(!isset($totalDisplayRows)) {
$totalDisplayRows = $totalRows;
}
return array("iTotalDisplayRecords" => $totalDisplayRows, "iTotalRecords" => $totalRows, "aaData" => $results);