}
// Get configuration instance
- $cfgInstance = $tplInstance->getConfigInstance();
+ $cfgInstance = FrameworkConfiguration::getInstance();
// Set the base path
$tplInstance->setBasePath($basePath);
* required method
*/
private function loadRawTemplateData ($fqfn) {
- // Debug message
- if ((defined('DEBUG_TEMPLATE')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] Template <strong>%s</strong> vom Typ <strong>%s</strong> wird geladen.<br />\n",
- $this->__toString(),
- $template,
- $this->getTemplateType()
- ));
-
// Get a input/output instance from the middleware
$ioInstance = $this->getFileIOInstance();
// Load the raw template
$rawTemplateData = $ioInstance->loadFileContents($fqfn);
- // Debug message
- if ((defined('DEBUG_TEMPLATE')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] <strong>%s</strong> Byte Rohdaten geladen.<br />\n",
- $this->__toString(),
- strlen($rawTemplateData)
- ));
-
// Store the template's contents into this class
$this->setRawTemplateData($rawTemplateData);
}
}
+ /**
+ * Finalizes the compilation of all template variables
+ *
+ * @return void
+ */
+ private function finalizeVariableCompilation () {
+ // Get the content
+ $content = $this->getRawTemplateData();
+
+ // Walk through all variables
+ for ($idx = $this->varStack->getIterator(); $idx->valid(); $idx->next()) {
+ // Get current entry
+ $currEntry = $idx->current();
+
+ // Replace all [$var] or {?$var?} with the content
+ //* DEBUG: */ echo "name=".$currEntry['name'].", value=<pre>".htmlentities($currEntry['value'])."</pre>\n";
+ $content = str_replace("\$content[".$currEntry['name']."]", $currEntry['value'], $content);
+ $content = str_replace("[".$currEntry['name']."]", $currEntry['value'], $content);
+ $content = str_replace("{?".$currEntry['name']."?}", $currEntry['value'], $content);
+ } // END - for
+
+ // Set the content back
+ $this->setRawTemplateData($content);
+ }
+
/**
* Getter for raw template data
*
// Iterate through all variables
for ($idx = $this->varStack->getIterator(); $idx->valid(); $idx->next()) {
+
// Get current variable from the stack
$currVariable = $idx->current();
// Transfer it's name/value combination to the $content array
+ //* DEBUG: */ echo $currVariable['name']."=<pre>".htmlentities($currVariable['value'])."</pre>\n";
$dummy[$currVariable['name']] = $currVariable['value'];
- }
+
+ }// END - if
+
+ // Set the new variable (don't remove the second dollar !)
$$validVar = $dummy;
// Prepare all configuration variables
unset($idx);
unset($currVariable);
+ // Finalize the compilation of template variables
+ $this->finalizeVariableCompilation();
+
// Prepare the eval() command for comiling the template
- $eval = sprintf("\$this->setCompiledData(\"%s\");",
+ $eval = sprintf("\$result = \"%s\";",
addslashes($this->getRawTemplateData())
);
// Debug message
- if (((defined('DEBUG_EVAL')) || (defined('DEBUG_ALL'))) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] Konstruierte PHP-Anweisung: <pre><em>%s</em></pre><br />\n",
+ if ((defined('DEBUG_EVAL')) && (is_object($this->getDebugInstance()))) $this->getDebugInstance()->output(sprintf("[%s:] Constructed PHP command: <pre><em>%s</em></pre><br />\n",
$this->__toString(),
htmlentities($eval)
));
// Run the constructed command. This will "compile" all variables in
eval($eval);
+
+ // Set the new content
+ $this->setCompiledData($result);
}
/**
if ($this->getTemplateType() != $this->getConfigInstance()->readConfig("code_template_type")) {
// Abort here
throw new UnexpectedTemplateTypeException(array($this, $this->getTemplateType(), $this->getConfigInstance()->readConfig("code_template_type")), self::EXCEPTION_TEMPLATE_TYPE_IS_UNEXPECTED);
- }
+ } // END - if
// Get the raw data.
$rawData = $this->getRawTemplateData();
//
// The main analysis
$this->analyzeTemplate($templateMatches);
- $this->debugInstance();
// Compile raw template data
$this->compileRawTemplateData($templateMatches);
// Are some raw templates found and loaded?
if (count($this->rawTemplates) > 0) {
+
// Insert all raw templates
$this->insertRawTemplates();
- }
+
+ // Remove the raw template content as well
+ $this->setRawTemplateData("");
+
+ } // END - if
} // END - if($templateMatches ...
}