Include network wide service alerts in page headers
[busui.git] / include / common-transit.inc.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php
$service_periods = Array(
        'sunday',
        'saturday',
        'weekday'
);
 
function service_period($date = "")
{
        
        if (isset($_SESSION['service_period'])) return $_SESSION['service_period'];
        $override = getServiceOverride($date);
        if ($override['service_id']){
                return $override['service_id'];
        }
 
        switch (date('w',($date != "" ? $date : time()))) {
        case 0:
                return 'sunday';
        case 6:
                return 'saturday';
        default:
                return 'weekday';
        }
}
function midnight_seconds($time = "")
{
        // from http://www.perturb.org/display/Perlfunc__Seconds_Since_Midnight.html
        if ($time != "") {
                return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time);
        }
        if (isset($_SESSION['time'])) {
                $time = strtotime($_SESSION['time']);
                return (date("G", $time) * 3600) + (date("i", $time) * 60) + date("s", $time);
        }
        return (date("G") * 3600) + (date("i") * 60) + date("s");
}
function midnight_seconds_to_time($seconds)
{
        if ($seconds > 0) {
                $midnight = mktime(0, 0, 0, date("n") , date("j") , date("Y"));
                return date("h:ia", $midnight + $seconds);
        }
        else {
                return "";
        }
}
function getServiceAlerts($filter_class, $filter_id) {
/*
 
  also need last modified epoch of client gtfs
  
         - add,remove,patch,inform (null)
            - stop
            - trip
            - network
          - patterns (WHERE=)
            - route (short_name or route_id)
            - street
            - stop
            - trip */
$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']['end'] = $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;
        }
}
return $return;
}
function getServiceAlertsByClass() {
        $return = Array();
        $alerts = getServiceAlerts("","");
        foreach ($alerts['entities'] as $entity) {
                foreach ($entity['informed'] as $informed) {
                        foreach($informed as $key => $value){
                                if (strpos("_id",$key) > 0) {
                                        $parts = explode($key);
                                        $class = $parts[0];
                                        $id = $value;
                                }
                        }
                $return[$class][$id]['entity'] = $entity;
                $return[$class][$id]['action'] = $informed["x-action"];
        }
        }
}
?>