forked from asascience-open/mymaracoos-mobile
/
getPointForecast.php
95 lines (91 loc) · 3.07 KB
/
getPointForecast.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
<?php
date_default_timezone_set('UTC');
header('Content-type: application/json');
$data = array();
foreach (json_decode(file_get_contents('php://input'),true) as $name => $url) {
$dataString = file_get_contents($url);
$xml = @simplexml_load_string($dataString);
if ($xml && $xml->{'Point'}) {
foreach ($xml->{'Point'} as $p) {
// assume that the min time represents all hits
$a = preg_split("/-| |:/",sprintf("%s",$p->{'Time'}[0]));
$t = mktime($a[3],$a[4],$a[5],$a[0],$a[1],$a[2]);
if (isset($_REQUEST['nowOnly'])) {
if (!array_key_exists('time',$data) || $t < $data['time']) {
$data['time'] = $t;
}
}
foreach ($p->{'Value'} as $v) {
$var = sprintf("%s",$v->attributes()->{'Var'});
$val = sprintf("%s",$v);
$uom = sprintf("%s",$v->attributes()->{'Unit'});
if (!array_key_exists($var,$data) && is_numeric($val)) {
$data[$var] = array(
'val' => array($val)
,'t' => array($t)
,'uom' => $uom
,'lyr' => $name
);
}
else if (!isset($_REQUEST['nowOnly']) && is_numeric($val)) {
array_push($data[$var]['val'],$val);
array_push($data[$var]['t'],$t);
}
}
}
}
else {
$csv = csv_to_array($dataString);
for ($i = 0; $i < count($csv); $i++) {
// assume that the min time represents all hits
preg_match("/(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)Z/",$csv[$i]['time'],$a);
$t = mktime($a[4],$a[5],$a[6],$a[2],$a[3],$a[1]);
if (isset($_REQUEST['nowOnly'])) {
if (!array_key_exists('time',$data) || $t < $data['time']) {
$data['time'] = $t;
}
}
foreach (array_keys($csv[$i]) as $vStr) {
if ($vStr != 'time') {
preg_match("/(.*)\[(.*)\]/",$vStr,$a);
$var = $a[1];
$val = $csv[$i][$vStr];
$uom = $a[2];
if (!array_key_exists($var,$data) && is_numeric($val)) {
$data[$var] = array(
'val' => array($val)
,'t' => array($t)
,'uom' => $uom
,'lyr' => $name
);
}
else if (!isset($_REQUEST['nowOnly']) && is_numeric($val)) {
array_push($data[$var]['val'],$val);
array_push($data[$var]['t'],$t);
}
}
}
}
}
}
echo json_encode($data);
// from http://www.php.net/manual/en/function.str-getcsv.php#104558
function csv_to_array($input,$delimiter=',') {
$header = null;
$data = array();
$csvData = str_getcsv($input,"\n");
foreach ($csvData as $csvLine) {
if (is_null($header)) {
$header = explode($delimiter, $csvLine);
}
else {
$items = explode($delimiter, $csvLine);
for ($n = 0,$m = count($header); $n < $m; $n++) {
$prepareData[$header[$n]] = $items[$n];
}
$data[] = $prepareData;
}
}
return $data;
}
?>