From: maxious Date: Fri, 15 Jul 2011 04:54:45 +0000 Subject: Merge service alerts relating to stops into their page X-Git-Url: https://maxious.lambdacomplex.org/git/?p=busui.git&a=commitdiff&h=94b4506782530c63129d0f229042aeb1b13f4731 --- Merge service alerts relating to stops into their page --- --- a/include/common-geo.inc.php +++ b/include/common-geo.inc.php @@ -1,7 +1,7 @@ $mapPoint) { - $markers.= $mapPoint[0] . "," . $mapPoint[1] . "," . $markerImage . ($index + 1); + if ($twotone && $index == 0) { + $markers.= $mapPoint[0] . "," . $mapPoint[1] . "," . "iconr" . ($index + 1); + $center = "{$mapPoints[0][0]},{$mapPoints[0][1]}"; + } + else { + $markers.= $mapPoint[0] . "," . $mapPoint[1] . "," . $markerImage . ($index + 1); + } if ($index + 1 != sizeof($mapPoints)) $markers.= "|"; - $dist = distance($mapPoints[0][0], $mapPoint[0][1],$mapPoint[0], $mapPoint[1]); - $mapwidthinmeters = ($dist>$mapwidthinmeters ? $dist : $mapwidthinmeters); + $dist = distance($mapPoints[0][0], $mapPoint[0][1], $mapPoint[0], $mapPoint[1]); + $mapwidthinmeters = ($dist > $mapwidthinmeters ? $dist : $mapwidthinmeters); $totalLat+= $mapPoint[0]; $totalLon+= $mapPoint[1]; } if ($zoom == 0) { $mapwidthinmeters = distance($minlat, $minlon, $minlat, $maxlon); foreach (array_reverse($metersperpixel, true) as $zoomLevel => $maxdistance) { - if ($zoom == 0 && $mapwidthinmeters*1.5 < ($maxdistance)) $zoom = $zoomLevel; + if ($zoom == 0 && $mapwidthinmeters * 1.5 < ($maxdistance)) $zoom = $zoomLevel; } } $center = $totalLat / sizeof($mapPoints) . "," . $totalLon / sizeof($mapPoints); } $output = ""; if ($collapsible) $output.= '

Open Map...

'; - $output.= ''; + $output.= ''; if ($collapsible) $output.= '
'; return $output; } @@ -62,11 +67,11 @@ $c = 2 * atan2(sqrt($a) , sqrt(1 - $a)); $km = $r * $c; if ($roundLargeValues) { - if ($km < 1) return floor($km * 1000); - else return round($km,2)."k"; - } else return floor($km * 1000); + if ($km < 1) return floor($km * 1000); + else return round($km, 2) . "k"; + } + else return floor($km * 1000); } - function decodePolylineToArray($encoded) { // source: http://latlongeeks.com/forum/viewtopic.php?f=4&t=5 --- a/include/db/servicealert-dao.inc.php +++ b/include/db/servicealert-dao.inc.php @@ -2,7 +2,7 @@ function getServiceOverride($date="") { global $conn; $query = "Select * from calendar_dates where date = :date and exception_type = '1' LIMIT 1"; - debug($query,"database"); + // debug($query,"database"); $query = $conn->prepare($query); // Create a prepared statement $query->bindParam(":date", date("Ymd",($date != "" ? $date : time()))); $query->execute(); @@ -12,4 +12,42 @@ } return $query->fetch(PDO::FETCH_ASSOC); } + +function getCurrentAlerts() { + global $conn; + $query = "SELECT * from servicealerts_alerts"; + //debug($query, "database"); + $query = $conn->prepare($query); + //if ($stop_sequence != "") $query->bindParam(":stop_sequence", $stop_sequence); + $query->execute(); + if (!$query) { + databaseError($conn->errorInfo()); + return Array(); + } + return $query->fetchAll(); +} +function getInformedAlerts($id,$filter_class,$filter_id) { + + global $conn; + $query = "SELECT * from servicealerts_informed where servicealert_id = :servicealert_id"; + + if ($filter_class != "" && $filter_id != "") { + $query .= " AND (informed_class = :informed_class OR informed_class = 'network') AND informed_id = :informed_id"; + + } + //debug($query, "database"); + $query = $conn->prepare($query); + if ($filter_class != "" && $filter_id != "") { + $query->bindParam(":informed_class", $filter_class); + $query->bindParam(":informed_id", $filter_id); + } + $query->bindParam(":servicealert_id", $id); + $query->execute(); + if (!$query) { + databaseError($conn->errorInfo()); + return Array(); + } + return $query->fetchAll(); +} + ?> --- a/servicealerts_api.php +++ b/servicealerts_api.php @@ -6,48 +6,43 @@ - add,remove,patch - stop - trip + - network - patterns (WHERE=) - route (short_name or route_id) - street - stop - trip */ -/* header { - gtrtfs_version: "1" - timestamp: 1307926866 +$return = Array(); +$return['header']['gtrtfs_version'] = "1"; +$return['header']['timestamp'] = time(); +$return['entities'] = Array(); +foreach(getCurrentAlerts() as $alert) { + $informedEntities = getInformedAlerts($alert['id'],$_REQUEST['filter_class'],$_REQUEST['filter_id']); + if (sizeof($informedEntities) >0) { + $entity = Array(); + $entity['id'] = $alert['id']; + $entity['alert']['active_period']['start'] = $alert['start']; + $entity['alert']['active_period']['start'] = $alert['end']; + $entity['alert']['url']['translation'] = $alert['url']; + $entity['alert']['description']['translation'] = $alert['description']; + + foreach ($informedEntities as $informedEntity) { + $informed = Array(); + $informed[$informedEntity['informed_class']."_id"] = $informedEntity['informed_id']; + if ($informedEntity['informed_action'] != "") $informed["x-action"] = $informedEntity['informed_action']; + //$informed[$informedEntity['class']."_type"] = $informedEntity['type']; + $entity['informed'][] = $informed; + } + $return['entities'][] = $entity; + } } -entity { - id: "21393" - alert { - active_period { - start: 1307955600 - end: 1307988000 - } - informed_entity { - route_id: "100" - route_type: 1 - } - url { - translation { - text: "http://trimet.org/alerts/" - } - } - description_text { - translation { - text: "Rose Festival fleet departures will cause bridge lifts until around 10 a.m. Expect delays." - } - } - } -}*/ -$return = Array(); - -header('Content-Type: text/javascript; charset=utf8'); +//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 = '(' . json_encode($return) . ');'; //must wrap in parens and end with semicolon - print_r($_GET['callback'] . $json); //callback is prepended for json-p - + //print_r($_GET['callback'] . $json); //callback is prepended for json-p } else echo json_encode($return); ?> --- a/stop.php +++ b/stop.php @@ -12,6 +12,7 @@ // expand out to all platforms }*/ + $stops = Array(); $stopPositions = Array(); $stopNames = Array(); @@ -60,6 +61,12 @@ } } include_header($stop['stop_name'], "stop"); +/*$serviceAlerts = json_decode(getPage(curPageURL() . "/servicealerts_api.php?filter_class=stop&filter_id=".$stopid) , true); + +foreach($serviceAlerts['entities'] as $serviceAlert) { + echo '
'.$serviceAlert['alert']['description']['translation'].'
'; +}*/ + echo ''; timePlaceSettings(); echo $stopLinks; --- a/stopList.php +++ b/stopList.php @@ -47,12 +47,26 @@ include_header("Nearby Stops", "stopList", true, true); trackEvent("Stop Lists", "Stops Nearby", $_SESSION['lat'] . "," . $_SESSION['lon']); navbar(); - timePlaceSettings(true); if (!isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == "") { + timePlaceSettings(true); include_footer(); die(); } $stops = getNearbyStops($_SESSION['lat'], $_SESSION['lon'], 15); + echo ''; + $stopPositions[] = Array( + $_SESSION['lat'], + $_SESSION['lon'] + ); + foreach ($stops as $sub_stop) { + $stopPositions[] = Array( + $sub_stop["stop_lat"], + $sub_stop["stop_lon"] + ); + } + echo staticmap($stopPositions, 0, "iconb", true, true); + timePlaceSettings(true); + echo ''; } else if (isset($suburb)) { $stops = getStopsBySuburb($suburb); @@ -129,6 +143,7 @@ } } echo ''; + if (isset($nearby)) echo ''; } include_footer(); ?>