-
Notifications
You must be signed in to change notification settings - Fork 1
/
ala.occurences.php
90 lines (68 loc) · 2.01 KB
/
ala.occurences.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
<?php
require_once ('./bootstrap.php');
/**
* /ala.occurences.php?include=ala.details&bname=Acacia&lat=-34.928726&lon=138.59994&radius=5&dump=1
*/
/**
* Request > Validation, required params
*/
if (!isset($_REQUEST['bname'])) {// botanical name
\Api\View::out(400, 'Invalid parameters: `bname` required.');
}
$wkt = (isset($_POST['wkt']));
if(!$wkt){
if (!isset($_GET['lon'])) {// longitude
\Api\View::out(400, 'Invalid parameters: `lon` required.');
}
if (!isset($_GET['lat'])) {// latitude
\Api\View::out(400, 'Invalid parameters: `lat` required.');
}
if (!isset($_GET['radius'])) {// latitude
\Api\View::out(400, 'Invalid parameters: `radius` required.');
}
}
if($wkt){
if (empty($wkt)) {// wkt string
$wkt = false;
\Api\View::out(400, 'Invalid parameters: `wkt` is empty.');
}
}
$aggregator = new \Api\Aggregator();
/**
* Base Module: Occurences
*/
$request = ($wkt) ? $_REQUEST : $_GET;
$occurences = new \Api\Ala\Occurences($_REQUEST, $wkt);
$aggregator->set('ala.occurences', $occurences);
/**
* Additional modules
*/
if (isset($request['include'])){
// get species names for included modules
$species = array_keys($occurences->taxon_name);
$modules = $aggregator->parseModules($request['include']);
// add species for modules who require this, keep location data for modules who require them
$request['taxon_name'] = $species;
foreach((array)$modules as $module){
$service = $aggregator->moduleToNamespacedClass($module);
if(class_exists($service)){
$data = new $service($request, $wkt);
$aggregator->set($module, $data);
}
}
}
/**
* Debug: Dump
*/
if (isset($request['dump']) && (int) $request['dump'] > 0) {
\Api\View::serviceHeaders('html');
dump(json_decode(json_encode($aggregator)));
//print json_encode($aggregator, JSON_PRETTY_PRINT);
exit(1);
}
/**
* Default: Data
*/
\Api\View::serviceHeaders();
print json_encode($aggregator);
exit(1);