]> git.mxchange.org Git - friendica.git/blob - library/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php
added index to config and pconfig table
[friendica.git] / library / HTMLPurifier / AttrDef / CSS / ImportantDecorator.php
1 <?php
2
3 /**
4  * Decorator which enables !important to be used in CSS values.
5  */
6 class HTMLPurifier_AttrDef_CSS_ImportantDecorator extends HTMLPurifier_AttrDef
7 {
8     public $def, $allow;
9
10     /**
11      * @param $def Definition to wrap
12      * @param $allow Whether or not to allow !important
13      */
14     public function __construct($def, $allow = false) {
15         $this->def = $def;
16         $this->allow = $allow;
17     }
18     /**
19      * Intercepts and removes !important if necessary
20      */
21     public function validate($string, $config, $context) {
22         // test for ! and important tokens
23         $string = trim($string);
24         $is_important = false;
25         // :TODO: optimization: test directly for !important and ! important
26         if (strlen($string) >= 9 && substr($string, -9) === 'important') {
27             $temp = rtrim(substr($string, 0, -9));
28             // use a temp, because we might want to restore important
29             if (strlen($temp) >= 1 && substr($temp, -1) === '!') {
30                 $string = rtrim(substr($temp, 0, -1));
31                 $is_important = true;
32             }
33         }
34         $string = $this->def->validate($string, $config, $context);
35         if ($this->allow && $is_important) $string .= ' !important';
36         return $string;
37     }
38 }
39
40 // vim: et sw=4 sts=4