diff --git a/core/page.class.php b/core/page.class.php index 48719ef1..6547c3f2 100644 --- a/core/page.class.php +++ b/core/page.class.php @@ -306,6 +306,7 @@ class Page { // store local copy for speed. $autocache_css = $config->get_bool("autocache_css"); $autocache_js = $config->get_bool("autocache_js"); + $theme_name = $config->get_string('theme', 'default'); if (!$autocache_css && !$autocache_js) { return false; // caching disabled @@ -352,8 +353,21 @@ class Page { $replace = 'url("../../${1}")'; $contents_from_extensions = preg_replace($pattern, $replace, $contents_from_extensions); } - // Combine the two - $data = $contents_from_lib .' '. $contents_from_extensions; + // Get CSS from theme + $contents_from_theme = ''; + $css_files = glob("themes/$theme_name/style.css"); + if($css_files) { + foreach($css_files as $css_file) { + $contents_from_theme .= file_get_contents($css_file); + } + // Can't directly cache the CSS files, as they might have relative locations to images, etc. in them. + // We have to adjust the URLs accordingly before saving the cached file. + $pattern = '/url[\s]*\([\s]*["\']?([^"\'\)]+)["\']?[\s]*\)/'; + $replace = 'url("../../${1}")'; + $contents_from_theme = preg_replace($pattern, $replace, $contents_from_theme); + } + // Combine the three + $data = $contents_from_lib .' '. $contents_from_extensions .' '. $contents_from_theme; // Minify the CSS if enabled. if($config->get_bool("autocache_min_css")) { @@ -387,7 +401,13 @@ class Page { foreach($css_files as $css_file) { $this->add_html_header(''); } - } + } + $css_files = glob("themes/$theme_name/style.css"); + if($css_files) { + foreach($css_files as $css_file) { + $this->add_html_header(''); + } + } }