From: Maxious Date: Fri, 10 Feb 2012 07:17:55 +0000 Subject: Fix service alert filtering X-Git-Url: http://maxious.lambdacomplex.org/git/?p=busui.git&a=commitdiff&h=3bfd141ab07d17d540c9e65b51458ed5a066aa2d --- Fix service alert filtering --- --- a/include/common-template.inc.php +++ b/include/common-template.inc.php @@ -185,17 +185,20 @@ $serviceAlerts = Array(); $globalAlerts = getServiceAlertsAsArray("agency", "0"); if ($globalAlerts != nullarray) { + // echo "getting alerts due to network wide"; $serviceAlerts = array_merge($serviceAlerts, $globalAlerts); } if (isset($stopid)) { $stopAlerts = getServiceAlertsAsArray("stop", $stopid); if ($stopAlerts != nullarray) { + // echo "getting alerts due to stop $stopid"; $serviceAlerts = array_merge($serviceAlerts, $stopAlerts); } } if (isset($routeid)) { $routeAlerts = getServiceAlertsAsArray("route", $routeid); if ($routeAlerts != nullarray) { + // echo "getting alerts due to route $routeid"; $serviceAlerts = array_merge($serviceAlerts, $routeAlerts); } } --- a/include/common-transit.inc.php +++ b/include/common-transit.inc.php @@ -152,12 +152,14 @@ $current_alerts = getCurrentAlerts(); $informed_count = 0; if (sizeof($current_alerts) > 0) { + $fm = new transit_realtime\FeedMessage(); $fh = new transit_realtime\FeedHeader(); $fh->setGtfsRealtimeVersion(1); $fh->setTimestamp(time()); $fm->setHeader($fh); foreach ($current_alerts as $current_alert) { + $affectsFilteredEntities = false; $fe = new transit_realtime\FeedEntity(); $fe->setId($current_alert['id']); $fe->setIsDeleted(false); @@ -168,6 +170,8 @@ $alert->addActivePeriod($tr); $informedEntities = getInformedAlerts($current_alert['id'], $filter_class, $filter_id); if (sizeof($informedEntities) > 0) { + + $affectsFilteredEntities = true; $informed_count++; $informed = Array(); $es = new transit_realtime\EntitySelector(); @@ -218,7 +222,9 @@ $alert->setDescriptionText($tsDescriptionText); } $fe->setAlert($alert); - $fm->addEntity($fe); + if ($affectsFilteredEntities) { + $fm->addEntity($fe); + } } if ($informed_count > 0) { return $fm; @@ -230,7 +236,7 @@ } function getServiceAlertsAsArray($filter_class = "", $filter_id = "") { - + $alerts = getServiceAlerts($filter_class, $filter_id); if ($alerts != null) { $codec = new DrSlump\Protobuf\Codec\PhpArray(); --- a/include/db/servicealert-dao.inc.php +++ b/include/db/servicealert-dao.inc.php @@ -44,17 +44,19 @@ return $query->fetch(PDO :: FETCH_ASSOC); } -function updateServiceAlert($alertID, $start, $end, $header, $description, $url) { +function updateServiceAlert($alertID, $alert) { global $conn; - $query = 'update servicealerts_alerts set start=:start, "end"=:end, header=:header, description=:description, url=:url where id = :servicealert_id'; + $query = 'update servicealerts_alerts set start=:start, "end"=:end, header=:header, description=:description, url=:url, cause=:cause, effect=:effect where id = :servicealert_id'; debug($query, "database"); $query = $conn->prepare($query); - $query->bindParam(":servicealert_id", $alertID); - $query->bindParam(":start", $start); - $query->bindParam(":end", $end); - $query->bindParam(":header", $header); - $query->bindParam(":description", $description); - $query->bindParam(":url", $url); + $query->bindValue(":servicealert_id", $alertID); + $query->bindValue(":start", $alert['startdate']); + $query->bindValue(":end", $alert['enddate']); + $query->bindValue(":header", $alert['header']); + $query->bindValue(":description", $alert['description']); + $query->bindValue(":url", $alert['url']); + $query->bindValue(":cause", $alert['cause']); + $query->bindValue(":effect", $alert['effect']); $query->execute(); print_r($conn->errorInfo()); @@ -65,16 +67,19 @@ return $query->fetch(PDO :: FETCH_ASSOC); } -function addServiceAlert($start, $end, $header, $description, $url) { +function addServiceAlert($alert) { global $conn; - $query = 'INSERT INTO servicealerts_alerts (start, "end", header, description, url) VALUES (:start, :end, :header, :description, :url) '; + $query = 'INSERT INTO servicealerts_alerts (start, "end", header, description, url,cause,effect) VALUES (:start, :end, :header, :description, :url,:cause,:effect) '; debug($query, "database"); $query = $conn->prepare($query); - $query->bindParam(":start", $start); - $query->bindParam(":end", $end); - $query->bindParam(":header", $header); - $query->bindParam(":description", $description); - $query->bindParam(":url", $url); + //print_r($alert); + $query->bindValue(":start", $alert['startdate']); + $query->bindValue(":end", $alert['enddate']); + $query->bindValue(":header", $alert['header']); + $query->bindValue(":description", $alert['description']); + $query->bindValue(":url", $alert['url']); + $query->bindValue(":cause", $alert['cause']); + $query->bindValue(":effect", $alert['effect']); $query->execute(); print_r($conn->errorInfo()); @@ -114,6 +119,7 @@ function getInformedAlerts($id, $filter_class, $filter_id) { global $conn; + //echo "$id, $filter_class, $filter_id\n"; $query = "SELECT * from servicealerts_informed where servicealert_id = :servicealert_id"; if ($filter_class != "") { @@ -158,12 +164,14 @@ function addInformedAlert($serviceAlertID, $class, $id, $action) { global $conn; - $query = 'INSERT INTO servicealerts_informed (servicealert_id , informed_class , informed_id) VALUES(:servicealert_id ,:informed_class, :informed_id)'; + $query = 'INSERT INTO servicealerts_informed (servicealert_id , informed_class , informed_id, informed_action) + VALUES(:servicealert_id ,:informed_class, :informed_id, :informed_action)'; debug($query, "database"); $query = $conn->prepare($query); $query->bindParam(":servicealert_id", $serviceAlertID); $query->bindParam(":informed_class", $class); $query->bindParam(":informed_id", $id); + $query->bindParam(":informed_action", $action); $query->execute(); print_r($conn->errorInfo()); --- a/include/db/stop-dao.inc.php +++ b/include/db/stop-dao.inc.php @@ -89,7 +89,7 @@ $query = "Select * from stops where stop_name LIKE :name;"; debug($query, "database"); $query = $conn->prepare($query); - $name = "%" . $name . ";%"; + $name = $name . "%"; $query->bindParam(":name", $name); $query->execute(); if (!$query) { --- /dev/null +++ b/servicealerts/gtfs-realtime.php @@ -1,1 +1,53 @@ + $main_type, 'sub_type' => $sub_type, 'precedence' => (float)$precedence, 'tokens' => $tokens); + } + } + usort($toret, array('Parser', 'compare_media_ranges')); + } + return $toret; +} +$json_types = Array("application/json","application/x-javascript","text/javascript","text/x-javascript","text/x-json"); +if ($_REQUEST['json']) { + $return = getServiceAlertsAsJSON($_REQUEST['filter_class'], $_REQUEST['filter_id']); + header('Content-Type: application/json; charset=utf8'); +// header('Access-Control-Allow-Origin: http://bus.lambdacomplex.org/'); + header('Access-Control-Max-Age: 3628800'); + header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); + if (isset($_GET['callback'])) { + $json = '(' . $return . ');'; //must wrap in parens and end with semicolon + //print_r($_GET['callback'] . $json); //callback is prepended for json-p + } + else + echo $return; +} +?> --- a/servicealerts/servicealert_editor.php +++ b/servicealerts/servicealert_editor.php @@ -27,10 +27,11 @@ */ if (isset($_REQUEST['saveedit'])) { - if ($_REQUEST['saveedit'] != "") - updateServiceAlert($_REQUEST['saveedit'], $_REQUEST['startdate'], $_REQUEST['enddate'], $_REQUEST['header'], $_REQUEST['description'], $_REQUEST['url']); - else - addServiceAlert($_REQUEST['startdate'], $_REQUEST['enddate'], $_REQUEST['header'], $_REQUEST['description'], $_REQUEST['url']); + if ($_REQUEST['saveedit'] != "") { + updateServiceAlert($_REQUEST['saveedit'], $_REQUEST); + } else { + addServiceAlert($_REQUEST); + } echo "Saved " . $_REQUEST['saveedit']; die(); } @@ -61,26 +62,27 @@ if ($_REQUEST['streetsearch']) { echo "Informing stops of street
\n"; - foreach (getStopByName() as $stop) { - addInformedAlert($_REQUEST['stopsearch'], "stop", $_REQUEST['stopid'], "inform"); - echo "Added stop inform for" . $_REQUEST['stopsearch'] . ", stop" . $_REQUEST['stopid'] . "
\n"; + foreach (getStopsByName($_REQUEST['street']) as $stop) { + addInformedAlert($_REQUEST['streetsearch'], "stop", $stop['stop_id'], "inform"); + echo "Added stop inform for" . $_REQUEST['streetsearch'] . ", stop" . $stop['stop_id'] . " ". $stop['stop_name']."
\n"; foreach ($service_periods as $sp) { echo "Informing $sp routes
\n"; - foreach (getStopRoutes($_REQUEST['stopid'], $sp) as $route) { - addInformedAlert($_REQUEST['stopsearch'], "route", $route['route_id'], "inform"); - echo "Added route inform for stop" . $_REQUEST['stopsearch'] . ", route" . $route['route_id'] . "
\n"; + foreach (getStopRoutes($stop['stop_id'], $sp) as $route) { + addInformedAlert($_REQUEST['streetsearch'], "route", $route['route_id'], "inform"); + echo "Added route inform for stop" . $_REQUEST['streetsearch'] . ", route" . $route['route_id'] . "
\n"; } } + } + die(); - } } ?> Active and Future Alerts: '; + echo "'; } ?>
{$alert['start']}{$alert['end']}" . substr($alert['description'], 0, 999) . 'edit
" . date("c", $alert['start']) . "" . date("c", $alert['end']) . "" . substr($alert['description'], 0, 999) . 'edit
@@ -94,7 +96,7 @@ " /> @@ -102,10 +104,10 @@
" />
@@ -115,12 +117,31 @@
+
+
+ +
+
+ +
--- /dev/null +++ b/servicealerts/siri.php @@ -1,1 +1,8 @@ + + --- a/servicealerts_api.php +++ /dev/null @@ -1,34 +1,1 @@ - -