diff --git a/lib/classes/config/class.ConfigDaemon.php b/lib/classes/config/class.ConfigDaemon.php index 70d185dc..19ab7e4b 100644 --- a/lib/classes/config/class.ConfigDaemon.php +++ b/lib/classes/config/class.ConfigDaemon.php @@ -285,11 +285,16 @@ class ConfigDaemon { $content = preg_replace_callback('/\{\{(.*)\}\}/Ui', function ($matches) { if (preg_match('/^settings\.(.*)$/', $matches[1], $match)) { return Settings::Get($match[1]); - } elseif (preg_match('/^lng\.(.*)$/', $matches[1], $match)) { - $lngvar = str_replace('.', '"]["', $match[1]); - $lngvar = str_replace('lng"]', 'lng', $lngvar); - $lngvar .= '"]'; - return ${$lngvar}; + } elseif (preg_match('/^lng\.(.*)(?:\.(.*)(?:\.(.*)))$/U', $matches[1], $match)) { + global $lng; + if (isset($match[1]) && $match[1] != '' && isset($match[2]) && $match[2] != '' && isset($match[3]) && $match[3] != '') { + return $lng[$match[1]][$match[2]][$match[3]]; + } elseif (isset($match[1]) && $match[1] != '' && isset($match[2]) && $match[2] != '') { + return $lng[$match[1]][$match[2]]; + } elseif (isset($match[1]) && $match[1] != '') { + return $lng[$match[1]]; + } + return ''; } }, $content); return $content; diff --git a/lib/classes/config/class.ConfigService.php b/lib/classes/config/class.ConfigService.php index 756a0a6e..b2b6d0ed 100644 --- a/lib/classes/config/class.ConfigService.php +++ b/lib/classes/config/class.ConfigService.php @@ -67,7 +67,7 @@ class ConfigService { $service = $this->fullxml->xpath($this->xpath); $attributes = $service[0]->attributes(); if ($attributes['title'] != '') { - $this->title = (string)$attributes['title']; + $this->title = $this->_parseContent((string)$attributes['title']); } } @@ -115,6 +115,30 @@ class ConfigService { return true; } + /** + * Replace placeholders with content + * @param string $content + * @return string $content w/o placeholder + */ + private function _parseContent($content) { + $content = preg_replace_callback('/\{\{(.*)\}\}/Ui', function ($matches) { + if (preg_match('/^settings\.(.*)$/', $matches[1], $match)) { + return Settings::Get($match[1]); + } elseif (preg_match('/^lng\.(.*)(?:\.(.*)(?:\.(.*)))$/U', $matches[1], $match)) { + global $lng; + if (isset($match[1]) && $match[1] != '' && isset($match[2]) && $match[2] != '' && isset($match[3]) && $match[3] != '') { + return $lng[$match[1]][$match[2]][$match[3]]; + } elseif (isset($match[1]) && $match[1] != '' && isset($match[2]) && $match[2] != '') { + return $lng[$match[1]][$match[2]]; + } elseif (isset($match[1]) && $match[1] != '') { + return $lng[$match[1]]; + } + return ''; + } + }, $content); + return $content; + } + public function getDaemons() { $this->_parse(); return $this->daemons;