parallelise serial port usage and I/O for writing sounds files
[scannr.git] / common.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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<?php
date_default_timezone_set("Australia/Sydney");
$basePath = "";
$DATA_DIR = "./data";
 
/**    Returns the offset from the origin timezone to the remote timezone, in seconds.
 *    @param $remote_tz;
 *    @param $origin_tz; If null the servers current timezone is used as the origin.
 *    @return int;
 */
function get_timezone_offset($remote_tz, $origin_tz = null) {
    if ($origin_tz === null) {
        if (!is_string($origin_tz = date_default_timezone_get())) {
            return false; // A UTC timestamp was returned -- bail out!
        }
    }
    $origin_dtz = new DateTimeZone($origin_tz);
    $remote_dtz = new DateTimeZone($remote_tz);
    $origin_dt = new DateTime("now", $origin_dtz);
    $remote_dt = new DateTime("now", $remote_dtz);
    $offset = $origin_dtz->getOffset($origin_dt) - $remote_dtz->getOffset($remote_dt);
    return $offset;
}
 
function getSensorValuesByHour($sensorID, $timeFrom, $timeTo) {
    $sql = 'select min(call_timestamp) as time, count(*), min(length), max(length), avg(length), stddev(length) from recordings
            group by tgid, date_trunc(\'hour\', call_timestamp) order by time';
 
    $query = $this->db->query($sql, Array($sensorID, $timeFrom, $timeTo));
    return $query->result_array();
}
 
function getSensorValuesByDay($sensorID, $dayFrom, $dayTo) {
    $sql = 'select min(time) as time, min(value), max(value), avg(value), stddev(value) from sensor_values where sensor_id = ? 
            group by sensor_id, date_trunc(\'day\', time) order by time';
 
    $query = $this->db->query($sql, Array($sensorID));
    return $query->result_array();
}
 
function getSensorDataYears($sensorID, $timeFrom, $timeTo) {
    $sql = "select distinct extract('year' from call_timestamp) as year from recordings where tgid = ? order by year";
 
    $query = $this->db->query($sql, Array($sensorID));
    return $query->result_array();
}
 
function getSensorDataMonths($sensorID, $timeFrom, $timeTo) {
    $sql = "select distinct extract('month' from time) as month, extract('year' from time) as year from sensor_values where sensor_id = ? order by year, month";
 
    $query = $this->db->query($sql, Array($sensorID));
    return $query->result_array();
}
 
function getSensorDataDays($sensorID, $timeFrom, $timeTo) {
    $sql = "select distinct extract('day' from time) as day, extract('month' from time) as month, extract('year' from time) as year from sensor_values where sensor_id = ? order by year,month,day";
 
    $query = $this->db->query($sql, Array($sensorID));
    return $query->result_array();
}
 
function include_header($title) {
    global $basePath;
    ?>
    <!DOCTYPE html>
 
    <!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
    <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
    <!--[if IE 7]>    <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
    <!--[if IE 8]>    <html class="no-js lt-ie9" lang="en"> <![endif]-->
    <!--[if gt IE 8]><!--> <html lang="en"> <!--<![endif]-->
        <head>
            <meta charset="utf-8" />
 
            <!-- Set the viewport width to device width for mobile -->
            <meta name="viewport" content="width=device-width" />
 
            <title><?php echo $title; ?> - Scannr</title>
 
            <!-- Included CSS Files -->
            <link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/foundation.css">
            <link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/app.css">
 
            <!--[if lt IE 9]>
                    <link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/ie.css">
            <![endif]-->
 
 
            <!-- IE Fix for HTML5 Tags -->
            <!--[if lt IE 9]>
                    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
            <![endif]-->
 
        </head>
        <body xmlns:schema="http://schema.org/"  xmlns:foaf="http://xmlns.com/foaf/0.1/">
 
            <!-- navBar -->
            <div id="navbar" class="container">
                <div class="row">
                    <div class="four columns">
                        <h1><a href="/">Disclosr</a></h1>
                    </div>
                    <div class="eight columns hide-on-phones">
                        <strong class="right">
                            <a href="getAgency.php">Agencies</a>
                            <a href="about.php">About/FAQ</a>
                        </strong>
                    </div>
                </div>
            </div>
            <!-- /navBar -->
 
            <!-- container -->
            <div class="container">
            <?php
            }
 
            function include_footer() {
                global $basePath;
                ?>
 
            </div>
            <!-- container -->
 
 
 
 
            <!-- Included JS Files -->
            <script src="<?php echo $basePath; ?>js/foundation.js"></script>
            <script src="<?php echo $basePath; ?>js/app.js"></script>
            <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
            <script>window.jQuery || document.write('<script src="js/jquery-1.8.2.min.js"><\/script>')</script>
 
            <script type="text/javascript" src="<?php echo $basePath ?>js/flotr2/flotr2.js"></script>
    <?php
    if (strpos($_SERVER['SERVER_NAME'], ".gs")) {
        ?>
                <script type="text/javascript">
 
                    var _gaq = _gaq || [];
                    _gaq.push(['_setAccount', 'UA-12341040-2']);
                    _gaq.push(['_trackPageview']);
 
                    (function() {
                        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
                        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
                        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
                    })();
 
                </script>
 
            </body>
        </html>
 
    <?php
    }
}