templateDir = "templates/" . $tpl_id . "/"; } } /** * Eine Templatedatei öffnen. * * @access public * @param string $file Dateiname des Templates. * @uses $templateName * @uses $templateFile * @uses $templateDir * @uses $templateId * @uses parseFunctions() * @return boolean */ public function load($file) { // Eigenschaften zuweisen $this->templateName = $file; $this->templateFile = $this->templateDir . $file; // Wenn ein Dateiname übergeben wurde, versuchen, die Datei zu öffnen if( !empty($this->templateFile) ) { if( file_exists($this->templateFile) ) { $this->template = file_get_contents($this->templateFile); } else { return false; } } else { return false; } // Funktionen parsen $this->parseFunctions(); } /** * Einen Standard-Platzhalter ersetzen. * * @access public * @param string $replace Name des Platzhalters. * @param string $replacement Der Text, mit dem der Platzhalter ersetzt * werden soll. * @uses $leftDelimiter * @uses $rightDelimiter * @uses $template */ public function assign($replace, $replacement) { $this->template = str_replace( $this->leftDelimiter .$replace.$this->rightDelimiter, $replacement, $this->template ); } /** * Die Sprachdateien öffnen und Sprachvariablem im Template ersetzen. * * @access public * @param array $files Dateinamen der Sprachdateien. * @uses $languageFiles * @uses $languageDir * @uses replaceLangVars() * @return array */ public function loadLanguage($files) { $this->languageFiles = $files; // Versuchen, alle Sprachdateien einzubinden for( $i = 0; $i < count( $this->languageFiles ); $i++ ) { if ( !file_exists( $this->languageDir .$this->languageFiles[$i] ) ) { return false; } else { include_once( $this->languageDir .$this->languageFiles[$i] ); // Jetzt steht das Array $lang zur Verfügung } } // Die Sprachvariablen mit dem Text ersetzen $this->replaceLangVars($lang); // $lang zurückgeben, damit $lang auch im PHP-Code verwendet werden kann return $lang; } /** * Sprachvariablen im Template ersetzen. * * @access private * @param string $lang Die Sprachvariablen. * @uses $template */ private function replaceLangVars($lang) { $this->template = preg_replace_callback("/\{L_(.*)\}/isU", function($matches) use ($lang) { return $lang[strtolower($matches[1])]; }, $this->template); } /** * Includes parsen und Kommentare aus dem Template entfernen. * * @access private * @uses $leftDelimiterF * @uses $rightDelimiterF * @uses $template * @uses $leftDelimiterC * @uses $rightDelimiterC */ private function parseFunctions() { // Includes ersetzen ( {include file="..."} ) while( preg_match( "/" .$this->leftDelimiterF ."include file=\"(.*)\.(.*)\"" .$this->rightDelimiterF ."/isU", $this->template) ) { $this->template = preg_replace_callback( "/" .$this->leftDelimiterF ."include file=\"(.*)\.(.*)\"" .$this->rightDelimiterF."/isU", function($matches) { return file_get_contents($this->templateDir.$matches[1].'.'.$matches[2]); }, $this->template ); } // Kommentare löschen $this->template = preg_replace( "/" .$this->leftDelimiterC ."(.*)" .$this->rightDelimiterC ."/isU", "", $this->template ); } /** * Das "fertige Template" ausgeben. * * @access public * @uses $template */ public function display() { echo $this->template; } } ?>