Refactoring of route list page
[busui.git] / routeList.php
blob:a/routeList.php -> blob:b/routeList.php
<?php <?php
include ('include/common.inc.php'); include ('include/common.inc.php');
function navbar() function navbar()
{ {
echo ' echo '
<div data-role="navbar"> <div data-role="navbar">
<ul> <ul>
<li><a href="routeList.php">By Final Destination...</a></li> <li><a href="routeList.php">By Final Destination...</a></li>
<li><a href="routeList.php?bynumber=yes">By Number... </a></li> <li><a href="routeList.php?bynumber=yes">By Number... </a></li>
<li><a href="routeList.php?bysuburb=yes">By Suburb... </a></li> <li><a href="routeList.php?bysuburb=yes">By Suburb... </a></li>
<li><a href="routeList.php?nearby=yes">Nearby... </a></li> <li><a href="routeList.php?nearby=yes">Nearby... </a></li>
</ul> </ul>
</div> </div>
'; ';
} }
if ($_REQUEST['bysuburb']) { if ($_REQUEST['bysuburb']) {
include_header("Routes by Suburb", "routeList"); include_header("Routes by Suburb", "routeList");
navbar(); navbar();
echo ' <ul data-role="listview" data-filter="true" data-inset="true" >'; echo ' <ul data-role="listview" data-filter="true" data-inset="true" >';
if (!isset($_REQUEST['firstLetter'])) { if (!isset($_REQUEST['firstLetter'])) {
foreach (range('A', 'Z') as $letter) { foreach (range('A', 'Z') as $letter) {
echo "<li><a href=\"routeList.php?firstLetter=$letter&bysuburb=yes\">$letter...</a></li>\n"; echo "<li><a href=\"routeList.php?firstLetter=$letter&bysuburb=yes\">$letter...</a></li>\n";
} }
} }
else { else {
foreach ($suburbs as $suburb) { foreach ($suburbs as $suburb) {
if (startsWith($suburb, $_REQUEST['firstLetter'])) { if (startsWith($suburb, $_REQUEST['firstLetter'])) {
echo '<li><a href="routeList.php?suburb=' . urlencode($suburb) . '">' . $suburb . '</a></li>'; echo '<li><a href="routeList.php?suburb=' . urlencode($suburb) . '">' . $suburb . '</a></li>';
} }
} }
} }
echo '</ul>'; echo '</ul>';
} }
else if ($_REQUEST['nearby'] || $_REQUEST['suburb']) { else if ($_REQUEST['nearby'] || $_REQUEST['suburb']) {
  $routes = Array();
if ($_REQUEST['suburb']) { if ($_REQUEST['suburb']) {
$suburb = filter_var($_REQUEST['suburb'], FILTER_SANITIZE_STRING); $suburb = filter_var($_REQUEST['suburb'], FILTER_SANITIZE_STRING);
$url = $APIurl . "/json/stopzonesearch?q=" . $suburb; include_header($suburb ." - ".ucwords(service_period()), "routeList");
include_header("Routes by Suburb", "routeList"); navbar();
trackEvent("Route Lists", "Routes By Suburb", $suburb); timePlaceSettings();
  trackEvent("Route Lists", "Routes By Suburb", $suburb);
  $routes = getRoutesBySuburb($suburb);
   
} }
if ($_REQUEST['nearby']) { if ($_REQUEST['nearby']) {
$url = $APIurl . "/json/neareststops?lat={$_SESSION['lat']}&lon={$_SESSION['lon']}&limit=15";  
include_header("Routes Nearby", "routeList", true, true); include_header("Routes Nearby", "routeList", true, true);
timePlaceSettings(true); trackEvent("Route Lists", "Routes Nearby", $_SESSION['lat'].",".$_SESSION['lon']);
  navbar();
  timePlaceSettings(true);
if (!isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == "") { if (!isset($_SESSION['lat']) || !isset($_SESSION['lat']) || $_SESSION['lat'] == "" || $_SESSION['lon'] == "") {
include_footer(); include_footer();
die(); die();
} }
  $routes = getRoutesNearby($_SESSION['lat'],$_SESSION['lon']);
} }
$stops = json_decode(getPage($url));  
$routes = Array(); echo ' <ul data-role="listview" data-filter="true" data-inset="true" >';
foreach ($stops as $stop) {  
$url = $APIurl . "/json/stoproutes?stop=" . $stop[0]; foreach ($routes as $route) {
$stoproutes = json_decode(getPage($url)); echo '<li><a href="trip.php?routeid=' . $route['route_id'] . '"><h3>' . $route['route_short_name'] . "</h3><p>" . $route['route_long_name'] . " (" . ucwords($route['service_id']) . ")</p>";
foreach ($stoproutes as $route) { if ($_REQUEST['nearby']) {
if (!isset($routes[$route[0]])) $routes[$route[0]] = $route; echo '<span class="ui-li-count">' .floor($route['distance']) . 'm away</span>';
} }
} echo "</a></li>\n";
navbar();  
echo ' <ul data-role="listview" data-filter="true" data-inset="true" >';  
sksort($routes, 1, true);  
foreach ($routes as $row) {  
echo '<li><a href="trip.php?routeid=' . $row[0] . '"><h3>'. $row[1] . "</h3><p>". $row[2] . " (" . ucwords($row[4]) . ")</p></a></li>\n";  
} }
} }
else if ($_REQUEST['bynumber'] || $_REQUEST['numberSeries']) { else if ($_REQUEST['bynumber'] || $_REQUEST['numberSeries']) {
include_header("Routes by Number", "routeList"); include_header("Routes by Number", "routeList");
navbar(); navbar();
echo ' <ul data-role="listview" data-inset="true">'; echo ' <ul data-role="listview" data-inset="true">';
$url = $APIurl . "/json/routes"; if ($_REQUEST['bynumber']) {
$contents = json_decode(getPage($url)); $routes = getRoutesByNumber();
$routeSeries = Array(); $routeSeries = Array();
$seriesRange = Array(); $seriesRange = Array();
foreach ($contents as $key => $row) { foreach ($routes as $key => $routeNumber) {
foreach (explode(" ", $row[1]) as $routeNumber) { foreach (explode(" ", $routeNumber['route_short_name']) as $routeNumber) {
$seriesNum = substr($routeNumber, 0, -1) . "0"; $seriesNum = substr($routeNumber, 0, -1) . "0";
if ($seriesNum == "0") $seriesNum = $routeNumber; if ($seriesNum == "0") $seriesNum = $routeNumber;
$finalDigit = substr($routeNumber, sizeof($routeNumber) - 1, 1); $finalDigit = substr($routeNumber, sizeof($routeNumber) - 1, 1);
if (isset($seriesRange[$seriesNum])) { if (isset($seriesRange[$seriesNum])) {
if ($finalDigit < $seriesRange[$seriesNum]['max']) $seriesRange[$seriesNum]['max'] = $routeNumber; if ($finalDigit < $seriesRange[$seriesNum]['max']) $seriesRange[$seriesNum]['max'] = $routeNumber;
if ($finalDigit > $seriesRange[$seriesNum]['min']) $seriesRange[$seriesNum]['min'] = $routeNumber; if ($finalDigit > $seriesRange[$seriesNum]['min']) $seriesRange[$seriesNum]['min'] = $routeNumber;
  }
  else {
  $seriesRange[$seriesNum]['max'] = $routeNumber;
  $seriesRange[$seriesNum]['min'] = $routeNumber;
  }
  $routeSeries[$seriesNum][$seriesNum . "-" . $row[1] . "-" . $row[0]] = $row;
} }
else {  
$seriesRange[$seriesNum]['max'] = $routeNumber;  
$seriesRange[$seriesNum]['min'] = $routeNumber;  
}  
$routeSeries[$seriesNum][$seriesNum . "-" . $row[1] . "-" . $row[0]] = $row;  
} }
}  
if ($_REQUEST['bynumber']) {  
ksort($routeSeries); ksort($routeSeries);
ksort($seriesRange); ksort($seriesRange);
foreach ($routeSeries as $series => $routes) { foreach ($routeSeries as $series => $routes) {
echo '<li><a href="' . curPageURL() . '/routeList.php?numberSeries=' . $series . '">'; echo '<li><a href="' . curPageURL() . '/routeList.php?numberSeries=' . $series . '">';
if ($series <= 9) echo $series; if ($series <= 9) echo $series;
else echo "{$seriesRange[$series]['min']}-{$seriesRange[$series]['max']}"; else echo "{$seriesRange[$series]['min']}-{$seriesRange[$series]['max']}";
echo "</a></li>\n"; echo "</a></li>\n";
} }
} }
else if ($_REQUEST['numberSeries']) { else if ($_REQUEST['numberSeries']) {
foreach ($routeSeries[$_REQUEST['numberSeries']] as $row) { $routes = getRoutesByNumber($_REQUEST['numberSeries']);
echo '<li> <a href="trip.php?routeid=' . $row[0] . '"><h3>' . $row[1] . "</h3><p>". $row[2] . " (" . ucwords($row[3]) . ")</p></a></li>\n"; foreach ($routes as $route) {
  echo '<li> <a href="trip.php?routeid=' . $route['route_id'] . '"><h3>' . $route['route_short_name'] . "</h3><p>" . $route['route_long_name'] . " (" . ucwords($route['service_id']) . ")</p></a></li>\n";
} }
} }
} }
else { else {
include_header("Routes by Destination", "routeList"); include_header("Routes by Destination", "routeList");
navbar(); navbar();
echo ' <ul data-role="listview" data-inset="true">'; echo ' <ul data-role="listview" data-inset="true">';
$url = $APIurl . "/json/routes";  
$contents = json_decode(getPage($url));  
// by destination!  
foreach ($contents as $row) {  
$routeDestinations[$row[2]][] = $row;  
}  
if ($_REQUEST['routeDestination']) { if ($_REQUEST['routeDestination']) {
foreach ($routeDestinations[urldecode($_REQUEST['routeDestination'])] as $row) { foreach (getRoutesByDestination(urldecode($_REQUEST['routeDestination'])) as $route) {
echo '<li><a href="trip.php?routeid=' . $row[0] . '"><h3>' . $row[1] . '</h3><p>' . $row[2] . " (" . ucwords($row[3]) . ")</p></a></li>\n"; echo '<li><a href="trip.php?routeid=' . $route["route_id"] . '"><h3>' . $route["route_short_name"] . '</h3><p>' . $route["route_long_name"] . " (" . ucwords($route['service_id']) . ")</p></a></li>\n";
} }
} }
else { else {
foreach ($routeDestinations as $destination => $routes) { foreach (getRoutesByDestination() as $destination) {
echo '<li><a href="' . curPageURL() . '/routeList.php?routeDestination=' . urlencode($destination) . '">' . $destination . "... </a></li>\n"; echo '<li><a href="' . curPageURL() . '/routeList.php?routeDestination=' . urlencode($destination['route_long_name']) . '">' . $destination['route_long_name'] . "... </a></li>\n";
} }
} }
} }
echo "</ul>\n"; echo "</ul>\n";
include_footer(); include_footer();
?> ?>