Speedup templates compiler

This commit is contained in:
djmaze 2021-08-10 10:31:53 +02:00
parent 89740bf50f
commit 4e45b56ea4
3 changed files with 11 additions and 49 deletions

View file

@ -175,7 +175,7 @@ class Service
} else {
$aTemplateParameters['{{BaseAppThemeCss}}'] = $this->oActions->compileCss($this->oActions->GetTheme($bAdmin), $bAdmin);
$aTemplateParameters['{{BaseLanguage}}'] = $this->oActions->compileLanguage($sLanguage, $bAdmin);
$aTemplateParameters['{{BaseTemplates}}'] = $this->oServiceActions->compileTemplates($bAdmin, false);
$aTemplateParameters['{{BaseTemplates}}'] = $this->oServiceActions->compileTemplates($bAdmin);
$sResult = \strtr(\file_get_contents(APP_VERSION_ROOT_PATH.'app/templates/Index.html'), $aTemplateParameters);
$sResult = Utils::ClearHtmlOutput($sResult);

View file

@ -878,26 +878,27 @@ class ServiceActions
return $sResult;
}
public function compileTemplates(bool $bAdmin = false, bool $bJsOutput = true) : string
public function compileTemplates(bool $bAdmin = false) : string
{
$aTemplates = array();
Utils::CompileTemplates($aTemplates, APP_VERSION_ROOT_PATH.'app/templates/Views/Components', 'Component');
Utils::CompileTemplates($aTemplates, APP_VERSION_ROOT_PATH.'app/templates/Views/'.($bAdmin ? 'Admin' : 'User'));
Utils::CompileTemplates($aTemplates, APP_VERSION_ROOT_PATH.'app/templates/Views/Common');
foreach (['Components', ($bAdmin ? 'Admin' : 'User'), 'Common'] as $dir) {
$sNameSuffix = ('Components' === $dir) ? 'Component' : '';
foreach (\glob(APP_VERSION_ROOT_PATH."app/templates/Views/{$dir}/*.html") as $file) {
$sTemplateName = \basename($file, '.html') . $sNameSuffix;
$aTemplates[$sTemplateName] = $file;
}
}
$this->oActions->Plugins()->CompileTemplate($aTemplates, $bAdmin);
$sHtml = '';
foreach ($aTemplates as $sName => $sFile)
{
foreach ($aTemplates as $sName => $sFile) {
$sName = \preg_replace('/[^a-zA-Z0-9]/', '', $sName);
$sHtml .= '<template id="'.$sName.'">'.
$this->oActions->ProcessTemplate($sName, \file_get_contents($sFile)).'</template>';
}
unset($aTemplates);
return $bJsOutput ? 'rl.TEMPLATES='.\MailSo\Base\Utils::Php2js($sHtml, $this->Logger()).';' : $sHtml;
return $sHtml;
}
}

View file

@ -131,31 +131,6 @@ class Utils
return $sResult;
}
public static function FolderFiles(string $sDir, string $sType = '') : array
{
$aResult = array();
if (\is_dir($sDir))
{
if (false !== ($rDirHandle = \opendir($sDir)))
{
while (false !== ($sFile = \readdir($rDirHandle)))
{
if (empty($sType) || $sType === \substr($sFile, -\strlen($sType)))
{
if (\is_file($sDir.'/'.$sFile))
{
$aResult[] = $sFile;
}
}
}
\closedir($rDirHandle);
}
}
return $aResult;
}
public static function ClearHtmlOutput(string $sHtml) : string
{
// return $sHtml;
@ -166,20 +141,6 @@ class Utils
);
}
public static function CompileTemplates(array &$aList, string $sDirName, string $sNameSuffix = '')
{
if (\file_exists($sDirName))
{
$aFileList = static::FolderFiles($sDirName, '.html');
foreach ($aFileList as $sName)
{
$sTemplateName = \substr($sName, 0, -5).$sNameSuffix;
$aList[$sTemplateName] = $sDirName.'/'.$sName;
}
}
}
/**
* @param mixed $mDefault = null
* @return mixed