diff --git a/lib/php-css-parser/CSSList/CSSBlockList.php b/lib/php-css-parser/CSSList/CSSBlockList.php index 17c68142eb7..15742423deb 100644 --- a/lib/php-css-parser/CSSList/CSSBlockList.php +++ b/lib/php-css-parser/CSSList/CSSBlockList.php @@ -69,9 +69,34 @@ abstract class CSSBlockList extends CSSList { if ($sSpecificitySearch === null) { $aResult[] = $oSelector; } else { - $sComparison = "\$bRes = {$oSelector->getSpecificity()} $sSpecificitySearch;"; - eval($sComparison); - if ($bRes) { + $sComparator = '==='; + $aSpecificitySearch = explode(' ', $sSpecificitySearch); + $iTargetSpecificity = $aSpecificitySearch[0]; + if(count($aSpecificitySearch) > 1) { + $sComparator = $aSpecificitySearch[0]; + $iTargetSpecificity = $aSpecificitySearch[1]; + } + $iTargetSpecificity = (int)$iTargetSpecificity; + $iSelectorSpecificity = $oSelector->getSpecificity(); + $bMatches = false; + switch($sComparator) { + case '<=': + $bMatches = $iSelectorSpecificity <= $iTargetSpecificity; + break; + case '<': + $bMatches = $iSelectorSpecificity < $iTargetSpecificity; + break; + case '>=': + $bMatches = $iSelectorSpecificity >= $iTargetSpecificity; + break; + case '>': + $bMatches = $iSelectorSpecificity > $iTargetSpecificity; + break; + default: + $bMatches = $iSelectorSpecificity === $iTargetSpecificity; + break; + } + if ($bMatches) { $aResult[] = $oSelector; } } diff --git a/lib/php-css-parser/CSSList/Document.php b/lib/php-css-parser/CSSList/Document.php index 873df755f7f..1658aee8dbb 100644 --- a/lib/php-css-parser/CSSList/Document.php +++ b/lib/php-css-parser/CSSList/Document.php @@ -72,9 +72,6 @@ class Document extends CSSBlockList { * @example getSelectorsBySpecificity('>= 100') */ public function getSelectorsBySpecificity($sSpecificitySearch = null) { - if (is_numeric($sSpecificitySearch) || is_numeric($sSpecificitySearch[0])) { - $sSpecificitySearch = "== $sSpecificitySearch"; - } $aResult = array(); $this->allSelectors($aResult, $sSpecificitySearch); return $aResult; diff --git a/lib/php-css-parser/moodle_readme.txt b/lib/php-css-parser/moodle_readme.txt index 07f3b4d33ed..4040005a941 100644 --- a/lib/php-css-parser/moodle_readme.txt +++ b/lib/php-css-parser/moodle_readme.txt @@ -1,12 +1,9 @@ PHP CSS Parser -------------- -Downloaded from: https://github.com/sabberworm/PHP-CSS-Parser/releases/tag/8.3.0 - Import procedure: - -- Copy all the files from the folder 'lib/Sabberworm/CSS/' in this directory. - -- Apply the patch in Sabberworm/PHP-CSS-Parser#115 - -- Apply the patch in sabberworm/PHP-CSS-Parser/issues/173 (if this has not already been resolved upstream). +1. Download the latest release from https://github.com/sabberworm/PHP-CSS-Parser/releases +2. Copy all the files from the folder 'lib/Sabberworm/CSS/' in this directory. +3. Apply the following patches from the following pull requests if they have not yet been merged upstream: + a. https://github.com/sabberworm/PHP-CSS-Parser/pull/115 + b. https://github.com/sabberworm/PHP-CSS-Parser/pull/173 diff --git a/lib/thirdpartylibs.xml b/lib/thirdpartylibs.xml index 226f8bce18a..15a443f114f 100644 --- a/lib/thirdpartylibs.xml +++ b/lib/thirdpartylibs.xml @@ -217,7 +217,7 @@ php-css-parser PHP-CSS-Parser MIT - 8.3.0 + 8.3.1 rtlcss