Add service alert editor
[busui.git] / include / common-transit.inc.php
blob:a/include/common-transit.inc.php -> blob:b/include/common-transit.inc.php
<?php <?php
$service_periods = Array( $service_periods = Array(
'sunday', 'sunday',
'saturday', 'saturday',
'weekday' 'weekday'
); );
   
function service_period($date = "") function service_period($date = "")
{ {
if (isset($_SESSION['service_period'])) return $_SESSION['service_period']; if (isset($_SESSION['service_period'])) return $_SESSION['service_period'];
$override = getServiceOverride($date); $override = getServiceOverride($date);
if ($override['service_id']){ if ($override['service_id']){
return $override['service_id']; return $override['service_id'];
} }
   
switch (date('w',($date != "" ? $date : time()))) { switch (date('w',($date != "" ? $date : time()))) {
case 0: case 0:
return 'sunday'; return 'sunday';
case 6: case 6:
return 'saturday'; return 'saturday';
default: default:
return 'weekday'; return 'weekday';
} }
} }
function midnight_seconds($time = "") function midnight_seconds($time = "")
{ {
// from http://www.perturb.org/display/Perlfunc__Seconds_Since_Midnight.html // from http://www.perturb.org/display/Perlfunc__Seconds_Since_Midnight.html
if ($time != "") { if ($time != "") {
return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time); return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time);
} }
if (isset($_SESSION['time'])) { if (isset($_SESSION['time'])) {
$time = strtotime($_SESSION['time']); $time = strtotime($_SESSION['time']);
return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time); return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time);
} }
return (date("G") * 3600) + (date("i") * 60) + date("s"); return (date("G") * 3600) + (date("i") * 60) + date("s");
} }
function midnight_seconds_to_time($seconds) function midnight_seconds_to_time($seconds)
{ {
if ($seconds > 0) { if ($seconds > 0) {
$midnight = mktime(0, 0, 0, date("n") , date("j") , date("Y")); $midnight = mktime(0, 0, 0, date("n") , date("j") , date("Y"));
return date("h:ia", $midnight + $seconds); return date("h:ia", $midnight + $seconds);
} }
else { else {
return ""; return "";
} }
} }
   
  $serviceAlertCause = Array(
  UNKNOWN_CAUSE
  OTHER_CAUSE
  TECHNICAL_PROBLEM
  STRIKE
  DEMONSTRATION
  ACCIDENT
  HOLIDAY
  WEATHER
  MAINTENANCE
  CONSTRUCTION
  POLICE_ACTIVITY
  MEDICAL_EMERGENCY
   
  Unknown cause
  Other cause (not represented by any of these options)
  Technical problem
  Strike
  Demonstration
  Accident
  Holiday
  Weather
  Maintenance
  Construction
  Police activity
  Medical emergency
  );
  $serviceAlertEffect = Array(
  NO_SERVICE
  REDUCED_SERVICE
  SIGNIFICANT_DELAYS
  DETOUR
  ADDITIONAL_SERVICE
  MODIFIED_SERVICE
  OTHER_EFFECT
  UNKNOWN_EFFECT
  STOP_MOVED
   
  No service
  Reduced service
  Significant delays (insignificant delays should only be provided through Trip updates).
  Detour
  Additional service
  Modified service
  Stop moved
  Other effect (not represented by any of these options)
  Unknown effect);
   
function getServiceAlerts($filter_class, $filter_id) { function getServiceAlerts($filter_class, $filter_id) {
/* /*
   
also need last modified epoch of client gtfs also need last modified epoch of client gtfs
- add,remove,patch,inform (null) - add,remove,patch,inform (null)
- stop - stop
- trip - trip
- network - network
- classes (WHERE=) - classes (WHERE=)
- route (short_name or route_id) - route (short_name or route_id)
- street - street
- stop - stop
- trip - trip
Currently support: Currently support:
network inform network inform
trip patch: stop remove trip patch: stop remove
street inform: route inform, trip inform, stop inform street inform: route inform, trip inform, stop inform
route patch: trip remove route patch: trip remove
*/ */
$return = Array(); $return = Array();
$return['header']['gtrtfs_version'] = "1"; $return['header']['gtfs_realtime_version'] = "1";
$return['header']['timestamp'] = time(); $return['header']['timestamp'] = time();
  $return['header']['incrementality'] = "FULL_DATASET";
$return['entities'] = Array(); $return['entities'] = Array();
foreach(getCurrentAlerts() as $alert) { foreach(getCurrentAlerts() as $alert) {
$informedEntities = getInformedAlerts($alert['id'],$_REQUEST['filter_class'],$_REQUEST['filter_id']); $informedEntities = getInformedAlerts($alert['id'],$_REQUEST['filter_class'],$_REQUEST['filter_id']);
if (sizeof($informedEntities) >0) { if (sizeof($informedEntities) >0) {
$entity = Array(); $entity = Array();
$entity['id'] = $alert['id']; $entity['id'] = $alert['id'];
$entity['alert']['active_period']['start'] = $alert['start']; $entity['alert']['active_period']['start'] = $alert['start'];
$entity['alert']['active_period']['end'] = $alert['end']; $entity['alert']['active_period']['end'] = $alert['end'];
$entity['alert']['url']['translation'] = $alert['url']; $entity['alert']['url']['translation']['text'] = $alert['url'];
$entity['alert']['description']['translation'] = $alert['description']; $entity['alert']['url']['translation']['language'] = 'en';
  $entity['alert']['header_text']['translation']['text'] = $alert['header'];
  $entity['alert']['header_text']['translation']['language'] = 'en';
  $entity['alert']['description_text']['translation']['text'] = $alert['description'];
  $entity['alert']['description_text']['translation']['language'] = 'en';
foreach ($informedEntities as $informedEntity) { foreach ($informedEntities as $informedEntity) {
$informed = Array(); $informed = Array();
$informed[$informedEntity['informed_class']."_id"] = $informedEntity['informed_id']; $informed[$informedEntity['informed_class']."_id"] = $informedEntity['informed_id'];
if ($informedEntity['informed_action'] != "") $informed["x-action"] = $informedEntity['informed_action']; if ($informedEntity['informed_action'] != "") $informed["x-action"] = $informedEntity['informed_action'];
$informed[$informedEntity['class']."_type"] = $informedEntity['type']; $informed[$informedEntity['class']."_type"] = $informedEntity['type'];
$entity['informed'][] = $informed; $entity['informed'][] = $informed;
} }
$return['entities'][] = $entity; $return['entities'][] = $entity;
} }
} }
return $return; return $return;
} }
function getServiceAlertsByClass() { function getServiceAlertsByClass() {
$return = Array(); $return = Array();
$alerts = getServiceAlerts("",""); $alerts = getServiceAlerts("","");
foreach ($alerts['entities'] as $entity) { foreach ($alerts['entities'] as $entity) {
foreach ($entity['informed'] as $informed) { foreach ($entity['informed'] as $informed) {
foreach($informed as $key => $value){ foreach($informed as $key => $value){
if (strpos("_id",$key) > 0) { if (strpos("_id",$key) > 0) {
$parts = explode($key); $parts = explode($key);
$class = $parts[0]; $class = $parts[0];
$id = $value; $id = $value;
} }
} }
$return[$class][$id][]['entity'] = $entity; $return[$class][$id][]['entity'] = $entity;
$return[$class][$id][]['action'] = $informed["x-action"]; $return[$class][$id][]['action'] = $informed["x-action"];
} }
} }
} }
?> ?>