diff --git a/airtime_mvc/application/models/Datatables.php b/airtime_mvc/application/models/Datatables.php index efe5cffc7..d44bace5f 100644 --- a/airtime_mvc/application/models/Datatables.php +++ b/airtime_mvc/application/models/Datatables.php @@ -5,103 +5,103 @@ class Application_Model_Datatables { /* * query used to return data for a paginated/searchable datatable. */ - public static function findEntries($con, $displayColumns, $fromTable, $data, $dataProp = "aaData") - { - $where = array(); - - if ($data["sSearch"] !== "") { - $searchTerms = explode(" ", $data["sSearch"]); - } - - $selectorCount = "SELECT COUNT(*) "; - $selectorRows = "SELECT ".join(",", $displayColumns)." "; - - $sql = $selectorCount." FROM ".$fromTable; - $sqlTotalRows = $sql; - - if (isset($searchTerms)) { - $searchCols = array(); - for ($i = 0; $i < $data["iColumns"]; $i++) { - if ($data["bSearchable_".$i] == "true") { - $searchCols[] = $data["mDataProp_{$i}"]; - } - } - - $outerCond = array(); - - foreach ($searchTerms as $term) { - $innerCond = array(); - - foreach ($searchCols as $col) { - $escapedTerm = pg_escape_string($term); - $innerCond[] = "{$col}::text ILIKE '%{$escapedTerm}%'"; - } - $outerCond[] = "(".join(" OR ", $innerCond).")"; - } - $where[] = "(".join(" AND ", $outerCond).")"; - } - // End Where clause - - // Order By clause - $orderby = array(); - for ($i = 0; $i < $data["iSortingCols"]; $i++){ - $num = $data["iSortCol_".$i]; - $orderby[] = $data["mDataProp_{$num}"]." ".$data["sSortDir_".$i]; - } - $orderby[] = "id"; - $orderby = join("," , $orderby); - // End Order By clause + public static function findEntries($con, $displayColumns, $fromTable, $data, $dataProp = "aaData") + { + $where = array(); - $displayLength = intval($data["iDisplayLength"]); - if (count($where) > 0) { - $where = join(" AND ", $where); - $sql = $selectorCount." FROM ".$fromTable." WHERE ".$where; - $sqlTotalDisplayRows = $sql; + if ($data["sSearch"] !== "") { + $searchTerms = explode(" ", $data["sSearch"]); + } + + $selectorCount = "SELECT COUNT(*) "; + $selectorRows = "SELECT ".join(",", $displayColumns)." "; + + $sql = $selectorCount." FROM ".$fromTable; + $sqlTotalRows = $sql; + + if (isset($searchTerms)) { + $searchCols = array(); + for ($i = 0; $i < $data["iColumns"]; $i++) { + if ($data["bSearchable_".$i] == "true") { + $searchCols[] = $data["mDataProp_{$i}"]; + } + } + + $outerCond = array(); + + foreach ($searchTerms as $term) { + $innerCond = array(); + + foreach ($searchCols as $col) { + $escapedTerm = pg_escape_string($term); + $innerCond[] = "{$col}::text ILIKE '%{$escapedTerm}%'"; + } + $outerCond[] = "(".join(" OR ", $innerCond).")"; + } + $where[] = "(".join(" AND ", $outerCond).")"; + } + // End Where clause + + // Order By clause + $orderby = array(); + for ($i = 0; $i < $data["iSortingCols"]; $i++){ + $num = $data["iSortCol_".$i]; + $orderby[] = $data["mDataProp_{$num}"]." ".$data["sSortDir_".$i]; + } + $orderby[] = "id"; + $orderby = join("," , $orderby); + // End Order By clause + + $displayLength = intval($data["iDisplayLength"]); + if (count($where) > 0) { + $where = join(" AND ", $where); + $sql = $selectorCount." FROM ".$fromTable." WHERE ".$where; + $sqlTotalDisplayRows = $sql; $sql = $selectorRows." FROM ".$fromTable." WHERE ".$where." ORDER BY ".$orderby; //limit the results returned. if ($displayLength !== -1) { $sql .= " OFFSET ".$data["iDisplayStart"]." LIMIT ".$displayLength; - } - } - else { + } + } + else { $sql = $selectorRows." FROM ".$fromTable." ORDER BY ".$orderby; - //limit the results returned. - if ($displayLength !== -1) { - $sql .= " OFFSET ".$data["iDisplayStart"]." LIMIT ".$displayLength; - } - } - - try { - $r = $con->query($sqlTotalRows); - $totalRows = $r->fetchColumn(0); - - if (isset($sqlTotalDisplayRows)) { - $r = $con->query($sqlTotalDisplayRows); - $totalDisplayRows = $r->fetchColumn(0); - } - else { - $totalDisplayRows = $totalRows; - } - - $r = $con->query($sql); - $r->setFetchMode(PDO::FETCH_ASSOC); - $results = $r->fetchAll(); - } - catch (Exception $e) { - Logging::debug($e->getMessage()); - } - - //display sql executed in airtime log for testing - //Logging::log($sql); - + //limit the results returned. + if ($displayLength !== -1) { + $sql .= " OFFSET ".$data["iDisplayStart"]." LIMIT ".$displayLength; + } + } + + try { + $r = $con->query($sqlTotalRows); + $totalRows = $r->fetchColumn(0); + + if (isset($sqlTotalDisplayRows)) { + $r = $con->query($sqlTotalDisplayRows); + $totalDisplayRows = $r->fetchColumn(0); + } + else { + $totalDisplayRows = $totalRows; + } + + $r = $con->query($sql); + $r->setFetchMode(PDO::FETCH_ASSOC); + $results = $r->fetchAll(); + } + catch (Exception $e) { + Logging::debug($e->getMessage()); + } + + //display sql executed in airtime log for testing + Logging::debug($sql); + return array( "sEcho" => intval($data["sEcho"]), "iTotalDisplayRecords" => intval($totalDisplayRows), "iTotalRecords" => intval($totalRows), $dataProp => $results - ); + ); } -} \ No newline at end of file +}