Blame view

php/classes/UserWsTransfer.php 18.4 KB
16035364   Benjamin Renard   First commit
1
2
3
<?php
/**
 * @class UserWsTransfer
16035364   Benjamin Renard   First commit
4
5
 */

d95e8421   Elena.Budnik   ws transfer : ini...
6
class UserWsTransfer {  
16035364   Benjamin Renard   First commit
7

d95e8421   Elena.Budnik   ws transfer : ini...
8
9
	private $oldWs, $newWs, $Mgr;
	private $oldWsDir, $newWsDir;
7b514636   Elena.Budnik   add migration pos...
10
	private $ws_deleted, $wsd_deleted, $pairs, $specParams, $postPairs;
16035364   Benjamin Renard   First commit
11
   
d95e8421   Elena.Budnik   ws transfer : ini...
12
13
14
15
	function __construct($user) 
	{  
	   define('OLDUSERPATH', 'http://cdpp1.irap.omp.eu/AMDA-NG/data/');
	  // define('OLDUSERPATH', 'http://amda-dev.irap.omp.eu/~budnik/AMDA-NG4/trunk/data/');
08a89462   Elena.Budnik   convert old user ws
16
		define('NEWUSERPATH', USERPATH);
d95e8421   Elena.Budnik   ws transfer : ini...
17
		define('TRANSFERUSER', $user);
08a89462   Elena.Budnik   convert old user ws
18
	   define('CONVERSIONDIR',  DATAPATH."migration/");
d95e8421   Elena.Budnik   ws transfer : ini...
19
20
21
22
23
24
25
26
27
28
29
30
31
		
		$this->oldWs = new DomDocument("1.0");
		$this->newWs = new DomDocument("1.0");
		
		$this->oldWsDir = OLDUSERPATH.TRANSFERUSER.'/WS/';
		$this->newWsDir = NEWUSERPATH.TRANSFERUSER.'/WS/';
		
		if (!is_dir(NEWUSERPATH.TRANSFERUSER.'/WS'))
			mkdir(NEWUSERPATH.TRANSFERUSER.'/WS', 0775);
			
		$this->ws_deleted = array();
		$this->wsd_deleted = array();
		$this->getModified();
7b514636   Elena.Budnik   add migration pos...
32
		$this->getReprocessed();
57c64695   Nathanaël Jourdane   add spectra
33
		$this->getSpectra();
d95e8421   Elena.Budnik   ws transfer : ini...
34
35
36
37
38
39
40
41
42
	}
	
	private function getObsolete() {
	
		$deletedXML = new DomDocument("1.0");
		$deletedXML->load(CONVERSIONDIR."Deleted.xml"); 
		$deletedNodes = $deletedXML->getElementsByTagName('deleted');
		
		$deleted = array();
981cd087   Elena.Budnik   ws transfer modifs
43
		foreach ($deletedNodes as $node) 
d95e8421   Elena.Budnik   ws transfer : ini...
44
			$deleted[] = $node->getAttribute('xml:id');
981cd087   Elena.Budnik   ws transfer modifs
45

d95e8421   Elena.Budnik   ws transfer : ini...
46
47
		return $deleted;
	}
cdf22cdd   Elena.Budnik   message window co...
48
49
50
51
52
53
54
55
56
57
	
	private function getNotreadyFunctions() {
	
		$deletedXML = new DomDocument("1.0");
		$deletedXML->load(CONVERSIONDIR."Functions.xml"); 
		$deletedNodes = $deletedXML->getElementsByTagName('deleted');
		
		$notready = array();
		foreach ($deletedNodes as $node)
			$notready[] = $node->getAttribute('xml:id');
d95e8421   Elena.Budnik   ws transfer : ini...
58
		
cdf22cdd   Elena.Budnik   message window co...
59
60
61
		return $notready;
	}
	
d95e8421   Elena.Budnik   ws transfer : ini...
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
	private function getNotready() {
	
		$deletedXML = new DomDocument("1.0");
		$deletedXML->load(CONVERSIONDIR."NotReady.xml"); 
		$deletedNodes = $deletedXML->getElementsByTagName('deleted');
		
		$notready = array();
		foreach ($deletedNodes as $node)
			$notready[] = $node->getAttribute('xml:id');
		
		return $notready;
	}
	
	private function deleteParam($exp, $deleted) 
	{
		$toDelete = false;
981cd087   Elena.Budnik   ws transfer modifs
78
79
80
81
82
83
84
		 
		if (count($deleted)  > 0)
			foreach ($deleted as $item) {
				if (strpos($exp, $item) !== false)  {
					$toDelete = true;
					break;
				}
d95e8421   Elena.Budnik   ws transfer : ini...
85
			}
d95e8421   Elena.Budnik   ws transfer : ini...
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105

		return $toDelete;
	}
	
	private function getWs($exp) 
	{	
		$ws = array();
		
		if (strpos($exp, 'ws_') !== false)  {
			 $arr = $this->delimitIt($exp);
			 foreach ($arr as $item) {
				if (strpos($item, 'ws_') !== false)
						$ws[] = substr($item,3);
			 }
			 return $ws;
		}
		return false;
	}
	
	private function delimitIt($chain) {
16035364   Benjamin Renard   First commit
106
       
d95e8421   Elena.Budnik   ws transfer : ini...
107
108
109
       $delimiter = '[]+,/*()^<>&|=[-]+';    
       $array = split($delimiter,$chain);
       if (trim(end($array)) == "") array_pop($array);
16035364   Benjamin Renard   First commit
110

d95e8421   Elena.Budnik   ws transfer : ini...
111
112
       return $array;
   }
16035364   Benjamin Renard   First commit
113
   
d95e8421   Elena.Budnik   ws transfer : ini...
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
	private function getModified() 
	{
		$convertXML = new DomDocument("1.0");
		$modifiedFile = CONVERSIONDIR.'Modified.xml';
			
		if (!$convertXML->load($modifiedFile)) 
							error_log('ERROR loading '.$modifiedFile,1,email);
		$convertedNodes = $convertXML->getElementsByTagName('param_convert');

		foreach ($convertedNodes as $item) {   
			$pairs[$item->getAttribute('oldid')] = $item->getAttribute('xml:id');
		}    
		krsort($pairs, SORT_NATURAL);
		
		$this->pairs = $pairs;
	}
981cd087   Elena.Budnik   ws transfer modifs
130
	
7b514636   Elena.Budnik   add migration pos...
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
	private function getReprocessed() 
	{
		$convertXML = new DomDocument("1.0");
		$modifiedFile = CONVERSIONDIR.'PostProcess.xml';
			
		if (!$convertXML->load($modifiedFile)) 
							error_log('ERROR loading '.$modifiedFile,1,email);
		$convertedNodes = $convertXML->getElementsByTagName('param_convert');

		foreach ($convertedNodes as $item) {   
			$pairs[$item->getAttribute('oldid')] = $item->getAttribute('xml:id');
		}    
		krsort($pairs, SORT_NATURAL);
		
		$this->postPairs = $pairs;
	}
	
981cd087   Elena.Budnik   ws transfer modifs
148
	private function getSpectra() 
57c64695   Nathanaël Jourdane   add spectra
149
150
151
	{
		$convertXML = new DomDocument("1.0");
		$modifiedFile = CONVERSIONDIR.'SpectraModifs.xml';
981cd087   Elena.Budnik   ws transfer modifs
152
153
			
		if (!$convertXML->load($modifiedFile)) 
57c64695   Nathanaël Jourdane   add spectra
154
155
156
							error_log('ERROR loading '.$modifiedFile,1,email);
		$convertedNodes = $convertXML->getElementsByTagName('deleted');

981cd087   Elena.Budnik   ws transfer modifs
157
		foreach ($convertedNodes as $item) {   
57c64695   Nathanaël Jourdane   add spectra
158
			$this->specParams[] = $item->getAttribute('xml:id');
981cd087   Elena.Budnik   ws transfer modifs
159
		}    
57c64695   Nathanaël Jourdane   add spectra
160
	}
981cd087   Elena.Budnik   ws transfer modifs
161
	
d95e8421   Elena.Budnik   ws transfer : ini...
162
163
164
	private function updateParams($expression)
	{
		$newExp = strtr($expression, $this->pairs);
7b514636   Elena.Budnik   add migration pos...
165
166
167
168
		if (!empty($this->postPairs))
			$expFinal = strtr($newExp, $this->postPairs);
		
		return $expFinal;
d95e8421   Elena.Budnik   ws transfer : ini...
169
	}
7b514636   Elena.Budnik   add migration pos...
170
171
	
	
d95e8421   Elena.Budnik   ws transfer : ini...
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
	protected function createDom() 
	{
		$types = array('param' => 'derived', 'mydata' => 'myData');

		$rootElement = $this->newWs->createElement('ws');
		foreach ($types as $key => $value)
		{
			$contentId = $value.'Param-treeRootNode';
			$contentTag = $key.'List';
			$typeElement = $this->newWs->createElement($contentTag);
			$typeElement->setAttribute('xml:id', $contentId);
			$rootElement->appendChild($typeElement);
		}
		
		$this->newWs->appendChild($rootElement);
981cd087   Elena.Budnik   ws transfer modifs
187
	   $this->newWs->save($this->newWsDir.'WsParams.xml');
d95e8421   Elena.Budnik   ws transfer : ini...
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
	}
	
		public function checkWS() 
	{
		// old ws        
		if (!curl_init(OLDUSERPATH.TRANSFERUSER)) {
				error_log('no  '.TRANSFERUSER.' at old AMDA',1,email);
				return array('success' => false, 'error' => 'Sorry, it seems you have no account at old AMDA');
		}

		if (!curl_init($this->oldWsDir)) {
			error_log('no ws.xml for '.TRANSFERUSER,1,email);
			return array('success' => false, 'error' => 'Sorry, we failed to find your workspace at old AMDA');
		}
		
		return array('success' => true);
	}
	
	public function transferDerived() 
	{
6a449df8   Elena.Budnik   message format
208
209
		$msg = '<br/><b><i>Derived Params:</i></b><br/><br/>';
		$msg .= '<i>Note</i> : Parameters made from Remote Base parameters are not copied <br/><br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
210
211
		if (!$this->oldWs->load($this->oldWsDir.'WsParams.xml')) {
			error_log('cannot load WsParams.xml for '.TRANSFERUSER,1,email);
6a449df8   Elena.Budnik   message format
212
			return array('success' => false, 'error' => 'Sorry, we failed to get your Derived Params from old AMDA');
d95e8421   Elena.Budnik   ws transfer : ini...
213
214
215
216
217
218
219
220
		}

		if (!file_exists($this->newWsDir.'WsParams.xml'))
						$this->createDom();
		else 
			$this->newWs->load($this->newWsDir.'WsParams.xml');
		
		$deleted = $this->getObsolete();
981cd087   Elena.Budnik   ws transfer modifs
221
	
d95e8421   Elena.Budnik   ws transfer : ini...
222
		$notready = $this->getNotready();
cdf22cdd   Elena.Budnik   message window co...
223
		$notreadyFunctions = $this->getNotreadyFunctions();
d95e8421   Elena.Budnik   ws transfer : ini...
224
225
226
227
228
229
230
231
232
233
		
	   $wsParamNode = $this->newWs->getElementsByTagName('paramList')->item(0);
	   
		$wsParamsOld = $this->oldWs->getElementsByTagName('param');
		
		if ($wsParamsOld->length == 0) {
				return array('success' => true, 'msg' => 'No parameters');
		}
		
		$paramXml = new DomDocument("1.0");
6a449df8   Elena.Budnik   message format
234
		$msg .= 'Not copied derived parameters :<br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
235
236
237
238
239
240
241
242
		
		foreach ($wsParamsOld as $param) {        
			$id = $param->getAttribute('xml:id');
			$name = $param->getAttribute('name');
			
			$expression = $param->getAttribute('buildchain');

			if ($this->deleteParam($expression,$deleted)) {
6a449df8   Elena.Budnik   message format
243
						$msg .= '<li><i>'.$name.'</i> : uses obsolete param<br/> '.$expression.'<br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
244
245
246
247
					// error_log( 'For INFO : DELETED '.$expression,1,email);
						$this->ws_deleted[] = $name;
						continue;
			}
981cd087   Elena.Budnik   ws transfer modifs
248
			 
d95e8421   Elena.Budnik   ws transfer : ini...
249
			if ($this->deleteParam($expression,$notready)) {
6a449df8   Elena.Budnik   message format
250
						$msg .= '<li><i>'.$name.'</i> : uses param not ready yet <br/> '.$expression.'<br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
251
252
253
254
					// error_log( 'For INFO : DELETED '.$expression,1,email);
						$this->ws_deleted[] = $name;
						continue;
			}
981cd087   Elena.Budnik   ws transfer modifs
255
			 
cdf22cdd   Elena.Budnik   message window co...
256
			if ($this->deleteParam($expression,$notreadyFunctions)) {
6a449df8   Elena.Budnik   message format
257
						$msg .= '<li><i>'.$name.'</i> : uses function not ready yet <br/> '.$expression.'<br/>';
cdf22cdd   Elena.Budnik   message window co...
258
259
260
261
					// error_log( 'For INFO : DELETED '.$expression,1,email);
						$this->ws_deleted[] = $name;
						continue;
			}
981cd087   Elena.Budnik   ws transfer modifs
262
			 
d95e8421   Elena.Budnik   ws transfer : ini...
263
264
			if (!empty($this->wsd_deleted))
					if ($this->deleteParam($expression,$this->wsd_deleted)) {
6a449df8   Elena.Budnik   message format
265
						$msg .= '<li><i>'.$name.'</i> : uses obsolete myData param<br/> '.$expression.'<br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
266
267
268
269
					// error_log( 'For INFO : DELETED '.$expression,1,email);
						$this->ws_deleted[] = $name;
						continue;
			}
981cd087   Elena.Budnik   ws transfer modifs
270
			 
d95e8421   Elena.Budnik   ws transfer : ini...
271
			if ($this->deleteParam($expression,array("CDAWEB","MAPSKP","VEXGRAZ","IMPEX"))) {
6a449df8   Elena.Budnik   message format
272
						$msg .= '<li><i>'.$name.'</i> : uses remote params <br/> '.$expression.'<br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
273
274
275
						$this->ws_deleted[] = $name;
						continue;
			}
981cd087   Elena.Budnik   ws transfer modifs
276
277
278
279
280
			
			if ($this->deleteParam($expression,$this->specParams)) {
						$msg .= '<li><i>'.$name.'</i> : too much difference <br/> '.$expression.'<br/>';
						$this->ws_deleted[] = $name;
						continue;
57c64695   Nathanaël Jourdane   add spectra
281
			}
981cd087   Elena.Budnik   ws transfer modifs
282
			 
d95e8421   Elena.Budnik   ws transfer : ini...
283
			$expressionUpdated = $this->updateParams($expression);
981cd087   Elena.Budnik   ws transfer modifs
284
  
d95e8421   Elena.Budnik   ws transfer : ini...
285
286
287
288
289
290
			$wsParamNode->appendChild($this->newWs->importNode($param));
			
			$paramXml->load($this->oldWsDir.$id.'.xml');
			$expressionNode = $paramXml->getElementsByTagName('buildchain')->item(0);
			$expressionNode->nodeValue = $expressionUpdated;
			$paramXml->save($this->newWsDir.$id.'.xml');
981cd087   Elena.Budnik   ws transfer modifs
291
292
293
294
295
			
			$nodeInWS = $this->newWs->getElementById($id);
			if ($nodeInWS) {
				$buildchain = $nodeInWS->getAttribute('buildchain');
				$buildchainUpdated = $this->updateParams($buildchain);
7b514636   Elena.Budnik   add migration pos...
296
				
981cd087   Elena.Budnik   ws transfer modifs
297
298
				$nodeInWS->setAttribute('buildchain',$buildchainUpdated);
			}
d95e8421   Elena.Budnik   ws transfer : ini...
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
		}
		
		// check of 'ws bricks' were deleted
		$newParams = $this->newWs->getElementsByTagName('param');
		$xp = new domxpath($this->newWs); 
		$paramsToRemove = array();
		
		foreach ($newParams as $param) {
			$id = $param->getAttribute('xml:id');
			$name = $param->getAttribute('name');
			
			$expression = $param->getAttribute('buildchain');
			if ($wsParams = $this->getWs($expression)) {
				foreach ($wsParams as $wsParam) {
					$res = $xp->query("//param[@name='".trim($wsParam)."']");
					if ($res->length == 0) {
						unlink($this->newWsDir.$id.'.xml');
						$paramsToRemove[] = $param; 
						$this->ws_deleted[] = $name;
6a449df8   Elena.Budnik   message format
318
						$msg .= '<li><i>'.$name.'</i> : uses obsolete / not ready ws param : <br/> '.$expression.'<br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
319
320
321
322
323
324
325
326
327
328
329
330
					}
				}
			}
		}
		
		foreach ($paramsToRemove as $paramToRemove) {
			$paramToRemove->parentNode->removeChild($paramToRemove);
		}
		
		$this->newWs->save($this->newWsDir.'WsParams.xml');
		$copied = $newParams->length - count($paramsToRemove);
		
6a449df8   Elena.Budnik   message format
331
		$msg .= '<br/><i>Copied : </i>'.$copied.' derived parameters<br/><br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
332
333
334
335
336
		return array('success' => true, 'msg' => $msg);
	}

	public function transferTimeTables() 
	{    
6a449df8   Elena.Budnik   message format
337
		$msg = '<b><i>Time Tables:</i></b><br/><br/>'; 
d95e8421   Elena.Budnik   ws transfer : ini...
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
		
		// get old time tab list
		$this->newWs->load($this->oldWsDir.'Tt.xml');
		$timeTabs = $this->newWs->getElementsByTagName('timetab');
		if ($timeTabs->length == 0) {
			$msg .= 'No time tables';
			return array('success' => true, 'msg' => $msg);
		}
		
		$oldTtDir = OLDUSERPATH.TRANSFERUSER."/TT/";
		$newTtDir = NEWUSERPATH.TRANSFERUSER."/TT/";
		foreach ($timeTabs as $tab) {
			$id = $tab->getAttribute('xml:id');
			copy($oldTtDir.$id.'.xml', $newTtDir.$id.'.xml');
		}
		
		$this->newWs->save($this->newWsDir.'Tt.xml');
6a449df8   Elena.Budnik   message format
355
		$msg .= '<i>Copied : </i>'.$timeTabs->length.' time tables<br/><br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
356
357
		return array('success' => true, 'msg' => $msg);
	}
16035364   Benjamin Renard   First commit
358
 
d95e8421   Elena.Budnik   ws transfer : ini...
359
360
	public function transferConditions() 
	{
6a449df8   Elena.Budnik   message format
361
362
		$msg = '<b><i>Requests</i></b><br/><br/>';
		$msg .= '<i>Note :</i> Plot requests are not copied : too much difference new-old AMDA<br/<br/><br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
363
364
365
		$oldRequestXml = new DomDocument("1.0");
		$newRequestXml = new DomDocument("1.0");
		
981cd087   Elena.Budnik   ws transfer modifs
366
		if (!@$oldRequestXml->load($this->oldWsDir.'Request.xml')){
6a449df8   Elena.Budnik   message format
367
			$msg .= ' No Requests File<br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
368
369
370
371
372
373
374
375
			return array('success' => true, 'msg' => $msg);
		}
		
		$condNodes = $oldRequestXml->getElementsByTagName('condition');
		if ($condNodes->length == 0) {
			$msg .= ' no DataMining requests to copy<br/>';
			return array('success' => true, 'msg' => $msg);
		}
981cd087   Elena.Budnik   ws transfer modifs
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
		
		if (!file_exists($this->newWsDir.'Request.xml')) {
			$types = array('request', 'condition');

			$rootElement = $newRequestXml->createElement('ws');
			foreach ($types as $type)
			{
				$contentId = $type.'-treeRootNode';
				$contentTag = $type.'List';
				$typeElement = $newRequestXml->createElement($contentTag);
				$typeElement->setAttribute('xml:id', $contentId);
				$rootElement->appendChild($typeElement);
			}
			
			$newRequestXml->appendChild($rootElement);			 
		}				
		else 
			$newRequestXml->load($this->newWsDir.'Request.xml'); 
		
d95e8421   Elena.Budnik   ws transfer : ini...
395
396
397
398
399
400
		$conditionRoot = $newRequestXml->getElementsByTagName('conditionList')->item(0);
		
		$condDir = OLDUSERPATH.TRANSFERUSER."/REQ/";
		
		$deleted = $this->getObsolete();
		$notready = $this->getNotready();
6a449df8   Elena.Budnik   message format
401
		$msg .= 'Not copied DataMining requests :<br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
402
403
404
405
406
407
408
409
410
		
		foreach ($condNodes as $condNode) {
			$id = $condNode->getAttribute('xml:id');
			$name = $condNode->getAttribute('name');
			$cond = file($condDir.$id, FILE_IGNORE_NEW_LINES);

			$condObj = json_decode($cond[0]);
			$expression = $condObj->expression;
			if ($this->deleteParam($expression, $deleted)) {
6a449df8   Elena.Budnik   message format
411
						$msg .= '<li><i>'.$name.'</i> : uses obsolete param<br/> '.$expression.'<br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
412
413
414
415
416
						$cond_deleted[] = $name;
 						continue;
 			}
 			
 			if ($this->deleteParam($expression,$notready)) {
6a449df8   Elena.Budnik   message format
417
						$msg .= '<li><i>'.$name.'</i> : uses param not ready yet<br/> '.$expression.'<br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
418
419
420
421
422
423
424
					// error_log( 'For INFO : DELETED '.$expression,1,email);
						$cond_deleted[] = $name;
						continue;
			}
			
			if (!empty($this->wsd_deleted))
					if ($this->deleteParam($expression,$this->wsd_deleted)) {
6a449df8   Elena.Budnik   message format
425
						$msg .= '<li><i>'.$name.'</i> : uses obsolete myData param<br/> '.$expression.'<br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
426
427
428
429
430
431
432
					// error_log( 'For INFO : DELETED '.$expression,1,email);
						$cond_deleted[] = $name;
						continue;
			}
			
			if (!empty($this->ws_deleted))
					if ($this->deleteParam($expression,$this->ws_deleted)) {
6a449df8   Elena.Budnik   message format
433
						$msg .= '<li><i>'.$name.'</i> : uses obsolete drived param<br/> '.$expression.'<br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
434
435
436
437
438
439
					// error_log( 'For INFO : DELETED '.$expression,1,email);
						$cond_deleted[] = $name;
						continue;
			}
			
			if ($this->deleteParam($expression,array("CDAWEB","MAPSKP","VEXGRAZ","IMPEX"))) {
6a449df8   Elena.Budnik   message format
440
						$msg .= '<li><i>'.$name.'</i> : uses remote params <br/> '.$expression.'<br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
441
442
443
						$cond_deleted[] = $name;
						continue;
			}
981cd087   Elena.Budnik   ws transfer modifs
444
			
57c64695   Nathanaël Jourdane   add spectra
445
			if ($this->deleteParam($expression,$this->specParams)) {
981cd087   Elena.Budnik   ws transfer modifs
446
447
448
						$msg .= '<li><i>'.$name.'</i> : too much difference <br/> '.$expression.'<br/>';
						$cond_deleted[] = $name;
						continue;
57c64695   Nathanaël Jourdane   add spectra
449
			}
d95e8421   Elena.Budnik   ws transfer : ini...
450
451
452
453
454
455
456
			$expressionUpdated = $this->updateParams($expression);
			$condObj->expression = $expressionUpdated;
			file_put_contents(NEWUSERPATH.TRANSFERUSER."/REQ/".$id, json_encode($condObj));
			$conditionRoot->appendChild($newRequestXml->importNode($condNode));
		}
		
		$newRequestXml->save($this->newWsDir.'Request.xml');
d95e8421   Elena.Budnik   ws transfer : ini...
457
458
459

		return array('success' => true, 'msg' => $msg);
	}
16035364   Benjamin Renard   First commit
460
  
d95e8421   Elena.Budnik   ws transfer : ini...
461
462
	public function transferMyData() 
	{
6a449df8   Elena.Budnik   message format
463
464
		$msg = '<b><i>MyData Parameters / My Files:</i></b><br/><br/>';
		$msg.= '<i>Note :</i> CEF format is not implemented<br/><br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
		
		if (!$this->oldWs->load($this->oldWsDir.'WsParams.xml')) {
			error_log('cannot load WsParams.xml for '.TRANSFERUSER,1,email);
			return array('success' => false, 'error' => 'Sorry, we failed to get your MyData Params from old AMDA');
		}

		if (!file_exists($this->newWsDir.'WsParams.xml'))
						$this->createDom();
		else 
			$this->newWs->load($this->newWsDir.'WsParams.xml');
			
		$BaseXml =  new DomDocument("1.0");
		$FilesXml = new DomDocument("1.0");
		
		// get old params 
		$wsdParamsOld = $this->oldWs->getElementsByTagName('mydata');

		if ($wsdParamsOld->length == 0) {
6a449df8   Elena.Budnik   message format
483
				return array('success' => true, 'msg' => 'You have no MyData parameters');
d95e8421   Elena.Budnik   ws transfer : ini...
484
485
486
487
488
489
490
491
492
493
494
495
		}
		
		if (!$BaseXml->load(OLDUSERPATH.TRANSFERUSER.'/DATA/base.xml')) {
			return array('success' => false, 'msg' => 'base description corrupted');
		}
		
		if (!$FilesXml->load($this->oldWsDir.'Files.xml')) {
			return array('success' => false, 'msg' => 'files description corrupted');
		}
		
		$this->newWs->load($this->newWsDir.'WsParams.xml');
		$paramDom = new DomDocument("1.0");
6a449df8   Elena.Budnik   message format
496
497
     
      $msg.= ' Not copied parameters : <br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
498
499
500
501
502
503
504
		foreach ($wsdParamsOld as $wsdParamOld) {
			$format = $wsdParamOld->getAttribute('format');
			$name = $wsdParamOld->getAttribute('name');
			$id = $wsdParamOld->getAttribute('xml:id');
			$mask = $wsdParamOld->getAttribute('mask');
			if ($format == 'cef') {
				$deletedVi[] = $mask;
6a449df8   Elena.Budnik   message format
505
				$msg .= '<li><i>'.$name.'</i><br/>';
d95e8421   Elena.Budnik   ws transfer : ini...
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
				$this->wsd_deleted[] = 'wsd_'.$name;
			}
			else {
				$desc = $wsdParamOld->getAttribute('desc');
				$start = substr($desc,0,16).':00';
				$stop = substr($desc,17).':00';
				$wsdParamOld->setAttribute('desc', $start.'-'.$stop);
				
				$this->newWs->getElementsByTagName('mydataList')->item(0)->appendChild($this->newWs->importNode($wsdParamOld));
				
				$paramDom->load($this->oldWsDir.$id.'.xml');
				$descNode = $paramDom->getElementsByTagName('desc')->item(0);
				$descNode->nodeValue = $start.'-'.$stop;
				$paramDom->save($this->newWsDir.$id.'.xml'); 
				
				$fileFormat[$mask] = $format === 'txt' ? 'ASCII' : strtoupper($format);
			}
		}
cdf22cdd   Elena.Budnik   message window co...
524

d95e8421   Elena.Budnik   ws transfer : ini...
525
526
527
528
529
530
531
532
533
534
		$this->newWs->save($this->newWsDir.'WsParams.xml');
		
		// First delete CEF files
		$xpBase = new domxpath($BaseXml);
		foreach ($deletedVi as $vi) {
			$maskNode = $xpBase->query("//mask[.='".$vi."']");
			if ( $maskNode->length == 0 )
				error_log('No '.$vi.' in '.TRANSFERUSER.'/DATA/base.xml',1,email);
			else {
				$viNode = $maskNode->item(0)->parentNode;
d95e8421   Elena.Budnik   ws transfer : ini...
535
536
537
538
539
540
541
542
543
544
545
				$viNode->parentNode->removeChild($viNode);
			}
		}
		// Then modify base.xml : xml:id => id
		$viNodes = $BaseXml->getElementsByTagName('vi');
		foreach ($viNodes as $viNode) {
			$id = $viNode->getAttribute('xml:id');
			$viNode->removeAttribute('xml:id');
			$viNode->setAttribute('id',$id);
			$mask = $viNode->getElementsByTagName('mask')->item(0)->nodeValue;
			$viNode->setAttribute('format', $fileFormat[$mask]);
d95e8421   Elena.Budnik   ws transfer : ini...
546
547
548
		}
		
		$BaseXml->save(NEWUSERPATH.TRANSFERUSER.'/DATA/base.xml');
cdf22cdd   Elena.Budnik   message window co...
549

d95e8421   Elena.Budnik   ws transfer : ini...
550
551
552
		$filesNodes = $FilesXml->getElementsByTagName('file');
		foreach ($filesNodes as $file) {
			$fileName = $file->getAttribute('name');
cdf22cdd   Elena.Budnik   message window co...
553
554
555
556
557
			$format = $file->getAttribute('format');
			if ($format == 'cef') {
				$deletedFiles[] = $file->getAttribute('xml:id');
			}
			else {
d95e8421   Elena.Budnik   ws transfer : ini...
558
559
560
561
562
563
564
565
566
				copy(OLDUSERPATH.TRANSFERUSER.'/DATA/'.$fileName,NEWUSERPATH.TRANSFERUSER.'/DATA/'.$fileName);
			}
		}
		 
		foreach ($deletedVi as $vi) {
			$node = $FilesXml->getElementById($vi);
			if ($node)
				$node->parentNode->removeChild($node);
		}
6a449df8   Elena.Budnik   message format
567
      $msg .= 'Not copied files :<br/>';
cdf22cdd   Elena.Budnik   message window co...
568
569
570
		foreach ($deletedFiles as $vi) {
			$node = $FilesXml->getElementById($vi);
			if ($node) {
6a449df8   Elena.Budnik   message format
571
				$msg .= '<li><i>'.$vi.'</i> <br/>';
cdf22cdd   Elena.Budnik   message window co...
572
573
574
575
				$node->parentNode->removeChild($node);
			}
		}

d95e8421   Elena.Budnik   ws transfer : ini...
576
		$FilesXml->save($this->newWsDir.'Files.xml');
d95e8421   Elena.Budnik   ws transfer : ini...
577
578
579
580
581
582

		return array('success' => true, 'msg' => $msg);
	} 
	
	public function transferFilters() 
	{
6a449df8   Elena.Budnik   message format
583
		$msg = '<br/><br/><b><i>Filters:</i></b><br/><br/>'; 
d95e8421   Elena.Budnik   ws transfer : ini...
584
585
586
587
588
589
590
591
592
593
594
		
		if (!curl_init($this->oldWsDir.'Filters.xml')) {
				return array('success' => true, 'msg' => 'No filters at old AMDA');
		}
		
		$filterXml = new DomDocument("1.0");
		if (!$filterXml->load($this->oldWsDir.'Filters.xml')) {
			return array('success' => false, 'error' => 'Cannot load filters from old AMDA');
		}
	    
	   $filterXml->save($this->newWsDir.'Filters.xml');
6a449df8   Elena.Budnik   message format
595
596
	   $msg .= 'Filters have been copied</br>';
		return array('success' => true, 'msg' => $msg);
d95e8421   Elena.Budnik   ws transfer : ini...
597
	}
16035364   Benjamin Renard   First commit
598
}
981cd087   Elena.Budnik   ws transfer modifs
599
?>