Commit 9ced131cd3a642d159c5a6309fac0ff6920105d5

Authored by Elena.Budnik
1 parent 14008bfe
Exists in alias

request with aliases processing

php/classes/AliasMgr.php
... ... @@ -61,10 +61,31 @@ class AliasMgr extends AmdaObjectMgr {
61 61 /*****************************************************************
62 62 * PUBLIC FUNCTIONS
63 63 *****************************************************************/
64   -
  64 +
  65 + public function getAliasArraySorted($byParamLength) {
  66 + $AliasList = $this->contentDom->getElementsByTagName('alias');
  67 + $AliasArray = array();
  68 +
  69 + foreach ($AliasList as $alias) {
  70 + $AliasArray[$alias->getAttribute('xml:id')] = $alias->getAttribute('name');
  71 + }
  72 +
  73 + if ($byParamLength) { // sort array by parameter length
  74 + $keys = array_map('strlen', array_keys($AliasArray));
  75 + array_multisort($keys, SORT_DESC, $AliasArray);
  76 + }
  77 + else { // sort array by alias length
  78 + $keys = array_map('strlen',$AliasArray);
  79 + array_multisort($keys,SORT_DESC,$AliasArray);
  80 + }
  81 +
  82 + return $AliasArray;
  83 + }
  84 +
  85 +
65 86 public function getList() {
66 87 $AliasList = $this->contentDom->getElementsByTagName('alias');
67   -
  88 +
68 89 return $AliasList;
69 90 }
70 91  
... ... @@ -72,10 +93,12 @@ class AliasMgr extends AmdaObjectMgr {
72 93  
73 94 $aliasName="#".$aliasName;
74 95 $pos = strpos($chain, $paramName);
  96 +
75 97 while ( $pos !== FALSE ) {
76 98 $pos = $pos+strlen($paramName);
77 99 if (preg_match('/[-+*,^<>&|=\/\[\]\(\)\ ]/', $chain[$pos]) || $chain[$pos] === '') {
78 100 $chain = substr_replace($chain, $aliasName,$pos-strlen($paramName),strlen($paramName));
  101 + $pos = $pos-strlen($paramName)+strlen($aliasName);
79 102 }
80 103 $pos = strpos($chain, $paramName, $pos);
81 104 }
... ... @@ -90,6 +113,7 @@ class AliasMgr extends AmdaObjectMgr {
90 113 $pos = $pos+strlen($aliasName);
91 114 if (preg_match('/[-+*,^<>&|=\/\[\]\(\)\ ]/', $chain[$pos]) || $chain[$pos] === '') {
92 115 $chain = substr_replace($chain, $paramName,$pos-strlen($aliasName),strlen($aliasName));
  116 + $pos = $pos-strlen($aliasName)+strlen($paramName);
93 117 }
94 118 $pos = strpos($chain, $aliasName, $pos);
95 119 }
... ...
php/classes/AmdaObjectMgr.php
... ... @@ -223,23 +223,24 @@ class AmdaObjectMgr
223 223 protected function setAlias($chain)
224 224 {
225 225 $aliasMgr = new AliasMgr();
226   - $listeAlias = $aliasMgr->getList();
227   -
228   - foreach($listeAlias as $alias)
  226 + $aliasArray = $aliasMgr->getAliasArraySorted(true);
  227 +
  228 + foreach($aliasArray as $key => $value)
229 229 {
230   - $chain = $aliasMgr->substrParamAlias($chain, $alias->getAttribute("xml:id"),$alias->getAttribute("name"));
  230 + $chain = $aliasMgr->substrParamAlias($chain, $key,$value);
231 231 }
  232 +
232 233 return $chain;
233 234 }
234 235  
235 236 protected function resetAlias($chain)
236 237 {
237 238 $aliasMgr = new AliasMgr();
238   - $listeAlias = $aliasMgr->getList();
  239 + $aliasArray = $aliasMgr->getAliasArraySorted(false);
239 240  
240   - foreach($listeAlias as $alias)
  241 + foreach($aliasArray as $key => $value)
241 242 {
242   - $chain = $aliasMgr->substrAliasParam($chain, $alias->getAttribute("xml:id"),$alias->getAttribute("name"));
  243 + $chain = $aliasMgr->substrAliasParam($chain, $key, $value);
243 244 }
244 245 return $chain;
245 246 }
... ...
php/classes/RequestMgr.php
... ... @@ -102,23 +102,29 @@ class RequestMgr extends AmdaObjectMgr
102 102 if (!($objToGet = $this->contentDom->getElementById($id))) return array('error' => NO_SUCH_ID);
103 103  
104 104 $obj = json_decode(file_get_contents(USERREQDIR.$id));
  105 +
105 106 //if alias exists, replace parameter name by alias name
106   - if (file_exists(USERWSDIR.'Alias.xml'))
107   - {
108   - if ($this->type == 'condition')
109   - {
110   - $obj->expression =$this->setAlias($obj->expression);
  107 + if (file_exists(USERWSDIR.'Alias.xml')) {
  108 + if ($this->type == 'condition') {
  109 + $obj->expression = $this->setAlias($obj->expression);
111 110 }
112   - else if ($this->type == 'request')
113   - {
114   - for ($i=0; $i < count($obj->children); $i++) {
115   - for ($j=0; $j < count($obj->children[$i]->children); $j++) {
116   - $obj->children[$i]->children[$j]->name = $this->setAlias($obj->children[$i]->children[$j]->name);
  111 + else if ($this->type == 'request') {
  112 + $tabs = $obj->tabs;
  113 + foreach ($tabs as $tab) { // tabs
  114 + $panels = $tab->panels;
  115 + foreach ($panels as $panel) { // panels
  116 + $params = $panel->params;
  117 + foreach ($params as $param) { // params
  118 + $alias = $this->setAlias($param->paramid);
  119 + if ($alias != $param->paramid) {
  120 + $param->{'real-paramid'} = $param->paramid;
  121 + $param->{'real-type'} = $param->type;
  122 + $param->paramid = $alias;
  123 + }
  124 + }
117 125 }
118 126 }
119   - //TODO Ajout des SCATTER
120   - // if $obj->children[$i]->plotType == "SCATTER"
121   - //$obj->children[$i]->scatterParam->data->name pour 1 panel (bug si 2 panels devient $obj->children[$i]->scatterParam->data->data->name)
  127 + //TODO add SCATTER
122 128 }
123 129 }
124 130 //if Start Time - Stop Time
... ... @@ -161,21 +167,9 @@ class RequestMgr extends AmdaObjectMgr
161 167 {
162 168 if ($this->type == 'condition')
163 169 {
164   - $p->expression = $this->resetAlias($p->expression);
  170 + $p->expression = $this->resetAlias(trim($p->expression));
165 171 $info = $p->expression;
166 172 }
167   - else if ($this->type == 'request')
168   - {
169   - $info = '';
170   - for ($i=0; $i < count($p->children); $i++)
171   - {
172   - for ($j=0; $j < count($p->children[$i]->children); $j++)
173   - {
174   - $p->children[$i]->children[$j]->name = $this->resetAlias($p->children[$i]->children[$j]->name);
175   - $info = $info.' '.$p->children[$i]->children[$j]->name;
176   - }
177   - }
178   - }
179 173 }
180 174  
181 175 $this->descFileName = USERREQDIR.$this->id;
... ... @@ -192,7 +186,7 @@ class RequestMgr extends AmdaObjectMgr
192 186  
193 187 public static function checkRequest($obj)
194 188 {
195   - if (!file_exists(orbitsAllXml)) return array('success' => false, 'message' => 'no orbits descriotion file');
  189 + if (!file_exists(orbitsAllXml)) return array('success' => false, 'message' => 'no orbits description file');
196 190  
197 191 //check for orbit templateArgs
198 192 $args = array();
... ...