mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 14:18:52 +00:00
[ticket/9646] Honor CSS comments in @import statements
Add a basic CSS comment parser that allows comments to prevent loading an @import statement. For simplicity, only whitespace is allowed between /* and the @import. Also adjust regex to not parse improper quotation marks. PHPBB3-9646 PHPBB3-8169
This commit is contained in:
parent
64e6faa877
commit
c3a5fd30ee
1 changed files with 10 additions and 2 deletions
|
@ -2531,13 +2531,21 @@ parse_css_file = {PARSE_CSS_FILE}
|
||||||
|
|
||||||
// Match CSS imports
|
// Match CSS imports
|
||||||
$matches = array();
|
$matches = array();
|
||||||
preg_match_all('/@import url\(["\'](.*)["\']\);/i', $stylesheet, $matches);
|
preg_match_all('/@import url\((["\'])(.*)\1\);/i', $stylesheet, $matches);
|
||||||
|
|
||||||
|
// remove commented stylesheets (very simple parser, allows only whitespace
|
||||||
|
// around an @import statement)
|
||||||
|
preg_match_all('#/\*\s*@import url\((["\'])(.*)\1\);\s\*/#i', $stylesheet, $commented);
|
||||||
|
$matches[2] = array_diff($matches[2], $commented[2]);
|
||||||
|
|
||||||
if (sizeof($matches))
|
if (sizeof($matches))
|
||||||
{
|
{
|
||||||
foreach ($matches[0] as $idx => $match)
|
foreach ($matches[0] as $idx => $match)
|
||||||
{
|
{
|
||||||
$stylesheet = str_replace($match, acp_styles::load_css_file($theme_row['theme_path'], $matches[1][$idx]), $stylesheet);
|
if (isset($matches[2][$idx]))
|
||||||
|
{
|
||||||
|
$stylesheet = str_replace($match, acp_styles::load_css_file($theme_row['theme_path'], $matches[2][$idx]), $stylesheet);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue