Commit 81e8ab3f56c2e333b0604bb4a5b5517a7a0564d3
Exists in
master
and in
108 other branches
Merge branch 'new-amda-stat' into 'master'
New amda stat See merge request !30
Showing
6 changed files
with
327 additions
and
1354 deletions
Show diff stats
php/classes/AmdaAction.php
... | ... | @@ -762,7 +762,7 @@ class AmdaAction |
762 | 762 | case 'myDataParam' : |
763 | 763 | case 'derivedParam' : |
764 | 764 | if ($obj->nodeType == 'derivedParam' && $this->amdaStat->success) |
765 | - $this->amdaStat->addTask('create', $this->user, null); | |
765 | + $this->amdaStat->addTask($this->user, 'create', null); | |
766 | 766 | $objectMgr = new DerivedParamMgr($obj->nodeType); |
767 | 767 | break; |
768 | 768 | case 'timeTable' : |
... | ... | @@ -976,7 +976,7 @@ class AmdaAction |
976 | 976 | public function merge($obj) |
977 | 977 | { |
978 | 978 | if ($this->amdaStat->success) |
979 | - $this->amdaStat->addTask('ttoper', $this->user, null); | |
979 | + $this->amdaStat->addTask( $this->user, 'ttoper', null); | |
980 | 980 | |
981 | 981 | $objectMgr = new TimeTableMgr(); |
982 | 982 | |
... | ... | @@ -990,7 +990,7 @@ class AmdaAction |
990 | 990 | public function intersect($obj) |
991 | 991 | { |
992 | 992 | if ($this->amdaStat->success) |
993 | - $this->amdaStat->addTask('ttoper', $this->user, null); | |
993 | + $this->amdaStat->addTask($this->user, 'ttoper', null); | |
994 | 994 | |
995 | 995 | $objectMgr = new TimeTableMgr(); |
996 | 996 | $result = $objectMgr -> intersect($obj); |
... | ... | @@ -1159,7 +1159,7 @@ class AmdaAction |
1159 | 1159 | public function getHstImagesUrl($o) |
1160 | 1160 | { |
1161 | 1161 | if ($this->amdaStat->success) |
1162 | - $this->amdaStat->addTask('images', $this->user, null); | |
1162 | + $this->amdaStat->addTask($this->user, 'images', null); | |
1163 | 1163 | |
1164 | 1164 | $myHstMgr = new HstMgr(); |
1165 | 1165 | $res = $myHstMgr->getImagesUrl($o->startTime, $o->stopTime, $o->planet); |
... | ... | @@ -1171,7 +1171,7 @@ class AmdaAction |
1171 | 1171 | public function getAPISImagesUrl($o) |
1172 | 1172 | { |
1173 | 1173 | if ($this->amdaStat->success) |
1174 | - $this->amdaStat->addTask('images', $this->user, null); | |
1174 | + $this->amdaStat->addTask($this->user, 'images', null); | |
1175 | 1175 | |
1176 | 1176 | $apisMgr = new APISMgr(); |
1177 | 1177 | $res = $apisMgr->get($o->target, $o->startTime, $o->stopTime, $o->datasets); | ... | ... |
php/classes/AmdaStats.php
1 | 1 | <?php |
2 | 2 | /** |
3 | 3 | * @class AmdaStats |
4 | - * @version $Id: AmdaStats.php 2964 2015-06-26 07:53:48Z elena $ | |
5 | - * | |
4 | + * @version $Id: AmdaStats.php 2964 2015-06-26 07:53:48Z elena $ | |
6 | 5 | */ |
7 | 6 | |
8 | 7 | class AmdaStats { |
9 | - | |
10 | - public $statXml; | |
11 | - public $tasks = array('mining', 'print', 'plot'); | |
12 | - public $tasksAdd = array('ttoper', 'samp', 'upload', 'create', 'images'); | |
13 | - public $usersToExclude = array( 'bouchemit', 'impex'); | |
14 | - public $success = true; | |
15 | - public $paramInfo; | |
16 | - | |
17 | - public function __construct($user) { | |
18 | - | |
19 | - $this->statXml = new DomDocument('1.0','UTF-8'); | |
20 | - $this->statXml->preserveWhiteSpace = false; | |
21 | - $this->statXml->formatOutput = true; | |
22 | - | |
23 | - if (!defined("StatsXml")){ | |
24 | - if (!$user){ | |
25 | - // general - to read | |
26 | - define('StatsXml',DATAPATH.'Statistics/Stats.xml'); | |
27 | - // if (file_exists(StatsXml)) unlink(StatsXml); | |
28 | - } | |
29 | - else { | |
30 | - // individual - to write | |
31 | - define("StatsXml", USERPATH."/".$user."/Stats.xml"); | |
32 | - } | |
33 | - } | |
34 | - | |
35 | - if (!file_exists(StatsXml)){ | |
36 | - if (!is_dir(DATAPATH.'Statistics')) { | |
37 | - if (!mkdir(DATAPATH.'Statistics', 0775)) | |
38 | - return -1; | |
39 | - if (!chgrp(DATAPATH.'Statistics', APACHE_USER)) | |
40 | - return -1; | |
41 | - } | |
42 | - | |
43 | - $status = $this->generateXml(); | |
44 | - if (!$status) { | |
45 | - error_log('Cannot create Stats.xml: Fatal Error '.$user,1,email); | |
46 | - $this->success = false; | |
47 | - } | |
48 | - } | |
49 | - else { | |
50 | - $status = $this->statXml->load(StatsXml); | |
51 | - if (!$status) { | |
52 | - $status = $this->generateXml(); | |
53 | - $msg = $status ? 'Cannot load Stats.xml. New Stats.xml was created' : | |
54 | - 'Cannot load Stats.xml. Cannot create Stats.xml: Fatal Error '; | |
55 | - error_log($msg.$user,1,email); | |
56 | - if (!$status) $this->success = false; | |
57 | - } | |
58 | - } | |
59 | - | |
8 | + | |
9 | + public $statXml; | |
10 | + public $tasks = array('plot', 'mining', 'print', 'statistics'); | |
11 | + public $tasksAdd = array('ttoper', 'samp', 'upload', 'create', 'images'); | |
12 | + public $usersToExclude = array('bouchemit', 'impex'); | |
13 | + public $success = true; | |
14 | + private $user = null; | |
15 | + private $task = array('request'=>'plot','condition'=>'mining', 'download'=>'print','statistics'=>'statistics'); | |
16 | + | |
17 | + public function __construct($user) { | |
18 | + | |
19 | + $this->statXml = new DomDocument('1.0','UTF-8'); | |
20 | + $this->statXml->preserveWhiteSpace = false; | |
21 | + $this->statXml->formatOutput = true; | |
22 | + | |
23 | + if (!defined("StatsXml")){ | |
24 | + $thisYear = date("Y"); | |
25 | + if (!$user){ | |
26 | + // general - to read | |
27 | + // define('StatsXml',DATAPATH.'Statistics/Stats.xml'); | |
28 | + define("StatsXml",DATAPATH."Statistics/Stats$thisYear.xml"); | |
29 | + // if (file_exists(StatsXml)) unlink(StatsXml); | |
30 | + } | |
31 | + else { | |
32 | + // individual - to write | |
33 | + // define("StatsXml", USERPATH."/".$user."/Stats.xml"); | |
34 | + define("StatsXml", USERPATH.$user."/Stats$thisYear.xml"); | |
35 | + $this->user = $user; | |
36 | + } | |
37 | + } | |
38 | + | |
39 | + if (!file_exists(StatsXml)) { | |
40 | + if (!is_dir(DATAPATH.'Statistics')) { | |
41 | + if (!mkdir(DATAPATH.'Statistics', 0775)) $this->success = false; //return -1; | |
42 | + if (!chgrp(DATAPATH.'Statistics', APACHE_USER)) $this->success = false; // return -1; | |
43 | + } | |
44 | + | |
45 | + $status = $this->generateXml(); | |
46 | + if (!$status) { | |
47 | + error_log('Cannot create Stats.xml: Fatal Error '.$user,1,email); | |
48 | + $this->success = false; | |
49 | + } | |
50 | + } | |
51 | + else { | |
52 | + $status = $this->statXml->load(StatsXml); | |
53 | + if (!$status) { | |
54 | + $status = $this->generateXml(); | |
55 | + $msg = $status ? 'Cannot load Stats.xml. New Stats.xml was created' : | |
56 | + 'Cannot load Stats.xml. Cannot create Stats.xml: Fatal Error '; | |
57 | + | |
58 | + error_log($msg.$user,1,email); | |
59 | + | |
60 | + if (!$status) | |
61 | + $this->success = false; | |
62 | + } | |
63 | + } | |
60 | 64 | } |
61 | 65 | |
62 | 66 | /* |
63 | 67 | * Merge individual User Stats.xml into one generique Stats.xml |
64 | 68 | */ |
65 | - public function mergeXml() { | |
66 | - | |
67 | - $tags = array_merge($this->tasks, $this->tasksAdd); | |
68 | - | |
69 | - $doc2 = new DomDocument("1.0"); | |
70 | - | |
71 | - $users=glob(USERPATH."*"); | |
72 | - foreach ($users as $user) { | |
73 | - $name2 = $user."/Stats.xml"; | |
74 | - | |
75 | - if (!file_Exists($name2)) continue; | |
76 | - | |
77 | - $doc2->load($name2); | |
78 | - | |
79 | - foreach ($tags as $tag){ | |
80 | - $tag1 = $this->statXml->getElementsByTagName($tag)->item(0); | |
81 | - $tag2 = $doc2->getElementsByTagName($tag)->item(0); | |
82 | - $items2 = $tag2->getElementsByTagName("item"); | |
83 | - if ($items2->length > 0) { | |
84 | - foreach ($items2 as $item2) { | |
85 | - $item1 = $this->statXml->importNode($item2, true); | |
86 | - $tag1->appendChild($item1); | |
87 | - } | |
88 | - } | |
89 | - } | |
90 | - } | |
91 | - | |
92 | - // write task statistics as json | |
93 | - $this->getModulesStat(null,null,true); | |
94 | - // write data statistics as json | |
95 | - $this->getDataStat(0,null,null,true); | |
96 | - | |
97 | - return $this->statXml->save(StatsXml); | |
98 | - | |
99 | -} | |
100 | - | |
101 | - private function generateXml() { | |
102 | - | |
103 | - $rootElement = $this->statXml->createElement('stats'); | |
104 | - | |
105 | - $allTasks = array_merge($this->tasks, $this->tasksAdd); | |
106 | - | |
107 | - foreach ($allTasks as $task) { | |
108 | - $element = $this->statXml->createElement("$task"); | |
109 | - $rootElement->appendChild($element); | |
110 | - } | |
111 | - | |
112 | - $this->statXml->appendChild($rootElement); | |
113 | - | |
114 | - return $this->statXml->save(StatsXml); | |
115 | - } | |
116 | - | |
117 | - public function getInfo($var) { | |
118 | - | |
119 | - $info = $this->paramInfo->GetParamInfo($var); | |
120 | - $id = $info['ddinfos']['dataset']['id']; | |
121 | - | |
122 | - if (!$id) { | |
123 | - $id = $info['codeinfos']['vi']; | |
124 | - // check if from Remote base | |
125 | - if (!$id) { | |
126 | - $info = $this->paramInfo->getRemoteParamInfo($var); | |
127 | - if (!$info) | |
128 | - return 'undefined'; | |
129 | - else | |
130 | - return $info['base'].':'.$info['vi']; | |
131 | - } | |
132 | - else | |
133 | - return $id; | |
134 | - } | |
135 | - else | |
136 | - return $id; | |
137 | - | |
138 | - } | |
139 | - | |
140 | - public function addTask($task, $user, $vars){ | |
69 | + public function mergeXml($year) { | |
70 | + // long procedure | |
71 | + ini_set('max_execution_time', 600); | |
72 | + | |
73 | + $tags = array_merge($this->tasks, $this->tasksAdd); | |
74 | + | |
75 | + $doc2 = new DomDocument("1.0"); | |
76 | + if ($year == null) $year = date("Y"); | |
77 | + | |
78 | + $users=glob(USERPATH."*"); | |
79 | + foreach ($users as $user) { | |
80 | + $name2 = $user."/Stats$year.xml"; | |
81 | + | |
82 | + if (!file_exists($name2)) continue; | |
83 | + | |
84 | + $doc2->load($name2); | |
85 | + | |
86 | + foreach ($tags as $tag) { | |
87 | + $tag1 = $this->statXml->getElementsByTagName($tag)->item(0); | |
88 | + $tag2 = $doc2->getElementsByTagName($tag)->item(0); | |
89 | + $items2 = $tag2->getElementsByTagName("item"); | |
90 | + if ($items2->length > 0) { | |
91 | + foreach ($items2 as $item2) { | |
92 | + $item1 = $this->statXml->importNode($item2, true); | |
93 | + $tag1->appendChild($item1); | |
94 | + } | |
95 | + } | |
96 | + } | |
97 | + } | |
98 | + | |
99 | + // write task statistics as json | |
100 | + $this->getModulesStat(null,null,true); | |
101 | + // write data statistics as json | |
102 | + $this->getDataStat(0,null,null,true); | |
103 | + | |
104 | + return $this->statXml->save(StatsXml); | |
105 | + } | |
106 | + | |
107 | + private function generateXml() { | |
108 | + | |
109 | + $rootElement = $this->statXml->createElement('stats'); | |
110 | + | |
111 | + $allTasks = array_merge($this->tasks, $this->tasksAdd); | |
112 | + | |
113 | + foreach ($allTasks as $task) { | |
114 | + $element = $this->statXml->createElement("$task"); | |
115 | + $rootElement->appendChild($element); | |
116 | + } | |
117 | + | |
118 | + $this->statXml->appendChild($rootElement); | |
119 | + | |
120 | + return $this->statXml->save(StatsXml); | |
121 | + } | |
141 | 122 | |
142 | - if (!in_array($user, $this->usersToExclude)) { | |
143 | - | |
144 | - $taskElement = $this->statXml->getElementsByTagName("$task")->item(0); | |
145 | - if (is_object($taskElement)) { | |
146 | - $newTask = $this->statXml->createElement('item'); | |
147 | - $newTask->setAttribute('date', date('Y-m-d')); | |
148 | - $newTask->setAttribute('user', $user); | |
149 | - | |
150 | - if ($vars) { | |
151 | - $this->paramInfo = new ParamsInfoMgr(); | |
152 | - | |
153 | - $ID = array(); | |
154 | - | |
155 | - foreach ($vars as $var) { | |
156 | - if ((substr($var, 0, 7) == 'impex__') || (substr($var, 0, 13) == 'spase___IMPEX')){ | |
157 | - $ID[] = 'impex'; | |
158 | - } | |
159 | - elseif (substr($var, 0, 4) == 'wsd_') { | |
160 | - $ID[] = 'uploadedData'; | |
161 | - } | |
162 | - // if derived parameter parse it | |
163 | -// elseif (substr($var, 0, 3) == 'ws_') { | |
164 | -// | |
165 | -// if (!$parser) $parser = new Parser(); | |
166 | -// $realVar = $parser->replaceAll($var); | |
167 | -// $varArr = $parser->getVars($realVar); | |
168 | -// foreach ($varArr as $var) { | |
169 | -// $ID[] = $this->getInfo($var); | |
170 | -// } | |
171 | -// } | |
172 | - else { | |
173 | - $ID[] = $this->getInfo($var); | |
174 | - } | |
175 | - } | |
176 | - | |
177 | - $ID = array_unique($ID); | |
178 | - | |
179 | - foreach ($ID as $id) { | |
180 | - $datasetElement = $this->statXml->createElement('dataset', $id); | |
181 | - $newTask->appendChild($datasetElement); | |
182 | - } | |
183 | - } | |
184 | - | |
185 | - $taskElement->appendChild($newTask); | |
186 | - $this->statXml->save(StatsXml); | |
187 | - } | |
188 | - else | |
189 | - error_log('Check Stats.xml - no task element '.$task, 1, email); | |
190 | - } | |
191 | - } | |
123 | + public function addTask($user, $task, $vars) { | |
124 | + | |
125 | +// if (!$this->user) { | |
126 | +// error_log('User is null', 1, email); | |
127 | +// return; | |
128 | +// } | |
129 | + if ($task == 'killplot') | |
130 | + return; | |
131 | + | |
132 | + if ($vars) | |
133 | + $realTask = $this->task[$task]; | |
134 | + else | |
135 | + $realTask = $task; | |
136 | + | |
137 | + if (!in_array($user, $this->usersToExclude)) { | |
138 | + $taskElementNode = $this->statXml->getElementsByTagName("$realTask"); | |
139 | + | |
140 | + if ($taskElementNode->length < 1) | |
141 | + return; | |
142 | + | |
143 | + $taskElement = $taskElementNode->item(0); | |
144 | + if (is_object($taskElement)) { | |
145 | + $newTask = $this->statXml->createElement('item'); | |
146 | + $newTask->setAttribute('date', date('Y-m-d')); | |
147 | + $newTask->setAttribute('user', $user); | |
148 | + | |
149 | + if ($vars) { | |
150 | + $ID = array(); | |
151 | + | |
152 | + foreach ($vars as $var) { | |
153 | + $ID[] = $var; | |
154 | + } | |
155 | + | |
156 | + $ID = array_unique($ID); | |
157 | + | |
158 | + foreach ($ID as $id) { | |
159 | + $datasetElement = $this->statXml->createElement('dataset', $id); | |
160 | + $newTask->appendChild($datasetElement); | |
161 | + } | |
162 | + } | |
163 | + | |
164 | + $taskElement->appendChild($newTask); | |
165 | + $this->statXml->save(StatsXml); | |
166 | + } | |
167 | + else | |
168 | + error_log('Check Stats.xml - no task element '.$task, 1, email); | |
169 | + } | |
170 | + } | |
192 | 171 | |
193 | 172 | /* |
194 | 173 | * Show Statistics |
195 | 174 | */ |
196 | - public function getModulesStat($start, $stop, $update){ | |
197 | - | |
198 | - | |
199 | - if (!$update && file_exists(DATAPATH.'Statistics/tasks.json')) { | |
200 | - return file_get_contents(DATAPATH.'Statistics/tasks.json'); | |
201 | - } | |
202 | - | |
203 | - $taskArray = array(); | |
204 | - | |
205 | - foreach (array_merge($this->tasks,$this->tasksAdd) as $task) { | |
206 | - $theTask = $this->statXml->getElementsByTagName($task)->item(0); | |
207 | - $items = $theTask->getElementsByTagName('item'); | |
208 | - $hints = $items->length; | |
209 | - | |
210 | - $startStop = $this->getStartStop($items, $start, $stop); | |
211 | - $taskArray[] = array('task' => $task, 'number' => $hints, | |
212 | - 'start' => $startStop[0], 'stop' => $startStop[1]); | |
213 | - } | |
214 | - | |
215 | - $objToReturn = json_encode(array('stats' => $taskArray)); | |
216 | - | |
217 | - file_put_contents(DATAPATH.'Statistics/tasks.json', $objToReturn); | |
218 | - | |
219 | - return $objToReturn; | |
220 | - } | |
175 | + public function getModulesStat($start, $stop, $update){ | |
221 | 176 | |
222 | -/* | |
223 | -* Show Statistics | |
224 | -*/ | |
225 | - public function getDataStat($index, $start, $stop, $update){ | |
226 | - | |
227 | - | |
228 | - if (!$update && file_exists(DATAPATH.'Statistics/data.json')) { | |
229 | - $GENERALarray = json_decode(file_get_contents(DATAPATH.'Statistics/data.json')); | |
230 | - } | |
231 | - else { | |
232 | - $VIarray = array(); | |
233 | - $TOTALarray = array(); | |
234 | - $STARTarray = array(); | |
235 | - $STOParray = array(); | |
236 | - | |
237 | - foreach ($this->tasks as $task) { | |
238 | - | |
239 | - $theTask = $this->statXml->getElementsByTagName($task)->item(0); | |
240 | - $items = $theTask->getElementsByTagName('item'); | |
241 | - $TASKarray = array(); | |
242 | - | |
243 | - foreach ($items as $item){ | |
244 | - | |
245 | - $VIs = $item->getElementsByTagName('dataset'); | |
246 | - $time = strtotime($item->getAttribute('date')); | |
247 | - | |
248 | - foreach ($VIs as $VI) { | |
249 | - $id = $VI->nodeValue; | |
250 | - if ($id) { | |
251 | - if ($TASKarray[$id]) { | |
252 | - $TASKarray[$id]++; | |
253 | - $TOTALarray[$id]++; | |
254 | - if ($STARTarray[$id] > $time) | |
255 | - $STARTarray[$id] = $time; | |
256 | - if ($STOParray[$id] < $time) | |
257 | - $STOParray[$id] = $time; | |
258 | - } | |
259 | - else { | |
260 | - if (!$TOTALarray[$id]) { | |
261 | - $STARTarray[$id] = $time; | |
262 | - $STOParray[$id] = $time; | |
263 | - $TOTALarray[$id] = 1; | |
264 | - } | |
265 | - else { | |
266 | - if ($STARTarray[$id] > $time) | |
267 | - $STARTarray[$id] = $time; | |
268 | - if ($STOParray[$id] < $time) | |
269 | - $STOParray[$id] = $time; | |
270 | - $TOTALarray[$id]++; | |
271 | - } | |
272 | - $TASKarray[$id] = 1; | |
273 | - } | |
274 | - } | |
275 | - } | |
276 | - } | |
277 | - $VIarray[$task] = $TASKarray; | |
278 | - } | |
279 | - | |
280 | - $GENERALarray = array(); | |
281 | - arsort($TOTALarray); | |
282 | - | |
283 | - foreach ($TOTALarray as $key => $value) { | |
284 | - $viStart = $STARTarray[$key]; | |
285 | - $viStop = $STOParray[$key]; | |
286 | - $plot = $VIarray['plot'][$key]; | |
287 | - $mining = $VIarray['mining'][$key]; | |
288 | - $print = $VIarray['print'][$key]; | |
289 | - if ($key != 'undefined') | |
290 | - { | |
291 | - $GENERALarray[] = array('id' => $key, 'number' => $value, | |
292 | - 'plot' => $plot, 'mining' => $mining, | |
293 | - 'print' => $print, 'start' => $viStart, | |
294 | - 'stop' => $viStop); | |
295 | - } | |
296 | - } | |
297 | - } | |
298 | - | |
299 | - $Nmax = count($GENERALarray); | |
300 | - | |
301 | - $length = $index + 20 > $Nmax ? $Nmax - $index + 1 : 20; | |
302 | - $objToReturn = array('stats' => array_reverse(array_slice($GENERALarray, $index, $length))); | |
303 | - | |
304 | - file_put_contents(DATAPATH.'Statistics/data.json',json_encode($GENERALarray)); | |
305 | - // $objToReturn = array('stats' => $GENERALarray); | |
306 | - return $objToReturn; | |
307 | - } | |
308 | - | |
309 | - public function getStartStop($items, $start, $stop){ | |
310 | - | |
311 | - if (!$start) $start = 0; | |
312 | - if (!$stop) $stop = 100000000000; | |
313 | - $date = array(); | |
314 | - | |
315 | - foreach ($items as $item) { | |
316 | - $newDate = strtotime($item->getAttribute('date')); | |
317 | - | |
318 | - if (($newDate > $start) && ($newDate < $stop)) | |
319 | - $date[] = $newDate; | |
320 | - } | |
321 | - | |
322 | - return array(min($date), max($date)); | |
323 | - } | |
177 | + if (!$update && file_exists(DATAPATH.'Statistics/tasks.json')) { | |
178 | + return file_get_contents(DATAPATH.'Statistics/tasks.json'); | |
179 | + } | |
180 | + | |
181 | + $taskArray = array(); | |
324 | 182 | |
325 | - public function mergeStats($inXml) { | |
183 | + foreach (array_merge($this->tasks,$this->tasksAdd) as $task) { | |
184 | + $theTask = $this->statXml->getElementsByTagName($task)->item(0); | |
185 | + $items = $theTask->getElementsByTagName('item'); | |
186 | + $hints = $items->length; | |
326 | 187 | |
188 | + $startStop = $this->getStartStop($items, $start, $stop); | |
189 | + $taskArray[] = array('task' => $task, 'number' => $hints, | |
190 | + 'start' => $startStop[0], 'stop' => $startStop[1]); | |
191 | + } | |
327 | 192 | |
328 | - if (!file_exists(StatsXml)) return 0; | |
193 | + $objToReturn = json_encode(array('stats' => $taskArray)); | |
329 | 194 | |
330 | - if (!file_exists($inXml)) return 0; | |
195 | + file_put_contents(DATAPATH.'Statistics/tasks.json', $objToReturn); | |
331 | 196 | |
332 | - $tags = array_merge($this->tasks,$this->tasksAdd); | |
197 | + return $objToReturn; | |
198 | + } | |
333 | 199 | |
334 | - $doc1 = new DomDocument("1.0"); | |
335 | - $doc2 = new DomDocument("1.0"); | |
336 | - | |
337 | - if (!$doc1->load(StatsXml)) return 0; | |
338 | - if (!$doc2->load($inXml)) return 0; | |
339 | - | |
340 | - foreach ($tags as $tag){ | |
200 | +/* | |
201 | +* Show Statistics | |
202 | +*/ | |
203 | + public function getDataStat($index, $start, $stop, $update){ | |
204 | + | |
205 | + if (!$update && file_exists(DATAPATH.'Statistics/data.json')) { | |
206 | + $GENERALarray = json_decode(file_get_contents(DATAPATH.'Statistics/data.json')); | |
207 | + } | |
208 | + else { | |
209 | + $VIarray = array(); | |
210 | + $TOTALarray = array(); | |
211 | + $STARTarray = array(); | |
212 | + $STOParray = array(); | |
213 | + | |
214 | + foreach ($this->tasks as $task) { | |
215 | + $theTask = $this->statXml->getElementsByTagName($task)->item(0); | |
216 | + $items = $theTask->getElementsByTagName('item'); | |
217 | + $TASKarray = array(); | |
218 | + | |
219 | + foreach ($items as $item){ | |
220 | + $VIs = $item->getElementsByTagName('dataset'); | |
221 | + $time = strtotime($item->getAttribute('date')); | |
222 | + | |
223 | + foreach ($VIs as $VI) { | |
224 | + $id = $VI->nodeValue; | |
225 | + if ($id) { | |
226 | + if ($TASKarray[$id]) { | |
227 | + $TASKarray[$id]++; | |
228 | + $TOTALarray[$id]++; | |
229 | + if ($STARTarray[$id] > $time) | |
230 | + $STARTarray[$id] = $time; | |
231 | + if ($STOParray[$id] < $time) | |
232 | + $STOParray[$id] = $time; | |
233 | + } | |
234 | + else { | |
235 | + if (!$TOTALarray[$id]) { | |
236 | + $STARTarray[$id] = $time; | |
237 | + $STOParray[$id] = $time; | |
238 | + $TOTALarray[$id] = 1; | |
239 | + } | |
240 | + else { | |
241 | + if ($STARTarray[$id] > $time) | |
242 | + $STARTarray[$id] = $time; | |
243 | + if ($STOParray[$id] < $time) | |
244 | + $STOParray[$id] = $time; | |
245 | + $TOTALarray[$id]++; | |
246 | + } | |
247 | + $TASKarray[$id] = 1; | |
248 | + } | |
249 | + } | |
250 | + } | |
251 | + } | |
252 | + $VIarray[$task] = $TASKarray; | |
253 | + } | |
254 | + | |
255 | + $GENERALarray = array(); | |
256 | + arsort($TOTALarray); | |
257 | + | |
258 | + $Ntotal = 0; | |
259 | + | |
260 | + foreach ($TOTALarray as $key => $value) { | |
261 | + $viStart = $STARTarray[$key]; | |
262 | + $viStop = $STOParray[$key]; | |
263 | + $plot = $VIarray['plot'][$key]; | |
264 | + $mining = $VIarray['mining'][$key]; | |
265 | + $print = $VIarray['print'][$key]; | |
266 | + $stat = $VIarray['statistics'][$key]; | |
267 | + if ($key != 'undefined') | |
268 | + { | |
269 | + $GENERALarray[] = array('id' => $key, 'number' => $value, 'percent' => $value, | |
270 | + 'plot' => $plot, 'mining' => $mining, | |
271 | + 'print' => $print,'statistics' => $stat, | |
272 | + 'start' => $viStart, 'stop' => $viStop); | |
273 | + | |
274 | + $Ntotal += $value; | |
275 | + } | |
276 | + } | |
277 | + | |
278 | + $Ntotal /= 100; | |
279 | + | |
280 | + foreach ($GENERALarray as &$elem) { | |
281 | + $elem['percent'] = round($elem['percent'] / $Ntotal, 2); | |
282 | + } | |
283 | + | |
284 | + } | |
285 | + | |
286 | + $Nmax = count($GENERALarray); | |
341 | 287 | |
342 | - $tag1 = $doc1->getElementsByTagName($tag)->item(0); | |
343 | - $tag2 = $doc2->getElementsByTagName($tag)->item(0); | |
344 | - $items2 = $tag2->getElementsByTagName("item"); | |
345 | - if ($items2->length > 0) { | |
346 | - foreach ($items2 as $item2) { | |
347 | - $item1 = $doc1->importNode($item2, true); | |
348 | - $tag1->appendChild($item1); | |
349 | - } | |
350 | - } | |
351 | - } | |
352 | - | |
353 | - return $doc1->save(StatsXml); | |
354 | - | |
355 | - } | |
288 | + $length = $index + 20 > $Nmax ? $Nmax - $index + 1 : 20; | |
289 | + $objToReturn = array('stats' => array_reverse(array_slice($GENERALarray, $index, $length))); | |
290 | + | |
291 | + file_put_contents(DATAPATH.'Statistics/data.json',json_encode($GENERALarray)); | |
292 | + | |
293 | + // $objToReturn = array('stats' => $GENERALarray); | |
294 | + return $objToReturn; | |
295 | + } | |
296 | + | |
297 | + public function getStartStop($items, $start, $stop) { | |
298 | + if (!$start) $start = 0; | |
299 | + if (!$stop) $stop = 100000000000; | |
300 | + | |
301 | + $date = array(); | |
302 | + | |
303 | + foreach ($items as $item) { | |
304 | + $newDate = strtotime($item->getAttribute('date')); | |
305 | + | |
306 | + if (($newDate > $start) && ($newDate < $stop)) | |
307 | + $date[] = $newDate; | |
308 | + } | |
309 | + | |
310 | + return array(min($date), max($date)); | |
311 | + } | |
312 | + | |
313 | + public function mergeStats($inXml) { | |
314 | + | |
315 | + if (!file_exists(StatsXml)) return 0; | |
316 | + if (!file_exists($inXml)) return 0; | |
317 | + | |
318 | + $tags = array_merge($this->tasks,$this->tasksAdd); | |
319 | + | |
320 | + $doc1 = new DomDocument("1.0"); | |
321 | + $doc2 = new DomDocument("1.0"); | |
322 | + | |
323 | + if (!$doc1->load(StatsXml)) return 0; | |
324 | + if (!$doc2->load($inXml)) return 0; | |
325 | + | |
326 | + foreach ($tags as $tag){ | |
327 | + $tag1 = $doc1->getElementsByTagName($tag)->item(0); | |
328 | + $tag2 = $doc2->getElementsByTagName($tag)->item(0); | |
329 | + $items2 = $tag2->getElementsByTagName("item"); | |
330 | + if ($items2->length > 0) { | |
331 | + foreach ($items2 as $item2) { | |
332 | + $item1 = $doc1->importNode($item2, true); | |
333 | + $tag1->appendChild($item1); | |
334 | + } | |
335 | + } | |
336 | + } | |
337 | + | |
338 | + return $doc1->save(StatsXml); | |
339 | + } | |
356 | 340 | } |
357 | 341 | ?> | ... | ... |
php/classes/InfoProvider.php deleted
... | ... | @@ -1,30 +0,0 @@ |
1 | -<?php | |
2 | -/** | |
3 | - * @class InfoProvider | |
4 | - * @version $Id: InfoProvider.php 2662 2014-11-26 09:45:33Z natacha $ | |
5 | - * | |
6 | - */ | |
7 | -class InfoProvider { | |
8 | -// units conversion: | |
9 | -// km2Re = 1./6371.0; km2au = 1./1.5 *10^9; km2rma (mars) 1./3396.0; km2rv 1.0/6052.0; km2rmะต 1.0/2439.7 | |
10 | - public $realConversion = array( 'km2re' => '1.5696e-4', 'K2eV' => '8.622e-5', 'MK2eV' => '86.2069', | |
11 | - 'km2au' => '6.68e-9', 'km2rma' => '2.945e-4', 'km2rv' => '1.652e-4', | |
12 | - 'rma2km' => '3396.0', 'rv2km' => '6052.0', 'rga2km' => '2631.0', | |
13 | - 're2km' => '6371.0', 'km2rmะต' => '4.099e-4','rme2km' => '2440.0', | |
14 | - 'mbar2npa' => '1.0e11', 'a2na' => '1.0e9'); | |
15 | - | |
16 | - public $Constants; | |
17 | - | |
18 | - | |
19 | - function __construct() { | |
20 | - $this->Constants = array(); | |
21 | - } | |
22 | - | |
23 | -//TODO constants => from constants.xml | |
24 | - | |
25 | - public function getConversion($key) { | |
26 | - if ($this->realConversion[$key]) return $this->realConversion[$key]; | |
27 | - return -1; | |
28 | - } | |
29 | - } | |
30 | -?> | |
31 | 0 | \ No newline at end of file |
php/classes/ParamsInfoMgr.php deleted
... | ... | @@ -1,980 +0,0 @@ |
1 | -<?php | |
2 | -/** | |
3 | - * @class ParamsInfoMgr | |
4 | - * @version $Id: ParamsInfoMgr.php 2780 2015-02-26 12:02:37Z elena $ | |
5 | - * | |
6 | - */ | |
7 | - | |
8 | - class ParamsInfoMgr { | |
9 | - protected $derivedParamMgr, $mydataParamMgr, $mySimuParamMgr; | |
10 | - | |
11 | - protected $missionDom, $localDom, $internalDom; | |
12 | - | |
13 | - protected $ddLocalMissionXPath; | |
14 | - | |
15 | - function __construct() { | |
16 | - $this->ddLocalMissionXPath = array(); | |
17 | - } | |
18 | - | |
19 | - /* | |
20 | - * Get all info for a given REMOTE THEMIS parameter | |
21 | - */ | |
22 | - public function getRemoteThemisParamInfo($param) { | |
23 | - | |
24 | - $info = array(); | |
25 | - | |
26 | - if (sscanf($param,"%[^'('](%d:%d)",$par,$cstart,$cstop) == 3) | |
27 | - { | |
28 | - $comp_start = $cstart; | |
29 | - $comp_stop = $cstop; | |
30 | - } | |
31 | - else if (sscanf($param,"%[^'('](%d)",$par,$cstart) == 2) | |
32 | - { | |
33 | - $comp_start = $cstart; | |
34 | - $comp_stop = $cstart; | |
35 | - } | |
36 | - else | |
37 | - $par = $param; | |
38 | - | |
39 | - $paramXML = new DomDocument("1.0"); | |
40 | - if (!$paramXML->load(RemoteData."THEMIS/base.xml")) return null; | |
41 | - | |
42 | - | |
43 | - $paramID = $paramXML->getElementById($par); | |
44 | - if($paramID == null ) return null; | |
45 | - | |
46 | - $parent = $paramID ->parentNode; | |
47 | - | |
48 | - $vi = $parent->getAttribute('xml:id'); | |
49 | - | |
50 | - $info['base'] = ''; | |
51 | - $info['vi'] = $vi; | |
52 | - | |
53 | - return $info; | |
54 | - | |
55 | - } | |
56 | - | |
57 | - /* | |
58 | - * Get all info for a given REMOTE parameter | |
59 | - */ | |
60 | - public function getRemoteParamInfo($param) { | |
61 | - | |
62 | - if (substr($param,0,2) == 'th') | |
63 | - return $this->getRemoteThemisParamInfo($param); | |
64 | - | |
65 | - $info = array(); | |
66 | - | |
67 | - $ParamFile = RemoteData.'PARAMS/'.$param.'.xml'; | |
68 | - if (!file_exists($ParamFile)) return null; | |
69 | - | |
70 | - $paramXML = new DomDocument("1.0"); | |
71 | - if (!$paramXML->load($ParamFile)) return null; | |
72 | - | |
73 | - $fieldname = $paramXML->getElementsByTagName('paramID'); | |
74 | - if($fieldname->length == 0 ) return null; | |
75 | - | |
76 | - $base = $paramXML->getElementsByTagName('baseID'); | |
77 | - $vi = $paramXML->getElementsByTagName('viID'); | |
78 | - | |
79 | - $info['base'] = $base->length == 0 ? 'undefined' : $base->item(0)->nodeValue; | |
80 | - $info['vi'] = $vi->length == 0 ? 'undefined' : $vi->item(0)->nodeValue; | |
81 | - | |
82 | - $info['title'] = $fieldname->item(0)->nodeValue; | |
83 | - | |
84 | - return $info; | |
85 | - | |
86 | - } | |
87 | - | |
88 | - /* | |
89 | - * Get all info for a given parameter | |
90 | - */ | |
91 | - public function GetParamInfo($param) | |
92 | - { | |
93 | - // to correct 'restricted' parameters | |
94 | - if (strpos($param, restricted) !== false) { | |
95 | - $param = str_replace(restricted,"",$param); | |
96 | - } | |
97 | - | |
98 | - //get components | |
99 | - if (sscanf($param,"%[^'('](%d:%d)",$par,$cstart,$cstop) == 3) | |
100 | - { | |
101 | - $comp_start = $cstart; | |
102 | - $comp_stop = $cstop; | |
103 | - } | |
104 | - else if (sscanf($param,"%[^'('](%d)",$par,$cstart) == 2) | |
105 | - { | |
106 | - $comp_start = $cstart; | |
107 | - $comp_stop = $cstart; | |
108 | - } | |
109 | - else | |
110 | - $par = $param; | |
111 | - | |
112 | - if (strncmp(strtolower($par), 'ws_', 3) == 0) | |
113 | - return $this->GetDerivedParamInfo(substr($par,3),$comp_start,$comp_stop); | |
114 | - else if (strncmp(strtolower($par), 'wsd_', 4) == 0) | |
115 | - return $this->GetMyDataParamInfo(substr($par,4),$comp_start,$comp_stop); | |
116 | - else if (strncmp(strtolower($par), 'spase_', 6) == 0) | |
117 | - return $this->GetSimuDataParamInfo($par,$comp_start,$comp_stop); | |
118 | - | |
119 | - return $this->GetLocalParamInfo($par,$comp_start,$comp_stop); | |
120 | - } | |
121 | - | |
122 | - /* | |
123 | - * Get a full list of available missions (only missions with the status 'required') that come from Mission.xml file | |
124 | - */ | |
125 | - public function GetMissionsList() | |
126 | - { | |
127 | - if (!$this->missionDom) | |
128 | - { | |
129 | - $this->missionDom = new DomDocument("1.0"); | |
130 | - if (!$this->missionDom->load(missionXml)) | |
131 | - return array('success' => false, 'message' => 'Cannot load missions file'); | |
132 | - } | |
133 | - | |
134 | - $missions = $this->missionDom->getElementsByTagName('MissionID'); | |
135 | - | |
136 | - $missions_array = array('success' => true); | |
137 | - | |
138 | - foreach ($missions as $mission) | |
139 | - { | |
140 | -// if ($mission->getAttribute('status') != 'required') | |
141 | -// continue; | |
142 | - $id = $mission->nodeValue; | |
143 | - $group = $mission->getAttribute('group'); | |
144 | - $missions_array[$id] = array("group" => $group); | |
145 | - } | |
146 | - | |
147 | - return $missions_array; | |
148 | - } | |
149 | - | |
150 | - /* | |
151 | - * Extract sub mission info from a node (DD_*.xml file) | |
152 | - */ | |
153 | - private function ExtractDDSubMissionInfoFromNode($node) | |
154 | - { | |
155 | - $name = $node->getAttribute('name'); | |
156 | - $desc = $node->getAttribute('desc'); | |
157 | - $help = $node->getAttribute('attention'); | |
158 | - $class = $node->getAttribute('class'); | |
159 | - if ($node->hasAttribute('xml:id')) { | |
160 | - $id = $node->getAttribute('xml:id'); | |
161 | - } | |
162 | - else { | |
163 | - $tmp = explode("@",$name); | |
164 | - $id = $tmp[0]; | |
165 | - } | |
166 | - | |
167 | - return array( | |
168 | - "name" => $name, | |
169 | - "desc" => $desc, | |
170 | - "help" => $help, | |
171 | - "class" => $class, | |
172 | - "id" => $id | |
173 | - ); | |
174 | - } | |
175 | - | |
176 | - /* | |
177 | - * Extract instrument info from a node (DD_*.xml file) | |
178 | - */ | |
179 | - private function ExtractDDInstrumentInfoFromNode($node) | |
180 | - { | |
181 | - $name = $node->getAttribute('name'); | |
182 | - $desc = $node->getAttribute('desc'); | |
183 | - $help = $node->getAttribute('attention'); | |
184 | - $id = $node->getAttribute('xml:id'); | |
185 | - $refURL = $node->getAttribute('refURL'); | |
186 | - | |
187 | - $alternatenode = $node->getElementsByTagName('alternateName'); | |
188 | - $alt = array(); | |
189 | - foreach ($alternatenode as $a) | |
190 | - array_push($alt,$a->nodeValue); | |
191 | - | |
192 | - $classnode = $node->getElementsByTagName('class'); | |
193 | - $class = array(); | |
194 | - foreach ($classnode as $c) | |
195 | - array_push($class,$c->nodeValue); | |
196 | - | |
197 | - $pinode = $node->getElementsByTagName('pi'); | |
198 | - $pi = ($pinode->length > 0) ? $pinode->item(0)->nodeValue : ''; | |
199 | - | |
200 | - return array( | |
201 | - "name" => $name, | |
202 | - "desc" => $desc, | |
203 | - "help" => $help, | |
204 | - "pi" => $pi, | |
205 | - "id" => $id, | |
206 | - "refURL" => $refURL, | |
207 | - "alternamename" => $alt, | |
208 | - "class" => $class | |
209 | - ); | |
210 | - } | |
211 | - | |
212 | - /* | |
213 | - * Extract parameter info from a node (DD_*.xml file) | |
214 | - */ | |
215 | - private function ExtractDDDatasetInfoFromNode($node) | |
216 | - { | |
217 | - $id = $node->getAttribute('xml:id'); | |
218 | - $name = $node->getAttribute('name'); | |
219 | - $help = $node->getAttribute('attention'); | |
220 | - $sampnode = $node->getElementsByTagName('sampling'); | |
221 | - $min_samp = ($sampnode->length > 0) ? $sampnode->item(0)->nodeValue : '0'; | |
222 | - $sampnode = $node->getElementsByTagName('maxSampling'); | |
223 | - $max_samp = ($sampnode->length > 0) ? $sampnode->item(0)->nodeValue : $min_samp; | |
224 | - $startnode = $node->getElementsByTagName('dataStart'); | |
225 | - $start = ($startnode->length > 0) ? $startnode->item(0)->nodeValue : '1970/01/01'; | |
226 | - $stopnode = $node->getElementsByTagName('dataStop'); | |
227 | - $stop = ($stopnode->length > 0) ? $stopnode->item(0)->nodeValue : '1970/01/01'; | |
228 | - $sourcenode = $node->getElementsByTagName('dataSource'); | |
229 | - $source = ($sourcenode->length > 0) ? $sourcenode->item(0)->nodeValue : ''; | |
230 | - | |
231 | - $infonode = $node->getElementsByTagName('info'); | |
232 | - $infonode = ($infonode->length > 0) ? $infonode->item(0) : NULL; | |
233 | - | |
234 | - $title = ''; | |
235 | - $des = ''; | |
236 | - $creator = ''; | |
237 | - $calibration = ''; | |
238 | - $subject = array(); | |
239 | - $contributor = array(); | |
240 | - $target = array(); | |
241 | - | |
242 | - if (isset($infonode)) | |
243 | - { | |
244 | - $titlenode = $infonode->getElementsByTagName('title'); | |
245 | - $title = ($titlenode->length > 0) ? $titlenode->item(0)->nodeValue : ''; | |
246 | - | |
247 | - $desnode = $infonode->getElementsByTagName('description'); | |
248 | - $des = ($desnode->length > 0) ? $desnode->item(0)->nodeValue : ''; | |
249 | - | |
250 | - $creatornode = $infonode->getElementsByTagName('creator'); | |
251 | - $creator = ($creatornode->length > 0) ? $creatornode->item(0)->nodeValue : ''; | |
252 | - | |
253 | - $calibrationnode = $infonode->getElementsByTagName('calibration'); | |
254 | - $calibration = ($calibrationnode->length > 0) ? $calibrationnode->item(0)->nodeValue : ''; | |
255 | - | |
256 | - $subjectnode = $infonode->getElementsByTagName('subject'); | |
257 | - foreach ($subjectnode as $s) | |
258 | - array_push($subject,$s->nodeValue); | |
259 | - | |
260 | - $contributornode = $infonode->getElementsByTagName('contributor'); | |
261 | - foreach ($contributornode as $c) | |
262 | - array_push($contributor,$c->nodeValue); | |
263 | - | |
264 | - $targetnode = $infonode->getElementsByTagName('target'); | |
265 | - foreach ($targetnode as $t) | |
266 | - array_push($target,$t->nodeValue); | |
267 | - } | |
268 | - | |
269 | - return array( | |
270 | - "id" => $id, | |
271 | - "name" => $name, | |
272 | - "help" => $help, | |
273 | - "minsampling" => $min_samp, | |
274 | - "maxsampling" => $max_samp, | |
275 | - "starttime" => $start, | |
276 | - "stoptime" => $stop, | |
277 | - "source" => $source, | |
278 | - "title" => $title, | |
279 | - "description" => $des, | |
280 | - "creator" => $creator, | |
281 | - "calibration" => $calibration, | |
282 | - "subject" => $subject, | |
283 | - "contributor" => $contributor, | |
284 | - "target" => $target | |
285 | - ); | |
286 | - } | |
287 | - | |
288 | - /* | |
289 | - * Extract parameter info from a node (DD_*.xml file) | |
290 | - */ | |
291 | - private function ExtractDDParameterInfoFromNode($node, $comp_start = NULL, $comp_stop = NULL) | |
292 | - { | |
293 | - $units = $node->getAttribute('units'); | |
294 | - $display_type = $node->getAttribute('display_type'); | |
295 | - | |
296 | - $components = $node->getElementsByTagName('component'); | |
297 | - | |
298 | - //additionals info | |
299 | - $infonode = $node->getElementsByTagName('info'); | |
300 | - $infonode = ($infonode->length > 0) ? $infonode->item(0) : NULL; | |
301 | - | |
302 | - $des = ""; | |
303 | - $ucd = ""; | |
304 | - $type = ""; | |
305 | - | |
306 | - if (isset($infonode)) | |
307 | - { | |
308 | - $desnode = $infonode->getElementsByTagName('description'); | |
309 | - $des = ($desnode->length > 0) ? $desnode->item(0)->nodeValue : ''; | |
310 | - | |
311 | - $ucdnode = $infonode->getElementsByTagName('ucd'); | |
312 | - $ucd = ($ucdnode->length > 0) ? $ucdnode->item(0)->nodeValue : ''; | |
313 | - | |
314 | - $typenode = $infonode->getElementsByTagName('type'); | |
315 | - $type = ($typenode->length > 0) ? $typenode->item(0)->nodeValue : ''; | |
316 | - | |
317 | - } | |
318 | - | |
319 | - //size of the full parameter | |
320 | - if ($node->getAttribute('size') != '') | |
321 | - $fullsize = intval($node->getAttribute('size')); | |
322 | - else | |
323 | - { | |
324 | - if ($components->length > 0) | |
325 | - $fullsize = $components->length; | |
326 | - else | |
327 | - $fullsize = 1; | |
328 | - } | |
329 | - | |
330 | - //get all components labels | |
331 | - $comps_all_labels = array(); | |
332 | - if ($fullsize > 1) | |
333 | - { | |
334 | - if (($fullsize != $components->length)&& ($name !='')) | |
335 | - { | |
336 | - for ($i = 0; $i < $fullsize; $i++) | |
337 | - $comps_all_labels[] = $name.'_'.$i; | |
338 | - } | |
339 | - else | |
340 | - { | |
341 | - $i = 0; | |
342 | - foreach ($components as $comp) | |
343 | - { | |
344 | - $comps_all_labels[] = $comp->getAttribute('name'); | |
345 | - $i++; | |
346 | - } | |
347 | - } | |
348 | - } | |
349 | - | |
350 | - //real size | |
351 | - if (isset($comp_start)) | |
352 | - { | |
353 | - if (isset($comp_stop) && ($comp_start != $comp_stop)) | |
354 | - $size = $comp_stop - $comp_start; | |
355 | - else | |
356 | - { | |
357 | - $size = 1; | |
358 | - $comp_stop = $comp_start; | |
359 | - } | |
360 | - } | |
361 | - else | |
362 | - { | |
363 | - $comp_start = 0; | |
364 | - $comp_stop = $fullsize-1; | |
365 | - $size = $fullsize; | |
366 | - } | |
367 | - | |
368 | - if ($size != $fullsize) | |
369 | - { | |
370 | - if ($size == 1) | |
371 | - { | |
372 | - $id = $node->getAttribute('xml:id')."_".$comp_start; | |
373 | - $name = $comps_all_labels[$comp_start]; | |
374 | - } | |
375 | - else | |
376 | - { | |
377 | - $id = $node->getAttribute('xml:id')."_".$comp_start."_".$comp_stop; | |
378 | - $name = $node->getAttribute('name')."_".$comp_start."_".$comp_stop; | |
379 | - $comps_label = ""; | |
380 | - for ($i = $comp_start; $i <= $comp_stop; $i++) | |
381 | - { | |
382 | - if ($i != $comp_start) | |
383 | - $comps_label .= " "; | |
384 | - $comps_label .= $comps_all_labels[$i]; | |
385 | - } | |
386 | - } | |
387 | - } | |
388 | - else | |
389 | - { | |
390 | - $name = $node->getAttribute('name'); | |
391 | - $id = $node->getAttribute('xml:id'); | |
392 | - $comps_label = ""; | |
393 | - for ($i = 0; $i < $size; $i++) | |
394 | - { | |
395 | - if ($i != 0) | |
396 | - $comps_label .= " "; | |
397 | - $comps_label .= $comps_all_labels[$i]; | |
398 | - } | |
399 | - } | |
400 | - | |
401 | - return array( | |
402 | - "id" => $id, | |
403 | - "name" => $name, | |
404 | - "units" => $units, | |
405 | - "size" => $size, | |
406 | - "display_type" => $display_type, | |
407 | - "comps_label" => $comps_label, | |
408 | - "description" => $des, | |
409 | - "ucd" => $ucd, | |
410 | - "type" => $type | |
411 | - ); | |
412 | - } | |
413 | - | |
414 | - | |
415 | - | |
416 | - /* | |
417 | - * Get the DD_*.xml XPath from a mission id | |
418 | - */ | |
419 | - public function GetDDMissionXPath($mission_id) | |
420 | - { | |
421 | - if ($this->ddLocalMissionXPath[$mission_id]) | |
422 | - return $this->ddLocalMissionXPath[$mission_id]; | |
423 | - | |
424 | - $mission_file = LocalData.'DD_'.$mission_id.'.xml'; | |
425 | - | |
426 | - if (!file_exists($mission_file)) | |
427 | - return null; | |
428 | - | |
429 | - $ddDom = new DomDocument("1.0"); | |
430 | - $ddDom->load($mission_file); | |
431 | - | |
432 | - $this->ddLocalMissionXPath[$mission_id] = new DOMXPath($ddDom); | |
433 | - | |
434 | - return $this->ddLocalMissionXPath[$mission_id]; | |
435 | - } | |
436 | - | |
437 | - /* | |
438 | - * Get sub-missions info available in the DD_*.xml file from mission id | |
439 | - * (a DD_*.xml file can contain more than one mission, for example THEMIS-A, THEMIS-B, etc..., this is what we called "sub-mission") | |
440 | - */ | |
441 | - public function GetDDMissionInfo($mission_id) | |
442 | - { | |
443 | - $ddPath = $this->GetDDMissionXPath($mission_id); | |
444 | - | |
445 | - if (!$ddPath) | |
446 | - return array('success' => false, 'message' => 'Error to parse DD mission file '.$mission_id); | |
447 | - | |
448 | - $subMiss = $ddPath->query("//mission"); | |
449 | - | |
450 | - $sub_array = array(); | |
451 | - | |
452 | - foreach($subMiss as $sub) | |
453 | - { | |
454 | - $infos = $this->ExtractDDSubMissionInfoFromNode($sub); | |
455 | - $inst = $this->GetDDInstrumentsInfo($mission_id, $infos['name']); | |
456 | - | |
457 | - $sub_array[$infos['name']] = array( | |
458 | - "desc" => $infos['desc'], | |
459 | - "help" => $infos['help'], | |
460 | - "class" => $infos['class'], | |
461 | - "instruments" => $inst); | |
462 | - } | |
463 | - | |
464 | - return $sub_array; | |
465 | - } | |
466 | - | |
467 | - /* | |
468 | - * Get instruments info available in the DD_*.xml file from mission id and sub mission name | |
469 | - */ | |
470 | - public function GetDDInstrumentsInfo($mission_id, $sub_name) | |
471 | - { | |
472 | - $ddPath = $this->GetDDMissionXPath($mission_id); | |
473 | - | |
474 | - if (!$ddPath) | |
475 | - return array('success' => false, 'message' => 'Error to parse DD mission file '.$mission_id); | |
476 | - | |
477 | - $instruments = $ddPath->query("//mission[@name='".$sub_name."']/instrument"); | |
478 | - | |
479 | - $inst_array = array(); | |
480 | - | |
481 | - foreach($instruments as $inst) | |
482 | - { | |
483 | - $infos = $this->ExtractDDInstrumentInfoFromNode($inst); | |
484 | - $datasets = $this->GetDDDatasetsInfo($mission_id, $sub_name, $infos["name"]); | |
485 | - | |
486 | - $inst_array[$infos['name']] = array( | |
487 | - "desc" => $infos['desc'], | |
488 | - "help" => $infos['help'], | |
489 | - "pi" => $infos['pi'], | |
490 | - "id" => $infos['id'], | |
491 | - "refURL" => $infos['refURL'], | |
492 | - "alternamename" => $infos['alternamename'], | |
493 | - "class" => $infos['class'], | |
494 | - "datasets" => $datasets); | |
495 | - } | |
496 | - | |
497 | - return $inst_array; | |
498 | - } | |
499 | - | |
500 | - /* | |
501 | - * Get datasets info available in the DD_*.xml file from mission id, sub mission name and instrument name | |
502 | - */ | |
503 | - private function GetDDDatasetsInfo($mission_id, $sub_name, $inst_name) | |
504 | - { | |
505 | - $ddPath = $this->GetDDMissionXPath($mission_id); | |
506 | - | |
507 | - if (!$ddPath) | |
508 | - return array('success' => false, 'message' => 'Error to parse DD mission file '.$mission_id); | |
509 | - | |
510 | - $datasets = $ddPath->query("//mission[@name='".$sub_name."']//instrument[@name='".$inst_name."']//dataset"); | |
511 | - | |
512 | - $datas_array = array(); | |
513 | - | |
514 | - foreach ($datasets as $data) | |
515 | - { | |
516 | - $infos = $this->ExtractDDDatasetInfoFromNode($data); | |
517 | - $params = $this->GetDDParametersInfo($mission_id, $sub_name, $inst_name, $infos['id']); | |
518 | - | |
519 | - $datas_array[$infos['id']] = array( | |
520 | - "name" => $infos['name'], | |
521 | - "help" => $infos['help'], | |
522 | - "minsampling" => $infos['minsampling'], | |
523 | - "maxsampling" => $infos['maxsampling'], | |
524 | - "starttime" => $infos['starttime'], | |
525 | - "stoptime" => $infos['stoptime'], | |
526 | - "source" => $infos['source'], | |
527 | - "title" => $infos['title'], | |
528 | - "description" => $infos['description'], | |
529 | - "creator" => $infos['creator'], | |
530 | - "calibration" => $infos['calibration'], | |
531 | - "subject" => $infos['subject'], | |
532 | - "contributor" => $infos['contributor'], | |
533 | - "target" => $infos['target'], | |
534 | - "parameters" => $params | |
535 | - ); | |
536 | - } | |
537 | - | |
538 | - return $datas_array; | |
539 | - } | |
540 | - | |
541 | - /* | |
542 | - * Get parameters info available in the DD_*.xml file from mission id, sub mission name, instrument name and dataset id | |
543 | - */ | |
544 | - public function GetDDParametersInfo($mission_id, $sub_name, $inst_name, $data_id) | |
545 | - { | |
546 | - $ddPath = $this->GetDDMissionXPath($mission_id); | |
547 | - | |
548 | - if (!$ddPath) | |
549 | - return array('success' => false, 'message' => 'Error to parse DD mission file '.$mission_id); | |
550 | - | |
551 | - $parameters = $ddPath->query("//mission[@name='".$sub_name."']//instrument[@name='".$inst_name."']//dataset[@xml:id='".$data_id."']/parameter"); | |
552 | - | |
553 | - $params_array = array(); | |
554 | - | |
555 | - foreach ($parameters as $param) | |
556 | - { | |
557 | - $infos = $this->ExtractDDParameterInfoFromNode($param); | |
558 | - | |
559 | - $params_array[$infos['id']] = array( | |
560 | - "name" => $infos["name"], | |
561 | - "units" => $infos["units"], | |
562 | - "size" => $infos["size"], | |
563 | - "display_type" => $infos["display_type"], | |
564 | - "comps_label" => $infos["comps_label"], | |
565 | - "description" => $infos["description"], | |
566 | - "ucd" => $infos["ucd"], | |
567 | - "type" => $infos["type"] | |
568 | - ); | |
569 | - } | |
570 | - | |
571 | - return $params_array; | |
572 | - } | |
573 | - | |
574 | - /* | |
575 | - * Get all DD_*.xml info from parameter id | |
576 | - */ | |
577 | - public function GetDDInfoFromParameterID($param_id, $comp_start = NULL, $comp_stop = NULL) | |
578 | - { | |
579 | - $missions = $this->GetMissionsList(); | |
580 | - | |
581 | - foreach ($missions as $mission_id => $mission_val) | |
582 | - { | |
583 | - $ddPath = $this->GetDDMissionXPath($mission_id); | |
584 | - | |
585 | - if (!$ddPath) | |
586 | - continue; | |
587 | - | |
588 | - $parameters = $ddPath->query("//instrument//dataset/parameter[@xml:id='".$param_id."']"); | |
589 | - | |
590 | - if ($parameters->length < 1) | |
591 | - continue; | |
592 | - | |
593 | - | |
594 | - $parameter_node = $parameters->item(0); | |
595 | - | |
596 | - //parameter info | |
597 | - $param_infos = $this->ExtractDDParameterInfoFromNode($parameter_node, $comp_start, $comp_stop); | |
598 | - | |
599 | - //dataset info | |
600 | - $dataset_node = $parameter_node->parentNode; | |
601 | - $dataset_infos = $this->ExtractDDDatasetInfoFromNode($dataset_node); | |
602 | - | |
603 | - //instrument info | |
604 | - $instrument_node = $dataset_node->parentNode->nodeName == 'instrument' ? $dataset_node->parentNode : $dataset_node->parentNode->parentNode; | |
605 | - $instrument_infos = $this->ExtractDDInstrumentInfoFromNode($instrument_node); | |
606 | - | |
607 | - //sub mission info | |
608 | - $tmp = $instrument_node->parentNode; | |
609 | - | |
610 | - if ($tmp->nodeName == "group" ) $submission_node = $tmp->parentNode; | |
611 | - else $submission_node = $tmp; | |
612 | - $submission_infos = $this->ExtractDDSubMissionInfoFromNode($submission_node); | |
613 | - | |
614 | - return array( | |
615 | - 'success' => true, | |
616 | - 'parameter' => $param_infos, | |
617 | - 'dataset' => $dataset_infos, | |
618 | - 'instrument' => $instrument_infos, | |
619 | - 'submission' => $submission_infos, | |
620 | - 'mission_id' => $mission_id | |
621 | - ); | |
622 | - } | |
623 | - | |
624 | - return array('success' => false, | |
625 | - 'message' => 'No such param '.$param_id); | |
626 | - } | |
627 | - | |
628 | - /* | |
629 | - * Get dataset info | |
630 | - */ | |
631 | - public function GetDDInfoFromDatasetID($datasetId) | |
632 | - { | |
633 | - $missions = $this->GetMissionsList(); | |
634 | - | |
635 | - foreach ($missions as $mission_id => $mission_val) | |
636 | - { | |
637 | - $ddPath = $this->GetDDMissionXPath($mission_id); | |
638 | - | |
639 | - if (!$ddPath) | |
640 | - continue; | |
641 | - | |
642 | - $datasets = $ddPath->query("//instrument/dataset[@xml:id='".$datasetId."']"); | |
643 | - | |
644 | - if ($datasets->length < 1) | |
645 | - continue; | |
646 | - | |
647 | - $dataset_node = $datasets->item(0); | |
648 | - $dataset_infos = $this->ExtractDDDatasetInfoFromNode($dataset_node); | |
649 | - | |
650 | - //instrument info | |
651 | - $instrument_node = $dataset_node->parentNode; | |
652 | - $instrument_infos = $this->ExtractDDInstrumentInfoFromNode($instrument_node); | |
653 | - | |
654 | - //sub mission info | |
655 | - $submission_node = $instrument_node->parentNode; | |
656 | - $submission_infos = $this->ExtractDDSubMissionInfoFromNode($submission_node); | |
657 | - | |
658 | - //parameters info | |
659 | - $param_infos = $this->GetDDParametersInfo($mission_id, $submission_infos['name'], $instrument_infos['name'], $datasetId); | |
660 | - | |
661 | - return array( | |
662 | - 'success' => true, | |
663 | - 'parameter' => $param_infos, | |
664 | - 'dataset' => $dataset_infos, | |
665 | - 'instrument' => $instrument_infos, | |
666 | - 'submission' => $submission_infos, | |
667 | - 'mission_id' => $mission_id | |
668 | - ); | |
669 | - } | |
670 | - | |
671 | - return array('success' => false, | |
672 | - 'message' => 'No such dataset '.$datasetId); | |
673 | - } | |
674 | - | |
675 | - public function ExtractLocalParamsInfoFromNode($theParam) | |
676 | - { | |
677 | - $name = $theParam->getAttribute("name"); | |
678 | - $vi = $theParam->getAttribute("vi"); | |
679 | - $size = $theParam->getElementsByTagName("SIZES")->item(0)->nodeValue; | |
680 | - $tensor = $theParam->getElementsByTagName("TENSOR_ORDER_VALUE")->item(0)->nodeValue; | |
681 | - $value_type = $theParam->getElementsByTagName("VALUE_TYPE")->item(0)->nodeValue; | |
682 | - $fillNodes = $theParam->getElementsByTagName("FILLVAL"); | |
683 | - if ($fillNodes->length > 0) | |
684 | - $fill_value = $fillNodes->item(0)->nodeValue; | |
685 | - else | |
686 | - $fill_value = "NaN"; | |
687 | - //if ($fill_value == "NaN") $fill_value = "!Values.F_NAN"; | |
688 | - $units = $theParam->getElementsByTagName("UNITS")->item(0)->nodeValue; | |
689 | - $sampling = $theParam->getElementsByTagName("TIME_RESOLUTION")->item(0)->nodeValue; | |
690 | - $maxSamplingNode = $theParam->getElementsByTagName("MAX_TIME_RESOLUTION"); | |
691 | - if ($maxSamplingNode->length > 0) $maxSampling = $maxSamplingNode->item(0)->nodeValue; | |
692 | - else $maxSampling = $sampling; | |
693 | - $frame = $theParam->getElementsByTagName("COORDINATE_SYSTEM")->item(0)->nodeValue; | |
694 | - $legend = $theParam->getElementsByTagName("LABEL_I")->item(0)->nodeValue; | |
695 | - $title = $theParam->getElementsByTagName("YTITLE")->item(0)->nodeValue; | |
696 | - $plottype = $theParam->getElementsByTagName("DISPLAY_TYPE")->item(0)->nodeValue; | |
697 | - // if ($plottype == "TICK_MARKS") //BRE - why put mission name in DISPLAY_TYPE tag? (for the moment, keep for compatibility) | |
698 | - // $mission = $theParam->getElementsByTagName("DISPLAY_TYPE")->item(0)->getAttribute("name"); | |
699 | - // else | |
700 | - // $mission = "n/a"; | |
701 | - $energychannel = $theParam->getAttribute("energy"); | |
702 | - if ($energychannel == '') | |
703 | - $energychannel = 'Energy'; | |
704 | - | |
705 | - $validMinNode = $theParam->getElementsByTagName("VALID_MIN"); | |
706 | - if ($validMinNode->length > 0) $validmin = $validMinNode->item(0)->nodeValue; | |
707 | - else $validmin = 'unknown'; | |
708 | - | |
709 | - $conversionNode = $theParam->getElementsByTagName("UNITS_CONVERSION"); | |
710 | - if ($conversionNode->length > 0) { | |
711 | - $infoProvider = new InfoProvider(); | |
712 | - $conversion = $infoProvider->getConversion($conversionNode->item(0)->nodeValue); | |
713 | - } | |
714 | - else $conversion = '-1'; | |
715 | - | |
716 | - | |
717 | - $processNode = $theParam->getElementsByTagName("PROCESS"); | |
718 | - if ($processNode->length > 0) $process = $processNode->item(0)->nodeValue; | |
719 | - else $process = ''; | |
720 | - | |
721 | - //$ytitle = $units != NULL ? $title.",!C".$units : $title; | |
722 | - | |
723 | - return array( | |
724 | - 'name' => $name, | |
725 | - 'vi' => $vi, | |
726 | - 'size' => $size, | |
727 | - 'tensor' => $tensor, | |
728 | - 'valuetype' => $value_type, | |
729 | - 'fillvalue' => $fill_value, | |
730 | - 'units' => $units, | |
731 | - 'minsampling' => $sampling, | |
732 | - 'maxsampling' => $maxSampling, | |
733 | - 'frame' => $frame, | |
734 | - 'legend' => $legend, | |
735 | - 'title' => $title, | |
736 | - 'plottype' => $plottype, | |
737 | - // 'mission' => $mission, //BRE - why put mission name in DISPLAY_TYPE tag? (for the moment, keep for compatibility) | |
738 | - 'conversion' => $conversion, | |
739 | - 'validmin' => $validmin, | |
740 | - 'process' => $process, | |
741 | - 'energychannel' => $energychannel | |
742 | - ); | |
743 | - } | |
744 | - | |
745 | - public function GetLocalParamInfo($param, $comp_start = NULL, $comp_stop = NULL) | |
746 | - { | |
747 | - | |
748 | - if (!$this->localDom) | |
749 | - { | |
750 | - $this->localDom = new DomDocument("1.0"); | |
751 | - if (!$this->localDom->load(paramXml)) | |
752 | - return array('success' => false, 'id' => $param, 'message' => 'Cannot load local param file'); | |
753 | - } | |
754 | - | |
755 | - $theParam = $this->localDom->getElementById($param); | |
756 | - | |
757 | - $comp_array = array(); | |
758 | - | |
759 | - if (isset($comp_start) && isset($comp_stop) && ($comp_start != $comp_stop)) | |
760 | - $par_id = $param."(".$comp_start.":".$comp_stop.")"; | |
761 | - else if (isset($comp_start)) | |
762 | - $par_id = $param."(".$comp_start.")"; | |
763 | - else | |
764 | - $par_id = $param; | |
765 | - | |
766 | - if (!$theParam) | |
767 | - $ddinfos = $this->GetDDInfoFromParameterID($par_id); | |
768 | - else { | |
769 | - $ddinfos = $this->GetDDInfoFromParameterID($param, $comp_start, $comp_stop); | |
770 | - $isInternal = $theParam->hasAttribute('internal'); | |
771 | - } | |
772 | - | |
773 | - if (!$ddinfos['success'] && !$isInternal) | |
774 | - return array('success' => false, 'id' => $param, 'message' => $ddinfos['message']); | |
775 | - | |
776 | - if (!$theParam) | |
777 | - return array('success' => true, | |
778 | - 'id' => $par_id, | |
779 | - 'type' => 'local', | |
780 | - 'withcode' => true, | |
781 | - 'ddinfos' => $ddinfos); | |
782 | - | |
783 | - | |
784 | - $codeinfos = $this->ExtractLocalParamsInfoFromNode($theParam); | |
785 | - | |
786 | - return array('success' => true, | |
787 | - 'id' => $par_id, | |
788 | - 'type' => 'local', | |
789 | - 'withcode' => false, | |
790 | - 'ddinfos' => $ddinfos, | |
791 | - 'codeinfos' => $codeinfos); | |
792 | - } | |
793 | - | |
794 | - protected function GetDerivedParamInfo($param, $comp_start = NULL, $comp_stop = NULL) | |
795 | - { | |
796 | - if (!$this->derivedParamMgr) | |
797 | - $this->derivedParamMgr = new DerivedParamMgr('derivedParam'); | |
798 | - | |
799 | - $obj = $this->derivedParamMgr->getObjectByName($param); | |
800 | - | |
801 | - if ($obj['error']) | |
802 | - return array('success' => false, 'id' => $param, 'message' => $obj['error']); | |
803 | - | |
804 | - return array( | |
805 | - 'success' => true, | |
806 | - 'id' => $param, | |
807 | - 'type' => 'derived', | |
808 | - 'infos' => $obj | |
809 | - ); | |
810 | - } | |
811 | - | |
812 | - protected function GetMyDataParamInfo($param, $comp_start = NULL, $comp_stop = NULL) | |
813 | - { | |
814 | - if (!$this->mydataParamMgr) | |
815 | - $this->mydataParamMgr = new DerivedParamMgr(); | |
816 | - | |
817 | - $obj = $this->mydataParamMgr->getObjectByName($param); | |
818 | - | |
819 | - if ($obj['error']) | |
820 | - return array('success' => false, 'id' => $param, 'message' => $obj['error']); | |
821 | - | |
822 | - return array( | |
823 | - 'success' => true, | |
824 | - 'id' => $param, | |
825 | - 'type' => 'mydata', | |
826 | - 'infos' => $obj | |
827 | - ); | |
828 | - } | |
829 | - | |
830 | - protected function GetSimuDataParamInfo($param, $comp_start = NULL, $comp_stop = NULL) | |
831 | - { | |
832 | - if (!$this->mySimuParamMgr) | |
833 | - $this->mySimuParamMgr = new DerivedParamMgr('mySimuParam'); | |
834 | - | |
835 | - $obj = $this->mySimuParamMgr->getObjectByName($param); | |
836 | - | |
837 | - if ($obj['error']) | |
838 | - return array('success' => false, 'id' => $param, 'message' => $obj['error']); | |
839 | - | |
840 | - return array( | |
841 | - 'success' => true, | |
842 | - 'id' => $param, | |
843 | - 'type' => 'mydata', | |
844 | - 'infos' => $obj | |
845 | - ); | |
846 | - } | |
847 | - public function GetInternalParamInfo($param) { | |
848 | - if (!$this->internalDom) | |
849 | - { | |
850 | - $this->internalDom = new DomDocument("1.0"); | |
851 | - if (!$this->internalDom->load(internalParams)) | |
852 | - return array('success' => false, 'id' => $param, 'message' => 'Cannot load local internal params file'); | |
853 | - } | |
854 | - | |
855 | - $theParam = $this->internalDom->getElementById($param); | |
856 | - | |
857 | - $parentDataset = $theParam->parentNode; | |
858 | - $parentInstrument = $parentDataset->parentNode; | |
859 | - $parentMission = $parentInstrument->parentNode; | |
860 | - $missionName = isset($parentMission) ? $parentMission->getAttribute('name') : 'undefined'; | |
861 | - | |
862 | - return array( | |
863 | - 'success' => true, | |
864 | - 'id' => $param, | |
865 | - 'mission' => $missionName, | |
866 | - 'instrument' => array('id' =>$parentInstrument->getAttribute('xml:id'), | |
867 | - 'name' =>$parentInstrument->getAttribute('name'), | |
868 | - 'desc' =>$parentInstrument->getAttribute('desc')), | |
869 | - 'dataset' => array('id' =>$parentDataset->getAttribute('xml:id'), | |
870 | - 'name' =>$parentDataset->getAttribute('name'), | |
871 | - 'sampling' =>$parentDataset->getElementsByTagName('sampling')->item(0)->nodeValue, | |
872 | - 'dataStart'=>$parentDataset->getElementsByTagName('dataStart')->item(0)->nodeValue, | |
873 | - 'dataStop' =>$parentDataset->getElementsByTagName('dataStop')->item(0)->nodeValue) | |
874 | - ); | |
875 | - | |
876 | - } | |
877 | - | |
878 | - public function ParamInfosToString($infos) | |
879 | - { | |
880 | - $str = $infos['id']; | |
881 | - | |
882 | - if (!$infos['success']) | |
883 | - return $str." - ".$infos['message']; | |
884 | - | |
885 | - switch($infos['type']) | |
886 | - { | |
887 | - case 'local' : | |
888 | - $str .= (" - Type : Local Parameter @ CDPP/AMDA"); | |
889 | - if ($infos['ddinfos']['parameter']['name'] != '') | |
890 | - $str .= (" - Name : ".$infos['ddinfos']['parameter']['name']); | |
891 | - else | |
892 | - $str .= (" - Name : ".$infos['codeinfos']['title']); | |
893 | - | |
894 | - if ($infos['ddinfos']['parameter']['units'] != '') | |
895 | - $str .= (" - Units : ".$infos['ddinfos']['parameter']['units']); | |
896 | - else | |
897 | - $str .= (" - Units : ".$infos['codeinfos']['units']); | |
898 | - | |
899 | - if ($infos['ddinfos']['parameter']['size'] != '') | |
900 | - $str .= (" - Size : ".$infos['ddinfos']['parameter']['size']); | |
901 | - else | |
902 | - $str .= (" - Size : ".$infos['codeinfos']['size']); | |
903 | - | |
904 | - if (!$infos['withcode']) | |
905 | - if ($infos['codeinfos']['frame'] != '') | |
906 | - $str .= (" - Frame : ".$infos['codeinfos']['frame']); | |
907 | - if ($infos['ddinfos']['submission']['name'] != '') | |
908 | - $str .= (" - Mission : ".$infos['ddinfos']['submission']['name']); | |
909 | - else | |
910 | - $str .= (" - Mission : ".$infos['codeinfos']['name']); | |
911 | - | |
912 | - $str .= (" - Instrument : ".$infos['ddinfos']['instrument']['name']); | |
913 | - if ($infos['ddinfos']['dataset']['name'] != '') | |
914 | - $str .= (" - Dataset : ".$infos['ddinfos']['dataset']['name']); | |
915 | - else | |
916 | - $str .= (" - Dataset : ".$infos['codeinfos']['plottype']); | |
917 | - | |
918 | - break; | |
919 | - case 'derived' : | |
920 | - $str .= (" - Type : Derived Parameter @ CDPP/AMDA"); | |
921 | - $str .= (" - Name : ".$infos['infos']['name']); | |
922 | - $str .= (" - Units : ".$infos['infos']['units']); | |
923 | - $str .= (" - Build chain : ".htmlentities($infos['infos']['buildchain'])); | |
924 | - $str .= (" - Time Step : ".$infos['infos']['timestep']); | |
925 | - break; | |
926 | - case 'mydata' : | |
927 | - $str .= (" - Type : My Data Parameter @ CDPP/AMDA"); | |
928 | - $str .= (" - Name : ".$infos['infos']['name']); | |
929 | - $str .= (" - Units : ".$infos['infos']['units']); | |
930 | - $str .= (" - Size : ".$infos['infos']['size']); | |
931 | - $str .= (" - From : ".$infos['infos']['file']); | |
932 | - break; | |
933 | - default : | |
934 | - return $str." - Unknown parameter type (maybe not yet implemented?)"; | |
935 | - } | |
936 | - | |
937 | - return $str; | |
938 | - } | |
939 | - | |
940 | - | |
941 | - function forEachAllDDParameters($callback_func) | |
942 | - { | |
943 | - $missions = $this->GetMissionsList(); | |
944 | - foreach ($missions as $mis_key => $mis_val) | |
945 | - { | |
946 | - if ($mis_key == 'success') | |
947 | - continue; | |
948 | - $subs = $this->GetDDMissionInfo($mis_key); | |
949 | - foreach ($subs as $sub_key => $sub_val) | |
950 | - foreach($sub_val['instruments'] as $inst_key => $inst_val) | |
951 | - foreach ($inst_val["datasets"] as $data_key => $data_val) | |
952 | - foreach ($data_val["parameters"] as $param_key => $param_val) | |
953 | - call_user_func($callback_func, array("mission" => array("id" => $mis_key, "infos" => $mis_val), | |
954 | - "submission" => array("name" => $sub_key, "infos" => $sub_val), | |
955 | - "instrument" => array("name" => $inst_key, "infos" => $inst_val), | |
956 | - "dataset" => array("id" => $data_key, "infos" => $data_val), | |
957 | - "parameter" => array("id" => $param_key, "infos" => $param_val))); | |
958 | - } | |
959 | - } | |
960 | - | |
961 | - function forEachAllDDDatasets($callback_func) | |
962 | - { | |
963 | - $missions = $this->GetMissionsList(); | |
964 | - foreach ($missions as $mis_key => $mis_val) | |
965 | - { | |
966 | - if ($mis_key == 'success') | |
967 | - continue; | |
968 | - $subs = $this->GetDDMissionInfo($mis_key); | |
969 | - foreach ($subs as $sub_key => $sub_val) | |
970 | - foreach($sub_val['instruments'] as $inst_key => $inst_val) | |
971 | - foreach ($inst_val["datasets"] as $data_key => $data_val) | |
972 | - call_user_func($callback_func, array("mission" => array("id" => $mis_key, "infos" => $mis_val), | |
973 | - "submission" => array("name" => $sub_key, "infos" => $sub_val), | |
974 | - "instrument" => array("name" => $inst_key, "infos" => $inst_val), | |
975 | - "dataset" => array("id" => $data_key, "infos" => $data_val))); | |
976 | - } | |
977 | - } | |
978 | - } | |
979 | - | |
980 | -?> |
php/classes/UserMgr.php
... | ... | @@ -551,20 +551,17 @@ class UserMgr |
551 | 551 | } |
552 | 552 | |
553 | 553 | if (file_exists($this->userdir.'newLogin')) { |
554 | - copy($this->userdir.'newLogin',$this->userdir.'lastLogin'); | |
555 | - $dt = filemtime($this->userdir.'newLogin'); | |
556 | - touch($this->userdir.'lastLogin', $dt); | |
554 | + touch($this->userdir.'lastLogin', filemtime($this->userdir.'newLogin')); | |
557 | 555 | } |
558 | - else | |
556 | + else { | |
559 | 557 | touch($this->userdir.'lastLogin', time() - 5*86400); // last 5 days |
558 | + } | |
560 | 559 | |
561 | 560 | // if new info exists it will be shown to : |
562 | 561 | // public => to all |
563 | 562 | // special => to group members |
564 | 563 | if (file_exists($this->userdir.'newInfo')) { |
565 | 564 | $amdaInfo = new AmdaNews($this->user); |
566 | - // if status = 0 - it is special info to group members only | |
567 | - // else to all | |
568 | 565 | $info = $this->getUserInfo($this->user); |
569 | 566 | $status = $amdaInfo->makeInfo($info['group']); |
570 | 567 | ... | ... |
php/uploadFile.php
... | ... | @@ -371,8 +371,10 @@ |
371 | 371 | if ($isFile) |
372 | 372 | { |
373 | 373 | $fileMgr = new FilesMgr(); |
374 | - // $amdaStat = new AmdaStats($_POST['sessionID']); | |
375 | - // if ($amdaStat->success) $amdaStat->addTask('upload', $_POST['sessionID'], null); | |
374 | + $amdaStat = new AmdaStats($_POST['sessionID']); | |
375 | + if ($amdaStat->success) { | |
376 | + $amdaStat->addTask( $_POST['sessionID'], 'upload', null); | |
377 | + } | |
376 | 378 | } |
377 | 379 | // Time Table or Catalog |
378 | 380 | else | ... | ... |