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