Commit ebe18d0a1e98469080a62edaeeab571f60cf5a30
1 parent
acf87705
Exists in
master
and in
109 other branches
new amda stat
Showing
3 changed files
with
311 additions
and
1340 deletions
Show diff stats
php/classes/AmdaStats.php
1 | <?php | 1 | <?php |
2 | /** | 2 | /** |
3 | * @class AmdaStats | 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 | class AmdaStats { | 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('mining', 'print', 'plot'); | ||
11 | + public $tasksAdd = array('ttoper', 'samp', 'upload', 'create', 'images'); | ||
12 | + public $usersToExclude = array( 'bouchemit', 'impex'); | ||
13 | + public $success = true; | ||
14 | + private $user = null; | ||
15 | + | ||
16 | + public function __construct($user) { | ||
17 | + | ||
18 | + $this->statXml = new DomDocument('1.0','UTF-8'); | ||
19 | + $this->statXml->preserveWhiteSpace = false; | ||
20 | + $this->statXml->formatOutput = true; | ||
21 | + | ||
22 | + if (!defined("StatsXml")){ | ||
23 | + if (!$user){ | ||
24 | + // general - to read | ||
25 | + define('StatsXml',DATAPATH.'Statistics/Stats.xml'); | ||
26 | + // if (file_exists(StatsXml)) unlink(StatsXml); | ||
27 | + } | ||
28 | + else { | ||
29 | + // individual - to write | ||
30 | + define("StatsXml", USERPATH."/".$user."/Stats.xml"); | ||
31 | + $this->user = $user; | ||
32 | + } | ||
33 | + } | ||
34 | + | ||
35 | + if (!file_exists(StatsXml)) { | ||
36 | + if (!is_dir(DATAPATH.'Statistics')) { | ||
37 | + if (!mkdir(DATAPATH.'Statistics', 0775)) $this->success = false; //return -1; | ||
38 | + if (!chgrp(DATAPATH.'Statistics', APACHE_USER)) $this->success = false; // return -1; | ||
39 | + } | ||
40 | + | ||
41 | + $status = $this->generateXml(); | ||
42 | + if (!$status) { | ||
43 | + error_log('Cannot create Stats.xml: Fatal Error '.$user,1,email); | ||
44 | + $this->success = false; | ||
45 | + } | ||
46 | + } | ||
47 | + else { | ||
48 | + $status = $this->statXml->load(StatsXml); | ||
49 | + if (!$status) { | ||
50 | + $status = $this->generateXml(); | ||
51 | + $msg = $status ? 'Cannot load Stats.xml. New Stats.xml was created' : | ||
52 | + 'Cannot load Stats.xml. Cannot create Stats.xml: Fatal Error '; | ||
53 | + | ||
54 | + error_log($msg.$user,1,email); | ||
55 | + | ||
56 | + if (!$status) | ||
57 | + $this->success = false; | ||
58 | + } | ||
59 | + } | ||
60 | } | 60 | } |
61 | 61 | ||
62 | /* | 62 | /* |
63 | * Merge individual User Stats.xml into one generique Stats.xml | 63 | * Merge individual User Stats.xml into one generique Stats.xml |
64 | */ | 64 | */ |
65 | - public function mergeXml() { | ||
66 | - | ||
67 | - $tags = array_merge($this->tasks, $this->tasksAdd); | ||
68 | - | ||
69 | - $doc2 = new DomDocument("1.0"); | 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 | + private function generateXml() { | ||
101 | + | ||
102 | + $rootElement = $this->statXml->createElement('stats'); | ||
103 | + | ||
104 | + $allTasks = array_merge($this->tasks, $this->tasksAdd); | ||
105 | + | ||
106 | + foreach ($allTasks as $task) { | ||
107 | + $element = $this->statXml->createElement("$task"); | ||
108 | + $rootElement->appendChild($element); | ||
109 | + } | ||
110 | + | ||
111 | + $this->statXml->appendChild($rootElement); | ||
112 | + | ||
113 | + return $this->statXml->save(StatsXml); | ||
114 | + } | ||
70 | 115 | ||
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){ | ||
141 | - | ||
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 | - } | 116 | + public function addTaskWithParams($user, $task, $vars) { |
117 | + | ||
118 | +// if (!$this->user) { | ||
119 | +// error_log('User is null', 1, email); | ||
120 | +// return; | ||
121 | +// } | ||
122 | + | ||
123 | + if (!in_array($user, $this->usersToExclude)) { | ||
124 | + $taskElement = $this->statXml->getElementsByTagName("$task")->item(0); | ||
125 | + if (is_object($taskElement)) { | ||
126 | + $newTask = $this->statXml->createElement('item'); | ||
127 | + $newTask->setAttribute('date', date('Y-m-d')); | ||
128 | + $newTask->setAttribute('user', $user); | ||
129 | + | ||
130 | + if ($vars) { | ||
131 | + $ID = array(); | ||
132 | + | ||
133 | + foreach ($vars as $var) { | ||
134 | + if ((substr($var, 0, 7) == 'impex__') || (substr($var, 0, 13) == 'spase___IMPEX')){ | ||
135 | + $ID[] = 'impex'; | ||
136 | + } | ||
137 | + elseif (substr($var, 0, 4) == 'wsd_') { | ||
138 | + $ID[] = 'uploadedData'; | ||
139 | + } | ||
140 | + else | ||
141 | + $ID[] = $var; | ||
142 | + } | ||
143 | + | ||
144 | + $ID = array_unique($ID); | ||
145 | + | ||
146 | + foreach ($ID as $id) { | ||
147 | + $datasetElement = $this->statXml->createElement('dataset', $id); | ||
148 | + $newTask->appendChild($datasetElement); | ||
149 | + } | ||
150 | + } | ||
151 | + } | ||
152 | + $taskElement->appendChild($newTask); | ||
153 | + $this->statXml->save(StatsXml); | ||
154 | + } | ||
155 | + else | ||
156 | + error_log('Check Stats.xml - no task element '.$task, 1, email); | ||
157 | + } | ||
158 | + | ||
159 | + public function addTask($task){ | ||
160 | + | ||
161 | + if (!$this->user) { | ||
162 | + error_log('User is null', 1, email); | ||
163 | + return; | ||
164 | + } | ||
165 | + | ||
166 | + if (!in_array($this->user, $this->usersToExclude)) { | ||
167 | + $taskElement = $this->statXml->getElementsByTagName("$task")->item(0); | ||
168 | + if (is_object($taskElement)) { | ||
169 | + $newTask = $this->statXml->createElement('item'); | ||
170 | + $newTask->setAttribute('date', date('Y-m-d')); | ||
171 | + $newTask->setAttribute('user', $this->user); | ||
184 | 172 | ||
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 | - } | 173 | + $taskElement->appendChild($newTask); |
174 | + $this->statXml->save(StatsXml); | ||
175 | + } | ||
176 | + else | ||
177 | + error_log('Check Stats.xml - no task element '.$task, 1, email); | ||
178 | + } | ||
179 | + } | ||
192 | 180 | ||
193 | /* | 181 | /* |
194 | * Show Statistics | 182 | * Show Statistics |
195 | */ | 183 | */ |
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 | - } | ||
221 | - | ||
222 | -/* | ||
223 | -* Show Statistics | ||
224 | -*/ | ||
225 | - public function getDataStat($index, $start, $stop, $update){ | 184 | + public function getModulesStat($start, $stop, $update){ |
226 | 185 | ||
186 | + if (!$update && file_exists(DATAPATH.'Statistics/tasks.json')) { | ||
187 | + return file_get_contents(DATAPATH.'Statistics/tasks.json'); | ||
188 | + } | ||
189 | + | ||
190 | + $taskArray = array(); | ||
227 | 191 | ||
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(); | 192 | + foreach (array_merge($this->tasks,$this->tasksAdd) as $task) { |
193 | + $theTask = $this->statXml->getElementsByTagName($task)->item(0); | ||
194 | + $items = $theTask->getElementsByTagName('item'); | ||
195 | + $hints = $items->length; | ||
236 | 196 | ||
237 | - foreach ($this->tasks as $task) { | 197 | + $startStop = $this->getStartStop($items, $start, $stop); |
198 | + $taskArray[] = array('task' => $task, 'number' => $hints, | ||
199 | + 'start' => $startStop[0], 'stop' => $startStop[1]); | ||
200 | + } | ||
238 | 201 | ||
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 | - } | ||
324 | - | ||
325 | - public function mergeStats($inXml) { | 202 | + $objToReturn = json_encode(array('stats' => $taskArray)); |
326 | 203 | ||
204 | + file_put_contents(DATAPATH.'Statistics/tasks.json', $objToReturn); | ||
327 | 205 | ||
328 | - if (!file_exists(StatsXml)) return 0; | 206 | + return $objToReturn; |
207 | + } | ||
329 | 208 | ||
330 | - if (!file_exists($inXml)) return 0; | ||
331 | - | ||
332 | - $tags = array_merge($this->tasks,$this->tasksAdd); | ||
333 | - | ||
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){ | 209 | +/* |
210 | +* Show Statistics | ||
211 | +*/ | ||
212 | + public function getDataStat($index, $start, $stop, $update){ | ||
213 | + | ||
214 | + | ||
215 | + if (!$update && file_exists(DATAPATH.'Statistics/data.json')) { | ||
216 | + $GENERALarray = json_decode(file_get_contents(DATAPATH.'Statistics/data.json')); | ||
217 | + } | ||
218 | + else { | ||
219 | + $VIarray = array(); | ||
220 | + $TOTALarray = array(); | ||
221 | + $STARTarray = array(); | ||
222 | + $STOParray = array(); | ||
223 | + | ||
224 | + foreach ($this->tasks as $task) { | ||
225 | + $theTask = $this->statXml->getElementsByTagName($task)->item(0); | ||
226 | + $items = $theTask->getElementsByTagName('item'); | ||
227 | + $TASKarray = array(); | ||
228 | + | ||
229 | + foreach ($items as $item){ | ||
230 | + $VIs = $item->getElementsByTagName('dataset'); | ||
231 | + $time = strtotime($item->getAttribute('date')); | ||
232 | + | ||
233 | + foreach ($VIs as $VI) { | ||
234 | + $id = $VI->nodeValue; | ||
235 | + if ($id) { | ||
236 | + if ($TASKarray[$id]) { | ||
237 | + $TASKarray[$id]++; | ||
238 | + $TOTALarray[$id]++; | ||
239 | + if ($STARTarray[$id] > $time) | ||
240 | + $STARTarray[$id] = $time; | ||
241 | + if ($STOParray[$id] < $time) | ||
242 | + $STOParray[$id] = $time; | ||
243 | + } | ||
244 | + else { | ||
245 | + if (!$TOTALarray[$id]) { | ||
246 | + $STARTarray[$id] = $time; | ||
247 | + $STOParray[$id] = $time; | ||
248 | + $TOTALarray[$id] = 1; | ||
249 | + } | ||
250 | + else { | ||
251 | + if ($STARTarray[$id] > $time) | ||
252 | + $STARTarray[$id] = $time; | ||
253 | + if ($STOParray[$id] < $time) | ||
254 | + $STOParray[$id] = $time; | ||
255 | + $TOTALarray[$id]++; | ||
256 | + } | ||
257 | + $TASKarray[$id] = 1; | ||
258 | + } | ||
259 | + } | ||
260 | + } | ||
261 | + } | ||
262 | + $VIarray[$task] = $TASKarray; | ||
263 | + } | ||
264 | + | ||
265 | + $GENERALarray = array(); | ||
266 | + arsort($TOTALarray); | ||
267 | + | ||
268 | + foreach ($TOTALarray as $key => $value) { | ||
269 | + $viStart = $STARTarray[$key]; | ||
270 | + $viStop = $STOParray[$key]; | ||
271 | + $plot = $VIarray['plot'][$key]; | ||
272 | + $mining = $VIarray['mining'][$key]; | ||
273 | + $print = $VIarray['print'][$key]; | ||
274 | + if ($key != 'undefined') | ||
275 | + { | ||
276 | + $GENERALarray[] = array('id' => $key, 'number' => $value, | ||
277 | + 'plot' => $plot, 'mining' => $mining, | ||
278 | + 'print' => $print, 'start' => $viStart, | ||
279 | + 'stop' => $viStop); | ||
280 | + } | ||
281 | + } | ||
282 | + } | ||
283 | + | ||
284 | + $Nmax = count($GENERALarray); | ||
341 | 285 | ||
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 | - } | 286 | + $length = $index + 20 > $Nmax ? $Nmax - $index + 1 : 20; |
287 | + $objToReturn = array('stats' => array_reverse(array_slice($GENERALarray, $index, $length))); | ||
288 | + | ||
289 | + file_put_contents(DATAPATH.'Statistics/data.json',json_encode($GENERALarray)); | ||
290 | + // $objToReturn = array('stats' => $GENERALarray); | ||
291 | + return $objToReturn; | ||
292 | + } | ||
293 | + | ||
294 | + public function getStartStop($items, $start, $stop) { | ||
295 | + if (!$start) $start = 0; | ||
296 | + if (!$stop) $stop = 100000000000; | ||
297 | + | ||
298 | + $date = array(); | ||
299 | + | ||
300 | + foreach ($items as $item) { | ||
301 | + $newDate = strtotime($item->getAttribute('date')); | ||
302 | + | ||
303 | + if (($newDate > $start) && ($newDate < $stop)) | ||
304 | + $date[] = $newDate; | ||
305 | + } | ||
306 | + | ||
307 | + return array(min($date), max($date)); | ||
308 | + } | ||
309 | + | ||
310 | + public function mergeStats($inXml) { | ||
311 | + | ||
312 | + if (!file_exists(StatsXml)) return 0; | ||
313 | + if (!file_exists($inXml)) return 0; | ||
314 | + | ||
315 | + $tags = array_merge($this->tasks,$this->tasksAdd); | ||
316 | + | ||
317 | + $doc1 = new DomDocument("1.0"); | ||
318 | + $doc2 = new DomDocument("1.0"); | ||
319 | + | ||
320 | + if (!$doc1->load(StatsXml)) return 0; | ||
321 | + if (!$doc2->load($inXml)) return 0; | ||
322 | + | ||
323 | + foreach ($tags as $tag){ | ||
324 | + $tag1 = $doc1->getElementsByTagName($tag)->item(0); | ||
325 | + $tag2 = $doc2->getElementsByTagName($tag)->item(0); | ||
326 | + $items2 = $tag2->getElementsByTagName("item"); | ||
327 | + if ($items2->length > 0) { | ||
328 | + foreach ($items2 as $item2) { | ||
329 | + $item1 = $doc1->importNode($item2, true); | ||
330 | + $tag1->appendChild($item1); | ||
331 | + } | ||
332 | + } | ||
333 | + } | ||
334 | + | ||
335 | + return $doc1->save(StatsXml); | ||
336 | + } | ||
356 | } | 337 | } |
357 | ?> | 338 | ?> |
php/classes/InfoProvider.php deleted
@@ -1,30 +0,0 @@ | @@ -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 | \ No newline at end of file | 0 | \ No newline at end of file |
php/classes/ParamsInfoMgr.php deleted
@@ -1,980 +0,0 @@ | @@ -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 | -?> |