You need to sign in before continuing.
Commit ec67a1c5d43548a6ceadac2046c92e4252c11eba
1 parent
9cce1f21
Exists in
master
and in
45 other branches
Store template args in parsed expression saved in cache
Showing
2 changed files
with
56 additions
and
17 deletions
Show diff stats
src/InputOutput/IHMImpl/Tools/IHMParamManagerClass.php
@@ -304,12 +304,7 @@ class IHMParamManagerClass | @@ -304,12 +304,7 @@ class IHMParamManagerClass | ||
304 | if (!$expressionInfo['success']) { | 304 | if (!$expressionInfo['success']) { |
305 | throw new Exception($expressionInfo['message']); | 305 | throw new Exception($expressionInfo['message']); |
306 | } | 306 | } |
307 | - | ||
308 | - $paramsList = array(); | ||
309 | - foreach ($expressionInfo['params'] as $p) { | ||
310 | - $paramsList[] = $p["paramid"]; | ||
311 | - } | ||
312 | - $this->userParameterMgr->saveDerivedParameterParsedExpression($res["param"]["id"], $expressionInfo["expression"], md5($res["param"]["expression"]), $paramsList); | 307 | + $this->userParameterMgr->saveDerivedParameterParsedExpression($res["param"]["id"], $expressionInfo["expression"], md5($res["param"]["expression"]), $expressionInfo['params']); |
313 | } | 308 | } |
314 | 309 | ||
315 | $paramId = $param; | 310 | $paramId = $param; |
src/InputOutput/IHMImpl/Tools/IHMUserParamManagerClass.php
@@ -23,7 +23,10 @@ class IHMUserParamManagerClass | @@ -23,7 +23,10 @@ class IHMUserParamManagerClass | ||
23 | private static $infoDerivedParsedExpNode = 'parsedExp'; | 23 | private static $infoDerivedParsedExpNode = 'parsedExp'; |
24 | private static $infoDerivedParsedExpValAtt = 'exp'; | 24 | private static $infoDerivedParsedExpValAtt = 'exp'; |
25 | private static $infoDerivedParsedExpHashAtt = 'hash'; | 25 | private static $infoDerivedParsedExpHashAtt = 'hash'; |
26 | - private static $infoDerivedParsedExpParamsAtt = 'params'; | 26 | + private static $infoDerivedParsedExpParamNode = 'param'; |
27 | + private static $infoDerivedParsedExpParamIdAtt = "paramid"; | ||
28 | + private static $infoDerivedParsedExpParamArgNode = 'arg'; | ||
29 | + private static $infoDerivedParsedExpParamArgNameAtt = 'name'; | ||
27 | private static $infoDerivedSamplingModeNode = 'sampling_mode'; | 30 | private static $infoDerivedSamplingModeNode = 'sampling_mode'; |
28 | private static $infoDerivedTimeStepNode = 'timestep'; | 31 | private static $infoDerivedTimeStepNode = 'timestep'; |
29 | private static $infoDerivedRefParamNode = 'reference_param'; | 32 | private static $infoDerivedRefParamNode = 'reference_param'; |
@@ -330,18 +333,42 @@ class IHMUserParamManagerClass | @@ -330,18 +333,42 @@ class IHMUserParamManagerClass | ||
330 | $parsedExpNode = $parsedExpNodes->item(0); | 333 | $parsedExpNode = $parsedExpNodes->item(0); |
331 | $parsedExpVal = $parsedExpNode->getAttribute(self::$infoDerivedParsedExpValAtt); | 334 | $parsedExpVal = $parsedExpNode->getAttribute(self::$infoDerivedParsedExpValAtt); |
332 | $parsedExpHash = $parsedExpNode->getAttribute(self::$infoDerivedParsedExpHashAtt); | 335 | $parsedExpHash = $parsedExpNode->getAttribute(self::$infoDerivedParsedExpHashAtt); |
333 | - $parsedExpParams = $parsedExpNode->getAttribute(self::$infoDerivedParsedExpParamsAtt); | ||
334 | - if (!empty($parsedExpVal) && !empty($parsedExpParams) && (md5($paramExpression) == $parsedExpHash)) { | 336 | + $parsedExpParamNodes = $parsedExpNode->getElementsByTagName(self::$infoDerivedParsedExpParamNode); |
337 | + if (!empty($parsedExpVal) && !empty($parsedExpParams) && !empty($parsedExpParamNodes) && (md5($paramExpression) == $parsedExpHash)) { | ||
338 | + $error = FALSE; | ||
335 | $params = array(); | 339 | $params = array(); |
336 | - foreach (explode(',',$parsedExpParams) as $param) { | ||
337 | - $params[] = array( | ||
338 | - 'paramid' => $param, | 340 | + foreach ($parsedExpParamNodes as $parsedExpParamNode) { |
341 | + $parsedParamId = $parsedExpParamNode->getAttribute(self::$infoDerivedParsedExpParamIdAtt); | ||
342 | + if (empty($parsedParamId)) { | ||
343 | + $error = TRUE; | ||
344 | + break; | ||
345 | + } | ||
346 | + $param_to_add = array( | ||
347 | + 'paramid' => $parsedParamId, | ||
348 | + ); | ||
349 | + $parsedExpParamArgNodes = $parsedExpParamNode->getElementsByTagName(self::$infoDerivedParsedExpParamArgNode); | ||
350 | + if (!empty($parsedExpParamArgNodes)) { | ||
351 | + $param_to_add['template_args'] = array(); | ||
352 | + foreach ($parsedExpParamArgNodes as $parsedExpParamArgNode) { | ||
353 | + $attName = $parsedExpParamArgNode->getAttribute(self::$infoDerivedParsedExpParamArgNameAtt); | ||
354 | + if (empty($attName)) { | ||
355 | + $error = TRUE; | ||
356 | + break; | ||
357 | + } | ||
358 | + $param_to_add['template_args'][$attName] = $parsedExpParamArgNode->nodeValue; | ||
359 | + } | ||
360 | + if ($error) { | ||
361 | + break; | ||
362 | + } | ||
363 | + } | ||
364 | + $params[] = $param_to_add; | ||
365 | + } | ||
366 | + if (!$error) { | ||
367 | + $result['parsedExpression'] = array( | ||
368 | + "expression" => $parsedExpVal, | ||
369 | + "params" => $params, | ||
339 | ); | 370 | ); |
340 | } | 371 | } |
341 | - $result['parsedExpression'] = array( | ||
342 | - "expression" => $parsedExpVal, | ||
343 | - "params" => $params, | ||
344 | - ); | ||
345 | } | 372 | } |
346 | } | 373 | } |
347 | 374 | ||
@@ -462,11 +489,28 @@ class IHMUserParamManagerClass | @@ -462,11 +489,28 @@ class IHMUserParamManagerClass | ||
462 | } | 489 | } |
463 | else { | 490 | else { |
464 | $parsedExpNode = $parsedExpNodes->item(0); | 491 | $parsedExpNode = $parsedExpNodes->item(0); |
492 | + while ($parsedExpNode->hasChildNodes()) { | ||
493 | + $parsedExpNode->removeChild($parsedExpNode->firstChild); | ||
494 | + } | ||
465 | } | 495 | } |
466 | 496 | ||
497 | + | ||
467 | $parsedExpNode->setAttribute(self::$infoDerivedParsedExpValAtt, $expression); | 498 | $parsedExpNode->setAttribute(self::$infoDerivedParsedExpValAtt, $expression); |
468 | $parsedExpNode->setAttribute(self::$infoDerivedParsedExpHashAtt, $hash); | 499 | $parsedExpNode->setAttribute(self::$infoDerivedParsedExpHashAtt, $hash); |
469 | - $parsedExpNode->setAttribute(self::$infoDerivedParsedExpParamsAtt, implode(',',$params)); | 500 | + |
501 | + foreach ($params as $param) { | ||
502 | + $paramNode = $dom->createElement(self::$infoDerivedParsedExpParamNode); | ||
503 | + $paramNode->setAttribute(self::$infoDerivedParsedExpParamIdAtt, $param['paramid']); | ||
504 | + $parsedExpNode->appendChild($paramNode); | ||
505 | + if (!empty($param['template_args'])) { | ||
506 | + foreach ($param['template_args'] as $arg_name => $arg_value) { | ||
507 | + $argNode = $dom->createElement(self::$infoDerivedParsedExpParamArgNode); | ||
508 | + $argNode->setAttribute(self::$infoDerivedParsedExpParamArgNameAtt, $arg_name); | ||
509 | + $argNode->nodeValue = $arg_value; | ||
510 | + $paramNode->appendChild($argNode); | ||
511 | + } | ||
512 | + } | ||
513 | + } | ||
470 | 514 | ||
471 | $dom->save($path); | 515 | $dom->save($path); |
472 | 516 |