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
@@ -119,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 != "") {
--- /dev/null
+++ b/servicealerts/gtfs-realtime.php
@@ -1,1 +1,53 @@
+<?php
+/*
+ * Copyright 2010,2011 Alexander Sadleir
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+include ('include/common.inc.php');
+function accept_header($header = false) {
+ // http://jrgns.net/parse_http_accept_header
+ $toret = null;
+ $header = $header ? $header : (array_key_exists('HTTP_ACCEPT', $_SERVER) ? $_SERVER['HTTP_ACCEPT']: false);
+ if ($header) {
+ $types = explode(',', $header);
+ $types = array_map('trim', $types);
+ foreach ($types as $one_type) {
+ $one_type = explode(';', $one_type);
+ $type = array_shift($one_type);
+ if ($type) {
+ list($precedence, $tokens) = self::accept_header_options($one_type);
+ list($main_type, $sub_type) = array_map('trim', explode('/', $type));
+ $toret[] = array('main_type' => $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;
+}
+?>
--- /dev/null
+++ b/servicealerts/siri.php
@@ -1,1 +1,8 @@
+<?php
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+?>
+
--- a/servicealerts_api.php
+++ /dev/null
@@ -1,34 +1,1 @@
-<?php
-/*
- * Copyright 2010,2011 Alexander Sadleir
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-include ('include/common.inc.php');
-
-if (basename(__FILE__) == "servicealerts_api.php") {
- $return = getServiceAlertsAsJSON($_REQUEST['filter_class'], $_REQUEST['filter_id']);
- header('Content-Type: text/javascript; 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;
-}
-?>
-