ordersprinter/webapp/php/utilities/basetemplater.php

74 lines
2.2 KiB
PHP

<?php
class Basetemplater {
private $templatelines = array();
private $submodules = array();
private $closing = null;
function __construct($templatelines,$submodules,$closing) {
$this->templatelines = $templatelines;
$this->submodules = $submodules;
$this->closing = $closing;
}
public function createWithTemplate($pdo) {
$seperatedTemplate = Templateutils::separateSubModule($this->templatelines, $this->submodules);
$alldataitems = $this->getDataItems($pdo);
$txt = "";
foreach($alldataitems as $aDataEntry) {
$subInstances = array();
foreach($seperatedTemplate["submodulelines"] as $aSubModLineSection) {
$subModClassName = $aSubModLineSection["submodule"]["classname"];
$refl = new ReflectionClass($subModClassName);
$subInstances[] = $refl->newInstance($aSubModLineSection["foundlines"],$aDataEntry["id"],$this->closing);
}
foreach($seperatedTemplate["templatelines"] as $aTemplatelLine) {
$responsible = $aTemplatelLine["responsible"];
$line = $aTemplatelLine["line"];
if ($responsible == Templatedefs::$PARSE_SELF) {
$preprocessedLine = Abbreviations::replaceDefsInTextLine($line);
$txt .= $this->parse($pdo,$preprocessedLine,$aDataEntry);
} else if ($responsible == Templatedefs::$PARSE_CONDITIONAL) {
// parse line only if submodule has entries
$whichSubmodule = $aTemplatelLine["submoduleindex"];
$hasItems = call_user_func(array($subInstances[$whichSubmodule],"hasItems"),$pdo);
if ($hasItems) {
$preprocessedLine = Abbreviations::replaceDefsInTextLine($line);
$txt .= $this->parse($pdo,$preprocessedLine,$aDataEntry);
}
} else {
$whichSubmodule = $aTemplatelLine["submoduleindex"];
$txt .= call_user_func(array($subInstances[$whichSubmodule],"createWithTemplate"),$pdo);
}
}
}
return $txt;
}
public function parse($pdo,$text,$data) {
return $text;
}
public function getDataItems($pdo) {
return array();
}
public function hasItems($pdo) {
$items = $this->getDataItems($pdo);
if (count($items) > 0) {
return true;
} else {
return false;
}
}
public static function getClassName() {
return get_called_class();
}
}