Fix service alert display and include stop/route filters
[busui.git] / include / common-transit.inc.php
blob:a/include/common-transit.inc.php -> blob:b/include/common-transit.inc.php
--- 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,7 +170,10 @@
                 $alert->addActivePeriod($tr);
                 $informedEntities = getInformedAlerts($current_alert['id'], $filter_class, $filter_id);
                 if (sizeof($informedEntities) > 0) {
-                    $informed_count++;
+
+                    $affectsFilteredEntities = true;
+                    foreach ($informedEntities as $informedEntity) {
+	$informed_count++;
                     $informed = Array();
                     $es = new transit_realtime\EntitySelector();
                     if ($informedEntity['informed_class'] == "agency") {
@@ -186,6 +191,7 @@
                         $es->setTrip($td);
                     }
                     $alert->addInformedEntity($es);
+}
                 }
                 if ($current_alert['cause'] != "") {
                     $alert->setCause(constant("transit_realtime\Alert\Cause::" . $current_alert['cause']));
@@ -212,13 +218,15 @@
                 if ($current_alert['description'] != "") {
                     $tsDescriptionText = new transit_realtime\TranslatedString();
                     $tDescriptionText = new transit_realtime\TranslatedString\Translation();
-                    $tDescriptionText->setText($current_alert['description']);
+                    $tDescriptionText->setText(trim($current_alert['description']));
                     $tDescriptionText->setLanguage("en");
                     $tsDescriptionText->addTranslation($tDescriptionText);
                     $alert->setDescriptionText($tsDescriptionText);
                 }
                 $fe->setAlert($alert);
-                $fm->addEntity($fe);
+                if ($affectsFilteredEntities) {
+                    $fm->addEntity($fe);
+                }
             }
             if ($informed_count > 0) {
                 return $fm;
@@ -230,14 +238,14 @@
     }
 
     function getServiceAlertsAsArray($filter_class = "", $filter_id = "") {
-        
+
         $alerts = getServiceAlerts($filter_class, $filter_id);
         if ($alerts != null) {
             $codec = new DrSlump\Protobuf\Codec\PhpArray();
 
             return $codec->encode($alerts);
         } else {
-            return nullarray;
+            return null;
         }
     }