Commit 167bd1f87d7e69aca69a5916465b95775b48d5b3
Exists in
master
and in
109 other branches
Merge branch 'ws_transfert' into 'master'
Ws transfert See merge request !23
Showing
6 changed files
with
711 additions
and
735 deletions
Show diff stats
desktop.php
@@ -33,8 +33,8 @@ | @@ -33,8 +33,8 @@ | ||
33 | 33 | ||
34 | <!-- <script type="text/javascript" src="js/lib/ext/builds/ext-core.js"></script> --> | 34 | <!-- <script type="text/javascript" src="js/lib/ext/builds/ext-core.js"></script> --> |
35 | <!-- <script type="text/javascript" src="js/lib/ext/bootstrap.js"></script> --> | 35 | <!-- <script type="text/javascript" src="js/lib/ext/bootstrap.js"></script> --> |
36 | -<!-- <script type="text/javascript" src="js/lib/ext/ext-all-debug-w-comments.js"></script>--> | ||
37 | - <script type="text/javascript" src="js/lib/ext/ext-all.js"></script> | 36 | +<!-- <script type="text/javascript" src="js/lib/ext/ext-all-debug-w-comments.js"></script> --> |
37 | + <script type="text/javascript" src="js/lib/ext/ext-all.js"></script> | ||
38 | <!-- <script type="text/javascript" src="js/lib/ext/ext-all-dev.js"> --> | 38 | <!-- <script type="text/javascript" src="js/lib/ext/ext-all-dev.js"> --> |
39 | <!-- <script type="text/javascript" src="js/lib/ext-override.js"></script> --> | 39 | <!-- <script type="text/javascript" src="js/lib/ext-override.js"></script> --> |
40 | 40 | ||
@@ -76,8 +76,10 @@ | @@ -76,8 +76,10 @@ | ||
76 | 76 | ||
77 | var myDesktopApp; | 77 | var myDesktopApp; |
78 | 78 | ||
79 | + var isMigration = true; | ||
79 | var sessionID = '<?php echo $sessionID; ?>'; | 80 | var sessionID = '<?php echo $sessionID; ?>'; |
80 | var isFirstVisit = '<?php echo $usrMgr->isFirst; ?>'; | 81 | var isFirstVisit = '<?php echo $usrMgr->isFirst; ?>'; |
82 | + var isOldWS = '<?php echo $usrMgr->isOldWS; ?>'; | ||
81 | var isSpecialInfo = '<?php echo $usrMgr->isSpecialInfo; ?>'; | 83 | var isSpecialInfo = '<?php echo $usrMgr->isSpecialInfo; ?>'; |
82 | var isNewInfo = '<?php echo $usrMgr->isNewInfo; ?>'; | 84 | var isNewInfo = '<?php echo $usrMgr->isNewInfo; ?>'; |
83 | var news = '../data/' + sessionID + '/INFO'; | 85 | var news = '../data/' + sessionID + '/INFO'; |
@@ -91,11 +93,11 @@ | @@ -91,11 +93,11 @@ | ||
91 | 93 | ||
92 | var helpDir = 'help/'; | 94 | var helpDir = 'help/'; |
93 | var isGuest = sessionID.match('guest'); | 95 | var isGuest = sessionID.match('guest'); |
94 | - | 96 | + |
95 | var max_uploaded_file_size = '<?php echo MAX_UPLOADED_FILESIZE; ?>'; | 97 | var max_uploaded_file_size = '<?php echo MAX_UPLOADED_FILESIZE; ?>'; |
96 | var guestSessionDuration = '<?php echo GuestSessionDuration*60; ?>'; // in secs | 98 | var guestSessionDuration = '<?php echo GuestSessionDuration*60; ?>'; // in secs |
97 | var maxGuestTimeInterval = '<?php echo MaxGuestTimeInterval; ?>'; // in days | 99 | var maxGuestTimeInterval = '<?php echo MaxGuestTimeInterval; ?>'; // in days |
98 | - | 100 | + |
99 | //create mask class (LoadMask for elements has been deprecated, use Ext.dom.Element.mask & Ext.dom.Element.unmask) | 101 | //create mask class (LoadMask for elements has been deprecated, use Ext.dom.Element.mask & Ext.dom.Element.unmask) |
100 | var AMDAMask = new Ext.Class({ | 102 | var AMDAMask = new Ext.Class({ |
101 | show : function(interactivePlot) | 103 | show : function(interactivePlot) |
@@ -116,7 +118,7 @@ | @@ -116,7 +118,7 @@ | ||
116 | maskMsg.style.zIndex = '99999'; | 118 | maskMsg.style.zIndex = '99999'; |
117 | if (interactivePlot) | 119 | if (interactivePlot) |
118 | { | 120 | { |
119 | - var killBtn = Ext.get('killopBtn'); | 121 | + var killBtn = Ext.get('killopBtn'); |
120 | killBtn.on('click',function(e,t) { | 122 | killBtn.on('click',function(e,t) { |
121 | AmdaAction.killPlotRequest(function (result, e) | 123 | AmdaAction.killPlotRequest(function (result, e) |
122 | { | 124 | { |
js/app/AmdaApp.js
@@ -180,7 +180,6 @@ Ext.define('amdaApp.AmdaApp', { | @@ -180,7 +180,6 @@ Ext.define('amdaApp.AmdaApp', { | ||
180 | }, | 180 | }, |
181 | ready : function () | 181 | ready : function () |
182 | { | 182 | { |
183 | - //AKKA - Clean user WS | ||
184 | AmdaAction.cleanUserWS(function(res,e){},this); | 183 | AmdaAction.cleanUserWS(function(res,e){},this); |
185 | } | 184 | } |
186 | }, | 185 | }, |
@@ -236,7 +235,19 @@ Ext.define('amdaApp.AmdaApp', { | @@ -236,7 +235,19 @@ Ext.define('amdaApp.AmdaApp', { | ||
236 | buttons: Ext.Msg.OK | 235 | buttons: Ext.Msg.OK |
237 | }); | 236 | }); |
238 | }, | 237 | }, |
239 | - | 238 | + //create InfoBox |
239 | + infoMsgLong : function(msg) { | ||
240 | + Ext.Msg.show({ | ||
241 | + title: 'AMDA Info', | ||
242 | + cls: 'infoMsgLong', | ||
243 | + msg: msg, | ||
244 | + modal: false, | ||
245 | + autoScroll: true, | ||
246 | + resizable: true, | ||
247 | + icon: Ext.Msg.INFO, | ||
248 | + buttons: Ext.Msg.OK | ||
249 | + }); | ||
250 | + }, | ||
240 | //create WarningBox | 251 | //create WarningBox |
241 | warningMsg : function(msg) { | 252 | warningMsg : function(msg) { |
242 | Ext.Msg.show({ | 253 | Ext.Msg.show({ |
@@ -587,12 +598,45 @@ Ext.define('amdaApp.AmdaApp', { | @@ -587,12 +598,45 @@ Ext.define('amdaApp.AmdaApp', { | ||
587 | 'MB rests'); | 598 | 'MB rests'); |
588 | } | 599 | } |
589 | 600 | ||
590 | - if (isFirstVisit && !isGuest) { | ||
591 | - if (isSpecialInfo) { | ||
592 | - myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.info.id, true, function(module) { | ||
593 | - module.createWindow(isSpecialInfo, 'Welcome to AMDA', true); | ||
594 | - }); | ||
595 | - } else { | 601 | + if (isFirstVisit && !isGuest) { |
602 | + | ||
603 | + if (isMigration) { // isSpecialInfo | ||
604 | + myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.info.id, true, function(module) { | ||
605 | + module.createWindow(isSpecialInfo, 'Welcome on AMDA', true); | ||
606 | + if ( isOldWS ) { | ||
607 | + var win = myDesktopApp.getDesktop().getWindow(myDesktopApp.dynamicModules.info.id); | ||
608 | + win.on({ | ||
609 | + show : function() { | ||
610 | + Ext.Msg.show({ | ||
611 | + title:'Welcome on new AMDA', | ||
612 | + msg: 'It is your first visit on the new version of AMDA.<br/>'+ | ||
613 | + 'Do you want to copy here your workspace from the old AMDA ?', | ||
614 | + buttons: Ext.Msg.YESNO, | ||
615 | + icon: Ext.Msg.QUESTION, | ||
616 | + fn : function (btn) { | ||
617 | + if (btn == 'yes') { | ||
618 | + loadMask.show(); | ||
619 | + AmdaAction.convertWS(function(res,e){ | ||
620 | + var explorerModule = myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.explorer.id); | ||
621 | + explorerModule.filtersStore.reload(); | ||
622 | + loadMask.hide(); | ||
623 | + | ||
624 | + if (res.success == true) { | ||
625 | + myDesktopApp.infoMsgLong('<b>Your Wokspace has been copied to new AMDA</b><br/><br/> ' + res.msg); | ||
626 | + } | ||
627 | + else { | ||
628 | + myDesktopApp.errorMsg(res.error); | ||
629 | + } | ||
630 | + }); | ||
631 | + } | ||
632 | + } | ||
633 | + }); | ||
634 | + }, | ||
635 | + scope : this }); | ||
636 | + } | ||
637 | + }) | ||
638 | + } | ||
639 | + else { | ||
596 | myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.help.id, true, function(module) { | 640 | myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.help.id, true, function(module) { |
597 | module.createWindow(); | 641 | module.createWindow(); |
598 | }); | 642 | }); |
@@ -601,7 +645,7 @@ Ext.define('amdaApp.AmdaApp', { | @@ -601,7 +645,7 @@ Ext.define('amdaApp.AmdaApp', { | ||
601 | else { | 645 | else { |
602 | if (isSpecialInfo && !isNewInfo) { | 646 | if (isSpecialInfo && !isNewInfo) { |
603 | myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.info.id, true, function(module) { | 647 | myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.info.id, true, function(module) { |
604 | - module.createWindow(isSpecialInfo, 'Welcome to AMDA', true); | 648 | + module.createWindow(isSpecialInfo, 'Welcome on AMDA', true); |
605 | }); | 649 | }); |
606 | } | 650 | } |
607 | } | 651 | } |
js/app/controllers/AboutModule.js
@@ -7,92 +7,89 @@ | @@ -7,92 +7,89 @@ | ||
7 | * This Module describe new functionalities of AMDA-NG4 | 7 | * This Module describe new functionalities of AMDA-NG4 |
8 | * @author CDA | 8 | * @author CDA |
9 | * @version $Id: AboutModule.js 2397 2014-06-03 10:21:28Z elena $ | 9 | * @version $Id: AboutModule.js 2397 2014-06-03 10:21:28Z elena $ |
10 | - * TODO Do we need real Module ??? | ||
11 | */ | 10 | */ |
12 | 11 | ||
13 | -Ext.define('amdaDesktop.AboutModule', { | ||
14 | - | ||
15 | - extend: 'amdaDesktop.AmdaModule', | 12 | +Ext.define('amdaDesktop.AboutModule', |
13 | +{ | ||
14 | + extend: 'amdaDesktop.AmdaModule', | ||
15 | + contentId : 'infoUI', | ||
16 | + file : 'releaseNotes.' + AMDAVERSION, | ||
16 | 17 | ||
17 | - contentId : 'infoUI', | ||
18 | - file : 'releaseNotes.' + AMDAVERSION, | ||
19 | - | ||
20 | - createWindow : function(file, title, specialInfo) | ||
21 | - { | ||
22 | - var desktop = myDesktopApp.getDesktop(); | ||
23 | - var win = desktop.getWindow(this.id); | ||
24 | - var theTitle = title ? title : this.title; | ||
25 | - | ||
26 | - if (!AMDAVERSION) this.file = 'about'; | ||
27 | - | ||
28 | - var theFile = file ? file : this.file; | ||
29 | - if (!win) { | ||
30 | - win = desktop.createWindow({ | ||
31 | - id: this.id, | ||
32 | - title: theTitle, | ||
33 | - file : theFile, | ||
34 | - width: 650, | ||
35 | - height: 570, | ||
36 | - autoScroll : true, | ||
37 | - minimizable: false, | ||
38 | - maximizable: false, | ||
39 | - bodyStyle: 'background:#ffffee; padding:15px 15px 15px 15px;', | ||
40 | - bodyCls : 'infoWindow', | ||
41 | - loader : { | ||
42 | - url : helpDir + theFile, | ||
43 | - loadMask : false, | ||
44 | - autoLoad : true // important | ||
45 | - }, | ||
46 | - iconCls: this.icon, | ||
47 | - animCollapse:false, | ||
48 | - constrainHeader:true | ||
49 | - }); | 18 | + createWindow : function(file, title, specialInfo) |
19 | + { | ||
20 | + var desktop = myDesktopApp.getDesktop(); | ||
21 | + var win = desktop.getWindow(this.id); | ||
22 | + var theTitle = title ? title : this.title; | ||
23 | + | ||
24 | + if (!AMDAVERSION) this.file = 'about'; | ||
25 | + | ||
26 | + var theFile = file ? file : this.file; | ||
27 | + if (!win) { | ||
28 | + win = desktop.createWindow({ | ||
29 | + id: this.id, | ||
30 | + title: theTitle, | ||
31 | + file : theFile, | ||
32 | + width: 650, | ||
33 | + height: 570, | ||
34 | + autoScroll : true, | ||
35 | + minimizable: false, | ||
36 | + maximizable: false, | ||
37 | + bodyStyle: 'background:#ffffee; padding:15px 15px 15px 15px;', | ||
38 | + bodyCls : 'infoWindow', | ||
39 | + loader : { | ||
40 | + url : helpDir + theFile, | ||
41 | + loadMask : false, | ||
42 | + autoLoad : true // important | ||
43 | + }, | ||
44 | + iconCls: this.icon, | ||
45 | + animCollapse:false, | ||
46 | + constrainHeader:true | ||
47 | + }); | ||
50 | 48 | ||
51 | - if (specialInfo) { | ||
52 | - win.add({ xtype: 'toolbar', | ||
53 | - items: [ { | ||
54 | - text: 'AMDA\'s ABCs', | ||
55 | - scope : this, | ||
56 | - handler: function() { | ||
57 | - myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.help.id, true, function (module) { | ||
58 | - module.createWindow(); | ||
59 | - }); | ||
60 | - } | ||
61 | - },'-', | ||
62 | - '->', '-', | ||
63 | - { | ||
64 | - text: 'Stop showing this window on next login', | ||
65 | - scope : this, | ||
66 | - handler: function() { | ||
67 | - AmdaAction.deleteSpecialInfo(win.file); | ||
68 | - Ext.MessageBox.show({title:'Warning', | ||
69 | - msg: 'OK. Close the window right now?', | ||
70 | - width: 300, | ||
71 | - buttons: Ext.MessageBox.OKCANCEL, | ||
72 | - fn : function(btn) { | ||
73 | - if (btn == 'cancel') return; | ||
74 | - win.close(); | ||
75 | - }, | ||
76 | - icon: Ext.MessageBox.WARNING, | ||
77 | - scope : this | ||
78 | - }); | ||
79 | - } | ||
80 | - } | ||
81 | - ]}); | ||
82 | - } | ||
83 | - | ||
84 | - win.show(); | ||
85 | - } | ||
86 | - else if (win.file === theFile) { | ||
87 | - win.toFront(); | ||
88 | - } | ||
89 | - else { | ||
90 | - win.loader.url = helpDir + theFile; | ||
91 | - win.loader.load(); | ||
92 | - win.setTitle(theTitle); | ||
93 | - win.file = theFile; | ||
94 | - win.toFront(); | ||
95 | - } | ||
96 | - } | ||
97 | - | 49 | + if (specialInfo) { |
50 | + win.add({ xtype: 'toolbar', | ||
51 | + items: [ { | ||
52 | + text: 'AMDA\'s ABCs', | ||
53 | + scope : this, | ||
54 | + handler: function() { | ||
55 | + myDesktopApp.getLoadedModule(myDesktopApp.dynamicModules.help.id, true, function (module) { | ||
56 | + module.createWindow(); | ||
57 | + }); | ||
58 | + } | ||
59 | + },'-', | ||
60 | + '->', '-', | ||
61 | + { | ||
62 | + text: 'Stop showing this window on next login', | ||
63 | + scope : this, | ||
64 | + handler: function() { | ||
65 | + AmdaAction.deleteSpecialInfo(win.file); | ||
66 | + Ext.MessageBox.show({title:'Warning', | ||
67 | + msg: 'OK. Close the window right now?', | ||
68 | + width: 300, | ||
69 | + buttons: Ext.MessageBox.OKCANCEL, | ||
70 | + fn : function(btn) { | ||
71 | + if (btn == 'cancel') return; | ||
72 | + win.close(); | ||
73 | + }, | ||
74 | + icon: Ext.MessageBox.WARNING, | ||
75 | + scope : this | ||
76 | + }); | ||
77 | + } | ||
78 | + } | ||
79 | + ]}); | ||
80 | + } | ||
81 | + | ||
82 | + win.show(); | ||
83 | + } | ||
84 | + else if (win.file === theFile) { | ||
85 | + win.toFront(); | ||
86 | + } | ||
87 | + else { | ||
88 | + win.loader.url = helpDir + theFile; | ||
89 | + win.loader.load(); | ||
90 | + win.setTitle(theTitle); | ||
91 | + win.file = theFile; | ||
92 | + win.toFront(); | ||
93 | + } | ||
94 | + } | ||
98 | }); | 95 | }); |
js/resources/css/amda.css
@@ -239,6 +239,10 @@ background-image: url(../images/16x16/error.png) !important; | @@ -239,6 +239,10 @@ background-image: url(../images/16x16/error.png) !important; | ||
239 | background-color: yellow !important; | 239 | background-color: yellow !important; |
240 | } | 240 | } |
241 | 241 | ||
242 | +.infoMsgLong .x-window-body > .x-box-inner { | ||
243 | + overflow: scroll; | ||
244 | + } | ||
245 | + | ||
242 | /* datasets information windows */ | 246 | /* datasets information windows */ |
243 | 247 | ||
244 | .infoWindow table.contact { | 248 | .infoWindow table.contact { |
php/classes/UserMgr.php
@@ -25,6 +25,7 @@ class UserMgr | @@ -25,6 +25,7 @@ class UserMgr | ||
25 | protected $amdaClient; //client to dd webservice | 25 | protected $amdaClient; //client to dd webservice |
26 | 26 | ||
27 | public $isFirst = false; | 27 | public $isFirst = false; |
28 | + public $isOldWS = true; | ||
28 | public $isNewInfo = false; | 29 | public $isNewInfo = false; |
29 | public $isSpecialInfo = null; | 30 | public $isSpecialInfo = null; |
30 | 31 | ||
@@ -488,32 +489,36 @@ unlink(USERWSDIR.'RemoteParams.xml'); | @@ -488,32 +489,36 @@ unlink(USERWSDIR.'RemoteParams.xml'); | ||
488 | /***************************************************************** | 489 | /***************************************************************** |
489 | * PUBLIC FUNCTIONS | 490 | * PUBLIC FUNCTIONS |
490 | *****************************************************************/ | 491 | *****************************************************************/ |
491 | -// // migration from old to new AMDA | ||
492 | -// public function convertWS() { | ||
493 | -// | ||
494 | -// $convert = new UserWsTransfer($this->user); | ||
495 | -// | ||
496 | -// $res = $convert->checkWS(); | ||
497 | -// if (!$res['success']) return $res; | ||
498 | -// | ||
499 | -// $res = $convert->transferDerived(); | ||
500 | -// $msg = $res['msg']; | ||
501 | -// | ||
502 | -// $res = $convert->transferTimeTables(); | ||
503 | -// $msg .= $res['msg']; | ||
504 | -// | ||
505 | -// $res = $convert->transferConditions(); | ||
506 | -// $msg .= $res['msg']; | ||
507 | -// | 492 | + // migration from old to new AMDA |
493 | + public function convertWS() | ||
494 | + { | ||
495 | + $convert = new UserWsTransfer($this->user); | ||
496 | + | ||
497 | + $res = $convert->checkWS(); | ||
498 | + if (!$res['success']) return $res; | ||
499 | + | ||
500 | + $res = $convert->transferMyData(); | ||
501 | + $msg = $res['msg']; | ||
502 | + | ||
503 | + $res = $convert->transferDerived(); | ||
504 | + $msg .= $res['msg']; | ||
505 | + | ||
506 | + $res = $convert->transferTimeTables(); | ||
507 | + $msg .= $res['msg']; | ||
508 | + | ||
509 | + $res = $convert->transferConditions(); | ||
510 | + $msg .= $res['msg']; | ||
511 | + | ||
508 | // $res = $convert->transferRequests(); | 512 | // $res = $convert->transferRequests(); |
509 | // $msg .= $res['msg']; | 513 | // $msg .= $res['msg']; |
510 | -// | ||
511 | -// $res = $convert->transferMyData(); | ||
512 | -// $msg .= $res['msg']; | ||
513 | -// | ||
514 | -// error_log('Transfer workspace from old AMDA for '.$this->user, 1, 'amda@irap.omp.eu'); | ||
515 | -// return array('success' => true, 'msg' => $msg); | ||
516 | -// } | 514 | + |
515 | + $res = $convert->transferFilters(); | ||
516 | + $msg .= $res['msg']; | ||
517 | + | ||
518 | + | ||
519 | + // error_log('Transfer workspace from old AMDA for '.$this->user, 1, 'amda@irap.omp.eu'); | ||
520 | + return array('success' => true, 'msg' => $msg); | ||
521 | + } | ||
517 | 522 | ||
518 | public function setPath() | 523 | public function setPath() |
519 | { | 524 | { |
@@ -522,9 +527,9 @@ unlink(USERWSDIR.'RemoteParams.xml'); | @@ -522,9 +527,9 @@ unlink(USERWSDIR.'RemoteParams.xml'); | ||
522 | $this->userdir = USERPATH."/".$this->user."/"; | 527 | $this->userdir = USERPATH."/".$this->user."/"; |
523 | } | 528 | } |
524 | // for testing purposes | 529 | // for testing purposes |
525 | - else if (defined('TRANSFERUSER')) { | ||
526 | - $this->userdir = BASE_PATH."test/".TRANSFERUSER."/"; | ||
527 | - } | 530 | +// else if (defined('TRANSFERUSER')) { |
531 | +// $this->userdir = BASE_PATH."test/".TRANSFERUSER."/"; | ||
532 | +// } | ||
528 | else if (isset($this->user)) { | 533 | else if (isset($this->user)) { |
529 | $this->userdir = USERPATH."/".$this->user."/"; | 534 | $this->userdir = USERPATH."/".$this->user."/"; |
530 | } | 535 | } |
@@ -569,7 +574,12 @@ unlink(USERWSDIR.'RemoteParams.xml'); | @@ -569,7 +574,12 @@ unlink(USERWSDIR.'RemoteParams.xml'); | ||
569 | if (!$this->createDir()) { | 574 | if (!$this->createDir()) { |
570 | die("Login for ".$this->user." failed: Can't create WS dirs"); | 575 | die("Login for ".$this->user." failed: Can't create WS dirs"); |
571 | } | 576 | } |
572 | - $this->isFirst = true; | 577 | + $this->isFirst = true; |
578 | + $convert = new UserWsTransfer($this->user); | ||
579 | + | ||
580 | + $res = $convert->checkWS(); | ||
581 | + if (!$res['success']) | ||
582 | + $this->isOldWS = false; | ||
573 | } | 583 | } |
574 | 584 | ||
575 | if (file_exists($this->userdir.'newLogin')) { | 585 | if (file_exists($this->userdir.'newLogin')) { |
@@ -657,6 +667,7 @@ unlink(USERWSDIR.'RemoteParams.xml'); | @@ -657,6 +667,7 @@ unlink(USERWSDIR.'RemoteParams.xml'); | ||
657 | { | 667 | { |
658 | if (file_exists(USERWSDIR.'LocalParams.xml')) | 668 | if (file_exists(USERWSDIR.'LocalParams.xml')) |
659 | unlink(USERWSDIR.'LocalParams.xml'); | 669 | unlink(USERWSDIR.'LocalParams.xml'); |
670 | + | ||
660 | if (!copy(LocalData.'/LocalParams.xml', USERWSDIR.'LocalParams.xml')) | 671 | if (!copy(LocalData.'/LocalParams.xml', USERWSDIR.'LocalParams.xml')) |
661 | die("Login for ".$this->user." failed: Can't copy LocalParams.xml"); | 672 | die("Login for ".$this->user." failed: Can't copy LocalParams.xml"); |
662 | 673 |
php/classes/UserWsTransfer.php
1 | <?php | 1 | <?php |
2 | /** | 2 | /** |
3 | * @class UserWsTransfer | 3 | * @class UserWsTransfer |
4 | - * @version $Id: UserWsTransfer.php 1718 2013-08-28 15:52:38Z myriam $ | ||
5 | - * | ||
6 | */ | 4 | */ |
7 | 5 | ||
8 | - class UserWsTransfer { | 6 | +class UserWsTransfer { |
9 | 7 | ||
10 | - private $ws, $Mgr; | ||
11 | - private $wsDir; | ||
12 | - private $ws_deleted; | 8 | + private $oldWs, $newWs, $Mgr; |
9 | + private $oldWsDir, $newWsDir; | ||
10 | + private $ws_deleted, $wsd_deleted, $pairs; | ||
13 | 11 | ||
14 | - function __construct($user) { | ||
15 | - | ||
16 | - define('OLDUSERPATH', ROOT_PATH.'USERS/'); | ||
17 | - define('TRANSFERUSER', $user); | ||
18 | - define('CONVERSIONDIR', BASE_PATH.'utils/conversion/'); | ||
19 | - | ||
20 | - $this->ws = new DomDocument("1.0"); | ||
21 | - $this->wsDir = OLDUSERPATH.TRANSFERUSER.'/WS/'; | ||
22 | - | ||
23 | - $this->ws_deleted = array(); | ||
24 | - } | ||
25 | - | ||
26 | - public function checkWS() { | ||
27 | - | ||
28 | - // old ws | ||
29 | - if (!is_dir(OLDUSERPATH.TRANSFERUSER)) { | ||
30 | - error_log('no '.TRANSFERUSER.' at old AMDA',1,email); | ||
31 | - return array('success' => false, 'error' => 'Sorry, it seems you have no account at old AMDA'); | ||
32 | - } | ||
33 | - | ||
34 | - if (!file_exists($this->wsDir.'ws.xml')) { | ||
35 | - error_log('no ws.xml for '.TRANSFERUSER,1,email); | ||
36 | - return array('success' => false, 'error' => 'Sorry, we failed to find your workspace at old AMDA'); | ||
37 | - } | ||
38 | - | ||
39 | - if (!$this->ws->load($this->wsDir.'ws.xml')) { | ||
40 | - error_log('cannot load ws.xml for '.TRANSFERUSER,1,email); | ||
41 | - return array('success' => false, 'error' => 'Sorry, we failed to access your workspace at old AMDA'); | ||
42 | - } | ||
43 | - | ||
44 | - return array('success' => true); | ||
45 | - | ||
46 | - } | ||
47 | - | ||
48 | - public function hasAlias($expression) { | 12 | + function __construct($user) |
13 | + { | ||
14 | + define('OLDUSERPATH', 'http://cdpp1.irap.omp.eu/AMDA-NG/data/'); | ||
15 | + // define('OLDUSERPATH', 'http://amda-dev.irap.omp.eu/~budnik/AMDA-NG4/trunk/data/'); | ||
16 | + define('NEWUSERPATH', '/home/budnik/AMDA/AMDA_IHM/data/'); | ||
17 | + define('TRANSFERUSER', $user); | ||
18 | + define('CONVERSIONDIR', '/home/budnik/AMDA/AMDA_Migration/conversion/'); | ||
19 | + | ||
20 | + $this->oldWs = new DomDocument("1.0"); | ||
21 | + $this->newWs = new DomDocument("1.0"); | ||
22 | + | ||
23 | + $this->oldWsDir = OLDUSERPATH.TRANSFERUSER.'/WS/'; | ||
24 | + $this->newWsDir = NEWUSERPATH.TRANSFERUSER.'/WS/'; | ||
25 | + | ||
26 | + if (!is_dir(NEWUSERPATH.TRANSFERUSER.'/WS')) | ||
27 | + mkdir(NEWUSERPATH.TRANSFERUSER.'/WS', 0775); | ||
28 | + | ||
29 | + $this->ws_deleted = array(); | ||
30 | + $this->wsd_deleted = array(); | ||
31 | + $this->getModified(); | ||
32 | + } | ||
33 | + | ||
34 | + private function getObsolete() { | ||
35 | + | ||
36 | + $deletedXML = new DomDocument("1.0"); | ||
37 | + $deletedXML->load(CONVERSIONDIR."Deleted.xml"); | ||
38 | + $deletedNodes = $deletedXML->getElementsByTagName('deleted'); | ||
39 | + | ||
40 | + $deleted = array(); | ||
41 | + foreach ($deletedNodes as $node) | ||
42 | + $deleted[] = $node->getAttribute('xml:id'); | ||
43 | + | ||
44 | + return $deleted; | ||
45 | + } | ||
46 | + | ||
47 | + private function getNotreadyFunctions() { | ||
48 | + | ||
49 | + $deletedXML = new DomDocument("1.0"); | ||
50 | + $deletedXML->load(CONVERSIONDIR."Functions.xml"); | ||
51 | + $deletedNodes = $deletedXML->getElementsByTagName('deleted'); | ||
52 | + | ||
53 | + $notready = array(); | ||
54 | + foreach ($deletedNodes as $node) | ||
55 | + $notready[] = $node->getAttribute('xml:id'); | ||
56 | + | ||
57 | + return $notready; | ||
58 | + } | ||
59 | + | ||
60 | + private function getNotready() { | ||
61 | + | ||
62 | + $deletedXML = new DomDocument("1.0"); | ||
63 | + $deletedXML->load(CONVERSIONDIR."NotReady.xml"); | ||
64 | + $deletedNodes = $deletedXML->getElementsByTagName('deleted'); | ||
65 | + | ||
66 | + $notready = array(); | ||
67 | + foreach ($deletedNodes as $node) | ||
68 | + $notready[] = $node->getAttribute('xml:id'); | ||
69 | + | ||
70 | + return $notready; | ||
71 | + } | ||
72 | + | ||
73 | + private function deleteParam($exp, $deleted) | ||
74 | + { | ||
75 | + $toDelete = false; | ||
76 | + | ||
77 | + foreach ($deleted as $item) { | ||
78 | + if (strpos($exp, $item) !== false) { | ||
79 | + $toDelete = true; | ||
80 | + break; | ||
81 | + } | ||
82 | + } | ||
83 | + | ||
84 | + return $toDelete; | ||
85 | + } | ||
86 | + | ||
87 | + private function getWs($exp) | ||
88 | + { | ||
89 | + $ws = array(); | ||
90 | + | ||
91 | + if (strpos($exp, 'ws_') !== false) { | ||
92 | + $arr = $this->delimitIt($exp); | ||
93 | + foreach ($arr as $item) { | ||
94 | + if (strpos($item, 'ws_') !== false) | ||
95 | + $ws[] = substr($item,3); | ||
96 | + } | ||
97 | + return $ws; | ||
98 | + } | ||
99 | + return false; | ||
100 | + } | ||
101 | + | ||
102 | + private function delimitIt($chain) { | ||
49 | 103 | ||
50 | - return (strpos($expression, "#") !== false); | ||
51 | - | ||
52 | - } | ||
53 | - | ||
54 | - | ||
55 | - public function replaceAliases($expression){ | ||
56 | - | ||
57 | - $aliasXML = new DomDocument("1.0"); | ||
58 | - $aliasXML->load($this->wsDir.'alias.xml'); | ||
59 | - $aliases_ = $aliasXML->getElementsByTagName('alias'); | ||
60 | - | ||
61 | - if ($aliases_->length == 0) return $expression; | ||
62 | - | ||
63 | - $aliases = array(); | ||
64 | - foreach ($aliases_ as $alias) { | ||
65 | - $aliases["#".$alias->getAttribute("name")] = $alias->nodeValue; | ||
66 | - } | ||
67 | -// sort in desc order by key (alias itself) | ||
68 | - krsort($aliases, SORT_NATURAL); | ||
69 | - | ||
70 | - foreach ($aliases as $alias => $param) { | ||
71 | - | ||
72 | - if (!$this->hasAlias($expression)) | ||
73 | - break; | ||
74 | - if (strpos($expression, $alias) !== false) { | ||
75 | - $newExp = str_replace($alias, $param, $expression); | ||
76 | - $expression = $newExp; | ||
77 | - } | ||
78 | - } | ||
79 | - return $expression; | ||
80 | - } | ||
81 | - | ||
82 | -//duplication of FilesMgr method | ||
83 | - public function getSampling($fileName, $format) { | ||
84 | - | ||
85 | - if ($format === 'cdf') { | ||
86 | - copy($fileName, "temp.cdf"); | ||
87 | - exec('cdfsamplingfromdata ', $result); | ||
88 | - unlink("temp.cdf"); | ||
89 | - $minSamp = $result[count($result)-1]; | ||
90 | - } | ||
91 | - else if ($format === 'cef') { | ||
92 | - exec('cefsampling '.$fileName, $result); | ||
93 | - $minSamp = $result[count($result)-1]; | ||
94 | - } | ||
95 | - else $minSamp = null; | ||
96 | -//TODO if min & max | ||
97 | - return $minSamp; | ||
98 | - | ||
99 | - } | ||
100 | - | ||
101 | - | ||
102 | - public function deleteParam($exp, $isPlot) { | ||
103 | - | ||
104 | - $deletedXML = new DomDocument("1.0"); | ||
105 | - | ||
106 | - if ($isPlot) $deletedXML->load(CONVERSIONDIR.'Plot_Deleted.xml'); | ||
107 | - else $deletedXML->load(CONVERSIONDIR.'Deleted.xml'); | 104 | + $delimiter = '[]+,/*()^<>&|=[-]+'; |
105 | + $array = split($delimiter,$chain); | ||
106 | + if (trim(end($array)) == "") array_pop($array); | ||
108 | 107 | ||
109 | - $deletedNodes = $deletedXML->getElementsByTagName('deleted'); | ||
110 | - $toDelete = false; | ||
111 | - | ||
112 | - if (strpos($exp, "CDAWEB") !== false) | ||
113 | - return true; | ||
114 | - | ||
115 | - | ||
116 | - foreach ($deletedNodes as $item) { | ||
117 | - if (strpos($exp, $item->getAttribute('xml:id')) !== false) { | ||
118 | - $toDelete = true; | ||
119 | - break; | ||
120 | - } | ||
121 | - } | ||
122 | - | ||
123 | - return $toDelete; | ||
124 | -} | ||
125 | - | ||
126 | - public function updateParams($expression, $isPlot){ | 108 | + return $array; |
109 | + } | ||
127 | 110 | ||
111 | + private function getModified() | ||
112 | + { | ||
113 | + $convertXML = new DomDocument("1.0"); | ||
114 | + $modifiedFile = CONVERSIONDIR.'Modified.xml'; | ||
115 | + | ||
116 | + if (!$convertXML->load($modifiedFile)) | ||
117 | + error_log('ERROR loading '.$modifiedFile,1,email); | ||
118 | + $convertedNodes = $convertXML->getElementsByTagName('param_convert'); | ||
119 | + | ||
120 | + foreach ($convertedNodes as $item) { | ||
121 | + $pairs[$item->getAttribute('oldid')] = $item->getAttribute('xml:id'); | ||
122 | + } | ||
123 | + krsort($pairs, SORT_NATURAL); | ||
124 | + | ||
125 | + $this->pairs = $pairs; | ||
126 | + } | ||
127 | + | ||
128 | + private function updateParams($expression) | ||
129 | + { | ||
130 | + $newExp = strtr($expression, $this->pairs); | ||
131 | + $expression = $newExp; | ||
132 | + | ||
133 | + return $expression; | ||
134 | + } | ||
135 | + | ||
136 | + //duplication of FilesMgr method | ||
137 | + public function getSampling($fileName, $format) { | ||
138 | + | ||
139 | + if ($format === 'cdf') { | ||
140 | + copy($fileName, "temp.cdf"); | ||
141 | + exec('cdfsamplingfromdata ', $result); | ||
142 | + unlink("temp.cdf"); | ||
143 | + $minSamp = $result[count($result)-1]; | ||
144 | + } | ||
145 | + else if ($format === 'cef') { | ||
146 | + exec('cefsampling '.$fileName, $result); | ||
147 | + $minSamp = $result[count($result)-1]; | ||
148 | + } | ||
149 | + else $minSamp = null; | ||
150 | + //TODO if min & max | ||
151 | + return $minSamp; | ||
152 | + } | ||
153 | + | ||
154 | + protected function createDom() | ||
155 | + { | ||
156 | + $types = array('param' => 'derived', 'mydata' => 'myData'); | ||
157 | + | ||
158 | + $rootElement = $this->newWs->createElement('ws'); | ||
159 | + foreach ($types as $key => $value) | ||
160 | + { | ||
161 | + $contentId = $value.'Param-treeRootNode'; | ||
162 | + $contentTag = $key.'List'; | ||
163 | + $typeElement = $this->newWs->createElement($contentTag); | ||
164 | + $typeElement->setAttribute('xml:id', $contentId); | ||
165 | + $rootElement->appendChild($typeElement); | ||
166 | + } | ||
167 | + | ||
168 | + $this->newWs->appendChild($rootElement); | ||
169 | + // $this->newWs->save($this->newWsDir.'WsParams.xml'); | ||
170 | + } | ||
171 | + | ||
172 | + public function checkWS() | ||
173 | + { | ||
174 | + // old ws | ||
175 | + if (!curl_init(OLDUSERPATH.TRANSFERUSER)) { | ||
176 | + error_log('no '.TRANSFERUSER.' at old AMDA',1,email); | ||
177 | + return array('success' => false, 'error' => 'Sorry, it seems you have no account at old AMDA'); | ||
178 | + } | ||
179 | + | ||
180 | + if (!curl_init($this->oldWsDir)) { | ||
181 | + error_log('no ws.xml for '.TRANSFERUSER,1,email); | ||
182 | + return array('success' => false, 'error' => 'Sorry, we failed to find your workspace at old AMDA'); | ||
183 | + } | ||
184 | + | ||
185 | + return array('success' => true); | ||
186 | + } | ||
187 | + | ||
188 | + public function transferDerived() | ||
189 | + { | ||
190 | + $msg = '<br/><b><i>Derived Params:</i></b><br/><br/>'; | ||
191 | + $msg .= '<i>Note</i> : Parameters made from Remote Base parameters are not copied <br/><br/>'; | ||
192 | + if (!$this->oldWs->load($this->oldWsDir.'WsParams.xml')) { | ||
193 | + error_log('cannot load WsParams.xml for '.TRANSFERUSER,1,email); | ||
194 | + return array('success' => false, 'error' => 'Sorry, we failed to get your Derived Params from old AMDA'); | ||
195 | + } | ||
196 | + | ||
197 | + if (!file_exists($this->newWsDir.'WsParams.xml')) | ||
198 | + $this->createDom(); | ||
199 | + else | ||
200 | + $this->newWs->load($this->newWsDir.'WsParams.xml'); | ||
201 | + | ||
202 | + $deleted = $this->getObsolete(); | ||
203 | + $notready = $this->getNotready(); | ||
204 | + $notreadyFunctions = $this->getNotreadyFunctions(); | ||
205 | + | ||
206 | + $wsParamNode = $this->newWs->getElementsByTagName('paramList')->item(0); | ||
207 | + | ||
208 | + $wsParamsOld = $this->oldWs->getElementsByTagName('param'); | ||
209 | + | ||
210 | + if ($wsParamsOld->length == 0) { | ||
211 | + return array('success' => true, 'msg' => 'No parameters'); | ||
212 | + } | ||
213 | + | ||
214 | + $paramXml = new DomDocument("1.0"); | ||
215 | + $msg .= 'Not copied derived parameters :<br/>'; | ||
216 | + | ||
217 | + foreach ($wsParamsOld as $param) { | ||
218 | + $id = $param->getAttribute('xml:id'); | ||
219 | + $name = $param->getAttribute('name'); | ||
220 | + | ||
221 | + $expression = $param->getAttribute('buildchain'); | ||
222 | + | ||
223 | + if ($this->deleteParam($expression,$deleted)) { | ||
224 | + $msg .= '<li><i>'.$name.'</i> : uses obsolete param<br/> '.$expression.'<br/>'; | ||
225 | + // error_log( 'For INFO : DELETED '.$expression,1,email); | ||
226 | + $this->ws_deleted[] = $name; | ||
227 | + continue; | ||
228 | + } | ||
229 | + | ||
230 | + if ($this->deleteParam($expression,$notready)) { | ||
231 | + $msg .= '<li><i>'.$name.'</i> : uses param not ready yet <br/> '.$expression.'<br/>'; | ||
232 | + // error_log( 'For INFO : DELETED '.$expression,1,email); | ||
233 | + $this->ws_deleted[] = $name; | ||
234 | + continue; | ||
235 | + } | ||
236 | + | ||
237 | + if ($this->deleteParam($expression,$notreadyFunctions)) { | ||
238 | + $msg .= '<li><i>'.$name.'</i> : uses function not ready yet <br/> '.$expression.'<br/>'; | ||
239 | + // error_log( 'For INFO : DELETED '.$expression,1,email); | ||
240 | + $this->ws_deleted[] = $name; | ||
241 | + continue; | ||
242 | + } | ||
243 | + | ||
244 | + if (!empty($this->wsd_deleted)) | ||
245 | + if ($this->deleteParam($expression,$this->wsd_deleted)) { | ||
246 | + $msg .= '<li><i>'.$name.'</i> : uses obsolete myData param<br/> '.$expression.'<br/>'; | ||
247 | + // error_log( 'For INFO : DELETED '.$expression,1,email); | ||
248 | + $this->ws_deleted[] = $name; | ||
249 | + continue; | ||
250 | + } | ||
251 | + | ||
252 | + if ($this->deleteParam($expression,array("CDAWEB","MAPSKP","VEXGRAZ","IMPEX"))) { | ||
253 | + $msg .= '<li><i>'.$name.'</i> : uses remote params <br/> '.$expression.'<br/>'; | ||
254 | + $this->ws_deleted[] = $name; | ||
255 | + continue; | ||
256 | + } | ||
257 | + | ||
258 | + $expressionUpdated = $this->updateParams($expression); | ||
259 | + $wsParamNode->appendChild($this->newWs->importNode($param)); | ||
260 | + | ||
261 | + $paramXml->load($this->oldWsDir.$id.'.xml'); | ||
262 | + $expressionNode = $paramXml->getElementsByTagName('buildchain')->item(0); | ||
263 | + $expressionNode->nodeValue = $expressionUpdated; | ||
264 | + $paramXml->save($this->newWsDir.$id.'.xml'); | ||
265 | + } | ||
266 | + | ||
267 | + // check of 'ws bricks' were deleted | ||
268 | + $newParams = $this->newWs->getElementsByTagName('param'); | ||
269 | + $xp = new domxpath($this->newWs); | ||
270 | + $paramsToRemove = array(); | ||
271 | + | ||
272 | + foreach ($newParams as $param) { | ||
273 | + $id = $param->getAttribute('xml:id'); | ||
274 | + $name = $param->getAttribute('name'); | ||
275 | + | ||
276 | + $expression = $param->getAttribute('buildchain'); | ||
277 | + if ($wsParams = $this->getWs($expression)) { | ||
278 | + foreach ($wsParams as $wsParam) { | ||
279 | + $res = $xp->query("//param[@name='".trim($wsParam)."']"); | ||
280 | + if ($res->length == 0) { | ||
281 | + unlink($this->newWsDir.$id.'.xml'); | ||
282 | + $paramsToRemove[] = $param; | ||
283 | + $this->ws_deleted[] = $name; | ||
284 | + $msg .= '<li><i>'.$name.'</i> : uses obsolete / not ready ws param : <br/> '.$expression.'<br/>'; | ||
285 | + } | ||
286 | + } | ||
287 | + } | ||
288 | + } | ||
289 | + | ||
290 | + foreach ($paramsToRemove as $paramToRemove) { | ||
291 | + $paramToRemove->parentNode->removeChild($paramToRemove); | ||
292 | + } | ||
293 | + | ||
294 | + $this->newWs->save($this->newWsDir.'WsParams.xml'); | ||
295 | + $copied = $newParams->length - count($paramsToRemove); | ||
296 | + | ||
297 | + $msg .= '<br/><i>Copied : </i>'.$copied.' derived parameters<br/><br/>'; | ||
298 | + return array('success' => true, 'msg' => $msg); | ||
299 | + } | ||
300 | + | ||
301 | + public function transferTimeTables() | ||
302 | + { | ||
303 | + $msg = '<b><i>Time Tables:</i></b><br/><br/>'; | ||
304 | + | ||
305 | + // get old time tab list | ||
306 | + $this->newWs->load($this->oldWsDir.'Tt.xml'); | ||
307 | + $timeTabs = $this->newWs->getElementsByTagName('timetab'); | ||
308 | + if ($timeTabs->length == 0) { | ||
309 | + $msg .= 'No time tables'; | ||
310 | + return array('success' => true, 'msg' => $msg); | ||
311 | + } | ||
312 | + | ||
313 | + $oldTtDir = OLDUSERPATH.TRANSFERUSER."/TT/"; | ||
314 | + $newTtDir = NEWUSERPATH.TRANSFERUSER."/TT/"; | ||
315 | + foreach ($timeTabs as $tab) { | ||
316 | + $id = $tab->getAttribute('xml:id'); | ||
317 | + copy($oldTtDir.$id.'.xml', $newTtDir.$id.'.xml'); | ||
318 | + } | ||
319 | + | ||
320 | + $this->newWs->save($this->newWsDir.'Tt.xml'); | ||
321 | + $msg .= '<i>Copied : </i>'.$timeTabs->length.' time tables<br/><br/>'; | ||
322 | + return array('success' => true, 'msg' => $msg); | ||
323 | + } | ||
128 | 324 | ||
129 | - $convertXML = new DomDocument("1.0"); | ||
130 | - | ||
131 | - if ($isPlot) $fileNames = glob(CONVERSIONDIR.'*_convertPlot.xml'); | ||
132 | - else $fileNames = glob(CONVERSIONDIR.'*_convert.xml'); | ||
133 | - | ||
134 | - | ||
135 | - foreach ($fileNames as $file) { | ||
136 | - | ||
137 | - if (!$convertXML->load($file)) | ||
138 | - error_log('ERROR loading '.$file,1,email); | ||
139 | - $convertedNodes = $convertXML->getElementsByTagName('param_convert'); | 325 | + public function transferConditions() |
326 | + { | ||
327 | + $msg = '<b><i>Requests</i></b><br/><br/>'; | ||
328 | + $msg .= '<i>Note :</i> Plot requests are not copied : too much difference new-old AMDA<br/<br/><br/>'; | ||
329 | + $oldRequestXml = new DomDocument("1.0"); | ||
330 | + $newRequestXml = new DomDocument("1.0"); | ||
331 | + | ||
332 | + if (!$oldRequestXml->load($this->oldWsDir.'Request.xml')){ | ||
333 | + $msg .= ' No Requests File<br/>'; | ||
334 | + return array('success' => true, 'msg' => $msg); | ||
335 | + } | ||
336 | + | ||
337 | + $condNodes = $oldRequestXml->getElementsByTagName('condition'); | ||
338 | + if ($condNodes->length == 0) { | ||
339 | + $msg .= ' no DataMining requests to copy<br/>'; | ||
340 | + return array('success' => true, 'msg' => $msg); | ||
341 | + } | ||
342 | + $newRequestXml->load($this->newWsDir.'Request.xml'); | ||
343 | + $conditionRoot = $newRequestXml->getElementsByTagName('conditionList')->item(0); | ||
344 | + | ||
345 | + $condDir = OLDUSERPATH.TRANSFERUSER."/REQ/"; | ||
346 | + | ||
347 | + $deleted = $this->getObsolete(); | ||
348 | + $notready = $this->getNotready(); | ||
349 | + $msg .= 'Not copied DataMining requests :<br/>'; | ||
350 | + | ||
351 | + foreach ($condNodes as $condNode) { | ||
352 | + $id = $condNode->getAttribute('xml:id'); | ||
353 | + $name = $condNode->getAttribute('name'); | ||
354 | + $cond = file($condDir.$id, FILE_IGNORE_NEW_LINES); | ||
355 | + | ||
356 | + $condObj = json_decode($cond[0]); | ||
357 | + $expression = $condObj->expression; | ||
358 | + if ($this->deleteParam($expression, $deleted)) { | ||
359 | + $msg .= '<li><i>'.$name.'</i> : uses obsolete param<br/> '.$expression.'<br/>'; | ||
360 | + $cond_deleted[] = $name; | ||
361 | + continue; | ||
362 | + } | ||
363 | + | ||
364 | + if ($this->deleteParam($expression,$notready)) { | ||
365 | + $msg .= '<li><i>'.$name.'</i> : uses param not ready yet<br/> '.$expression.'<br/>'; | ||
366 | + // error_log( 'For INFO : DELETED '.$expression,1,email); | ||
367 | + $cond_deleted[] = $name; | ||
368 | + continue; | ||
369 | + } | ||
370 | + | ||
371 | + if (!empty($this->wsd_deleted)) | ||
372 | + if ($this->deleteParam($expression,$this->wsd_deleted)) { | ||
373 | + $msg .= '<li><i>'.$name.'</i> : uses obsolete myData param<br/> '.$expression.'<br/>'; | ||
374 | + // error_log( 'For INFO : DELETED '.$expression,1,email); | ||
375 | + $cond_deleted[] = $name; | ||
376 | + continue; | ||
377 | + } | ||
378 | + | ||
379 | + if (!empty($this->ws_deleted)) | ||
380 | + if ($this->deleteParam($expression,$this->ws_deleted)) { | ||
381 | + $msg .= '<li><i>'.$name.'</i> : uses obsolete drived param<br/> '.$expression.'<br/>'; | ||
382 | + // error_log( 'For INFO : DELETED '.$expression,1,email); | ||
383 | + $cond_deleted[] = $name; | ||
384 | + continue; | ||
385 | + } | ||
386 | + | ||
387 | + if ($this->deleteParam($expression,array("CDAWEB","MAPSKP","VEXGRAZ","IMPEX"))) { | ||
388 | + $msg .= '<li><i>'.$name.'</i> : uses remote params <br/> '.$expression.'<br/>'; | ||
389 | + $cond_deleted[] = $name; | ||
390 | + continue; | ||
391 | + } | ||
392 | + | ||
393 | + $expressionUpdated = $this->updateParams($expression); | ||
394 | + $condObj->expression = $expressionUpdated; | ||
395 | + file_put_contents(NEWUSERPATH.TRANSFERUSER."/REQ/".$id, json_encode($condObj)); | ||
396 | + $conditionRoot->appendChild($newRequestXml->importNode($condNode)); | ||
397 | + } | ||
398 | + | ||
399 | + $newRequestXml->save($this->newWsDir.'Request.xml'); | ||
400 | + | ||
401 | + return array('success' => true, 'msg' => $msg); | ||
402 | + } | ||
140 | 403 | ||
141 | - foreach ($convertedNodes as $item) { | ||
142 | - $pairs[$item->getAttribute('oldid')] = $item->getAttribute('xml:id'); | ||
143 | - } | ||
144 | - krsort($pairs, SORT_NATURAL); | ||
145 | - $newExp = strtr($expression, $pairs); | ||
146 | - $expression = $newExp; | ||
147 | - | ||
148 | - } | ||
149 | - | ||
150 | - return $expression; | ||
151 | - } | ||
152 | - | ||
153 | - public function convertArgs($parId, $args){ | ||
154 | - //TODO arguments.php via Ext.Direct call | ||
155 | - $cmd = 'php '.BASE_PATH.'php/arguments.php "'.$parId.'"'; | ||
156 | - | ||
157 | - $arguments = explode(",", $args); | ||
158 | - $newArgs = array(); | ||
159 | - | ||
160 | - $res = exec($cmd); | ||
161 | - | ||
162 | -//TODO just main arguments.... | ||
163 | - foreach ($arguments as $item) { | ||
164 | - if (strpos($item, "/") !== false) | ||
165 | - $arg = substr($item,1,strlen($item)); | ||
166 | - switch ($arg) { | ||
167 | - case "black" : | ||
168 | - case "blue" : | ||
169 | - case "green" : | ||
170 | - case "red" : | ||
171 | - $newArgs[] = "Color=".$arg; | ||
172 | - break; | ||
173 | - | ||
174 | - case "gsm" : | ||
175 | - case "sm" : if (strpos($res, $arg) !== false) | ||
176 | - $newArgs[] = "RefFrame=".strtoupper($arg); | ||
177 | - break; | ||
178 | - | ||
179 | - case "log" : | ||
180 | - case "lin" : if (strpos($res, $arg) !== false) | ||
181 | - $newArgs[] = "Scale=".$arg; | ||
182 | - break; | ||
183 | - case "cyl" : | ||
184 | - $newArgs[] = "OrbitPresentation=".strtoupper($arg); | ||
185 | - break; | ||
186 | - default : | ||
187 | - | ||
188 | - } | ||
189 | - } | ||
190 | - | ||
191 | - if (count($arguments) === 0) return "select..."; | ||
192 | - | ||
193 | - if (count($arguments) > 1) return implode("&",$newArgs); | ||
194 | - | ||
195 | - return $newArgs; | ||
196 | - } | ||
197 | - | ||
198 | - public function createFolders($listName, $nodeType){ | ||
199 | - // create folders | ||
200 | - $folders = $this->ws->getElementsByTagName($listName)->item(0)->getElementsByTagName('level1'); | ||
201 | - $obj = new stdClass(); | ||
202 | - foreach ($folders as $folder) { | ||
203 | - $obj->leaf = false; | ||
204 | - $obj->old_name = "new Folder"; | ||
205 | - $obj->name = $folder->getAttribute('name'); | ||
206 | - $obj->parent = $nodeType."-treeRootNode"; | ||
207 | - $obj->nodeType = $nodeType; | ||
208 | - | ||
209 | - $this->Mgr->renameObject($obj); | ||
210 | - } | ||
211 | - } | ||
212 | - | ||
213 | - public function transferDerived() { | ||
214 | - | ||
215 | - $msg = '<b>WS (Derived) Params:</b><br/>'; | ||
216 | - // derived parameters | ||
217 | - $this->Mgr = new DerivedParamMgr('derivedParam'); | ||
218 | - $this->createFolders('paramList','derivedParam'); | ||
219 | - | ||
220 | - // get old params | ||
221 | - $wsParams = $this->ws->getElementsByTagName('param'); | ||
222 | - if ($wsParams->length == 0) { | ||
223 | - return array('success' => true, 'msg' => 'No parameters'); | ||
224 | - } | ||
225 | - $obj = new stdClass(); | ||
226 | - foreach ($wsParams as $param) { | ||
227 | - $obj->name = $param->getElementsByTagName('name')->item(0)->nodeValue; | ||
228 | - $expression = $param->getElementsByTagName('buildchain')->item(0)->nodeValue; | ||
229 | - | ||
230 | - if ($this->hasAlias($expression)) { | ||
231 | - $newExp = $this->replaceAliases($expression); | ||
232 | - $expression = $newExp; | ||
233 | - } | ||
234 | - if ($this->deleteParam($expression)) { | ||
235 | - $msg .= 'deleted name:<b>'.$obj->name.'</b>; expression: '.$expression.'<br/>'; | ||
236 | - // error_log( 'For INFO : DELETED '.$expression,1,email); | ||
237 | - $this->ws_deleted[] = $obj->name; | ||
238 | - continue; | ||
239 | - } | ||
240 | - | ||
241 | - $obj->buildchain = $this->updateParams($expression); | ||
242 | - $obj->timestep = $param->getElementsByTagName('timestep')->item(0)->nodeValue; | ||
243 | - $obj->units = $param->getElementsByTagName('units')->item(0)->nodeValue; | ||
244 | - $obj->description = $param->getElementsByTagName('description')->item(0)->nodeValue; | ||
245 | - $obj->ytitle = ""; | ||
246 | - $obj->nodeType = "derivedParam"; | ||
247 | - $obj->leaf = true; | ||
248 | - | ||
249 | - $this->Mgr->objectDom = new DomDocument("1.0"); | ||
250 | - if ($param->parentNode->tagName === 'level1') { | ||
251 | - $folder_id = $param->parentNode->getAttribute('id'); | ||
252 | - $this->Mgr->createObject($obj, $folder_id); | ||
253 | - } | ||
254 | - else { | ||
255 | - $this->Mgr->createObject($obj); | ||
256 | - } | ||
257 | - } | ||
258 | - $msg .= ' ok<br/>'; | ||
259 | - return array('success' => true, 'msg' => $msg); | ||
260 | - } | ||
261 | - | ||
262 | - public function transferTimeTables() { | ||
263 | - | ||
264 | - $msg = '<b>Time Tables:</b><br/>'; | ||
265 | - // time tables | ||
266 | - $this->Mgr = new TimeTableMgr(); | ||
267 | - $this->createFolders('timetabList','timeTable'); | ||
268 | - $TTdir = OLDUSERPATH.TRANSFERUSER."/TT/"; | ||
269 | - // get old time tabs | ||
270 | - $timeTabs = $this->ws->getElementsByTagName('timetab'); | ||
271 | - | ||
272 | - if ($timeTabs->length == 0) { | ||
273 | - return array('success' => true, 'msg' => 'No time tables'); | ||
274 | - } | ||
275 | - | ||
276 | - $obj = new stdClass(); | ||
277 | - | ||
278 | - $ttXML = new DomDocument("1.0"); | ||
279 | - foreach ($timeTabs as $item) { | ||
280 | - | ||
281 | - $obj->name = $item->getElementsByTagName('name')->item(0)->nodeValue; | ||
282 | - $obj->created = $item->getElementsByTagName('created')->item(0)->nodeValue; | ||
283 | - $obj->description = $item->getElementsByTagName('condition')->item(0)->nodeValue; | ||
284 | - $obj->history = 'From old AMDA'; | ||
285 | - $obj->nodeType = "timeTable"; | ||
286 | - $obj->leaf = true; | ||
287 | -// intervals | ||
288 | - if (!$ttXML->load($TTdir.$obj->name.".xml")) { | ||
289 | - $msg .= 'failed to copy '.$obj->name.'<br/>'; | ||
290 | - continue; | ||
291 | - } | ||
292 | - | ||
293 | - $intervals = $ttXML->getElementsByTagName("Interval"); | ||
294 | - $ints = array(); | ||
295 | - | ||
296 | - foreach ($intervals as $interval){ | ||
297 | - $int = new stdClass(); | ||
298 | - $int->start = $interval->getElementsByTagName("Start")->item(0)->nodeValue; | ||
299 | - $int->stop = $interval->getElementsByTagName("Stop")->item(0)->nodeValue; | ||
300 | - $ints[] = $int; | ||
301 | - } | ||
302 | - $obj->nbIntervals = $intervals->length; | ||
303 | - | ||
304 | - $this->Mgr->objectDom = new DomDocument("1.0"); | ||
305 | - if ($item->parentNode->tagName === 'level1') { | ||
306 | - $folder_id = $item->parentNode->getAttribute('id'); | ||
307 | - $res = $this->Mgr->createObject($obj, $folder_id); | ||
308 | - } | ||
309 | - else { | ||
310 | - $res = $this->Mgr->createObject($obj); | ||
311 | - } | ||
312 | - | ||
313 | - if ($res['id']) { | ||
314 | - $res = $this->Mgr->saveIntervals($res['id'],$ints,'create'); | ||
315 | - if (!$res['success']) | ||
316 | - $msg .= 'failed copy Time Table '. $obj->name.'<br/>'; | ||
317 | - } | ||
318 | - else { | ||
319 | - $msg .= 'failed copy Time Table '. $obj->name.'<br/>'; | ||
320 | - } | ||
321 | - | ||
322 | - } | ||
323 | - | ||
324 | - $msg .= ' ok<br/>'; | ||
325 | - | ||
326 | - return array('success' => true, 'msg' => $msg); | ||
327 | - } | ||
328 | - | ||
329 | - public function transferConditions() { | 404 | + public function transferMyData() |
405 | + { | ||
406 | + $msg = '<b><i>MyData Parameters / My Files:</i></b><br/><br/>'; | ||
407 | + $msg.= '<i>Note :</i> CEF format is not implemented<br/><br/>'; | ||
408 | + | ||
409 | + if (!$this->oldWs->load($this->oldWsDir.'WsParams.xml')) { | ||
410 | + error_log('cannot load WsParams.xml for '.TRANSFERUSER,1,email); | ||
411 | + return array('success' => false, 'error' => 'Sorry, we failed to get your MyData Params from old AMDA'); | ||
412 | + } | ||
413 | + | ||
414 | + if (!file_exists($this->newWsDir.'WsParams.xml')) | ||
415 | + $this->createDom(); | ||
416 | + else | ||
417 | + $this->newWs->load($this->newWsDir.'WsParams.xml'); | ||
418 | + | ||
419 | + $BaseXml = new DomDocument("1.0"); | ||
420 | + $FilesXml = new DomDocument("1.0"); | ||
421 | + | ||
422 | + // get old params | ||
423 | + $wsdParamsOld = $this->oldWs->getElementsByTagName('mydata'); | ||
424 | + | ||
425 | + if ($wsdParamsOld->length == 0) { | ||
426 | + return array('success' => true, 'msg' => 'You have no MyData parameters'); | ||
427 | + } | ||
428 | + | ||
429 | + if (!$BaseXml->load(OLDUSERPATH.TRANSFERUSER.'/DATA/base.xml')) { | ||
430 | + return array('success' => false, 'msg' => 'base description corrupted'); | ||
431 | + } | ||
432 | + | ||
433 | + if (!$FilesXml->load($this->oldWsDir.'Files.xml')) { | ||
434 | + return array('success' => false, 'msg' => 'files description corrupted'); | ||
435 | + } | ||
436 | + | ||
437 | + $this->newWs->load($this->newWsDir.'WsParams.xml'); | ||
438 | + $paramDom = new DomDocument("1.0"); | ||
330 | 439 | ||
331 | - $msg = '<b>Conditions:</b><br/>'; | ||
332 | - // conditons | ||
333 | - $this->Mgr = new RequestMgr('condition'); | ||
334 | - $condDir = OLDUSERPATH.TRANSFERUSER."/REQ/"; | ||
335 | - // get old conditions | ||
336 | - $conditions = glob($condDir."*.cond"); | ||
337 | - | ||
338 | - if (count($conditions) == 0) { | ||
339 | - return array('success' => true, 'msg' => 'No conditions'); | ||
340 | - } | ||
341 | - | ||
342 | - $obj = new stdClass(); | ||
343 | - foreach ($conditions as $item) { | ||
344 | - $cond = file($item, FILE_IGNORE_NEW_LINES); | ||
345 | - $obj->name = substr(basename($item), 0, -5); | ||
346 | - $expression = $cond[0]; | ||
347 | - | ||
348 | - if ($this->hasAlias($expression)) { | ||
349 | - $newExp = $this->replaceAliases($expression); | ||
350 | - $expression = $newExp; | ||
351 | - } | ||
352 | - | ||
353 | - if ($this->deleteParam($expression)) { | ||
354 | - $msg .= 'deleted name:<b>'.$obj->name.'</b>; expression:'.$expression.'<br/>'; | ||
355 | - continue; | ||
356 | - } | ||
357 | - | ||
358 | - $obj->expression = $this->updateParams($expression); | ||
359 | - $obj->sampling = $cond[1]; | ||
360 | - $obj->gap = $cond[2]; | ||
361 | - $obj->description = "From old AMDA"; | ||
362 | - $obj->timesrc = "Interval"; | ||
363 | - | ||
364 | - if ($cond[3]) { | ||
365 | - $obj->startDate = str_replace(":", "-", substr($cond[3],0,10))."T".substr($cond[3],11,8); | ||
366 | - $obj->durationDay = "0".substr($cond[4],0,3); | ||
367 | - $obj->durationHour = substr($cond[4],4,2); | ||
368 | - $obj->durationMin = substr($cond[4],7,2); | ||
369 | - $obj->durationSec = substr($cond[4],10,2); | ||
370 | - } | ||
371 | - else { | ||
372 | - $timestamp = mktime(0, 0, 0, date("m"), date("d")-1, date("Y")); | ||
373 | - $obj->startDate = date('Y-m-d\TH:i:s',$timestamp); | ||
374 | - $obj->durationDay = "0001"; | ||
375 | - $obj->durationHour = "00"; | ||
376 | - $obj->durationMin = "00"; | ||
377 | - $obj->durationSec = "00"; | ||
378 | - } | ||
379 | - | ||
380 | - $obj->nodeType = "condition"; | ||
381 | - $obj->leaf = true; | ||
382 | - | ||
383 | - $this->Mgr->createObject($obj); | ||
384 | - } | ||
385 | - | ||
386 | - $msg .= ' ok<br/>'; | ||
387 | - | ||
388 | - return array('success' => true, 'msg' => $msg); | ||
389 | - } | ||
390 | - | ||
391 | - public function transferRequests() { | ||
392 | - | ||
393 | - $msg = '<b>Requests:</b><br/>'; | ||
394 | - // requests | ||
395 | - $this->Mgr = new RequestMgr('request'); | ||
396 | - $reqDir = OLDUSERPATH.TRANSFERUSER."/REQ/"; | ||
397 | - // get old requests | ||
398 | - $requests = glob($reqDir."*.xml"); | ||
399 | - | ||
400 | - if (count($requests) == 0) { | ||
401 | - return array('success' => true, 'msg' => 'No requests'); | ||
402 | - } | ||
403 | - | ||
404 | - $reqXML = new DomDocument("1.0"); | ||
405 | - | ||
406 | - $obj = new stdClass(); | ||
407 | - foreach ($requests as $item) { | ||
408 | - | ||
409 | - if (!$reqXML->load($item)) { | ||
410 | - $msg .= 'failed to copy '.substr(basename($item), 0, -4).'<br/>'; | ||
411 | - } | ||
412 | - $obj->name = substr(basename($item), 0, -4); | ||
413 | - $obj->tabId = 1; | ||
414 | - $obj->outputName = ''; | ||
415 | - $obj->orientation = strtoupper($reqXML->getElementsByTagName('orientation')->item(0)->nodeValue); | ||
416 | - $obj->format = 'PNG'; | ||
417 | - $obj->title = ''; | ||
418 | - $obj->description = 'From old AMDA'; | ||
419 | - $obj->charSize = 1.3; | ||
420 | - $obj->thickness = 1; | ||
421 | - $obj->ppp = 3000; | ||
422 | - $obj->forcedLayout = false; | ||
423 | - $obj->forcedMulti = false; | ||
424 | - $obj->timesrc = 'Interval'; | ||
425 | - $start = $reqXML->getElementsByTagName('StartTime')->item(0)->nodeValue; | ||
426 | - $obj->startDate = str_replace(":", "-", substr($start,0,10))."T".substr($start,11,8); | ||
427 | - $tint = $reqXML->getElementsByTagName('TimeInt')->item(0)->nodeValue; | ||
428 | - $obj->durationDay = "0".substr($tint,0,3); | ||
429 | - $obj->durationHour = substr($tint,4,2); | ||
430 | - $obj->durationMin = substr($tint,7,2); | ||
431 | - $obj->durationSec = substr($tint,10,2); | ||
432 | -// Panels | ||
433 | - | ||
434 | - $obj->children = array(); | ||
435 | - $panels = array(); | ||
436 | - | ||
437 | - $params = $reqXML->getElementsByTagName('param'); | ||
438 | - foreach ($params as $param) { | ||
439 | - | ||
440 | - $parId = $param->getAttribute('xml:id'); | ||
441 | - | ||
442 | -//check deleted ws_ | ||
443 | - if ($this->ws_deleted && strtolower(substr($parId,0,3) == "ws_")) { | ||
444 | - foreach ($this->ws_deleted as $item) { | ||
445 | - if ($item === $parId) { | ||
446 | - $msg .= 'ws param deleted '.$parId.'<br/>'; | ||
447 | - continue 2; | ||
448 | - } | ||
449 | - } | ||
450 | - } | ||
451 | - | ||
452 | - if (substr($parId,0,3) == "WS_") | ||
453 | - $parId = strtolower($parId); | ||
454 | - | ||
455 | - if ($this->deleteParam($parId, true)) { | ||
456 | - $msg .= 'param deleted '.$parId.'<br/>'; | ||
457 | - continue; | ||
458 | - } | ||
459 | - $newParId = $this->updateParams($parId, true); | ||
460 | - $panelNumber = $param->getAttribute('panel'); | ||
461 | -//print_r($obj->name." ".$panelNumber.PHP_EOL); | ||
462 | -// no such panel -> create | ||
463 | - if (!$panels[$panelNumber]) { | ||
464 | - $aPanel = new stdClass(); | ||
465 | - $aPanel->name = 'Panel '.$panelNumber; | ||
466 | - $aPanel->leaf = false; | ||
467 | - $aPanel->text = 'Panel '.$panelNumber; | ||
468 | - $aPanel->width = $param->getAttribute('width'); | ||
469 | - $aPanel->height = $param->getAttribute('height'); | ||
470 | - $aPanel->xTitle = ""; | ||
471 | - $aPanel->xRangeMin = $param->getAttribute('xmin'); | ||
472 | - $aPanel->xRangeMax = $param->getAttribute('xmax'); | ||
473 | - $aPanel->y1Title = ""; | ||
474 | - $aPanel->y1RangeMin = $param->getAttribute('ymin'); | ||
475 | - $aPanel->y1RangeMax = $param->getAttribute('ymax'); | ||
476 | - $aPanel->y2Title = ""; | ||
477 | - $aPanel->y2RangeMin = 0; | ||
478 | - $aPanel->y2RangeMax = 0; | ||
479 | - $aPanel->plotType = "TIME"; | ||
480 | - $panels[$panelNumber] = $aPanel; | ||
481 | - | ||
482 | - $panels[$panelNumber]->children = array(); | ||
483 | - } | ||
484 | -// add parameter to the panel | ||
485 | - $aParameter = new stdClass(); | ||
486 | - $aParameter->name = $newParId; | ||
487 | - $aParameter->text = $newParId; | ||
488 | - $aParameter->leaf = true; | ||
489 | - $aParameter->yaxe = false; | ||
490 | -//TODO if we need to check this reallY??? | ||
491 | - $aParameter->isScatter = false; | ||
492 | - $aParameter->needsArgs = false; | ||
493 | - if ($param->getAttribute('args') === "") | ||
494 | - $aParameter->paramArgs = "select..."; | ||
495 | - else | ||
496 | - $aParameter->paramArgs = $this->convertArgs($newParId, $param->getAttribute('args')); | ||
497 | - | ||
498 | - $panels[$panelNumber]->children[] = $aParameter; | ||
499 | - } | ||
500 | -// if there are unordered keys json_encode interprate array as object.... | ||
501 | - $obj->children = array_values($panels); | ||
502 | - $obj->nodeType = "request"; | ||
503 | - $obj->leaf = true; | ||
504 | - | ||
505 | - $this->Mgr->createObject($obj).PHP_EOL; | ||
506 | - } | ||
507 | - | ||
508 | - $msg .= ' ok<br/>'; | ||
509 | - | ||
510 | - return array('success' => true, 'msg' => $msg); | ||
511 | - } | ||
512 | - | ||
513 | - public function transferMyData() { | ||
514 | - | ||
515 | - $msg = '<b>My Data:</b><br/>'; | ||
516 | -// start with copying DATA dir as it is | ||
517 | - | ||
518 | - foreach (glob(OLDUSERPATH.TRANSFERUSER.'/DATA/*') as $item) { | ||
519 | - if (!copy($item, USERDATADIR.basename($item))) { | ||
520 | - error_log('can\'t copy '.$item,1,email); | ||
521 | - $msg .= 'failed copy file '.basename($item).'<br/>'; | ||
522 | - } | ||
523 | - } | ||
524 | - | ||
525 | - $filesXml = new DomDocument("1.0"); | ||
526 | - | ||
527 | - if (!$filesXml->load($this->wsDir.'files.xml')) $msg .= 'no files.xml <br/>'; | ||
528 | - else { | ||
529 | - | ||
530 | - $fileMgr = new FilesMgr(); | ||
531 | - $filesXmlNew = new DomDocument("1.0"); | ||
532 | - $root = $filesXmlNew->createElement('ws'); | ||
533 | - $filesXmlNew->appendChild($root); | ||
534 | - | ||
535 | - $list = $filesXmlNew->createElement("fileList"); | ||
536 | - $list->setAttribute("xml:id", "myData-treeRootNode"); | ||
537 | - $root->appendChild($list); | ||
538 | - | ||
539 | - $files = $filesXml->getElementsByTagName("file"); | ||
540 | - | ||
541 | - $folders = $filesXml->getElementsByTagName("level1"); | ||
542 | - | ||
543 | - if ($folders->length > 0) | ||
544 | - foreach ($folders as $folder) { | ||
545 | - $newFolder = $filesXmlNew->createElement("folder"); | ||
546 | - $newFolder->setAttribute("xml:id", $folder->getAttribute("id")); | ||
547 | - $newFolder->setAttribute("name", $folder->getAttribute("id")); | ||
548 | - $list->appendChild($newFolder); | ||
549 | - } | ||
550 | - | ||
551 | - foreach ($files as $file) { | ||
552 | - $newFile = $filesXmlNew->createElement("file", $file->getAttribute("title")); | ||
553 | - $newFile->setAttribute("xml:id", $file->getAttribute("id")); | ||
554 | - $newFile->setAttribute("name", $file->getAttribute("id")); | ||
555 | - $format = $file->getElementsByTagName("format")->item(0)->nodeValue; | ||
556 | - $newFile->setAttribute("format", $format); | ||
557 | - $newFile->setAttribute("uploaded", $file->getElementsByTagName("uploaded")->item(0)->nodeValue); | ||
558 | - $newFile->setAttribute("start", $file->getAttribute("start")); | ||
559 | - $newFile->setAttribute("stop", $file->getAttribute("stop")); | ||
560 | -// no sampling for cdf in old amda | ||
561 | - $minSampling = $file->getAttribute("sampling"); | ||
562 | - $maxSampling = $file->getAttribute("maxsampling"); | ||
563 | - | ||
564 | - if (!$minSampling) { | ||
565 | - $minSampling = $this->getSampling(USERDATADIR.$file->getAttribute("id"), $format); | ||
566 | - $maxSampling = $minSampling; | ||
567 | - } | ||
568 | - | ||
569 | - $newFile->setAttribute("minsampling", $minSampling); | ||
570 | - $newFile->setAttribute("maxsampling", $maxSampling); | ||
571 | -//TODO check mask | ||
572 | - $newFile->setAttribute("mask", $file->getAttribute("id")); | ||
573 | - | ||
574 | - if ($file->parentNode->tagName == 'level1') | ||
575 | - $filesXmlNew->getElementById($file->parentNode->getAttribute("id"))->appendChild($newFile); | ||
576 | - else | ||
577 | - $list->appendChild($newFile); | ||
578 | - } | ||
579 | - $filesXmlNew->save(USERWSDIR."Files.xml"); | ||
580 | - } | ||
581 | -// mydata parameters | ||
582 | - $this->Mgr = new DerivedParamMgr('mydataParam'); | ||
583 | - $this->createFolders('mydataList','mydataParam'); | ||
584 | - //TODO folders are they OK? | ||
585 | - // get old params | ||
586 | - $wsdParams = $this->ws->getElementsByTagName('mydata'); | ||
587 | - | ||
588 | - //TODO vi ?? | ||
589 | - // $obj = new stdClass(); | ||
590 | - foreach ($wsdParams as $item) { | ||
591 | - $obj = new stdClass(); | ||
592 | - $obj->name = $item->getElementsByTagName('name')->item(0)->nodeValue; | ||
593 | - $obj->nodeType = "myDataParam"; | ||
594 | - $obj->leaf = true; | ||
595 | - $obj->desc = $item->getAttribute('desc'); | ||
596 | - $obj->file = $item->getAttribute('fileOrig'); | ||
597 | - $obj->mask = $item->getAttribute('fileMask'); | ||
598 | - $obj->fillvalue = $item->getAttribute('dataFillValue'); | ||
599 | - $obj->minsampling = $item->getAttribute('dataSampling'); | ||
600 | - $obj->maxsampling = $item->getAttribute('maxSampling'); | ||
601 | - $obj->format = $item->getAttribute('fileFormat'); | ||
602 | - $obj->type = $item->getAttribute('dataType'); | ||
603 | - $obj->size = $item->getAttribute('dataSize'); | ||
604 | - $obj->ytitle = $item->getAttribute('yTitle'); | ||
605 | - $obj->realvar = $item->getAttribute('realName'); | ||
606 | - $obj->units = $item->getAttribute('dataUnits'); | ||
607 | - $obj->legend = $item->getAttribute('dataLegend'); | ||
608 | - | ||
609 | - $this->Mgr->objectDom = new DomDocument("1.0"); | ||
610 | - if ($item->parentNode->tagName === 'level1') { | ||
611 | - $folder_id = $item->parentNode->getAttribute('id'); | ||
612 | - $this->Mgr->createObject($obj, $folder_id); | ||
613 | - } | ||
614 | - else { | ||
615 | - $this->Mgr->createObject($obj); | ||
616 | - } | ||
617 | - } | ||
618 | - | ||
619 | - $msg .= ' ok<br/>'; | ||
620 | - | ||
621 | - return array('success' => true, 'msg' => $msg); | ||
622 | - } | 440 | + $msg.= ' Not copied parameters : <br/>'; |
441 | + foreach ($wsdParamsOld as $wsdParamOld) { | ||
442 | + $format = $wsdParamOld->getAttribute('format'); | ||
443 | + $name = $wsdParamOld->getAttribute('name'); | ||
444 | + $id = $wsdParamOld->getAttribute('xml:id'); | ||
445 | + $mask = $wsdParamOld->getAttribute('mask'); | ||
446 | + if ($format == 'cef') { | ||
447 | + $deletedVi[] = $mask; | ||
448 | + $msg .= '<li><i>'.$name.'</i><br/>'; | ||
449 | + $this->wsd_deleted[] = 'wsd_'.$name; | ||
450 | + } | ||
451 | + else { | ||
452 | + $desc = $wsdParamOld->getAttribute('desc'); | ||
453 | + $start = substr($desc,0,16).':00'; | ||
454 | + $stop = substr($desc,17).':00'; | ||
455 | + $wsdParamOld->setAttribute('desc', $start.'-'.$stop); | ||
456 | + | ||
457 | + $this->newWs->getElementsByTagName('mydataList')->item(0)->appendChild($this->newWs->importNode($wsdParamOld)); | ||
458 | + | ||
459 | + $paramDom->load($this->oldWsDir.$id.'.xml'); | ||
460 | + $descNode = $paramDom->getElementsByTagName('desc')->item(0); | ||
461 | + $descNode->nodeValue = $start.'-'.$stop; | ||
462 | + $paramDom->save($this->newWsDir.$id.'.xml'); | ||
463 | + | ||
464 | + $fileFormat[$mask] = $format === 'txt' ? 'ASCII' : strtoupper($format); | ||
465 | + } | ||
466 | + } | ||
467 | + | ||
468 | + $this->newWs->save($this->newWsDir.'WsParams.xml'); | ||
469 | + | ||
470 | + // First delete CEF files | ||
471 | + $xpBase = new domxpath($BaseXml); | ||
472 | + foreach ($deletedVi as $vi) { | ||
473 | + $maskNode = $xpBase->query("//mask[.='".$vi."']"); | ||
474 | + if ( $maskNode->length == 0 ) | ||
475 | + error_log('No '.$vi.' in '.TRANSFERUSER.'/DATA/base.xml',1,email); | ||
476 | + else { | ||
477 | + $viNode = $maskNode->item(0)->parentNode; | ||
478 | + $viNode->parentNode->removeChild($viNode); | ||
479 | + } | ||
480 | + } | ||
481 | + // Then modify base.xml : xml:id => id | ||
482 | + $viNodes = $BaseXml->getElementsByTagName('vi'); | ||
483 | + foreach ($viNodes as $viNode) { | ||
484 | + $id = $viNode->getAttribute('xml:id'); | ||
485 | + $viNode->removeAttribute('xml:id'); | ||
486 | + $viNode->setAttribute('id',$id); | ||
487 | + $mask = $viNode->getElementsByTagName('mask')->item(0)->nodeValue; | ||
488 | + $viNode->setAttribute('format', $fileFormat[$mask]); | ||
489 | + } | ||
490 | + | ||
491 | + $BaseXml->save(NEWUSERPATH.TRANSFERUSER.'/DATA/base.xml'); | ||
492 | + | ||
493 | + $filesNodes = $FilesXml->getElementsByTagName('file'); | ||
494 | + foreach ($filesNodes as $file) { | ||
495 | + $fileName = $file->getAttribute('name'); | ||
496 | + $format = $file->getAttribute('format'); | ||
497 | + if ($format == 'cef') { | ||
498 | + $deletedFiles[] = $file->getAttribute('xml:id'); | ||
499 | + } | ||
500 | + else { | ||
501 | + copy(OLDUSERPATH.TRANSFERUSER.'/DATA/'.$fileName,NEWUSERPATH.TRANSFERUSER.'/DATA/'.$fileName); | ||
502 | + } | ||
503 | + } | ||
504 | + | ||
505 | + foreach ($deletedVi as $vi) { | ||
506 | + $node = $FilesXml->getElementById($vi); | ||
507 | + if ($node) | ||
508 | + $node->parentNode->removeChild($node); | ||
509 | + } | ||
510 | + $msg .= 'Not copied files :<br/>'; | ||
511 | + foreach ($deletedFiles as $vi) { | ||
512 | + $node = $FilesXml->getElementById($vi); | ||
513 | + if ($node) { | ||
514 | + $msg .= '<li><i>'.$vi.'</i> <br/>'; | ||
515 | + $node->parentNode->removeChild($node); | ||
516 | + } | ||
517 | + } | ||
518 | + | ||
519 | + $FilesXml->save($this->newWsDir.'Files.xml'); | ||
520 | + | ||
521 | + return array('success' => true, 'msg' => $msg); | ||
522 | + } | ||
523 | + | ||
524 | + public function transferFilters() | ||
525 | + { | ||
526 | + $msg = '<br/><br/><b><i>Filters:</i></b><br/><br/>'; | ||
527 | + | ||
528 | + if (!curl_init($this->oldWsDir.'Filters.xml')) { | ||
529 | + return array('success' => true, 'msg' => 'No filters at old AMDA'); | ||
530 | + } | ||
531 | + | ||
532 | + $filterXml = new DomDocument("1.0"); | ||
533 | + if (!$filterXml->load($this->oldWsDir.'Filters.xml')) { | ||
534 | + return array('success' => false, 'error' => 'Cannot load filters from old AMDA'); | ||
535 | + } | ||
536 | + | ||
537 | + $filterXml->save($this->newWsDir.'Filters.xml'); | ||
538 | + $msg .= 'Filters have been copied</br>'; | ||
539 | + return array('success' => true, 'msg' => $msg); | ||
540 | + } | ||
623 | } | 541 | } |
624 | ?> | 542 | ?> |
625 | \ No newline at end of file | 543 | \ No newline at end of file |