예제 #1
0
 /**
  * Gets all the spotter information based on the latest data entry
  *
  * @return Array the spotter information
  *
  */
 public static function getLiveSpotterData($limit = '', $sort = '')
 {
     global $globalDBdriver, $globalLiveInterval;
     date_default_timezone_set('UTC');
     $limit_query = '';
     if ($limit != "") {
         $limit_array = explode(",", $limit);
         $limit_array[0] = filter_var($limit_array[0], FILTER_SANITIZE_NUMBER_INT);
         $limit_array[1] = filter_var($limit_array[1], FILTER_SANITIZE_NUMBER_INT);
         if ($limit_array[0] >= 0 && $limit_array[1] >= 0) {
             $limit_query = " LIMIT " . $limit_array[1] . " OFFSET " . $limit_array[0];
         }
     }
     $orderby_query = '';
     if ($sort != "") {
         $search_orderby_array = SpotterLive::getOrderBy();
         $orderby_query = ' ' . $search_orderby_array[$sort]['sql'];
     }
     if (!isset($globalLiveInterval)) {
         $globalLiveInterval = '200';
     }
     if ($globalDBdriver == 'mysql') {
         //$query  = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL 30 SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate";
         $query = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE DATE_SUB(UTC_TIMESTAMP(),INTERVAL " . $globalLiveInterval . " SECOND) <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate{$orderby_query}";
     } else {
         if ($globalDBdriver == 'pgsql') {
             //$query  = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() AT TIME ZONE 'UTC' - '30 SECONDS'::INTERVAL <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate";
             $query = "SELECT spotter_live.* FROM spotter_live INNER JOIN (SELECT l.flightaware_id, max(l.date) as maxdate FROM spotter_live l WHERE NOW() AT TIME ZONE 'UTC' - '" . $globalLiveInterval . " SECONDS'::INTERVAL <= l.date GROUP BY l.flightaware_id) s on spotter_live.flightaware_id = s.flightaware_id AND spotter_live.date = s.maxdate{$orderby_query}";
         }
     }
     $spotter_array = Spotter::getDataFromDB($query . $limit_query);
     return $spotter_array;
 }