Commit 81e8ab3f56c2e333b0604bb4a5b5517a7a0564d3

Authored by Elena Budnik
2 parents b6e4778f 2dab1b1b

Merge branch 'new-amda-stat' into 'master'

New amda stat

See merge request !30
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
... ...