diff --git a/src/InputOutput/IHMImpl/Tools/IHMParamManagerClass.php b/src/InputOutput/IHMImpl/Tools/IHMParamManagerClass.php index e19ff7b..fefa15d 100644 --- a/src/InputOutput/IHMImpl/Tools/IHMParamManagerClass.php +++ b/src/InputOutput/IHMImpl/Tools/IHMParamManagerClass.php @@ -132,7 +132,6 @@ class IHMParamManagerClass $real_param_id = $paramId; if ($this->templateParamsManager->isTemplatedParam($paramId)) { $paramPath = $this->templateParamsManager->getTemplatePath($paramId); - $real_param_id = $this->templateParamsManager->getTemplatedParamId($paramId, $templateArgs); if (empty($paramPath) || !$doc->load($paramPath)) throw new Exception('Cannot find parameter template file '.$paramPath); } @@ -158,17 +157,21 @@ class IHMParamManagerClass $linkedParamId = $amdaParamNode->getAttribute('name'); if (empty($linkedParamId)) continue; - $parsed_param = $this->templateParamsManager->parseTemplatedParam($linkedParamId); - if ($parsed_param === FALSE) { - $real_linked_param_id = $linkedParamId; - $linkedParamPath = IHMConfigClass::getLocalParamDBPath().$real_linked_param_id.".xml"; + $template_id = $this->templateParamsManager->getTemplateId($linkedParamId); + if ($template_id !== FALSE) { + $linkedParamId = $template_id; + } + + if ($this->templateParamsManager->isTemplatedParam($linkedParamId)) { + $linkedParamPath = $this->templateParamsManager->generateTemplatedParamFile($linkedParamId, $templateArgs); + $real_linked_param_id = $this->templateParamsManager->getTemplatedParamId($linkedParamId, $templateArgs); } else { - $real_linked_param_id = $parsed_param['paramid']; - $linkedParamPath = $this->templateParamsManager->generateTemplatedParamFile($real_linked_param_id, $templateArgs); + $real_linked_param_id = $linkedParamId; + $linkedParamPath = IHMConfigClass::getLocalParamDBPath().$real_linked_param_id.".xml"; } - $paramsData->addParamToCopy($linkedParamId,$linkedParamPath); - $this->addLinkedLocalParams($real_linked_param_id, $paramsData); + $paramsData->addParamToCopy($real_linked_param_id,$linkedParamPath); + $this->addLinkedLocalParams($linkedParamId, $paramsData); } } diff --git a/src/InputOutput/IHMImpl/Tools/IHMParamTemplateClass.php b/src/InputOutput/IHMImpl/Tools/IHMParamTemplateClass.php index 9867d29..a700da4 100644 --- a/src/InputOutput/IHMImpl/Tools/IHMParamTemplateClass.php +++ b/src/InputOutput/IHMImpl/Tools/IHMParamTemplateClass.php @@ -192,6 +192,19 @@ class IHMParamTemplateClass return ""; return IHMConfigClass::getParamTemplateFilePath($this->paramTemplateList[$param_id]['fileName']); } + + /* + * @brief Get template id by template file name + */ + public function getTemplateId($template_name) { + $list = $this->getParamTemplates(); + foreach ($list as $param_id => $param_info) { + if ($param_info['fileName'] == $template_name) { + return $param_id; + } + } + return FALSE; + } /* * -- libgit2 0.21.2