Get('backoffice_default_theme'); $sEnvPath = APPROOT.'env-' . utils::GetCurrentEnvironment() .'/'; $sThemePath = $sEnvPath.'/branding/themes/'.$sThemeId.'/'; $aThemeParameters = json_decode(@file_get_contents($sThemePath.'theme-parameters.json'), true); $sThemeCssPath = $sThemePath.'main.css'; // Check that theme is compiled if($aThemeParameters === null) { throw new CoreException('Could not load "'.$sThemeId.'" theme parameters from file, check that it has been compiled correctly'); } $sTheme = ''; $iStyleLastModified = 0; clearstatcache(); // Loading files to import and stylesheet to compile, also getting most recent modification time on overall files foreach ($aThemeParameters['imports'] as $sImport) { $sTheme.= '@import "' . $sImport . '";' . "\n"; $iImportLastModified = filemtime($sEnvPath.$sImport); $iStyleLastModified = $iStyleLastModified < $iImportLastModified ? $iImportLastModified : $iStyleLastModified; } foreach ($aThemeParameters['stylesheets'] as $sStylesheet) { $sTheme.= '@import "' . $sStylesheet . '";'."\n"; $iStylesheetLastModified = filemtime($sEnvPath.$sStylesheet); $iStyleLastModified = $iStyleLastModified < $iStylesheetLastModified ? $iStylesheetLastModified : $iStyleLastModified; } // Checking if our compiled css is outdated if (!file_exists($sThemeCssPath) || (is_writable($sThemePath) && (filemtime($sThemeCssPath) < $iStyleLastModified))) { $oScss = new Compiler(); $oScss->setFormatter('ScssPhp\\ScssPhp\\Formatter\\Expanded'); // Setting our xml variables $oScss->setVariables($aThemeParameters['variables']); // Setting our import path to env-* $oScss->setImportPaths($sEnvPath); // Temporary disabling max exec time while compiling $iCurrentMaxExecTime = (int) ini_get('max_execution_time'); set_time_limit(0); // Compiling our theme $sThemeCss = $oScss->compile($sTheme); set_time_limit($iCurrentMaxExecTime); file_put_contents($sThemePath.'main.css', $sThemeCss); } // Return absolute url to theme compiled css return utils::GetAbsoluteUrlModulesRoot().'/branding/themes/'.$sThemeId.'/main.css'; } }