move files to data folder
move files to data folder

  <?xml version="1.0" encoding="UTF-8"?>
  <project version="4">
  <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
  </project>
 
 
file:b/.idea/misc.xml (new)
  <?xml version="1.0" encoding="UTF-8"?>
  <project version="4">
  <component name="ProjectResources">
  <default-html-doctype>jar:file:\C:\Program Files (x86)\JetBrains\PhpStorm 5.0.2\lib\webide.jar!\resources\html5-schema\html5.rnc</default-html-doctype>
  </component>
  <component name="ProjectRootManager" version="2" />
  </project>
 
 
file:b/.idea/modules.xml (new)
  <?xml version="1.0" encoding="UTF-8"?>
  <project version="4">
  <component name="ProjectModuleManager">
  <modules>
  <module fileurl="file://$PROJECT_DIR$/.idea/scannr.iml" filepath="$PROJECT_DIR$/.idea/scannr.iml" />
  </modules>
  </component>
  </project>
 
 
file:b/.idea/scannr.iml (new)
  <?xml version="1.0" encoding="UTF-8"?>
  <module type="WEB_MODULE" version="4">
  <component name="NewModuleRootManager">
  <content url="file://$MODULE_DIR$" />
  <orderEntry type="inheritedJdk" />
  <orderEntry type="sourceFolder" forTests="false" />
  </component>
  </module>
 
 
  <component name="DependencyValidationManager">
  <state>
  <option name="SKIP_IMPORT_STATEMENTS" value="false" />
  </state>
  </component>
file:b/.idea/vcs.xml (new)
  <?xml version="1.0" encoding="UTF-8"?>
  <project version="4">
  <component name="VcsDirectoryMappings">
  <mapping directory="$PROJECT_DIR$" vcs="Git" />
  <mapping directory="$PROJECT_DIR$/js/flotr2" vcs="Git" />
  <mapping directory="$PROJECT_DIR$/pynma" vcs="Git" />
  </component>
  </project>
 
 
<?php <?php
   
function view($sensorID) {  
$data = Array("sensorID" => $sensorID,  
);  
$timefrom = 1;  
$timeto = 1;  
$years = $this->Sensor_model->getSensorDataYears($sensorID, $timefrom, $timeto);  
foreach ($years as $year) {  
$yearsItem[] = Array("title" => $year['year'], "link" => "#",  
"onclick" => "getData('$sensorID'," . mktime(0, 0, 0, 1, 1, $year['year']) . "," . mktime(0, 0, 0, 12, 31, $year['year']) . ");");  
}  
$months = $this->Sensor_model->getSensorDataMonths($sensorID, $timefrom, $timeto);  
foreach ($months as $month) {  
$monthsItem[] = Array("title" => date("F", mktime(0, 0, 0, $month['month'], 10)) . ' ' . $month['year'], "link" => "#",  
"onclick" => "getData('$sensorID'," . mktime(0, 0, 0, $month['month'], 1, $month['year']) . "," . strtotime("+1 month", mktime(0, 0, 0, $month['month'], 1, $month['year'])) . ");");  
}  
$days = $this->Sensor_model->getSensorDataDays($sensorID, $timefrom, $timeto);  
foreach ($days as $day) {  
$daysItem[] = Array("title" => date("jS F", mktime(0, 0, 0, $day['month'], $day['day'])), "link" => "#",  
"onclick" => "getData('$sensorID'," . mktime(0, 0, 0, $day['month'], $day['day'], $day['year']) . "," . mktime(23, 59, 59, $day['month'], $day['day'], $day['year']) . ");");  
}  
   
$data['sidebar'] = Array("years" => $yearsItem, "months" => $monthsItem, "days" => $daysItem  
);  
$this->javascript = Array("flot/jquery.flot.min.js", "flot/jquery.flot.resize.min.js", "flot/jquery.flot.crosshair.min.js");  
$this->content = $this->load->view('pages/sensor/view', $data, true);  
$this->render_page();  
}  
   
function json_graph($sensorID, $timefrom, $timeto) { function json_graph($sensorID, $timefrom, $timeto) {
$values = $this->Sensor_model->getSensorValuesByHour($sensorID, $timefrom, $timeto); $values = getSensorValuesByHour($sensorID, $timefrom, $timeto);
$label = $sensorID; $label = $sensorID;
$data = Array(); $data = Array();
$tzoffset = $this->get_timezone_offset("UTC"); $tzoffset = $this->get_timezone_offset("UTC");
foreach ($values as $value) { foreach ($values as $value) {
$data[] = Array((strtotime($value['time']) + $tzoffset) * 1000, intval($value['avg'])); $data[] = Array((strtotime($value['time']) + $tzoffset) * 1000, intval($value['avg']));
} }
$this->output $this->output
->set_content_type('application/json') ->set_content_type('application/json')
->set_output(json_encode(Array("label" => $label, "data" => $data, ->set_output(json_encode(Array("label" => $label, "data" => $data,
"previous" => Array( "previous" => Array(
"from" => $timefrom - (24 * 60 * 60), "from" => $timefrom - (24 * 60 * 60),
"to" => $timefrom) "to" => $timefrom)
, ,
"next" => Array( "next" => Array(
"to" => $timeto + (24 * 60 * 60), "to" => $timeto + (24 * 60 * 60),
"from" => $timeto) "from" => $timeto)
) )
)); ));
} }
   
function json_data_description($sensorID, $timefrom, $timeto) { function json_data_description($sensorID, $timefrom, $timeto) {
$timefrom = strtotime($timefrom); $timefrom = strtotime($timefrom);
$timeto = strtotime($timeto); $timeto = strtotime($timeto);
$years = $this->Sensor_model->getSensorDataYears($sensorID, $timefrom, $timeto); $years = getSensorDataYears($sensorID, $timefrom, $timeto);
   
$months = $this->Sensor_model->getSensorDataMonths($sensorID, $timefrom, $timeto); $months = getSensorDataMonths($sensorID, $timefrom, $timeto);
$days = $this->Sensor_model->getSensorDataDays($sensorID, $timefrom, $timeto); $days = getSensorDataDays($sensorID, $timefrom, $timeto);
   
$this->output return json_encode(Array("years" => $years, "months" => $months, "days" => $days
->set_content_type('application/json') ));
->set_output(json_encode(Array("years" => $years, "months" => $months, "days" => $days  
)));  
} }
   
?> ?>
   
<?php <?php
date_default_timezone_set("Australia/Sydney"); date_default_timezone_set("Australia/Sydney");
$basePath = ""; $basePath = "";
  $DATA_DIR = "./data";
   
/** Returns the offset from the origin timezone to the remote timezone, in seconds. /** Returns the offset from the origin timezone to the remote timezone, in seconds.
* @param $remote_tz; * @param $remote_tz;
* @param $origin_tz; If null the servers current timezone is used as the origin. * @param $origin_tz; If null the servers current timezone is used as the origin.
* @return int; * @return int;
*/ */
function get_timezone_offset($remote_tz, $origin_tz = null) { function get_timezone_offset($remote_tz, $origin_tz = null) {
if ($origin_tz === null) { if ($origin_tz === null) {
if (!is_string($origin_tz = date_default_timezone_get())) { if (!is_string($origin_tz = date_default_timezone_get())) {
return false; // A UTC timestamp was returned -- bail out! return false; // A UTC timestamp was returned -- bail out!
} }
} }
$origin_dtz = new DateTimeZone($origin_tz); $origin_dtz = new DateTimeZone($origin_tz);
$remote_dtz = new DateTimeZone($remote_tz); $remote_dtz = new DateTimeZone($remote_tz);
$origin_dt = new DateTime("now", $origin_dtz); $origin_dt = new DateTime("now", $origin_dtz);
$remote_dt = new DateTime("now", $remote_dtz); $remote_dt = new DateTime("now", $remote_dtz);
$offset = $origin_dtz->getOffset($origin_dt) - $remote_dtz->getOffset($remote_dt); $offset = $origin_dtz->getOffset($origin_dt) - $remote_dtz->getOffset($remote_dt);
return $offset; return $offset;
} }
   
function getSensorValuesByHour($sensorID, $timeFrom, $timeTo) { function getSensorValuesByHour($sensorID, $timeFrom, $timeTo) {
$sql = 'select min(time) as time, min(value), max(value), avg(value), stddev(value) from sensor_values where sensor_id = ? $sql = 'select min(call_timestamp) as time, count(*), min(length), max(length), avg(length), stddev(length) from recordings
and extract(epoch from time) > ? and extract(epoch from time) < ? group by tgid, date_trunc(\'hour\', call_timestamp) order by time';
group by sensor_id, date_trunc(\'hour\', time) order by time';  
   
$query = $this->db->query($sql, Array($sensorID, $timeFrom, $timeTo)); $query = $this->db->query($sql, Array($sensorID, $timeFrom, $timeTo));
return $query->result_array(); return $query->result_array();
} }
   
function getSensorValuesByDay($sensorID, $dayFrom, $dayTo) { 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 = ? $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'; group by sensor_id, date_trunc(\'day\', time) order by time';
   
$query = $this->db->query($sql, Array($sensorID)); $query = $this->db->query($sql, Array($sensorID));
return $query->result_array(); return $query->result_array();
} }
   
function getSensorDataYears($sensorID, $timeFrom, $timeTo) { function getSensorDataYears($sensorID, $timeFrom, $timeTo) {
$sql = "select distinct extract('year' from time) as year from sensor_values where sensor_id = ? order by year"; $sql = "select distinct extract('year' from call_timestamp) as year from recordings where tgid = ? order by year";
   
$query = $this->db->query($sql, Array($sensorID)); $query = $this->db->query($sql, Array($sensorID));
return $query->result_array(); return $query->result_array();
} }
   
function getSensorDataMonths($sensorID, $timeFrom, $timeTo) { 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"; $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)); $query = $this->db->query($sql, Array($sensorID));
return $query->result_array(); return $query->result_array();
} }
   
function getSensorDataDays($sensorID, $timeFrom, $timeTo) { 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"; $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)); $query = $this->db->query($sql, Array($sensorID));
return $query->result_array(); return $query->result_array();
} }
   
function include_header($title) { function include_header($title) {
global $basePath; global $basePath;
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
   
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ --> <!-- 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 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 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 IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en"> <!--<![endif]--> <!--[if gt IE 8]><!--> <html lang="en"> <!--<![endif]-->
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
   
<!-- Set the viewport width to device width for mobile --> <!-- Set the viewport width to device width for mobile -->
<meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width" />
   
<title><?php echo $title; ?> - Scannr</title> <title><?php echo $title; ?> - Scannr</title>
   
<!-- Included CSS Files --> <!-- Included CSS Files -->
<link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/foundation.css"> <link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/foundation.css">
<link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/app.css"> <link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/app.css">
   
<!--[if lt IE 9]> <!--[if lt IE 9]>
<link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/ie.css"> <link rel="stylesheet" href="<?php echo $basePath ?>stylesheets/ie.css">
<![endif]--> <![endif]-->
   
   
<!-- IE Fix for HTML5 Tags --> <!-- IE Fix for HTML5 Tags -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]--> <![endif]-->
   
</head> </head>
<body xmlns:schema="http://schema.org/" xmlns:foaf="http://xmlns.com/foaf/0.1/"> <body xmlns:schema="http://schema.org/" xmlns:foaf="http://xmlns.com/foaf/0.1/">
   
<!-- navBar --> <!-- navBar -->
<div id="navbar" class="container"> <div id="navbar" class="container">
<div class="row"> <div class="row">
<div class="four columns"> <div class="four columns">
<h1><a href="/">Disclosr</a></h1> <h1><a href="/">Disclosr</a></h1>
</div> </div>
<div class="eight columns hide-on-phones"> <div class="eight columns hide-on-phones">
<strong class="right"> <strong class="right">
<a href="getAgency.php">Agencies</a> <a href="getAgency.php">Agencies</a>
<a href="about.php">About/FAQ</a> <a href="about.php">About/FAQ</a>
</strong> </strong>
</div> </div>
</div> </div>
</div> </div>
<!-- /navBar --> <!-- /navBar -->
   
<!-- container --> <!-- container -->
<div class="container"> <div class="container">
<?php <?php
} }
   
function include_footer() { function include_footer() {
global $basePath; global $basePath;
?> ?>
   
</div> </div>
<!-- container --> <!-- container -->
   
   
   
   
<!-- Included JS Files --> <!-- Included JS Files -->
<script src="<?php echo $basePath; ?>js/foundation.js"></script> <script src="<?php echo $basePath; ?>js/foundation.js"></script>
<script src="<?php echo $basePath; ?>js/app.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 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>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> <script type="text/javascript" src="<?php echo $basePath ?>js/flotr2/flotr2.js"></script>
<?php <?php
if (strpos($_SERVER['SERVER_NAME'], ".gs")) { if (strpos($_SERVER['SERVER_NAME'], ".gs")) {
?> ?>
<script type="text/javascript"> <script type="text/javascript">
   
var _gaq = _gaq || []; var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-12341040-2']); _gaq.push(['_setAccount', 'UA-12341040-2']);
_gaq.push(['_trackPageview']); _gaq.push(['_trackPageview']);
   
(function() { (function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 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'; 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); var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})(); })();
   
</script> </script>
   
</body> </body>
</html> </html>
   
<?php <?php
} }
} }
   
   
file:b/db.sql (new)
  --
  -- PostgreSQL database dump
  --
 
  -- Dumped from database version 9.1.2
  -- Dumped by pg_dump version 9.1.2
  -- Started on 2012-10-08 22:16:52
 
  SET statement_timeout = 0;
  SET client_encoding = 'UTF8';
  SET standard_conforming_strings = on;
  SET check_function_bodies = false;
  SET client_min_messages = warning;
 
  --
  -- TOC entry 162 (class 3079 OID 11639)
  -- Name: plpgsql; Type: EXTENSION; Schema: -; Owner:
  --
 
  CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
 
 
  --
  -- TOC entry 1856 (class 0 OID 0)
  -- Dependencies: 162
  -- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: