]> git.mxchange.org Git - friendica.git/blob - vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Length.php
Merge pull request #3204 from Hypolite/improvement/frio-action-links-to-buttons
[friendica.git] / vendor / ezyang / htmlpurifier / library / HTMLPurifier / AttrDef / HTML / Length.php
1 <?php
2
3 /**
4  * Validates the HTML type length (not to be confused with CSS's length).
5  *
6  * This accepts integer pixels or percentages as lengths for certain
7  * HTML attributes.
8  */
9
10 class HTMLPurifier_AttrDef_HTML_Length extends HTMLPurifier_AttrDef_HTML_Pixels
11 {
12
13     /**
14      * @param string $string
15      * @param HTMLPurifier_Config $config
16      * @param HTMLPurifier_Context $context
17      * @return bool|string
18      */
19     public function validate($string, $config, $context)
20     {
21         $string = trim($string);
22         if ($string === '') {
23             return false;
24         }
25
26         $parent_result = parent::validate($string, $config, $context);
27         if ($parent_result !== false) {
28             return $parent_result;
29         }
30
31         $length = strlen($string);
32         $last_char = $string[$length - 1];
33
34         if ($last_char !== '%') {
35             return false;
36         }
37
38         $points = substr($string, 0, $length - 1);
39
40         if (!is_numeric($points)) {
41             return false;
42         }
43
44         $points = (int)$points;
45
46         if ($points < 0) {
47             return '0%';
48         }
49         if ($points > 100) {
50             return '100%';
51         }
52         return ((string)$points) . '%';
53     }
54 }
55
56 // vim: et sw=4 sts=4