avoid to read SCSS signature when no file touched and itop theme loading only

This commit is contained in:
odain
2020-05-04 14:42:55 +02:00
parent 1457faa53a
commit d43c72b3ac

View File

@@ -109,7 +109,7 @@ class ThemeHandler
SetupUtils::builddir($sDefaultThemeDirPath); SetupUtils::builddir($sDefaultThemeDirPath);
} }
static::CompileTheme($sThemeId, $aDefaultTheme['parameters']); static::CompileTheme($sThemeId, false, $aDefaultTheme['parameters']);
} }
// Return absolute url to theme compiled css // Return absolute url to theme compiled css
@@ -122,13 +122,14 @@ class ThemeHandler
* 2) The produced CSS file exists and its signature is equal to the expected signature (imports, stylesheets, variables) * 2) The produced CSS file exists and its signature is equal to the expected signature (imports, stylesheets, variables)
* *
* @param string $sThemeId * @param string $sThemeId
* @param bool $bSetup : indicated whether compilation is performed in setup context (true) or when loading a page/theme (false)
* @param array|null $aThemeParameters Parameters (variables, imports, stylesheets) for the theme, if not passed, will be retrieved from compiled DM * @param array|null $aThemeParameters Parameters (variables, imports, stylesheets) for the theme, if not passed, will be retrieved from compiled DM
* @param array|null $aImportsPaths Paths where imports can be found. Must end with '/' * @param array|null $aImportsPaths Paths where imports can be found. Must end with '/'
* @param string|null $sWorkingPath Path of the folder used during compilation. Must end with a '/' * @param string|null $sWorkingPath Path of the folder used during compilation. Must end with a '/'
* *
* @throws \CoreException * @throws \CoreException
*/ */
public static function CompileTheme($sThemeId, $aThemeParameters = null, $aImportsPaths = null, $sWorkingPath = null) public static function CompileTheme($sThemeId, $bSetup=false, $aThemeParameters = null, $aImportsPaths = null, $sWorkingPath = null)
{ {
// Default working path // Default working path
if($sWorkingPath === null) if($sWorkingPath === null)
@@ -188,7 +189,7 @@ class ThemeHandler
$iFilemetime = @filemtime($sThemeCssPath); $iFilemetime = @filemtime($sThemeCssPath);
$bFileExists = file_exists($sThemeCssPath); $bFileExists = file_exists($sThemeCssPath);
$bVarSignatureChanged=false; $bVarSignatureChanged=false;
if ($bFileExists) if ($bFileExists && $bSetup)
{ {
$sPrecompiledSignature = static::GetSignature($sThemeCssPath); $sPrecompiledSignature = static::GetSignature($sThemeCssPath);
//check variable signature has changed which is independant from any file modification //check variable signature has changed which is independant from any file modification
@@ -199,11 +200,16 @@ class ThemeHandler
} }
} }
if (!$bFileExists || $bVarSignatureChanged || (is_writable($sThemeFolderPath) && ($iFilemetime < $iStyleLastModified))) if (!$bFileExists || $bVarSignatureChanged || (is_writable($sThemeFolderPath) && ($iFilemetime < $iStyleLastModified)))
{ {
// Dates don't match. Second chance: check if the already compiled stylesheet exists and is consistent based on its signature // Dates don't match. Second chance: check if the already compiled stylesheet exists and is consistent based on its signature
$sActualSignature = static::ComputeSignature($aThemeParameters, $aImportsPaths); $sActualSignature = static::ComputeSignature($aThemeParameters, $aImportsPaths);
if ($bFileExists && !$bSetup)
{
$sPrecompiledSignature = static::GetSignature($sThemeCssPath);
}
if (!empty($sPrecompiledSignature) && $sActualSignature == $sPrecompiledSignature) if (!empty($sPrecompiledSignature) && $sActualSignature == $sPrecompiledSignature)
{ {
touch($sThemeCssPath); // Stylesheet is up to date, mark it as more recent to speedup next time touch($sThemeCssPath); // Stylesheet is up to date, mark it as more recent to speedup next time