Merge pull request #701 from dawnbreak/HTMLpurifier
HTMLPurifier library update
This commit is contained in:
		| @@ -31,7 +31,8 @@ | ||||
| 		"sabre/dav" : "~3.2", | ||||
| 		"michelf/php-markdown" : "^1.7", | ||||
| 		"pixel418/markdownify": "^2.2", | ||||
| 		"bshaffer/oauth2-server-php": "^1.9" | ||||
| 		"bshaffer/oauth2-server-php": "^1.9", | ||||
| 		"ezyang/htmlpurifier": "^4.9" | ||||
| 	}, | ||||
| 	"require-dev" : { | ||||
| 		"php" : ">=7.0", | ||||
|   | ||||
							
								
								
									
										49
									
								
								composer.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										49
									
								
								composer.lock
									
									
									
										generated
									
									
									
								
							| @@ -4,7 +4,7 @@ | ||||
|         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", | ||||
|         "This file is @generated automatically" | ||||
|     ], | ||||
|     "content-hash": "9842014a99ac4e654bc7bfd6061d6f60", | ||||
|     "content-hash": "f1d40dcfbbb2f5364ad55235efaeb5ab", | ||||
|     "packages": [ | ||||
|         { | ||||
|             "name": "bshaffer/oauth2-server-php", | ||||
| @@ -62,6 +62,53 @@ | ||||
|             ], | ||||
|             "time": "2017-01-06T23:20:00+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "ezyang/htmlpurifier", | ||||
|             "version": "v4.9.2", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/ezyang/htmlpurifier.git", | ||||
|                 "reference": "6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4", | ||||
|                 "reference": "6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
|                 "php": ">=5.2" | ||||
|             }, | ||||
|             "require-dev": { | ||||
|                 "simpletest/simpletest": "^1.1" | ||||
|             }, | ||||
|             "type": "library", | ||||
|             "autoload": { | ||||
|                 "psr-0": { | ||||
|                     "HTMLPurifier": "library/" | ||||
|                 }, | ||||
|                 "files": [ | ||||
|                     "library/HTMLPurifier.composer.php" | ||||
|                 ] | ||||
|             }, | ||||
|             "notification-url": "https://packagist.org/downloads/", | ||||
|             "license": [ | ||||
|                 "LGPL" | ||||
|             ], | ||||
|             "authors": [ | ||||
|                 { | ||||
|                     "name": "Edward Z. Yang", | ||||
|                     "email": "admin@htmlpurifier.org", | ||||
|                     "homepage": "http://ezyang.com" | ||||
|                 } | ||||
|             ], | ||||
|             "description": "Standards compliant HTML filter written in PHP", | ||||
|             "homepage": "http://htmlpurifier.org/", | ||||
|             "keywords": [ | ||||
|                 "html" | ||||
|             ], | ||||
|             "time": "2017-03-13T06:30:53+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "michelf/php-markdown", | ||||
|             "version": "1.7.0", | ||||
|   | ||||
| @@ -122,13 +122,23 @@ function z_input_filter($channel_id,$s,$type = 'text/bbcode') { | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * @brief Use HTMLPurifier to get standards compliant HTML. | ||||
|  * | ||||
|  * Use the <a href="http://htmlpurifier.org/" target="_blank">HTMLPurifier</a> | ||||
|  * library to get filtered and standards compliant HTML. | ||||
|  * | ||||
|  * @see HTMLPurifier | ||||
|  * | ||||
|  * @param string $s raw HTML | ||||
|  * @param boolean $allow_position allow CSS position | ||||
|  * @return string standards compliant filtered HTML | ||||
|  */ | ||||
| function purify_html($s, $allow_position = false) { | ||||
| 	require_once('library/HTMLPurifier.auto.php'); | ||||
| 	require_once('include/html2bbcode.php'); | ||||
|  | ||||
| /** | ||||
|  * @FIXME this function has html output, not bbcode - so safely purify these | ||||
|  * require_once('include/html2bbcode.php'); | ||||
|  * $s = html2bb_video($s); | ||||
|  * $s = oembed_html2bbcode($s); | ||||
|  */ | ||||
| @@ -137,6 +147,15 @@ function purify_html($s, $allow_position = false) { | ||||
| 	$config->set('Cache.DefinitionImpl', null); | ||||
| 	$config->set('Attr.EnableID', true); | ||||
|  | ||||
| 	// If enabled, target=blank attributes are added to all links. | ||||
| 	//$config->set('HTML.TargetBlank', true); | ||||
| 	//$config->set('Attr.AllowedFrameTargets', ['_blank', '_self', '_parent', '_top']); | ||||
| 	// restore old behavior of HTMLPurifier < 4.8, only used when targets allowed at all | ||||
| 	// do not add rel="noreferrer" to all links with target attributes | ||||
| 	//$config->set('HTML.TargetNoreferrer', false); | ||||
| 	// do not add noopener rel attributes to links which have a target attribute associated with them | ||||
| 	//$config->set('HTML.TargetNoopener', false); | ||||
|  | ||||
| 	//Allow some custom data- attributes used by built-in libs. | ||||
| 	//In this way members which do not have allowcode set can still use the built-in js libs in webpages to some extent. | ||||
|  | ||||
| @@ -274,7 +293,6 @@ function purify_html($s, $allow_position = false) { | ||||
| 			new HTMLPurifier_AttrDef_CSS_Length(), | ||||
| 			new HTMLPurifier_AttrDef_CSS_Percentage() | ||||
| 		)); | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	$purifier = new HTMLPurifier($config); | ||||
|   | ||||
| @@ -1,4 +0,0 @@ | ||||
| <?php | ||||
| if (!defined('HTMLPURIFIER_PREFIX')) { | ||||
|     define('HTMLPURIFIER_PREFIX', __DIR__); | ||||
| } | ||||
| @@ -1,105 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  * Validates Color as defined by CSS. | ||||
|  */ | ||||
| class HTMLPurifier_AttrDef_CSS_Color extends HTMLPurifier_AttrDef | ||||
| { | ||||
|  | ||||
|     /** | ||||
|      * @param string $color | ||||
|      * @param HTMLPurifier_Config $config | ||||
|      * @param HTMLPurifier_Context $context | ||||
|      * @return bool|string | ||||
|      */ | ||||
|     public function validate($color, $config, $context) | ||||
|     { | ||||
|         static $colors = null; | ||||
|         if ($colors === null) { | ||||
|             $colors = $config->get('Core.ColorKeywords'); | ||||
|         } | ||||
|  | ||||
|         $color = trim($color); | ||||
|         if ($color === '') { | ||||
|             return false; | ||||
|         } | ||||
|  | ||||
|         $lower = strtolower($color); | ||||
|         if (isset($colors[$lower])) { | ||||
|             return $colors[$lower]; | ||||
|         } | ||||
|  | ||||
|         if (strpos($color, 'rgb(') !== false) { | ||||
|             // rgb literal handling | ||||
|             $length = strlen($color); | ||||
|             if (strpos($color, ')') !== $length - 1) { | ||||
|                 return false; | ||||
|             } | ||||
|             $triad = substr($color, 4, $length - 4 - 1); | ||||
|             $parts = explode(',', $triad); | ||||
|             if (count($parts) !== 3) { | ||||
|                 return false; | ||||
|             } | ||||
|             $type = false; // to ensure that they're all the same type | ||||
|             $new_parts = array(); | ||||
|             foreach ($parts as $part) { | ||||
|                 $part = trim($part); | ||||
|                 if ($part === '') { | ||||
|                     return false; | ||||
|                 } | ||||
|                 $length = strlen($part); | ||||
|                 if ($part[$length - 1] === '%') { | ||||
|                     // handle percents | ||||
|                     if (!$type) { | ||||
|                         $type = 'percentage'; | ||||
|                     } elseif ($type !== 'percentage') { | ||||
|                         return false; | ||||
|                     } | ||||
|                     $num = (float)substr($part, 0, $length - 1); | ||||
|                     if ($num < 0) { | ||||
|                         $num = 0; | ||||
|                     } | ||||
|                     if ($num > 100) { | ||||
|                         $num = 100; | ||||
|                     } | ||||
|                     $new_parts[] = "$num%"; | ||||
|                 } else { | ||||
|                     // handle integers | ||||
|                     if (!$type) { | ||||
|                         $type = 'integer'; | ||||
|                     } elseif ($type !== 'integer') { | ||||
|                         return false; | ||||
|                     } | ||||
|                     $num = (int)$part; | ||||
|                     if ($num < 0) { | ||||
|                         $num = 0; | ||||
|                     } | ||||
|                     if ($num > 255) { | ||||
|                         $num = 255; | ||||
|                     } | ||||
|                     $new_parts[] = (string)$num; | ||||
|                 } | ||||
|             } | ||||
|             $new_triad = implode(',', $new_parts); | ||||
|             $color = "rgb($new_triad)"; | ||||
|         } else { | ||||
|             // hexadecimal handling | ||||
|             if ($color[0] === '#') { | ||||
|                 $hex = substr($color, 1); | ||||
|             } else { | ||||
|                 $hex = $color; | ||||
|                 $color = '#' . $color; | ||||
|             } | ||||
|             $length = strlen($hex); | ||||
|             if ($length !== 3 && $length !== 6) { | ||||
|                 return false; | ||||
|             } | ||||
|             if (!ctype_xdigit($hex)) { | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
|         return $color; | ||||
|     } | ||||
| } | ||||
|  | ||||
| // vim: et sw=4 sts=4 | ||||
										
											Binary file not shown.
										
									
								
							| @@ -1,153 +0,0 @@ | ||||
| <?php | ||||
|  | ||||
| // if want to implement error collecting here, we'll need to use some sort | ||||
| // of global data (probably trigger_error) because it's impossible to pass | ||||
| // $config or $context to the callback functions. | ||||
|  | ||||
| /** | ||||
|  * Handles referencing and derefencing character entities | ||||
|  */ | ||||
| class HTMLPurifier_EntityParser | ||||
| { | ||||
|  | ||||
|     /** | ||||
|      * Reference to entity lookup table. | ||||
|      * @type HTMLPurifier_EntityLookup | ||||
|      */ | ||||
|     protected $_entity_lookup; | ||||
|  | ||||
|     /** | ||||
|      * Callback regex string for parsing entities. | ||||
|      * @type string | ||||
|      */ | ||||
|     protected $_substituteEntitiesRegex = | ||||
|         '/&(?:[#]x([a-fA-F0-9]+)|[#]0*(\d+)|([A-Za-z_:][A-Za-z0-9.\-_:]*));?/'; | ||||
|         //     1. hex             2. dec      3. string (XML style) | ||||
|  | ||||
|     /** | ||||
|      * Decimal to parsed string conversion table for special entities. | ||||
|      * @type array | ||||
|      */ | ||||
|     protected $_special_dec2str = | ||||
|             array( | ||||
|                     34 => '"', | ||||
|                     38 => '&', | ||||
|                     39 => "'", | ||||
|                     60 => '<', | ||||
|                     62 => '>' | ||||
|             ); | ||||
|  | ||||
|     /** | ||||
|      * Stripped entity names to decimal conversion table for special entities. | ||||
|      * @type array | ||||
|      */ | ||||
|     protected $_special_ent2dec = | ||||
|             array( | ||||
|                     'quot' => 34, | ||||
|                     'amp'  => 38, | ||||
|                     'lt'   => 60, | ||||
|                     'gt'   => 62 | ||||
|             ); | ||||
|  | ||||
|     /** | ||||
|      * Substitutes non-special entities with their parsed equivalents. Since | ||||
|      * running this whenever you have parsed character is t3h 5uck, we run | ||||
|      * it before everything else. | ||||
|      * | ||||
|      * @param string $string String to have non-special entities parsed. | ||||
|      * @return string Parsed string. | ||||
|      */ | ||||
|     public function substituteNonSpecialEntities($string) | ||||
|     { | ||||
|         // it will try to detect missing semicolons, but don't rely on it | ||||
|         return preg_replace_callback( | ||||
|             $this->_substituteEntitiesRegex, | ||||
|             array($this, 'nonSpecialEntityCallback'), | ||||
|             $string | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Callback function for substituteNonSpecialEntities() that does the work. | ||||
|      * | ||||
|      * @param array $matches  PCRE matches array, with 0 the entire match, and | ||||
|      *                  either index 1, 2 or 3 set with a hex value, dec value, | ||||
|      *                  or string (respectively). | ||||
|      * @return string Replacement string. | ||||
|      */ | ||||
|  | ||||
|     protected function nonSpecialEntityCallback($matches) | ||||
|     { | ||||
|         // replaces all but big five | ||||
|         $entity = $matches[0]; | ||||
|         $is_num = (@$matches[0][1] === '#'); | ||||
|         if ($is_num) { | ||||
|             $is_hex = (@$entity[2] === 'x'); | ||||
|             $code = $is_hex ? hexdec($matches[1]) : (int) $matches[2]; | ||||
|             // abort for special characters | ||||
|             if (isset($this->_special_dec2str[$code])) { | ||||
|                 return $entity; | ||||
|             } | ||||
|             return HTMLPurifier_Encoder::unichr($code); | ||||
|         } else { | ||||
|             if (isset($this->_special_ent2dec[$matches[3]])) { | ||||
|                 return $entity; | ||||
|             } | ||||
|             if (!$this->_entity_lookup) { | ||||
|                 $this->_entity_lookup = HTMLPurifier_EntityLookup::instance(); | ||||
|             } | ||||
|             if (isset($this->_entity_lookup->table[$matches[3]])) { | ||||
|                 return $this->_entity_lookup->table[$matches[3]]; | ||||
|             } else { | ||||
|                 return $entity; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Substitutes only special entities with their parsed equivalents. | ||||
|      * | ||||
|      * @notice We try to avoid calling this function because otherwise, it | ||||
|      * would have to be called a lot (for every parsed section). | ||||
|      * | ||||
|      * @param string $string String to have non-special entities parsed. | ||||
|      * @return string Parsed string. | ||||
|      */ | ||||
|     public function substituteSpecialEntities($string) | ||||
|     { | ||||
|         return preg_replace_callback( | ||||
|             $this->_substituteEntitiesRegex, | ||||
|             array($this, 'specialEntityCallback'), | ||||
|             $string | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Callback function for substituteSpecialEntities() that does the work. | ||||
|      * | ||||
|      * This callback has same syntax as nonSpecialEntityCallback(). | ||||
|      * | ||||
|      * @param array $matches  PCRE-style matches array, with 0 the entire match, and | ||||
|      *                  either index 1, 2 or 3 set with a hex value, dec value, | ||||
|      *                  or string (respectively). | ||||
|      * @return string Replacement string. | ||||
|      */ | ||||
|     protected function specialEntityCallback($matches) | ||||
|     { | ||||
|         $entity = $matches[0]; | ||||
|         $is_num = (@$matches[0][1] === '#'); | ||||
|         if ($is_num) { | ||||
|             $is_hex = (@$entity[2] === 'x'); | ||||
|             $int = $is_hex ? hexdec($matches[1]) : (int) $matches[2]; | ||||
|             return isset($this->_special_dec2str[$int]) ? | ||||
|                 $this->_special_dec2str[$int] : | ||||
|                 $entity; | ||||
|         } else { | ||||
|             return isset($this->_special_ent2dec[$matches[3]]) ? | ||||
|                 $this->_special_ent2dec[$matches[3]] : | ||||
|                 $entity; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| // vim: et sw=4 sts=4 | ||||
| @@ -36,6 +36,10 @@ empty line above'; | ||||
| 		$this->assertEquals($html5elements, purify_html($html5elements)); | ||||
| 		$this->assertEquals('<button>button label</button>', purify_html('<button>button label</button>')); | ||||
|  | ||||
| 		// unsupported HTML5 elements | ||||
| 		$this->assertEquals('Your HTML parser does not support HTML5 video.', purify_html('<video controls><source src="movie.ogg" type="video/ogg">Your HTML parser does not support HTML5 video.</video>')); | ||||
| 		$this->assertEquals('Your HTML parser does not support HTML5 audio.', purify_html('<audio controls><source src="movie.ogg" "type="audio/ogg">Your HTML parser does not support HTML5 audio.</audio>')); | ||||
|  | ||||
| 		// preserve f6 and bootstrap additional data attributes from our own configuration | ||||
| 		$this->assertEquals('<div data-title="title">text</div>', purify_html('<div data-title="title">text</div>')); | ||||
| 		$this->assertEquals('<ul data-accordion-menu=""><li>item1</li></ul>', purify_html('<ul data-accordion-menu><li>item1</li></ul>')); | ||||
| @@ -51,6 +55,8 @@ empty line above'; | ||||
| 		$this->assertEquals('<a href="#">link with rel="nofollow"</a>', purify_html('<a href="#" rel="nofollow">link with rel="nofollow"</a>')); | ||||
| 		$this->assertEquals('a b', purify_html('a b')); | ||||
| 		$this->assertEquals('ä ä € €', purify_html('ä ä € €')); | ||||
| 		$this->assertEquals('<img src="picture.png" alt="text" />', purify_html('<img src="picture.png" alt="text">')); | ||||
| 		$this->assertEquals('', purify_html('<iframe width="560" height="315" src="https://www.youtube.com/embed/kiNGx5oL7hk" frameborder="0" allowfullscreen></iframe>')); | ||||
| 	} | ||||
|  | ||||
| 	public function testPurifyHTML_js() { | ||||
|   | ||||
							
								
								
									
										234
									
								
								vendor/composer/autoload_classmap.php
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										234
									
								
								vendor/composer/autoload_classmap.php
									
									
									
									
										vendored
									
									
								
							| @@ -6,6 +6,240 @@ $vendorDir = dirname(dirname(__FILE__)); | ||||
| $baseDir = dirname($vendorDir); | ||||
|  | ||||
| return array( | ||||
|     'HTMLPurifier' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.php', | ||||
|     'HTMLPurifier_Arborize' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Arborize.php', | ||||
|     'HTMLPurifier_AttrCollections' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrCollections.php', | ||||
|     'HTMLPurifier_AttrDef' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef.php', | ||||
|     'HTMLPurifier_AttrDef_CSS' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_AlphaValue' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_Background' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Background.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_BackgroundPosition' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_Border' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Border.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_Color' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Color.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_Composite' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Composite.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_DenyElementDecorator' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_Filter' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Filter.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_Font' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Font.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_FontFamily' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/FontFamily.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_Ident' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Ident.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_ImportantDecorator' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_Length' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Length.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_ListStyle' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/ListStyle.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_Multiple' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Multiple.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_Number' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Number.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_Percentage' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Percentage.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_TextDecoration' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php', | ||||
|     'HTMLPurifier_AttrDef_CSS_URI' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/URI.php', | ||||
|     'HTMLPurifier_AttrDef_Clone' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Clone.php', | ||||
|     'HTMLPurifier_AttrDef_Enum' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Enum.php', | ||||
|     'HTMLPurifier_AttrDef_HTML_Bool' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Bool.php', | ||||
|     'HTMLPurifier_AttrDef_HTML_Class' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Class.php', | ||||
|     'HTMLPurifier_AttrDef_HTML_Color' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Color.php', | ||||
|     'HTMLPurifier_AttrDef_HTML_FrameTarget' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php', | ||||
|     'HTMLPurifier_AttrDef_HTML_ID' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/ID.php', | ||||
|     'HTMLPurifier_AttrDef_HTML_Length' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Length.php', | ||||
|     'HTMLPurifier_AttrDef_HTML_LinkTypes' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php', | ||||
|     'HTMLPurifier_AttrDef_HTML_MultiLength' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/MultiLength.php', | ||||
|     'HTMLPurifier_AttrDef_HTML_Nmtokens' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Nmtokens.php', | ||||
|     'HTMLPurifier_AttrDef_HTML_Pixels' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Pixels.php', | ||||
|     'HTMLPurifier_AttrDef_Integer' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Integer.php', | ||||
|     'HTMLPurifier_AttrDef_Lang' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Lang.php', | ||||
|     'HTMLPurifier_AttrDef_Switch' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Switch.php', | ||||
|     'HTMLPurifier_AttrDef_Text' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Text.php', | ||||
|     'HTMLPurifier_AttrDef_URI' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI.php', | ||||
|     'HTMLPurifier_AttrDef_URI_Email' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Email.php', | ||||
|     'HTMLPurifier_AttrDef_URI_Email_SimpleCheck' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php', | ||||
|     'HTMLPurifier_AttrDef_URI_Host' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php', | ||||
|     'HTMLPurifier_AttrDef_URI_IPv4' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/IPv4.php', | ||||
|     'HTMLPurifier_AttrDef_URI_IPv6' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/IPv6.php', | ||||
|     'HTMLPurifier_AttrTransform' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform.php', | ||||
|     'HTMLPurifier_AttrTransform_Background' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Background.php', | ||||
|     'HTMLPurifier_AttrTransform_BdoDir' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BdoDir.php', | ||||
|     'HTMLPurifier_AttrTransform_BgColor' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BgColor.php', | ||||
|     'HTMLPurifier_AttrTransform_BoolToCSS' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BoolToCSS.php', | ||||
|     'HTMLPurifier_AttrTransform_Border' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Border.php', | ||||
|     'HTMLPurifier_AttrTransform_EnumToCSS' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/EnumToCSS.php', | ||||
|     'HTMLPurifier_AttrTransform_ImgRequired' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ImgRequired.php', | ||||
|     'HTMLPurifier_AttrTransform_ImgSpace' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ImgSpace.php', | ||||
|     'HTMLPurifier_AttrTransform_Input' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Input.php', | ||||
|     'HTMLPurifier_AttrTransform_Lang' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Lang.php', | ||||
|     'HTMLPurifier_AttrTransform_Length' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Length.php', | ||||
|     'HTMLPurifier_AttrTransform_Name' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Name.php', | ||||
|     'HTMLPurifier_AttrTransform_NameSync' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/NameSync.php', | ||||
|     'HTMLPurifier_AttrTransform_Nofollow' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Nofollow.php', | ||||
|     'HTMLPurifier_AttrTransform_SafeEmbed' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/SafeEmbed.php', | ||||
|     'HTMLPurifier_AttrTransform_SafeObject' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/SafeObject.php', | ||||
|     'HTMLPurifier_AttrTransform_SafeParam' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/SafeParam.php', | ||||
|     'HTMLPurifier_AttrTransform_ScriptRequired' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ScriptRequired.php', | ||||
|     'HTMLPurifier_AttrTransform_TargetBlank' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetBlank.php', | ||||
|     'HTMLPurifier_AttrTransform_TargetNoopener' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetNoopener.php', | ||||
|     'HTMLPurifier_AttrTransform_TargetNoreferrer' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetNoreferrer.php', | ||||
|     'HTMLPurifier_AttrTransform_Textarea' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Textarea.php', | ||||
|     'HTMLPurifier_AttrTypes' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTypes.php', | ||||
|     'HTMLPurifier_AttrValidator' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrValidator.php', | ||||
|     'HTMLPurifier_Bootstrap' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Bootstrap.php', | ||||
|     'HTMLPurifier_CSSDefinition' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php', | ||||
|     'HTMLPurifier_ChildDef' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef.php', | ||||
|     'HTMLPurifier_ChildDef_Chameleon' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Chameleon.php', | ||||
|     'HTMLPurifier_ChildDef_Custom' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Custom.php', | ||||
|     'HTMLPurifier_ChildDef_Empty' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Empty.php', | ||||
|     'HTMLPurifier_ChildDef_List' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/List.php', | ||||
|     'HTMLPurifier_ChildDef_Optional' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Optional.php', | ||||
|     'HTMLPurifier_ChildDef_Required' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Required.php', | ||||
|     'HTMLPurifier_ChildDef_StrictBlockquote' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/StrictBlockquote.php', | ||||
|     'HTMLPurifier_ChildDef_Table' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Table.php', | ||||
|     'HTMLPurifier_Config' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Config.php', | ||||
|     'HTMLPurifier_ConfigSchema' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema.php', | ||||
|     'HTMLPurifier_ConfigSchema_Builder_ConfigSchema' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php', | ||||
|     'HTMLPurifier_ConfigSchema_Builder_Xml' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Builder/Xml.php', | ||||
|     'HTMLPurifier_ConfigSchema_Exception' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Exception.php', | ||||
|     'HTMLPurifier_ConfigSchema_Interchange' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange.php', | ||||
|     'HTMLPurifier_ConfigSchema_InterchangeBuilder' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php', | ||||
|     'HTMLPurifier_ConfigSchema_Interchange_Directive' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php', | ||||
|     'HTMLPurifier_ConfigSchema_Interchange_Id' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange/Id.php', | ||||
|     'HTMLPurifier_ConfigSchema_Validator' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Validator.php', | ||||
|     'HTMLPurifier_ConfigSchema_ValidatorAtom' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php', | ||||
|     'HTMLPurifier_ContentSets' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ContentSets.php', | ||||
|     'HTMLPurifier_Context' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Context.php', | ||||
|     'HTMLPurifier_Definition' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Definition.php', | ||||
|     'HTMLPurifier_DefinitionCache' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache.php', | ||||
|     'HTMLPurifier_DefinitionCacheFactory' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCacheFactory.php', | ||||
|     'HTMLPurifier_DefinitionCache_Decorator' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator.php', | ||||
|     'HTMLPurifier_DefinitionCache_Decorator_Cleanup' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php', | ||||
|     'HTMLPurifier_DefinitionCache_Decorator_Memory' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Memory.php', | ||||
|     'HTMLPurifier_DefinitionCache_Null' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Null.php', | ||||
|     'HTMLPurifier_DefinitionCache_Serializer' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer.php', | ||||
|     'HTMLPurifier_Doctype' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Doctype.php', | ||||
|     'HTMLPurifier_DoctypeRegistry' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/DoctypeRegistry.php', | ||||
|     'HTMLPurifier_ElementDef' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ElementDef.php', | ||||
|     'HTMLPurifier_Encoder' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Encoder.php', | ||||
|     'HTMLPurifier_EntityLookup' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/EntityLookup.php', | ||||
|     'HTMLPurifier_EntityParser' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php', | ||||
|     'HTMLPurifier_ErrorCollector' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ErrorCollector.php', | ||||
|     'HTMLPurifier_ErrorStruct' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/ErrorStruct.php', | ||||
|     'HTMLPurifier_Exception' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Exception.php', | ||||
|     'HTMLPurifier_Filter' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Filter.php', | ||||
|     'HTMLPurifier_Filter_ExtractStyleBlocks' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php', | ||||
|     'HTMLPurifier_Filter_YouTube' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Filter/YouTube.php', | ||||
|     'HTMLPurifier_Generator' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Generator.php', | ||||
|     'HTMLPurifier_HTMLDefinition' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLDefinition.php', | ||||
|     'HTMLPurifier_HTMLModule' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule.php', | ||||
|     'HTMLPurifier_HTMLModuleManager' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModuleManager.php', | ||||
|     'HTMLPurifier_HTMLModule_Bdo' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Bdo.php', | ||||
|     'HTMLPurifier_HTMLModule_CommonAttributes' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/CommonAttributes.php', | ||||
|     'HTMLPurifier_HTMLModule_Edit' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Edit.php', | ||||
|     'HTMLPurifier_HTMLModule_Forms' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Forms.php', | ||||
|     'HTMLPurifier_HTMLModule_Hypertext' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Hypertext.php', | ||||
|     'HTMLPurifier_HTMLModule_Iframe' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php', | ||||
|     'HTMLPurifier_HTMLModule_Image' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Image.php', | ||||
|     'HTMLPurifier_HTMLModule_Legacy' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Legacy.php', | ||||
|     'HTMLPurifier_HTMLModule_List' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/List.php', | ||||
|     'HTMLPurifier_HTMLModule_Name' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Name.php', | ||||
|     'HTMLPurifier_HTMLModule_Nofollow' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Nofollow.php', | ||||
|     'HTMLPurifier_HTMLModule_NonXMLCommonAttributes' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php', | ||||
|     'HTMLPurifier_HTMLModule_Object' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Object.php', | ||||
|     'HTMLPurifier_HTMLModule_Presentation' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Presentation.php', | ||||
|     'HTMLPurifier_HTMLModule_Proprietary' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Proprietary.php', | ||||
|     'HTMLPurifier_HTMLModule_Ruby' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Ruby.php', | ||||
|     'HTMLPurifier_HTMLModule_SafeEmbed' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeEmbed.php', | ||||
|     'HTMLPurifier_HTMLModule_SafeObject' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeObject.php', | ||||
|     'HTMLPurifier_HTMLModule_SafeScripting' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeScripting.php', | ||||
|     'HTMLPurifier_HTMLModule_Scripting' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Scripting.php', | ||||
|     'HTMLPurifier_HTMLModule_StyleAttribute' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/StyleAttribute.php', | ||||
|     'HTMLPurifier_HTMLModule_Tables' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tables.php', | ||||
|     'HTMLPurifier_HTMLModule_Target' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Target.php', | ||||
|     'HTMLPurifier_HTMLModule_TargetBlank' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/TargetBlank.php', | ||||
|     'HTMLPurifier_HTMLModule_TargetNoopener' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/TargetNoopener.php', | ||||
|     'HTMLPurifier_HTMLModule_TargetNoreferrer' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/TargetNoreferrer.php', | ||||
|     'HTMLPurifier_HTMLModule_Text' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Text.php', | ||||
|     'HTMLPurifier_HTMLModule_Tidy' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy.php', | ||||
|     'HTMLPurifier_HTMLModule_Tidy_Name' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/Name.php', | ||||
|     'HTMLPurifier_HTMLModule_Tidy_Proprietary' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/Proprietary.php', | ||||
|     'HTMLPurifier_HTMLModule_Tidy_Strict' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/Strict.php', | ||||
|     'HTMLPurifier_HTMLModule_Tidy_Transitional' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/Transitional.php', | ||||
|     'HTMLPurifier_HTMLModule_Tidy_XHTML' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/XHTML.php', | ||||
|     'HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php', | ||||
|     'HTMLPurifier_HTMLModule_XMLCommonAttributes' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/XMLCommonAttributes.php', | ||||
|     'HTMLPurifier_IDAccumulator' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/IDAccumulator.php', | ||||
|     'HTMLPurifier_Injector' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Injector.php', | ||||
|     'HTMLPurifier_Injector_AutoParagraph' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Injector/AutoParagraph.php', | ||||
|     'HTMLPurifier_Injector_DisplayLinkURI' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Injector/DisplayLinkURI.php', | ||||
|     'HTMLPurifier_Injector_Linkify' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Injector/Linkify.php', | ||||
|     'HTMLPurifier_Injector_PurifierLinkify' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Injector/PurifierLinkify.php', | ||||
|     'HTMLPurifier_Injector_RemoveEmpty' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Injector/RemoveEmpty.php', | ||||
|     'HTMLPurifier_Injector_RemoveSpansWithoutAttributes' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php', | ||||
|     'HTMLPurifier_Injector_SafeObject' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Injector/SafeObject.php', | ||||
|     'HTMLPurifier_Language' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Language.php', | ||||
|     'HTMLPurifier_LanguageFactory' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/LanguageFactory.php', | ||||
|     'HTMLPurifier_Language_en_x_test' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Language/classes/en-x-test.php', | ||||
|     'HTMLPurifier_Length' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Length.php', | ||||
|     'HTMLPurifier_Lexer' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php', | ||||
|     'HTMLPurifier_Lexer_DOMLex' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php', | ||||
|     'HTMLPurifier_Lexer_DirectLex' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DirectLex.php', | ||||
|     'HTMLPurifier_Lexer_PH5P' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/PH5P.php', | ||||
|     'HTMLPurifier_Node' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Node.php', | ||||
|     'HTMLPurifier_Node_Comment' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Node/Comment.php', | ||||
|     'HTMLPurifier_Node_Element' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Node/Element.php', | ||||
|     'HTMLPurifier_Node_Text' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Node/Text.php', | ||||
|     'HTMLPurifier_PercentEncoder' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/PercentEncoder.php', | ||||
|     'HTMLPurifier_Printer' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer.php', | ||||
|     'HTMLPurifier_Printer_CSSDefinition' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/CSSDefinition.php', | ||||
|     'HTMLPurifier_Printer_ConfigForm' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php', | ||||
|     'HTMLPurifier_Printer_ConfigForm_NullDecorator' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php', | ||||
|     'HTMLPurifier_Printer_ConfigForm_bool' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php', | ||||
|     'HTMLPurifier_Printer_ConfigForm_default' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php', | ||||
|     'HTMLPurifier_Printer_HTMLDefinition' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/HTMLDefinition.php', | ||||
|     'HTMLPurifier_PropertyList' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/PropertyList.php', | ||||
|     'HTMLPurifier_PropertyListIterator' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/PropertyListIterator.php', | ||||
|     'HTMLPurifier_Queue' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Queue.php', | ||||
|     'HTMLPurifier_Strategy' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Strategy.php', | ||||
|     'HTMLPurifier_Strategy_Composite' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/Composite.php', | ||||
|     'HTMLPurifier_Strategy_Core' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/Core.php', | ||||
|     'HTMLPurifier_Strategy_FixNesting' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/FixNesting.php', | ||||
|     'HTMLPurifier_Strategy_MakeWellFormed' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/MakeWellFormed.php', | ||||
|     'HTMLPurifier_Strategy_RemoveForeignElements' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/RemoveForeignElements.php', | ||||
|     'HTMLPurifier_Strategy_ValidateAttributes' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/ValidateAttributes.php', | ||||
|     'HTMLPurifier_StringHash' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/StringHash.php', | ||||
|     'HTMLPurifier_StringHashParser' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/StringHashParser.php', | ||||
|     'HTMLPurifier_TagTransform' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/TagTransform.php', | ||||
|     'HTMLPurifier_TagTransform_Font' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/TagTransform/Font.php', | ||||
|     'HTMLPurifier_TagTransform_Simple' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/TagTransform/Simple.php', | ||||
|     'HTMLPurifier_Token' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Token.php', | ||||
|     'HTMLPurifier_TokenFactory' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/TokenFactory.php', | ||||
|     'HTMLPurifier_Token_Comment' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Token/Comment.php', | ||||
|     'HTMLPurifier_Token_Empty' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Token/Empty.php', | ||||
|     'HTMLPurifier_Token_End' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Token/End.php', | ||||
|     'HTMLPurifier_Token_Start' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Token/Start.php', | ||||
|     'HTMLPurifier_Token_Tag' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Token/Tag.php', | ||||
|     'HTMLPurifier_Token_Text' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Token/Text.php', | ||||
|     'HTMLPurifier_URI' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URI.php', | ||||
|     'HTMLPurifier_URIDefinition' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIDefinition.php', | ||||
|     'HTMLPurifier_URIFilter' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter.php', | ||||
|     'HTMLPurifier_URIFilter_DisableExternal' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/DisableExternal.php', | ||||
|     'HTMLPurifier_URIFilter_DisableExternalResources' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/DisableExternalResources.php', | ||||
|     'HTMLPurifier_URIFilter_DisableResources' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/DisableResources.php', | ||||
|     'HTMLPurifier_URIFilter_HostBlacklist' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/HostBlacklist.php', | ||||
|     'HTMLPurifier_URIFilter_MakeAbsolute' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/MakeAbsolute.php', | ||||
|     'HTMLPurifier_URIFilter_Munge' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/Munge.php', | ||||
|     'HTMLPurifier_URIFilter_SafeIframe' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/SafeIframe.php', | ||||
|     'HTMLPurifier_URIParser' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIParser.php', | ||||
|     'HTMLPurifier_URIScheme' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme.php', | ||||
|     'HTMLPurifier_URISchemeRegistry' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URISchemeRegistry.php', | ||||
|     'HTMLPurifier_URIScheme_data' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/data.php', | ||||
|     'HTMLPurifier_URIScheme_file' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/file.php', | ||||
|     'HTMLPurifier_URIScheme_ftp' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/ftp.php', | ||||
|     'HTMLPurifier_URIScheme_http' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/http.php', | ||||
|     'HTMLPurifier_URIScheme_https' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/https.php', | ||||
|     'HTMLPurifier_URIScheme_mailto' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/mailto.php', | ||||
|     'HTMLPurifier_URIScheme_news' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/news.php', | ||||
|     'HTMLPurifier_URIScheme_nntp' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/nntp.php', | ||||
|     'HTMLPurifier_URIScheme_tel' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/tel.php', | ||||
|     'HTMLPurifier_UnitConverter' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/UnitConverter.php', | ||||
|     'HTMLPurifier_VarParser' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/VarParser.php', | ||||
|     'HTMLPurifier_VarParserException' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/VarParserException.php', | ||||
|     'HTMLPurifier_VarParser_Flexible' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/VarParser/Flexible.php', | ||||
|     'HTMLPurifier_VarParser_Native' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/VarParser/Native.php', | ||||
|     'HTMLPurifier_Zipper' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier/Zipper.php', | ||||
|     'Hubzilla\\Import\\Import' => $baseDir . '/include/Import/Importer.php', | ||||
|     'Markdownify\\Converter' => $vendorDir . '/pixel418/markdownify/src/Converter.php', | ||||
|     'Markdownify\\ConverterExtra' => $vendorDir . '/pixel418/markdownify/src/ConverterExtra.php', | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/composer/autoload_files.php
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/composer/autoload_files.php
									
									
									
									
										vendored
									
									
								
							| @@ -13,4 +13,5 @@ return array( | ||||
|     '3569eecfeed3bcf0bad3c998a494ecb8' => $vendorDir . '/sabre/xml/lib/Deserializer/functions.php', | ||||
|     '93aa591bc4ca510c520999e34229ee79' => $vendorDir . '/sabre/xml/lib/Serializer/functions.php', | ||||
|     'ebdb698ed4152ae445614b69b5e4bb6a' => $vendorDir . '/sabre/http/lib/functions.php', | ||||
|     '2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php', | ||||
| ); | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/composer/autoload_namespaces.php
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/composer/autoload_namespaces.php
									
									
									
									
										vendored
									
									
								
							| @@ -8,4 +8,5 @@ $baseDir = dirname($vendorDir); | ||||
| return array( | ||||
|     'OAuth2' => array($vendorDir . '/bshaffer/oauth2-server-php/src'), | ||||
|     'Michelf' => array($vendorDir . '/michelf/php-markdown'), | ||||
|     'HTMLPurifier' => array($vendorDir . '/ezyang/htmlpurifier/library'), | ||||
| ); | ||||
|   | ||||
							
								
								
									
										242
									
								
								vendor/composer/autoload_static.php
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										242
									
								
								vendor/composer/autoload_static.php
									
									
									
									
										vendored
									
									
								
							| @@ -14,6 +14,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d | ||||
|         '3569eecfeed3bcf0bad3c998a494ecb8' => __DIR__ . '/..' . '/sabre/xml/lib/Deserializer/functions.php', | ||||
|         '93aa591bc4ca510c520999e34229ee79' => __DIR__ . '/..' . '/sabre/xml/lib/Serializer/functions.php', | ||||
|         'ebdb698ed4152ae445614b69b5e4bb6a' => __DIR__ . '/..' . '/sabre/http/lib/functions.php', | ||||
|         '2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php', | ||||
|     ); | ||||
|  | ||||
|     public static $prefixLengthsPsr4 = array ( | ||||
| @@ -125,9 +126,250 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d | ||||
|                 0 => __DIR__ . '/..' . '/michelf/php-markdown', | ||||
|             ), | ||||
|         ), | ||||
|         'H' =>  | ||||
|         array ( | ||||
|             'HTMLPurifier' =>  | ||||
|             array ( | ||||
|                 0 => __DIR__ . '/..' . '/ezyang/htmlpurifier/library', | ||||
|             ), | ||||
|         ), | ||||
|     ); | ||||
|  | ||||
|     public static $classMap = array ( | ||||
|         'HTMLPurifier' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.php', | ||||
|         'HTMLPurifier_Arborize' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Arborize.php', | ||||
|         'HTMLPurifier_AttrCollections' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrCollections.php', | ||||
|         'HTMLPurifier_AttrDef' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef.php', | ||||
|         'HTMLPurifier_AttrDef_CSS' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_AlphaValue' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_Background' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Background.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_BackgroundPosition' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_Border' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Border.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_Color' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Color.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_Composite' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Composite.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_DenyElementDecorator' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_Filter' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Filter.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_Font' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Font.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_FontFamily' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/FontFamily.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_Ident' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Ident.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_ImportantDecorator' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/ImportantDecorator.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_Length' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Length.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_ListStyle' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/ListStyle.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_Multiple' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Multiple.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_Number' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Number.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_Percentage' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Percentage.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_TextDecoration' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php', | ||||
|         'HTMLPurifier_AttrDef_CSS_URI' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/URI.php', | ||||
|         'HTMLPurifier_AttrDef_Clone' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Clone.php', | ||||
|         'HTMLPurifier_AttrDef_Enum' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Enum.php', | ||||
|         'HTMLPurifier_AttrDef_HTML_Bool' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Bool.php', | ||||
|         'HTMLPurifier_AttrDef_HTML_Class' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Class.php', | ||||
|         'HTMLPurifier_AttrDef_HTML_Color' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Color.php', | ||||
|         'HTMLPurifier_AttrDef_HTML_FrameTarget' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php', | ||||
|         'HTMLPurifier_AttrDef_HTML_ID' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/ID.php', | ||||
|         'HTMLPurifier_AttrDef_HTML_Length' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Length.php', | ||||
|         'HTMLPurifier_AttrDef_HTML_LinkTypes' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php', | ||||
|         'HTMLPurifier_AttrDef_HTML_MultiLength' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/MultiLength.php', | ||||
|         'HTMLPurifier_AttrDef_HTML_Nmtokens' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Nmtokens.php', | ||||
|         'HTMLPurifier_AttrDef_HTML_Pixels' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Pixels.php', | ||||
|         'HTMLPurifier_AttrDef_Integer' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Integer.php', | ||||
|         'HTMLPurifier_AttrDef_Lang' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Lang.php', | ||||
|         'HTMLPurifier_AttrDef_Switch' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Switch.php', | ||||
|         'HTMLPurifier_AttrDef_Text' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Text.php', | ||||
|         'HTMLPurifier_AttrDef_URI' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI.php', | ||||
|         'HTMLPurifier_AttrDef_URI_Email' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Email.php', | ||||
|         'HTMLPurifier_AttrDef_URI_Email_SimpleCheck' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Email/SimpleCheck.php', | ||||
|         'HTMLPurifier_AttrDef_URI_Host' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php', | ||||
|         'HTMLPurifier_AttrDef_URI_IPv4' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/IPv4.php', | ||||
|         'HTMLPurifier_AttrDef_URI_IPv6' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/IPv6.php', | ||||
|         'HTMLPurifier_AttrTransform' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform.php', | ||||
|         'HTMLPurifier_AttrTransform_Background' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Background.php', | ||||
|         'HTMLPurifier_AttrTransform_BdoDir' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BdoDir.php', | ||||
|         'HTMLPurifier_AttrTransform_BgColor' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BgColor.php', | ||||
|         'HTMLPurifier_AttrTransform_BoolToCSS' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BoolToCSS.php', | ||||
|         'HTMLPurifier_AttrTransform_Border' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Border.php', | ||||
|         'HTMLPurifier_AttrTransform_EnumToCSS' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/EnumToCSS.php', | ||||
|         'HTMLPurifier_AttrTransform_ImgRequired' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ImgRequired.php', | ||||
|         'HTMLPurifier_AttrTransform_ImgSpace' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ImgSpace.php', | ||||
|         'HTMLPurifier_AttrTransform_Input' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Input.php', | ||||
|         'HTMLPurifier_AttrTransform_Lang' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Lang.php', | ||||
|         'HTMLPurifier_AttrTransform_Length' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Length.php', | ||||
|         'HTMLPurifier_AttrTransform_Name' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Name.php', | ||||
|         'HTMLPurifier_AttrTransform_NameSync' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/NameSync.php', | ||||
|         'HTMLPurifier_AttrTransform_Nofollow' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Nofollow.php', | ||||
|         'HTMLPurifier_AttrTransform_SafeEmbed' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/SafeEmbed.php', | ||||
|         'HTMLPurifier_AttrTransform_SafeObject' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/SafeObject.php', | ||||
|         'HTMLPurifier_AttrTransform_SafeParam' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/SafeParam.php', | ||||
|         'HTMLPurifier_AttrTransform_ScriptRequired' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ScriptRequired.php', | ||||
|         'HTMLPurifier_AttrTransform_TargetBlank' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetBlank.php', | ||||
|         'HTMLPurifier_AttrTransform_TargetNoopener' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetNoopener.php', | ||||
|         'HTMLPurifier_AttrTransform_TargetNoreferrer' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetNoreferrer.php', | ||||
|         'HTMLPurifier_AttrTransform_Textarea' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Textarea.php', | ||||
|         'HTMLPurifier_AttrTypes' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrTypes.php', | ||||
|         'HTMLPurifier_AttrValidator' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/AttrValidator.php', | ||||
|         'HTMLPurifier_Bootstrap' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Bootstrap.php', | ||||
|         'HTMLPurifier_CSSDefinition' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php', | ||||
|         'HTMLPurifier_ChildDef' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef.php', | ||||
|         'HTMLPurifier_ChildDef_Chameleon' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Chameleon.php', | ||||
|         'HTMLPurifier_ChildDef_Custom' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Custom.php', | ||||
|         'HTMLPurifier_ChildDef_Empty' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Empty.php', | ||||
|         'HTMLPurifier_ChildDef_List' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/List.php', | ||||
|         'HTMLPurifier_ChildDef_Optional' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Optional.php', | ||||
|         'HTMLPurifier_ChildDef_Required' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Required.php', | ||||
|         'HTMLPurifier_ChildDef_StrictBlockquote' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/StrictBlockquote.php', | ||||
|         'HTMLPurifier_ChildDef_Table' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Table.php', | ||||
|         'HTMLPurifier_Config' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Config.php', | ||||
|         'HTMLPurifier_ConfigSchema' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema.php', | ||||
|         'HTMLPurifier_ConfigSchema_Builder_ConfigSchema' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php', | ||||
|         'HTMLPurifier_ConfigSchema_Builder_Xml' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Builder/Xml.php', | ||||
|         'HTMLPurifier_ConfigSchema_Exception' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Exception.php', | ||||
|         'HTMLPurifier_ConfigSchema_Interchange' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange.php', | ||||
|         'HTMLPurifier_ConfigSchema_InterchangeBuilder' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php', | ||||
|         'HTMLPurifier_ConfigSchema_Interchange_Directive' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php', | ||||
|         'HTMLPurifier_ConfigSchema_Interchange_Id' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange/Id.php', | ||||
|         'HTMLPurifier_ConfigSchema_Validator' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Validator.php', | ||||
|         'HTMLPurifier_ConfigSchema_ValidatorAtom' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php', | ||||
|         'HTMLPurifier_ContentSets' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ContentSets.php', | ||||
|         'HTMLPurifier_Context' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Context.php', | ||||
|         'HTMLPurifier_Definition' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Definition.php', | ||||
|         'HTMLPurifier_DefinitionCache' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache.php', | ||||
|         'HTMLPurifier_DefinitionCacheFactory' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCacheFactory.php', | ||||
|         'HTMLPurifier_DefinitionCache_Decorator' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator.php', | ||||
|         'HTMLPurifier_DefinitionCache_Decorator_Cleanup' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php', | ||||
|         'HTMLPurifier_DefinitionCache_Decorator_Memory' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Memory.php', | ||||
|         'HTMLPurifier_DefinitionCache_Null' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Null.php', | ||||
|         'HTMLPurifier_DefinitionCache_Serializer' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer.php', | ||||
|         'HTMLPurifier_Doctype' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Doctype.php', | ||||
|         'HTMLPurifier_DoctypeRegistry' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/DoctypeRegistry.php', | ||||
|         'HTMLPurifier_ElementDef' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ElementDef.php', | ||||
|         'HTMLPurifier_Encoder' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Encoder.php', | ||||
|         'HTMLPurifier_EntityLookup' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/EntityLookup.php', | ||||
|         'HTMLPurifier_EntityParser' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php', | ||||
|         'HTMLPurifier_ErrorCollector' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ErrorCollector.php', | ||||
|         'HTMLPurifier_ErrorStruct' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/ErrorStruct.php', | ||||
|         'HTMLPurifier_Exception' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Exception.php', | ||||
|         'HTMLPurifier_Filter' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Filter.php', | ||||
|         'HTMLPurifier_Filter_ExtractStyleBlocks' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php', | ||||
|         'HTMLPurifier_Filter_YouTube' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Filter/YouTube.php', | ||||
|         'HTMLPurifier_Generator' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Generator.php', | ||||
|         'HTMLPurifier_HTMLDefinition' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLDefinition.php', | ||||
|         'HTMLPurifier_HTMLModule' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule.php', | ||||
|         'HTMLPurifier_HTMLModuleManager' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModuleManager.php', | ||||
|         'HTMLPurifier_HTMLModule_Bdo' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Bdo.php', | ||||
|         'HTMLPurifier_HTMLModule_CommonAttributes' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/CommonAttributes.php', | ||||
|         'HTMLPurifier_HTMLModule_Edit' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Edit.php', | ||||
|         'HTMLPurifier_HTMLModule_Forms' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Forms.php', | ||||
|         'HTMLPurifier_HTMLModule_Hypertext' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Hypertext.php', | ||||
|         'HTMLPurifier_HTMLModule_Iframe' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php', | ||||
|         'HTMLPurifier_HTMLModule_Image' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Image.php', | ||||
|         'HTMLPurifier_HTMLModule_Legacy' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Legacy.php', | ||||
|         'HTMLPurifier_HTMLModule_List' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/List.php', | ||||
|         'HTMLPurifier_HTMLModule_Name' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Name.php', | ||||
|         'HTMLPurifier_HTMLModule_Nofollow' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Nofollow.php', | ||||
|         'HTMLPurifier_HTMLModule_NonXMLCommonAttributes' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php', | ||||
|         'HTMLPurifier_HTMLModule_Object' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Object.php', | ||||
|         'HTMLPurifier_HTMLModule_Presentation' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Presentation.php', | ||||
|         'HTMLPurifier_HTMLModule_Proprietary' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Proprietary.php', | ||||
|         'HTMLPurifier_HTMLModule_Ruby' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Ruby.php', | ||||
|         'HTMLPurifier_HTMLModule_SafeEmbed' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeEmbed.php', | ||||
|         'HTMLPurifier_HTMLModule_SafeObject' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeObject.php', | ||||
|         'HTMLPurifier_HTMLModule_SafeScripting' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeScripting.php', | ||||
|         'HTMLPurifier_HTMLModule_Scripting' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Scripting.php', | ||||
|         'HTMLPurifier_HTMLModule_StyleAttribute' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/StyleAttribute.php', | ||||
|         'HTMLPurifier_HTMLModule_Tables' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tables.php', | ||||
|         'HTMLPurifier_HTMLModule_Target' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Target.php', | ||||
|         'HTMLPurifier_HTMLModule_TargetBlank' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/TargetBlank.php', | ||||
|         'HTMLPurifier_HTMLModule_TargetNoopener' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/TargetNoopener.php', | ||||
|         'HTMLPurifier_HTMLModule_TargetNoreferrer' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/TargetNoreferrer.php', | ||||
|         'HTMLPurifier_HTMLModule_Text' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Text.php', | ||||
|         'HTMLPurifier_HTMLModule_Tidy' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy.php', | ||||
|         'HTMLPurifier_HTMLModule_Tidy_Name' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/Name.php', | ||||
|         'HTMLPurifier_HTMLModule_Tidy_Proprietary' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/Proprietary.php', | ||||
|         'HTMLPurifier_HTMLModule_Tidy_Strict' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/Strict.php', | ||||
|         'HTMLPurifier_HTMLModule_Tidy_Transitional' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/Transitional.php', | ||||
|         'HTMLPurifier_HTMLModule_Tidy_XHTML' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/XHTML.php', | ||||
|         'HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php', | ||||
|         'HTMLPurifier_HTMLModule_XMLCommonAttributes' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/XMLCommonAttributes.php', | ||||
|         'HTMLPurifier_IDAccumulator' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/IDAccumulator.php', | ||||
|         'HTMLPurifier_Injector' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Injector.php', | ||||
|         'HTMLPurifier_Injector_AutoParagraph' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Injector/AutoParagraph.php', | ||||
|         'HTMLPurifier_Injector_DisplayLinkURI' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Injector/DisplayLinkURI.php', | ||||
|         'HTMLPurifier_Injector_Linkify' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Injector/Linkify.php', | ||||
|         'HTMLPurifier_Injector_PurifierLinkify' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Injector/PurifierLinkify.php', | ||||
|         'HTMLPurifier_Injector_RemoveEmpty' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Injector/RemoveEmpty.php', | ||||
|         'HTMLPurifier_Injector_RemoveSpansWithoutAttributes' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Injector/RemoveSpansWithoutAttributes.php', | ||||
|         'HTMLPurifier_Injector_SafeObject' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Injector/SafeObject.php', | ||||
|         'HTMLPurifier_Language' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Language.php', | ||||
|         'HTMLPurifier_LanguageFactory' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/LanguageFactory.php', | ||||
|         'HTMLPurifier_Language_en_x_test' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Language/classes/en-x-test.php', | ||||
|         'HTMLPurifier_Length' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Length.php', | ||||
|         'HTMLPurifier_Lexer' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Lexer.php', | ||||
|         'HTMLPurifier_Lexer_DOMLex' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php', | ||||
|         'HTMLPurifier_Lexer_DirectLex' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DirectLex.php', | ||||
|         'HTMLPurifier_Lexer_PH5P' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/PH5P.php', | ||||
|         'HTMLPurifier_Node' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Node.php', | ||||
|         'HTMLPurifier_Node_Comment' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Node/Comment.php', | ||||
|         'HTMLPurifier_Node_Element' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Node/Element.php', | ||||
|         'HTMLPurifier_Node_Text' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Node/Text.php', | ||||
|         'HTMLPurifier_PercentEncoder' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/PercentEncoder.php', | ||||
|         'HTMLPurifier_Printer' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer.php', | ||||
|         'HTMLPurifier_Printer_CSSDefinition' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/CSSDefinition.php', | ||||
|         'HTMLPurifier_Printer_ConfigForm' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php', | ||||
|         'HTMLPurifier_Printer_ConfigForm_NullDecorator' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php', | ||||
|         'HTMLPurifier_Printer_ConfigForm_bool' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php', | ||||
|         'HTMLPurifier_Printer_ConfigForm_default' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php', | ||||
|         'HTMLPurifier_Printer_HTMLDefinition' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Printer/HTMLDefinition.php', | ||||
|         'HTMLPurifier_PropertyList' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/PropertyList.php', | ||||
|         'HTMLPurifier_PropertyListIterator' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/PropertyListIterator.php', | ||||
|         'HTMLPurifier_Queue' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Queue.php', | ||||
|         'HTMLPurifier_Strategy' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Strategy.php', | ||||
|         'HTMLPurifier_Strategy_Composite' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/Composite.php', | ||||
|         'HTMLPurifier_Strategy_Core' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/Core.php', | ||||
|         'HTMLPurifier_Strategy_FixNesting' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/FixNesting.php', | ||||
|         'HTMLPurifier_Strategy_MakeWellFormed' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/MakeWellFormed.php', | ||||
|         'HTMLPurifier_Strategy_RemoveForeignElements' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/RemoveForeignElements.php', | ||||
|         'HTMLPurifier_Strategy_ValidateAttributes' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/ValidateAttributes.php', | ||||
|         'HTMLPurifier_StringHash' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/StringHash.php', | ||||
|         'HTMLPurifier_StringHashParser' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/StringHashParser.php', | ||||
|         'HTMLPurifier_TagTransform' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/TagTransform.php', | ||||
|         'HTMLPurifier_TagTransform_Font' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/TagTransform/Font.php', | ||||
|         'HTMLPurifier_TagTransform_Simple' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/TagTransform/Simple.php', | ||||
|         'HTMLPurifier_Token' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Token.php', | ||||
|         'HTMLPurifier_TokenFactory' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/TokenFactory.php', | ||||
|         'HTMLPurifier_Token_Comment' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Token/Comment.php', | ||||
|         'HTMLPurifier_Token_Empty' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Token/Empty.php', | ||||
|         'HTMLPurifier_Token_End' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Token/End.php', | ||||
|         'HTMLPurifier_Token_Start' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Token/Start.php', | ||||
|         'HTMLPurifier_Token_Tag' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Token/Tag.php', | ||||
|         'HTMLPurifier_Token_Text' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Token/Text.php', | ||||
|         'HTMLPurifier_URI' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URI.php', | ||||
|         'HTMLPurifier_URIDefinition' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIDefinition.php', | ||||
|         'HTMLPurifier_URIFilter' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter.php', | ||||
|         'HTMLPurifier_URIFilter_DisableExternal' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/DisableExternal.php', | ||||
|         'HTMLPurifier_URIFilter_DisableExternalResources' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/DisableExternalResources.php', | ||||
|         'HTMLPurifier_URIFilter_DisableResources' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/DisableResources.php', | ||||
|         'HTMLPurifier_URIFilter_HostBlacklist' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/HostBlacklist.php', | ||||
|         'HTMLPurifier_URIFilter_MakeAbsolute' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/MakeAbsolute.php', | ||||
|         'HTMLPurifier_URIFilter_Munge' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/Munge.php', | ||||
|         'HTMLPurifier_URIFilter_SafeIframe' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIFilter/SafeIframe.php', | ||||
|         'HTMLPurifier_URIParser' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIParser.php', | ||||
|         'HTMLPurifier_URIScheme' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme.php', | ||||
|         'HTMLPurifier_URISchemeRegistry' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URISchemeRegistry.php', | ||||
|         'HTMLPurifier_URIScheme_data' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/data.php', | ||||
|         'HTMLPurifier_URIScheme_file' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/file.php', | ||||
|         'HTMLPurifier_URIScheme_ftp' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/ftp.php', | ||||
|         'HTMLPurifier_URIScheme_http' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/http.php', | ||||
|         'HTMLPurifier_URIScheme_https' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/https.php', | ||||
|         'HTMLPurifier_URIScheme_mailto' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/mailto.php', | ||||
|         'HTMLPurifier_URIScheme_news' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/news.php', | ||||
|         'HTMLPurifier_URIScheme_nntp' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/nntp.php', | ||||
|         'HTMLPurifier_URIScheme_tel' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/URIScheme/tel.php', | ||||
|         'HTMLPurifier_UnitConverter' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/UnitConverter.php', | ||||
|         'HTMLPurifier_VarParser' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/VarParser.php', | ||||
|         'HTMLPurifier_VarParserException' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/VarParserException.php', | ||||
|         'HTMLPurifier_VarParser_Flexible' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/VarParser/Flexible.php', | ||||
|         'HTMLPurifier_VarParser_Native' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/VarParser/Native.php', | ||||
|         'HTMLPurifier_Zipper' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier/Zipper.php', | ||||
|         'Hubzilla\\Import\\Import' => __DIR__ . '/../..' . '/include/Import/Importer.php', | ||||
|         'Markdownify\\Converter' => __DIR__ . '/..' . '/pixel418/markdownify/src/Converter.php', | ||||
|         'Markdownify\\ConverterExtra' => __DIR__ . '/..' . '/pixel418/markdownify/src/ConverterExtra.php', | ||||
|   | ||||
							
								
								
									
										49
									
								
								vendor/composer/installed.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										49
									
								
								vendor/composer/installed.json
									
									
									
									
										vendored
									
									
								
							| @@ -634,5 +634,54 @@ | ||||
|             "oauth", | ||||
|             "oauth2" | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "name": "ezyang/htmlpurifier", | ||||
|         "version": "v4.9.2", | ||||
|         "version_normalized": "4.9.2.0", | ||||
|         "source": { | ||||
|             "type": "git", | ||||
|             "url": "https://github.com/ezyang/htmlpurifier.git", | ||||
|             "reference": "6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4" | ||||
|         }, | ||||
|         "dist": { | ||||
|             "type": "zip", | ||||
|             "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4", | ||||
|             "reference": "6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4", | ||||
|             "shasum": "" | ||||
|         }, | ||||
|         "require": { | ||||
|             "php": ">=5.2" | ||||
|         }, | ||||
|         "require-dev": { | ||||
|             "simpletest/simpletest": "^1.1" | ||||
|         }, | ||||
|         "time": "2017-03-13T06:30:53+00:00", | ||||
|         "type": "library", | ||||
|         "installation-source": "dist", | ||||
|         "autoload": { | ||||
|             "psr-0": { | ||||
|                 "HTMLPurifier": "library/" | ||||
|             }, | ||||
|             "files": [ | ||||
|                 "library/HTMLPurifier.composer.php" | ||||
|             ] | ||||
|         }, | ||||
|         "notification-url": "https://packagist.org/downloads/", | ||||
|         "license": [ | ||||
|             "LGPL" | ||||
|         ], | ||||
|         "authors": [ | ||||
|             { | ||||
|                 "name": "Edward Z. Yang", | ||||
|                 "email": "admin@htmlpurifier.org", | ||||
|                 "homepage": "http://ezyang.com" | ||||
|             } | ||||
|         ], | ||||
|         "description": "Standards compliant HTML filter written in PHP", | ||||
|         "homepage": "http://htmlpurifier.org/", | ||||
|         "keywords": [ | ||||
|             "html" | ||||
|         ] | ||||
|     } | ||||
| ] | ||||
|   | ||||
| @@ -15,10 +15,8 @@ with these contents. | ||||
| --------------------------------------------------------------------------- | ||||
| 1.  Compatibility | ||||
| 
 | ||||
| HTML Purifier is PHP 5 only, and is actively tested from PHP 5.0.5 and | ||||
| up. It has no core dependencies with other libraries. PHP | ||||
| 4 support was deprecated on December 31, 2007 with HTML Purifier 3.0.0. | ||||
| HTML Purifier is not compatible with zend.ze1_compatibility_mode. | ||||
| HTML Purifier is PHP 5 and PHP 7, and is actively tested from PHP 5.0.5 | ||||
| and up. It has no core dependencies with other libraries. | ||||
| 
 | ||||
| These optional extensions can enhance the capabilities of HTML Purifier: | ||||
| 
 | ||||
| @@ -29,7 +27,10 @@ These optional extensions can enhance the capabilities of HTML Purifier: | ||||
| These optional libraries can enhance the capabilities of HTML Purifier: | ||||
| 
 | ||||
|     * CSSTidy : Clean CSS stylesheets using %Core.ExtractStyleBlocks | ||||
|         Note: You should use the modernized fork of CSSTidy available | ||||
|         at https://github.com/Cerdic/CSSTidy | ||||
|     * Net_IDNA2 (PEAR) : IRI support using %Core.EnableIDNA | ||||
|         Note: This is not necessary for PHP 5.3 or later | ||||
| 
 | ||||
| --------------------------------------------------------------------------- | ||||
| 2.  Reconnaissance | ||||
| @@ -305,11 +306,9 @@ appropriate permissions using: | ||||
|     chmod -R 0755 HTMLPurifier/DefinitionCache/Serializer | ||||
| 
 | ||||
| If the above command doesn't work, you may need to assign write permissions | ||||
| to all. This may be necessary if your webserver runs as nobody, but is | ||||
| not recommended since it means any other user can write files in the | ||||
| directory. Use: | ||||
| to group: | ||||
| 
 | ||||
|     chmod -R 0777 HTMLPurifier/DefinitionCache/Serializer | ||||
|     chmod -R 0775 HTMLPurifier/DefinitionCache/Serializer | ||||
| 
 | ||||
| You can also chmod files via your FTP client; this option | ||||
| is usually accessible by right clicking the corresponding directory and | ||||
							
								
								
									
										60
									
								
								vendor/ezyang/htmlpurifier/INSTALL.fr.utf8
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								vendor/ezyang/htmlpurifier/INSTALL.fr.utf8
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | ||||
|  | ||||
| Installation | ||||
|     Comment installer HTML Purifier | ||||
|  | ||||
| Attention : Ce document est encodé en UTF-8, si les lettres avec des accents | ||||
| ne s'affichent pas, prenez un meilleur éditeur de texte. | ||||
|  | ||||
| L'installation de HTML Purifier est très simple, parce qu'il n'a pas besoin | ||||
| de configuration. Pour les utilisateurs impatients, le code se trouve dans le | ||||
| pied de page, mais je recommande de lire le document. | ||||
|  | ||||
| 1.  Compatibilité | ||||
|  | ||||
| HTML Purifier fonctionne avec PHP 5. PHP 5.0.5 est la dernière version testée. | ||||
| Il ne dépend pas d'autres librairies. | ||||
|  | ||||
| Les extensions optionnelles sont iconv (généralement déjà installée) et tidy | ||||
| (répendue aussi). Si vous utilisez UTF-8 et que vous ne voulez pas l'indentation, | ||||
| vous pouvez utiliser HTML Purifier sans ces extensions. | ||||
|  | ||||
|  | ||||
| 2.  Inclure la librairie | ||||
|  | ||||
| Quand vous devez l'utilisez, incluez le : | ||||
|  | ||||
|     require_once('/path/to/library/HTMLPurifier.auto.php'); | ||||
|  | ||||
| Ne pas l'inclure si ce n'est pas nécessaire, car HTML Purifier est lourd. | ||||
|  | ||||
| HTML Purifier utilise "autoload". Si vous avez défini la fonction __autoload, | ||||
| vous devez ajouter cette fonction : | ||||
|  | ||||
|     spl_autoload_register('__autoload') | ||||
|  | ||||
| Plus d'informations dans le document "INSTALL". | ||||
|  | ||||
| 3.  Installation rapide | ||||
|  | ||||
| Si votre site Web est en UTF-8 et XHTML Transitional, utilisez : | ||||
|  | ||||
| <?php | ||||
|     require_once('/path/to/htmlpurifier/library/HTMLPurifier.auto.php'); | ||||
|     $purificateur = new HTMLPurifier(); | ||||
|     $html_propre = $purificateur->purify($html_a_purifier); | ||||
| ?> | ||||
|  | ||||
| Sinon, utilisez : | ||||
|  | ||||
| <?php | ||||
|     require_once('/path/to/html/purifier/library/HTMLPurifier.auto.load'); | ||||
|     $config = $HTMLPurifier_Config::createDefault(); | ||||
|     $config->set('Core', 'Encoding', 'ISO-8859-1'); //Remplacez par votre | ||||
|     encodage | ||||
|     $config->set('Core', 'XHTML', true); //Remplacer par false si HTML 4.01 | ||||
|     $purificateur = new HTMLPurifier($config); | ||||
|     $html_propre = $purificateur->purify($html_a_purifier); | ||||
| ?> | ||||
|  | ||||
|  | ||||
|     vim: et sw=4 sts=4 | ||||
| @@ -9,6 +9,96 @@ NEWS ( CHANGELOG and HISTORY )                                     HTMLPurifier | ||||
|     . Internal change | ||||
| ========================== | ||||
| 
 | ||||
| 4.9.2, released 2017-03-12 | ||||
| - Fixes PHP 5.3 compatibility | ||||
| - Fix breakage when decoding decimal entities.  Thanks @rybakit (#129) | ||||
| 
 | ||||
| 4.9.1, released 2017-03-08 | ||||
| ! %URI.DefaultScheme can now be set to null, in which case | ||||
|   all relative paths are removed. | ||||
| ! New CSS properties: min-width, max-width, min-height, max-height (#94) | ||||
| ! Transparency (rgba) and hsl/hsla supported where color CSS is present. | ||||
|   Thanks @fxbt for contributing the patch. (#118) | ||||
| - When idn_to_ascii is defined, we might accept malformed | ||||
|   hostnames.  Apply validation to the result in such cases. | ||||
| - Close directory when done in Serializer DefinitionCache (#100) | ||||
| - Deleted some asserts to avoid linters from choking (#97) | ||||
| - Rework Serializer cache behavior to avoid chmod'ing if possible (#32) | ||||
| - Embedded semicolons in strings in CSS are now handled correctly! | ||||
| - We accidentally dropped certain Unicode characters if there was | ||||
|   one or more invalid characters.  This has been fixed, thanks | ||||
|   to mpyw <ryosuke_i_628@yahoo.co.jp> | ||||
| - Fix for "Don't truncate upon encountering </div> when using DOMLex" | ||||
|   caused a regression with HTML 4.01 Strict parsing with libxml 2.9.1 | ||||
|   (and maybe later versions, but known OK with libxml 2.9.4).  The | ||||
|   fix is to go about handling truncation a bit more cleverly so that | ||||
|   we can wrap with divs (sidestepping the bug) but slurping out the | ||||
|   rest of the text in case it ran off the end.  (#78) | ||||
| - Fix PREG_BACKTRACK_LIMIT_ERROR in HTMLPurifier_Filter_ExtractStyle. | ||||
|   Thanks @breathbath for contributing the report and fix (#120) | ||||
| - Fix entity decoding algorithm to be more conservative about | ||||
|   decoding entities that are missing trailing semicolon. | ||||
|   To get old behavior, set %Core.LegacyEntityDecoder to true. | ||||
|   (#119) | ||||
| - Workaround libxml bug when HTML tags are embedded inside | ||||
|   script tags.  To disable workaround set %Core.AggressivelyRemoveScript | ||||
|   to false. (#83) | ||||
| # By default, when a link has a target attribute associated | ||||
|   with it, we now also add rel="noopener" in order to | ||||
|   prevent the new window from being able to overwrite | ||||
|   the original frame.  To disable this protection, | ||||
|   set %HTML.TargetNoopener to FALSE. | ||||
| 
 | ||||
| 4.9.0 was cut on Git but never properly released; when we did the | ||||
| real release we decided to skip this version number. | ||||
| 
 | ||||
| 4.8.0, released 2016-07-16 | ||||
| # By default, when a link has a target attribute associated | ||||
|   with it, we now also add rel="noreferrer" in order to | ||||
|   prevent the new window from being able to overwrite | ||||
|   the original frame.  To disable this protection, | ||||
|   set %HTML.TargetNoreferrer to FALSE. | ||||
| ! Full PHP 7 compatibility, the test suite is ALL GO. | ||||
| ! %CSS.AllowDuplicates permits duplicate CSS properties. | ||||
| ! Support for 'tel' URIs. | ||||
| ! Partial support for 'border-radius' properties when %CSS.AllowProprietary is true. | ||||
|   The slash syntax, i.e., 'border-radius: 2em 1em 4em / 0.5em 3em' is not | ||||
|   yet supported. | ||||
| ! %Attr.ID.HTML5 turns on HTML5-style ID handling. | ||||
| - alt truncation could result in malformed UTF-8 sequence. Don't | ||||
|   truncate.  Thanks Brandon Farber for reporting. | ||||
| - Linkify regex is smarter, based off of Gruber's regex. | ||||
| - IDNA supported natively on PHP 5.3 and later. | ||||
| - Non all-numeric top-level names (e.g., foo.1f, 1f) are now | ||||
|   allowed. | ||||
| - Minor bounds error fix to squash a PHP 7 notice. | ||||
| - Support non-/tmp temporary directories for data:// validation | ||||
| - Give a better error message when a user attempts to allow | ||||
|   ul/ol without allowing li. | ||||
| - On some versions of PHP, the Serializer DefinitionCache could | ||||
|   infinite loop when the directory exists but is not listable. (#49) | ||||
| - Don't match for <body> inside comments with | ||||
|   %Core.ConvertDocumentToFragment. (#67) | ||||
| - SafeObject is now less case sensitive. (#57) | ||||
| - AutoFormat.RemoveEmpty.Predicate now correctly renders in | ||||
|   web form. (#85) | ||||
| 
 | ||||
| 4.7.0, released 2015-08-04 | ||||
| # opacity is now considered a "tricky" CSS property rather than a | ||||
|   proprietary one. | ||||
| ! %AutoFormat.RemoveEmpty.Predicate for specifying exactly when | ||||
|   an element should be considered "empty" (maybe preserve if it | ||||
|   has attributes), and modify iframe support so that the iframe | ||||
|   is removed if it is missing a src attribute.  Thanks meeva for | ||||
|   reporting. | ||||
| - Don't truncate upon encountering </div> when using DOMLex.  Thanks | ||||
|   Myrto Christina for finally convincing me to fix this. | ||||
| - Update YouTube filter for new code. | ||||
| - Fix parsing of rgb() values with spaces in them for 'border' | ||||
|   attribute. | ||||
| - Don't remove foo="" attributes if foo is a boolean attribute.  Thanks | ||||
|   valME for reporting. | ||||
| 
 | ||||
| 4.6.0, released 2013-11-30 | ||||
| # Secure URI munge hashing algorithm has changed to hash_hmac("sha256", $url, $secret). | ||||
|   Please update any verification scripts you may have. | ||||
							
								
								
									
										29
									
								
								vendor/ezyang/htmlpurifier/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								vendor/ezyang/htmlpurifier/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| HTML Purifier [](http://travis-ci.org/ezyang/htmlpurifier) | ||||
| ============= | ||||
|  | ||||
| HTML Purifier is an HTML filtering solution that uses a unique combination | ||||
| of robust whitelists and agressive parsing to ensure that not only are | ||||
| XSS attacks thwarted, but the resulting HTML is standards compliant. | ||||
|  | ||||
| HTML Purifier is oriented towards richly formatted documents from | ||||
| untrusted sources that require CSS and a full tag-set.  This library can | ||||
| be configured to accept a more restrictive set of tags, but it won't be | ||||
| as efficient as more bare-bones parsers. It will, however, do the job | ||||
| right, which may be more important. | ||||
|  | ||||
| Places to go: | ||||
|  | ||||
| * See INSTALL for a quick installation guide | ||||
| * See docs/ for developer-oriented documentation, code examples and | ||||
|   an in-depth installation guide. | ||||
| * See WYSIWYG for information on editors like TinyMCE and FCKeditor | ||||
|  | ||||
| HTML Purifier can be found on the web at: [http://htmlpurifier.org/](http://htmlpurifier.org/) | ||||
|  | ||||
| ## Installation | ||||
|  | ||||
| Package available on [Composer](https://packagist.org/packages/ezyang/htmlpurifier). | ||||
|  | ||||
| If you're using Composer to manage dependencies, you can use | ||||
|  | ||||
|     $ composer require "ezyang/htmlpurifier": "dev-master" | ||||
							
								
								
									
										150
									
								
								vendor/ezyang/htmlpurifier/TODO
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										150
									
								
								vendor/ezyang/htmlpurifier/TODO
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,150 @@ | ||||
|  | ||||
| TODO List | ||||
|  | ||||
| = KEY ==================== | ||||
|     # Flagship | ||||
|     - Regular | ||||
|     ? Maybe I'll Do It | ||||
| ========================== | ||||
|  | ||||
| If no interest is expressed for a feature that may require a considerable | ||||
| amount of effort to implement, it may get endlessly delayed. Do not be | ||||
| afraid to cast your vote for the next feature to be implemented! | ||||
|  | ||||
| Things to do as soon as possible: | ||||
|  | ||||
|  - http://htmlpurifier.org/phorum/read.php?3,5560,6307#msg-6307 | ||||
|  - Think about allowing explicit order of operations hooks for transforms | ||||
|  - Fix "<.<" bug (trailing < is removed if not EOD) | ||||
|  - Build in better internal state dumps and debugging tools for remote | ||||
|    debugging | ||||
|  - Allowed/Allowed* have strange interactions when both set | ||||
|  ? Transform lone embeds into object tags | ||||
|  - Deprecated config options that emit warnings when you set them (with' | ||||
|    a way of muting the warning if you really want to) | ||||
|  - Make HTML.Trusted work with Output.FlashCompat | ||||
|  - HTML.Trusted and HTML.SafeObject have funny interaction; general | ||||
|    problem is what to do when a module "supersedes" another | ||||
|    (see also tables and basic tables.)  This is a little dicier | ||||
|    because HTML.SafeObject has some extra functionality that | ||||
|    trusted might find useful.  See http://htmlpurifier.org/phorum/read.php?3,5762,6100 | ||||
|  | ||||
| FUTURE VERSIONS | ||||
| --------------- | ||||
|  | ||||
| 4.9 release [OMG CONFIG PONIES] | ||||
|  ! Fix Printer. It's from the old days when we didn't have decent XML classes | ||||
|  ! Factor demo.php into a set of Printer classes, and then create a stub | ||||
|    file for users here (inside the actual HTML Purifier library) | ||||
|  - Fix error handling with form construction | ||||
|  - Do encoding validation in Printers, or at least, where user data comes in | ||||
|  - Config: Add examples to everything (make built-in which also automatically | ||||
|    gives output) | ||||
|  - Add "register" field to config schemas to eliminate dependence on | ||||
|    naming conventions (try to remember why we ultimately decided on tihs) | ||||
|  | ||||
| 5.0 release [HTML 5] | ||||
|  # Swap out code to use html5lib tokenizer and tree-builder | ||||
|  ! Allow turning off of FixNesting and required attribute insertion | ||||
|  | ||||
| 5.1 release [It's All About Trust] (floating) | ||||
|  # Implement untrusted, dangerous elements/attributes | ||||
|  # Implement IDREF support (harder than it seems, since you cannot have | ||||
|    IDREFs to non-existent IDs) | ||||
|      - Implement <area> (client and server side image maps are blocking | ||||
|        on IDREF support) | ||||
|  # Frameset XHTML 1.0 and HTML 4.01 doctypes | ||||
|  - Figure out how to simultaneously set %CSS.Trusted and %HTML.Trusted (?) | ||||
|  | ||||
| 5.2 release [Error'ed] | ||||
|  # Error logging for filtering/cleanup procedures | ||||
|  # Additional support for poorly written HTML | ||||
|     - Microsoft Word HTML cleaning (i.e. MsoNormal, but research essential!) | ||||
|     - Friendly strict handling of <address> (block -> <br>) | ||||
|  - XSS-attempt detection--certain errors are flagged XSS-like | ||||
|  - Append something to duplicate IDs so they're still usable (impl. note: the | ||||
|    dupe detector would also need to detect the suffix as well) | ||||
|  | ||||
| 6.0 release [Beyond HTML] | ||||
|  # Legit token based CSS parsing (will require revamping almost every | ||||
|    AttrDef class). Probably will use CSSTidy | ||||
|  # More control over allowed CSS properties using a modularization | ||||
|  # IRI support (this includes IDN) | ||||
|  - Standardize token armor for all areas of processing | ||||
|  | ||||
| 7.0 release [To XML and Beyond] | ||||
|  - Extended HTML capabilities based on namespacing and tag transforms (COMPLEX) | ||||
|     - Hooks for adding custom processors to custom namespaced tags and | ||||
|       attributes, offer default implementation | ||||
|     - Lots of documentation and samples | ||||
|  | ||||
| Ongoing | ||||
|  - More refactoring to take advantage of PHP5's facilities | ||||
|  - Refactor unit tests into lots of test methods | ||||
|  - Plugins for major CMSes (COMPLEX) | ||||
|     - phpBB | ||||
|     - Also, a FAQ for extension writers with HTML Purifier | ||||
|  | ||||
| AutoFormat | ||||
|  - Smileys | ||||
|  - Syntax highlighting (with GeSHi) with <pre> and possibly <?php | ||||
|  - Look at http://drupal.org/project/Modules/category/63 for ideas | ||||
|  | ||||
| Neat feature related | ||||
|  ! Support exporting configuration, so users can easily tweak settings | ||||
|    in the demo, and then copy-paste into their own setup | ||||
|  - Advanced URI filtering schemes (see docs/proposal-new-directives.txt) | ||||
|  - Allow scoped="scoped" attribute in <style> tags; may be troublesome | ||||
|    because regular CSS has no way of uniquely identifying nodes, so we'd | ||||
|    have to generate IDs | ||||
|  - Explain how to use HTML Purifier in non-PHP languages / create | ||||
|    a simple command line stub (or complicated?) | ||||
|  - Fixes for Firefox's inability to handle COL alignment props (Bug 915) | ||||
|  - Automatically add non-breaking spaces to empty table cells when | ||||
|    empty-cells:show is applied to have compatibility with Internet Explorer | ||||
|  - Table of Contents generation (XHTML Compiler might be reusable). May also | ||||
|    be out-of-band information. | ||||
|  - Full set of color keywords. Also, a way to add onto them without | ||||
|    finalizing the configuration object. | ||||
|  - Write a var_export and memcached DefinitionCache - Denis | ||||
|  - Built-in support for target="_blank" on all external links | ||||
|  - Convert RTL/LTR override characters to <bdo> tags, or vice versa on demand. | ||||
|    Also, enable disabling of directionality | ||||
|  ? Externalize inline CSS to promote clean HTML, proposed by Sander Tekelenburg | ||||
|  ? Remove redundant tags, ex. <u><u>Underlined</u></u>. Implementation notes: | ||||
|     1. Analyzing which tags to remove duplicants | ||||
|     2. Ensure attributes are merged into the parent tag | ||||
|     3. Extend the tag exclusion system to specify whether or not the | ||||
|     contents should be dropped or not (currently, there's code that could do | ||||
|     something like this if it didn't drop the inner text too.) | ||||
|  ? Make AutoParagraph also support paragraph-izing double <br> tags, and not | ||||
|    just double newlines.  This is kind of tough to do in the current framework, | ||||
|    though, and might be reasonably approximated by search replacing double <br>s | ||||
|    with newlines before running it through HTML Purifier. | ||||
|  | ||||
| Maintenance related (slightly boring) | ||||
|  # CHMOD install script for PEAR installs | ||||
|  ! Factor out command line parser into its own class, and unit test it | ||||
|  - Reduce size of internal data-structures (esp. HTMLDefinition) | ||||
|  - Allow merging configurations.  Thus, | ||||
|         a -> b -> default | ||||
|         c -> d -> default | ||||
|    becomes | ||||
|         a -> b -> c -> d -> default | ||||
|    Maybe allow more fine-grained tuning of this behavior. Alternatively, | ||||
|    encourage people to use short plist depths before building them up. | ||||
|  - Time PHPT tests | ||||
|  | ||||
| ChildDef related (very boring) | ||||
|  - Abstract ChildDef_BlockQuote to work with all elements that only | ||||
|    allow blocks in them, required or optional | ||||
|  - Implement lenient <ruby> child validation | ||||
|  | ||||
| Wontfix | ||||
|  - Non-lossy smart alternate character encoding transformations (unless | ||||
|    patch provided) | ||||
|  - Pretty-printing HTML: users can use Tidy on the output on entire page | ||||
|  - Native content compression, whitespace stripping: use gzip if this is | ||||
|    really important | ||||
|  | ||||
|     vim: et sw=4 sts=4 | ||||
							
								
								
									
										1
									
								
								vendor/ezyang/htmlpurifier/VERSION
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								vendor/ezyang/htmlpurifier/VERSION
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| 4.9.2 | ||||
							
								
								
									
										12
									
								
								vendor/ezyang/htmlpurifier/WHATSNEW
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								vendor/ezyang/htmlpurifier/WHATSNEW
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| HTML Purifier 4.9.x is a maintenance release, collecting a year | ||||
| of accumulated bug fixes plus a few new features.  New features | ||||
| include support for min/max-width/height CSS, and rgba/hsl/hsla | ||||
| in color specifications.  Major bugfixes include improvements | ||||
| in the Serializer cache to avoid chmod'ing directories, better | ||||
| entity decoding (we won't accidentally encode entities that occur | ||||
| in URLs) and rel="noopener" on links with target attributes, | ||||
| to prevent them from overwriting the original frame. | ||||
|  | ||||
| 4.9.0 was skipped due to a packaging problem; 4.9.2 fixes two | ||||
| major regressions in PHP 5.3 support and entity decoding; no | ||||
| other functional changes were applied. | ||||
							
								
								
									
										20
									
								
								vendor/ezyang/htmlpurifier/WYSIWYG
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								vendor/ezyang/htmlpurifier/WYSIWYG
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
|  | ||||
| WYSIWYG - What You See Is What You Get | ||||
|     HTML Purifier: A Pretty Good Fit for TinyMCE and FCKeditor | ||||
|  | ||||
| Javascript-based WYSIWYG editors, simply stated, are quite amazing.  But I've | ||||
| always been wary about using them due to security issues: they handle the | ||||
| client-side magic, but once you've been served a piping hot load of unfiltered | ||||
| HTML, what should be done then?  In some situations, you can serve it uncleaned, | ||||
| since you only offer these facilities to trusted(?) authors. | ||||
|  | ||||
| Unfortunantely, for blog comments and anonymous input, BBCode, Textile and | ||||
| other markup languages still reign supreme.  Put simply: filtering HTML is | ||||
| hard work, and these WYSIWYG authors don't offer anything to alleviate that | ||||
| trouble.  Therein lies the solution: | ||||
|  | ||||
| HTML Purifier is perfect for filtering pure-HTML input from WYSIWYG editors. | ||||
|  | ||||
| Enough said. | ||||
|  | ||||
|     vim: et sw=4 sts=4 | ||||
							
								
								
									
										25
									
								
								vendor/ezyang/htmlpurifier/composer.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								vendor/ezyang/htmlpurifier/composer.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| { | ||||
|     "name": "ezyang/htmlpurifier", | ||||
|     "description": "Standards compliant HTML filter written in PHP", | ||||
|     "type": "library", | ||||
|     "keywords": ["html"], | ||||
|     "homepage": "http://htmlpurifier.org/", | ||||
|     "license": "LGPL", | ||||
|     "authors": [ | ||||
|         { | ||||
|             "name": "Edward Z. Yang", | ||||
|             "email": "admin@htmlpurifier.org", | ||||
|             "homepage": "http://ezyang.com" | ||||
|         } | ||||
|     ], | ||||
|     "require": { | ||||
|         "php": ">=5.2" | ||||
|     }, | ||||
|     "require-dev": { | ||||
|         "simpletest/simpletest": "^1.1" | ||||
|     }, | ||||
|     "autoload": { | ||||
|         "psr-0": { "HTMLPurifier": "library/" }, | ||||
|         "files": ["library/HTMLPurifier.composer.php"] | ||||
|     } | ||||
| } | ||||
							
								
								
									
										91
									
								
								vendor/ezyang/htmlpurifier/extras/ConfigDoc/HTMLXSLTProcessor.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								vendor/ezyang/htmlpurifier/extras/ConfigDoc/HTMLXSLTProcessor.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,91 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  * Decorator/extender XSLT processor specifically for HTML documents. | ||||
|  */ | ||||
| class ConfigDoc_HTMLXSLTProcessor | ||||
| { | ||||
|  | ||||
|     /** | ||||
|      * Instance of XSLTProcessor | ||||
|      */ | ||||
|     protected $xsltProcessor; | ||||
|  | ||||
|     public function __construct($proc = false) | ||||
|     { | ||||
|         if ($proc === false) $proc = new XSLTProcessor(); | ||||
|         $this->xsltProcessor = $proc; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @note Allows a string $xsl filename to be passed | ||||
|      */ | ||||
|     public function importStylesheet($xsl) | ||||
|     { | ||||
|         if (is_string($xsl)) { | ||||
|             $xsl_file = $xsl; | ||||
|             $xsl = new DOMDocument(); | ||||
|             $xsl->load($xsl_file); | ||||
|         } | ||||
|         return $this->xsltProcessor->importStylesheet($xsl); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Transforms an XML file into compatible XHTML based on the stylesheet | ||||
|      * @param $xml XML DOM tree, or string filename | ||||
|      * @return string HTML output | ||||
|      * @todo Rename to transformToXHTML, as transformToHTML is misleading | ||||
|      */ | ||||
|     public function transformToHTML($xml) | ||||
|     { | ||||
|         if (is_string($xml)) { | ||||
|             $dom = new DOMDocument(); | ||||
|             $dom->load($xml); | ||||
|         } else { | ||||
|             $dom = $xml; | ||||
|         } | ||||
|         $out = $this->xsltProcessor->transformToXML($dom); | ||||
|  | ||||
|         // fudges for HTML backwards compatibility | ||||
|         // assumes that document is XHTML | ||||
|         $out = str_replace('/>', ' />', $out); // <br /> not <br/> | ||||
|         $out = str_replace(' xmlns=""', '', $out); // rm unnecessary xmlns | ||||
|  | ||||
|         if (class_exists('Tidy')) { | ||||
|             // cleanup output | ||||
|             $config = array( | ||||
|                 'indent'        => true, | ||||
|                 'output-xhtml'  => true, | ||||
|                 'wrap'          => 80 | ||||
|             ); | ||||
|             $tidy = new Tidy; | ||||
|             $tidy->parseString($out, $config, 'utf8'); | ||||
|             $tidy->cleanRepair(); | ||||
|             $out = (string) $tidy; | ||||
|         } | ||||
|  | ||||
|         return $out; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Bulk sets parameters for the XSL stylesheet | ||||
|      * @param array $options Associative array of options to set | ||||
|      */ | ||||
|     public function setParameters($options) | ||||
|     { | ||||
|         foreach ($options as $name => $value) { | ||||
|             $this->xsltProcessor->setParameter('', $name, $value); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Forward any other calls to the XSLT processor | ||||
|      */ | ||||
|     public function __call($name, $arguments) | ||||
|     { | ||||
|         call_user_func_array(array($this->xsltProcessor, $name), $arguments); | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| // vim: et sw=4 sts=4 | ||||
							
								
								
									
										164
									
								
								vendor/ezyang/htmlpurifier/extras/FSTools.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										164
									
								
								vendor/ezyang/htmlpurifier/extras/FSTools.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,164 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  * Filesystem tools not provided by default; can recursively create, copy | ||||
|  * and delete folders. Some template methods are provided for extensibility. | ||||
|  * | ||||
|  * @note This class must be instantiated to be used, although it does | ||||
|  *       not maintain state. | ||||
|  */ | ||||
| class FSTools | ||||
| { | ||||
|  | ||||
|     private static $singleton; | ||||
|  | ||||
|     /** | ||||
|      * Returns a global instance of FSTools | ||||
|      */ | ||||
|     public static function singleton() | ||||
|     { | ||||
|         if (empty(FSTools::$singleton)) FSTools::$singleton = new FSTools(); | ||||
|         return FSTools::$singleton; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Sets our global singleton to something else; useful for overloading | ||||
|      * functions. | ||||
|      */ | ||||
|     public static function setSingleton($singleton) | ||||
|     { | ||||
|         FSTools::$singleton = $singleton; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Recursively creates a directory | ||||
|      * @param string $folder Name of folder to create | ||||
|      * @note Adapted from the PHP manual comment 76612 | ||||
|      */ | ||||
|     public function mkdirr($folder) | ||||
|     { | ||||
|         $folders = preg_split("#[\\\\/]#", $folder); | ||||
|         $base = ''; | ||||
|         for($i = 0, $c = count($folders); $i < $c; $i++) { | ||||
|             if(empty($folders[$i])) { | ||||
|                 if (!$i) { | ||||
|                     // special case for root level | ||||
|                     $base .= DIRECTORY_SEPARATOR; | ||||
|                 } | ||||
|                 continue; | ||||
|             } | ||||
|             $base .= $folders[$i]; | ||||
|             if(!is_dir($base)){ | ||||
|                 $this->mkdir($base); | ||||
|             } | ||||
|             $base .= DIRECTORY_SEPARATOR; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Copy a file, or recursively copy a folder and its contents; modified | ||||
|      * so that copied files, if PHP, have includes removed | ||||
|      * @note Adapted from http://aidanlister.com/repos/v/function.copyr.php | ||||
|      */ | ||||
|     public function copyr($source, $dest) | ||||
|     { | ||||
|         // Simple copy for a file | ||||
|         if (is_file($source)) { | ||||
|             return $this->copy($source, $dest); | ||||
|         } | ||||
|         // Make destination directory | ||||
|         if (!is_dir($dest)) { | ||||
|             $this->mkdir($dest); | ||||
|         } | ||||
|         // Loop through the folder | ||||
|         $dir = $this->dir($source); | ||||
|         while ( false !== ($entry = $dir->read()) ) { | ||||
|             // Skip pointers | ||||
|             if ($entry == '.' || $entry == '..') { | ||||
|                 continue; | ||||
|             } | ||||
|             if (!$this->copyable($entry)) { | ||||
|                 continue; | ||||
|             } | ||||
|             // Deep copy directories | ||||
|             if ($dest !== "$source/$entry") { | ||||
|                 $this->copyr("$source/$entry", "$dest/$entry"); | ||||
|             } | ||||
|         } | ||||
|         // Clean up | ||||
|         $dir->close(); | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Overloadable function that tests a filename for copyability. By | ||||
|      * default, everything should be copied; you can restrict things to | ||||
|      * ignore hidden files, unreadable files, etc. This function | ||||
|      * applies to copyr(). | ||||
|      */ | ||||
|     public function copyable($file) | ||||
|     { | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Delete a file, or a folder and its contents | ||||
|      * @note Adapted from http://aidanlister.com/repos/v/function.rmdirr.php | ||||
|      */ | ||||
|     public function rmdirr($dirname) | ||||
|     { | ||||
|         // Sanity check | ||||
|         if (!$this->file_exists($dirname)) { | ||||
|             return false; | ||||
|         } | ||||
|  | ||||
|         // Simple delete for a file | ||||
|         if ($this->is_file($dirname) || $this->is_link($dirname)) { | ||||
|             return $this->unlink($dirname); | ||||
|         } | ||||
|  | ||||
|         // Loop through the folder | ||||
|         $dir = $this->dir($dirname); | ||||
|         while (false !== $entry = $dir->read()) { | ||||
|             // Skip pointers | ||||
|             if ($entry == '.' || $entry == '..') { | ||||
|                 continue; | ||||
|             } | ||||
|             // Recurse | ||||
|             $this->rmdirr($dirname . DIRECTORY_SEPARATOR . $entry); | ||||
|         } | ||||
|  | ||||
|         // Clean up | ||||
|         $dir->close(); | ||||
|         return $this->rmdir($dirname); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Recursively globs a directory. | ||||
|      */ | ||||
|     public function globr($dir, $pattern, $flags = NULL) | ||||
|     { | ||||
|         $files = $this->glob("$dir/$pattern", $flags); | ||||
|         if ($files === false) $files = array(); | ||||
|         $sub_dirs = $this->glob("$dir/*", GLOB_ONLYDIR); | ||||
|         if ($sub_dirs === false) $sub_dirs = array(); | ||||
|         foreach ($sub_dirs as $sub_dir) { | ||||
|             $sub_files = $this->globr($sub_dir, $pattern, $flags); | ||||
|             $files = array_merge($files, $sub_files); | ||||
|         } | ||||
|         return $files; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Allows for PHP functions to be called and be stubbed. | ||||
|      * @warning This function will not work for functions that need | ||||
|      *      to pass references; manually define a stub function for those. | ||||
|      */ | ||||
|     public function __call($name, $args) | ||||
|     { | ||||
|         return call_user_func_array($name, $args); | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| // vim: et sw=4 sts=4 | ||||
							
								
								
									
										141
									
								
								vendor/ezyang/htmlpurifier/extras/FSTools/File.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								vendor/ezyang/htmlpurifier/extras/FSTools/File.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,141 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  * Represents a file in the filesystem | ||||
|  * | ||||
|  * @warning Be sure to distinguish between get() and write() versus | ||||
|  *      read() and put(), the former operates on the entire file, while | ||||
|  *      the latter operates on a handle. | ||||
|  */ | ||||
| class FSTools_File | ||||
| { | ||||
|  | ||||
|     /** Filename of file this object represents */ | ||||
|     protected $name; | ||||
|  | ||||
|     /** Handle for the file */ | ||||
|     protected $handle = false; | ||||
|  | ||||
|     /** Instance of FSTools for interfacing with filesystem */ | ||||
|     protected $fs; | ||||
|  | ||||
|     /** | ||||
|      * Filename of file you wish to instantiate. | ||||
|      * @note This file need not exist | ||||
|      */ | ||||
|     public function __construct($name, $fs = false) | ||||
|     { | ||||
|         $this->name = $name; | ||||
|         $this->fs = $fs ? $fs : FSTools::singleton(); | ||||
|     } | ||||
|  | ||||
|     /** Returns the filename of the file. */ | ||||
|     public function getName() {return $this->name;} | ||||
|  | ||||
|     /** Returns directory of the file without trailing slash */ | ||||
|     public function getDirectory() {return $this->fs->dirname($this->name);} | ||||
|  | ||||
|     /** | ||||
|      * Retrieves the contents of a file | ||||
|      * @todo Throw an exception if file doesn't exist | ||||
|      */ | ||||
|     public function get() | ||||
|     { | ||||
|         return $this->fs->file_get_contents($this->name); | ||||
|     } | ||||
|  | ||||
|     /** Writes contents to a file, creates new file if necessary */ | ||||
|     public function write($contents) | ||||
|     { | ||||
|         return $this->fs->file_put_contents($this->name, $contents); | ||||
|     } | ||||
|  | ||||
|     /** Deletes the file */ | ||||
|     public function delete() | ||||
|     { | ||||
|         return $this->fs->unlink($this->name); | ||||
|     } | ||||
|  | ||||
|     /** Returns true if file exists and is a file. */ | ||||
|     public function exists() | ||||
|     { | ||||
|         return $this->fs->is_file($this->name); | ||||
|     } | ||||
|  | ||||
|     /** Returns last file modification time */ | ||||
|     public function getMTime() | ||||
|     { | ||||
|         return $this->fs->filemtime($this->name); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Chmod a file | ||||
|      * @note We ignore errors because of some weird owner trickery due | ||||
|      *       to SVN duality | ||||
|      */ | ||||
|     public function chmod($octal_code) | ||||
|     { | ||||
|         return @$this->fs->chmod($this->name, $octal_code); | ||||
|     } | ||||
|  | ||||
|     /** Opens file's handle */ | ||||
|     public function open($mode) | ||||
|     { | ||||
|         if ($this->handle) $this->close(); | ||||
|         $this->handle = $this->fs->fopen($this->name, $mode); | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     /** Closes file's handle */ | ||||
|     public function close() | ||||
|     { | ||||
|         if (!$this->handle) return false; | ||||
|         $status = $this->fs->fclose($this->handle); | ||||
|         $this->handle = false; | ||||
|         return $status; | ||||
|     } | ||||
|  | ||||
|     /** Retrieves a line from an open file, with optional max length $length */ | ||||
|     public function getLine($length = null) | ||||
|     { | ||||
|         if (!$this->handle) $this->open('r'); | ||||
|         if ($length === null) return $this->fs->fgets($this->handle); | ||||
|         else return $this->fs->fgets($this->handle, $length); | ||||
|     } | ||||
|  | ||||
|     /** Retrieves a character from an open file */ | ||||
|     public function getChar() | ||||
|     { | ||||
|         if (!$this->handle) $this->open('r'); | ||||
|         return $this->fs->fgetc($this->handle); | ||||
|     } | ||||
|  | ||||
|     /** Retrieves an $length bytes of data from an open data */ | ||||
|     public function read($length) | ||||
|     { | ||||
|         if (!$this->handle) $this->open('r'); | ||||
|         return $this->fs->fread($this->handle, $length); | ||||
|     } | ||||
|  | ||||
|     /** Writes to an open file */ | ||||
|     public function put($string) | ||||
|     { | ||||
|         if (!$this->handle) $this->open('a'); | ||||
|         return $this->fs->fwrite($this->handle, $string); | ||||
|     } | ||||
|  | ||||
|     /** Returns TRUE if the end of the file has been reached */ | ||||
|     public function eof() | ||||
|     { | ||||
|         if (!$this->handle) return true; | ||||
|         return $this->fs->feof($this->handle); | ||||
|     } | ||||
|  | ||||
|     public function __destruct() | ||||
|     { | ||||
|         if ($this->handle) $this->close(); | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| // vim: et sw=4 sts=4 | ||||
							
								
								
									
										11
									
								
								vendor/ezyang/htmlpurifier/extras/HTMLPurifierExtras.auto.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								vendor/ezyang/htmlpurifier/extras/HTMLPurifierExtras.auto.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  * This is a stub include that automatically configures the include path. | ||||
|  */ | ||||
|  | ||||
| set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path() ); | ||||
| require_once 'HTMLPurifierExtras.php'; | ||||
| require_once 'HTMLPurifierExtras.autoload.php'; | ||||
|  | ||||
| // vim: et sw=4 sts=4 | ||||
							
								
								
									
										26
									
								
								vendor/ezyang/htmlpurifier/extras/HTMLPurifierExtras.autoload.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vendor/ezyang/htmlpurifier/extras/HTMLPurifierExtras.autoload.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  * @file | ||||
|  * Convenience file that registers autoload handler for HTML Purifier. | ||||
|  * | ||||
|  * @warning | ||||
|  *      This autoloader does not contain the compatibility code seen in | ||||
|  *      HTMLPurifier_Bootstrap; the user is expected to make any necessary | ||||
|  *      changes to use this library. | ||||
|  */ | ||||
|  | ||||
| if (function_exists('spl_autoload_register')) { | ||||
|     spl_autoload_register(array('HTMLPurifierExtras', 'autoload')); | ||||
|     if (function_exists('__autoload')) { | ||||
|         // Be polite and ensure that userland autoload gets retained | ||||
|         spl_autoload_register('__autoload'); | ||||
|     } | ||||
| } elseif (!function_exists('__autoload')) { | ||||
|     function __autoload($class) | ||||
|     { | ||||
|         return HTMLPurifierExtras::autoload($class); | ||||
|     } | ||||
| } | ||||
|  | ||||
| // vim: et sw=4 sts=4 | ||||
							
								
								
									
										31
									
								
								vendor/ezyang/htmlpurifier/extras/HTMLPurifierExtras.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								vendor/ezyang/htmlpurifier/extras/HTMLPurifierExtras.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  * Meta-class for HTML Purifier's extra class hierarchies, similar to | ||||
|  * HTMLPurifier_Bootstrap. | ||||
|  */ | ||||
| class HTMLPurifierExtras | ||||
| { | ||||
|  | ||||
|     public static function autoload($class) | ||||
|     { | ||||
|         $path = HTMLPurifierExtras::getPath($class); | ||||
|         if (!$path) return false; | ||||
|         require $path; | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     public static function getPath($class) | ||||
|     { | ||||
|         if ( | ||||
|             strncmp('FSTools', $class, 7) !== 0 && | ||||
|             strncmp('ConfigDoc', $class, 9) !== 0 | ||||
|         ) return false; | ||||
|         // Custom implementations can go here | ||||
|         // Standard implementation: | ||||
|         return str_replace('_', '/', $class) . '.php'; | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| // vim: et sw=4 sts=4 | ||||
							
								
								
									
										32
									
								
								vendor/ezyang/htmlpurifier/extras/README
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								vendor/ezyang/htmlpurifier/extras/README
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
|  | ||||
| HTML Purifier Extras | ||||
|     The Method Behind The Madness! | ||||
|  | ||||
| The extras/ folder in HTML Purifier contains--you guessed it--extra things | ||||
| for HTML Purifier.  Specifically, these are two extra libraries called | ||||
| FSTools and ConfigSchema.  They're extra for a reason: you don't need them | ||||
| if you're using HTML Purifier for normal usage: filtering HTML.  However, | ||||
| if you're a developer, and would like to test HTML Purifier, or need to | ||||
| use one of HTML Purifier's maintenance scripts, chances are they'll need | ||||
| these libraries. Who knows: maybe you'll find them useful too! | ||||
|  | ||||
| Here are the libraries: | ||||
|  | ||||
|  | ||||
| FSTools | ||||
| ------- | ||||
|  | ||||
| Short for File System Tools, this is a poor-man's object-oriented wrapper for | ||||
| the filesystem. It currently consists of two classes: | ||||
|  | ||||
| - FSTools: This is a singleton that contains a manner of useful functions | ||||
|   such as recursive glob, directory removal, etc, as well as the ability | ||||
|   to call arbitrary native PHP functions through it like $FS->fopen(...). | ||||
|   This makes it a lot simpler to mock these filesystem calls for unit testing. | ||||
|  | ||||
| - FSTools_File: This object represents a single file, and has almost any | ||||
|   method imaginable one would need. | ||||
|  | ||||
| Check the files themselves for more information. | ||||
|  | ||||
|     vim: et sw=4 sts=4 | ||||
							
								
								
									
										4
									
								
								vendor/ezyang/htmlpurifier/library/HTMLPurifier.composer.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								vendor/ezyang/htmlpurifier/library/HTMLPurifier.composer.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| <?php | ||||
| if (!defined('HTMLPURIFIER_PREFIX')) { | ||||
|     define('HTMLPURIFIER_PREFIX', dirname(__FILE__)); | ||||
| } | ||||
| @@ -7,7 +7,7 @@ | ||||
|  * primary concern and you are using an opcode cache. PLEASE DO NOT EDIT THIS | ||||
|  * FILE, changes will be overwritten the next time the script is run. | ||||
|  * | ||||
|  * @version 4.6.0 | ||||
|  * @version 4.9.2 | ||||
|  * | ||||
|  * @warning | ||||
|  *      You must *not* include any other HTML Purifier files before this file, | ||||
| @@ -137,6 +137,8 @@ require 'HTMLPurifier/AttrTransform/SafeObject.php'; | ||||
| require 'HTMLPurifier/AttrTransform/SafeParam.php'; | ||||
| require 'HTMLPurifier/AttrTransform/ScriptRequired.php'; | ||||
| require 'HTMLPurifier/AttrTransform/TargetBlank.php'; | ||||
| require 'HTMLPurifier/AttrTransform/TargetNoopener.php'; | ||||
| require 'HTMLPurifier/AttrTransform/TargetNoreferrer.php'; | ||||
| require 'HTMLPurifier/AttrTransform/Textarea.php'; | ||||
| require 'HTMLPurifier/ChildDef/Chameleon.php'; | ||||
| require 'HTMLPurifier/ChildDef/Custom.php'; | ||||
| @@ -175,6 +177,8 @@ require 'HTMLPurifier/HTMLModule/StyleAttribute.php'; | ||||
| require 'HTMLPurifier/HTMLModule/Tables.php'; | ||||
| require 'HTMLPurifier/HTMLModule/Target.php'; | ||||
| require 'HTMLPurifier/HTMLModule/TargetBlank.php'; | ||||
| require 'HTMLPurifier/HTMLModule/TargetNoopener.php'; | ||||
| require 'HTMLPurifier/HTMLModule/TargetNoreferrer.php'; | ||||
| require 'HTMLPurifier/HTMLModule/Text.php'; | ||||
| require 'HTMLPurifier/HTMLModule/Tidy.php'; | ||||
| require 'HTMLPurifier/HTMLModule/XMLCommonAttributes.php'; | ||||
| @@ -225,5 +229,6 @@ require 'HTMLPurifier/URIScheme/https.php'; | ||||
| require 'HTMLPurifier/URIScheme/mailto.php'; | ||||
| require 'HTMLPurifier/URIScheme/news.php'; | ||||
| require 'HTMLPurifier/URIScheme/nntp.php'; | ||||
| require 'HTMLPurifier/URIScheme/tel.php'; | ||||
| require 'HTMLPurifier/VarParser/Flexible.php'; | ||||
| require 'HTMLPurifier/VarParser/Native.php'; | ||||
| @@ -19,7 +19,7 @@ | ||||
|  */ | ||||
| 
 | ||||
| /* | ||||
|     HTML Purifier 4.6.0 - Standards Compliant HTML Filtering | ||||
|     HTML Purifier 4.9.2 - Standards Compliant HTML Filtering | ||||
|     Copyright (C) 2006-2008 Edward Z. Yang | ||||
| 
 | ||||
|     This library is free software; you can redistribute it and/or | ||||
| @@ -58,12 +58,12 @@ class HTMLPurifier | ||||
|      * Version of HTML Purifier. | ||||
|      * @type string | ||||
|      */ | ||||
|     public $version = '4.6.0'; | ||||
|     public $version = '4.9.2'; | ||||
| 
 | ||||
|     /** | ||||
|      * Constant with version of HTML Purifier. | ||||
|      */ | ||||
|     const VERSION = '4.6.0'; | ||||
|     const VERSION = '4.9.2'; | ||||
| 
 | ||||
|     /** | ||||
|      * Global configuration object. | ||||
| @@ -104,7 +104,7 @@ class HTMLPurifier | ||||
|     /** | ||||
|      * Initializes the purifier. | ||||
|      * | ||||
|      * @param HTMLPurifier_Config $config Optional HTMLPurifier_Config object | ||||
|      * @param HTMLPurifier_Config|mixed $config Optional HTMLPurifier_Config object | ||||
|      *                for all instances of the purifier, if omitted, a default | ||||
|      *                configuration is supplied (which can be overridden on a | ||||
|      *                per-use basis). | ||||
| @@ -131,6 +131,8 @@ require_once $__dir . '/HTMLPurifier/AttrTransform/SafeObject.php'; | ||||
| require_once $__dir . '/HTMLPurifier/AttrTransform/SafeParam.php'; | ||||
| require_once $__dir . '/HTMLPurifier/AttrTransform/ScriptRequired.php'; | ||||
| require_once $__dir . '/HTMLPurifier/AttrTransform/TargetBlank.php'; | ||||
| require_once $__dir . '/HTMLPurifier/AttrTransform/TargetNoopener.php'; | ||||
| require_once $__dir . '/HTMLPurifier/AttrTransform/TargetNoreferrer.php'; | ||||
| require_once $__dir . '/HTMLPurifier/AttrTransform/Textarea.php'; | ||||
| require_once $__dir . '/HTMLPurifier/ChildDef/Chameleon.php'; | ||||
| require_once $__dir . '/HTMLPurifier/ChildDef/Custom.php'; | ||||
| @@ -169,6 +171,8 @@ require_once $__dir . '/HTMLPurifier/HTMLModule/StyleAttribute.php'; | ||||
| require_once $__dir . '/HTMLPurifier/HTMLModule/Tables.php'; | ||||
| require_once $__dir . '/HTMLPurifier/HTMLModule/Target.php'; | ||||
| require_once $__dir . '/HTMLPurifier/HTMLModule/TargetBlank.php'; | ||||
| require_once $__dir . '/HTMLPurifier/HTMLModule/TargetNoopener.php'; | ||||
| require_once $__dir . '/HTMLPurifier/HTMLModule/TargetNoreferrer.php'; | ||||
| require_once $__dir . '/HTMLPurifier/HTMLModule/Text.php'; | ||||
| require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy.php'; | ||||
| require_once $__dir . '/HTMLPurifier/HTMLModule/XMLCommonAttributes.php'; | ||||
| @@ -219,5 +223,6 @@ require_once $__dir . '/HTMLPurifier/URIScheme/https.php'; | ||||
| require_once $__dir . '/HTMLPurifier/URIScheme/mailto.php'; | ||||
| require_once $__dir . '/HTMLPurifier/URIScheme/news.php'; | ||||
| require_once $__dir . '/HTMLPurifier/URIScheme/nntp.php'; | ||||
| require_once $__dir . '/HTMLPurifier/URIScheme/tel.php'; | ||||
| require_once $__dir . '/HTMLPurifier/VarParser/Flexible.php'; | ||||
| require_once $__dir . '/HTMLPurifier/VarParser/Native.php'; | ||||
| @@ -19,8 +19,8 @@ class HTMLPurifier_Arborize | ||||
|             if ($token instanceof HTMLPurifier_Token_End) { | ||||
|                 $token->start = null; // [MUT]
 | ||||
|                 $r = array_pop($stack); | ||||
|                 assert($r->name === $token->name); | ||||
|                 assert(empty($token->attr)); | ||||
|                 //assert($r->name === $token->name);
 | ||||
|                 //assert(empty($token->attr));
 | ||||
|                 $r->endCol = $token->col; | ||||
|                 $r->endLine = $token->line; | ||||
|                 $r->endArmor = $token->armor; | ||||
| @@ -32,7 +32,7 @@ class HTMLPurifier_Arborize | ||||
|                 $stack[] = $node; | ||||
|             } | ||||
|         } | ||||
|         assert(count($stack) == 1); | ||||
|         //assert(count($stack) == 1);
 | ||||
|         return $stack[0]; | ||||
|     } | ||||
| 
 | ||||
| @@ -21,6 +21,11 @@ class HTMLPurifier_AttrCollections | ||||
|      * @param HTMLPurifier_HTMLModule[] $modules Hash array of HTMLPurifier_HTMLModule members | ||||
|      */ | ||||
|     public function __construct($attr_types, $modules) | ||||
|     { | ||||
|         $this->doConstruct($attr_types, $modules); | ||||
|     } | ||||
| 
 | ||||
|     public function doConstruct($attr_types, $modules) | ||||
|     { | ||||
|         // load extensions from the modules
 | ||||
|         foreach ($modules as $module) { | ||||
| @@ -86,7 +86,13 @@ abstract class HTMLPurifier_AttrDef | ||||
|      */ | ||||
|     protected function mungeRgb($string) | ||||
|     { | ||||
|         return preg_replace('/rgb\((\d+)\s*,\s*(\d+)\s*,\s*(\d+)\)/', 'rgb(\1,\2,\3)', $string); | ||||
|         $p = '\s*(\d+(\.\d+)?([%]?))\s*'; | ||||
| 
 | ||||
|         if (preg_match('/(rgba|hsla)\(/', $string)) { | ||||
|             return preg_replace('/(rgba|hsla)\('.$p.','.$p.','.$p.','.$p.'\)/', '\1(\2,\5,\8,\11)', $string); | ||||
|         } | ||||
| 
 | ||||
|         return preg_replace('/(rgb|hsl)\('.$p.','.$p.','.$p.'\)/', '\1(\2,\5,\8)', $string); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
| @@ -25,15 +25,42 @@ class HTMLPurifier_AttrDef_CSS extends HTMLPurifier_AttrDef | ||||
|         $css = $this->parseCDATA($css); | ||||
| 
 | ||||
|         $definition = $config->getCSSDefinition(); | ||||
|         $allow_duplicates = $config->get("CSS.AllowDuplicates"); | ||||
| 
 | ||||
|         // we're going to break the spec and explode by semicolons.
 | ||||
|         // This is because semicolon rarely appears in escaped form
 | ||||
|         // Doing this is generally flaky but fast
 | ||||
|         // IT MIGHT APPEAR IN URIs, see HTMLPurifier_AttrDef_CSSURI
 | ||||
|         // for details
 | ||||
| 
 | ||||
|         $declarations = explode(';', $css); | ||||
|         // According to the CSS2.1 spec, the places where a
 | ||||
|         // non-delimiting semicolon can appear are in strings
 | ||||
|         // escape sequences.   So here is some dumb hack to
 | ||||
|         // handle quotes.
 | ||||
|         $len = strlen($css); | ||||
|         $accum = ""; | ||||
|         $declarations = array(); | ||||
|         $quoted = false; | ||||
|         for ($i = 0; $i < $len; $i++) { | ||||
|             $c = strcspn($css, ";'\"", $i); | ||||
|             $accum .= substr($css, $i, $c); | ||||
|             $i += $c; | ||||
|             if ($i == $len) break; | ||||
|             $d = $css[$i]; | ||||
|             if ($quoted) { | ||||
|                 $accum .= $d; | ||||
|                 if ($d == $quoted) { | ||||
|                     $quoted = false; | ||||
|                 } | ||||
|             } else { | ||||
|                 if ($d == ";") { | ||||
|                     $declarations[] = $accum; | ||||
|                     $accum = ""; | ||||
|                 } else { | ||||
|                     $accum .= $d; | ||||
|                     $quoted = $d; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         if ($accum != "") $declarations[] = $accum; | ||||
| 
 | ||||
|         $propvalues = array(); | ||||
|         $new_declarations = ''; | ||||
| 
 | ||||
|         /** | ||||
|          * Name of the current CSS property being validated. | ||||
| @@ -83,7 +110,11 @@ class HTMLPurifier_AttrDef_CSS extends HTMLPurifier_AttrDef | ||||
|             if ($result === false) { | ||||
|                 continue; | ||||
|             } | ||||
|             $propvalues[$property] = $result; | ||||
|             if ($allow_duplicates) { | ||||
|                 $new_declarations .= "$property:$result;"; | ||||
|             } else { | ||||
|                 $propvalues[$property] = $result; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         $context->destroy('CurrentCSSProperty'); | ||||
| @@ -92,7 +123,6 @@ class HTMLPurifier_AttrDef_CSS extends HTMLPurifier_AttrDef | ||||
|         // slightly inefficient, but it's the only way of getting rid of
 | ||||
|         // duplicates. Perhaps config to optimize it, but not now.
 | ||||
| 
 | ||||
|         $new_declarations = ''; | ||||
|         foreach ($propvalues as $prop => $value) { | ||||
|             $new_declarations .= "$prop:$value;"; | ||||
|         } | ||||
							
								
								
									
										161
									
								
								vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Color.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Color.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,161 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  * Validates Color as defined by CSS. | ||||
|  */ | ||||
| class HTMLPurifier_AttrDef_CSS_Color extends HTMLPurifier_AttrDef | ||||
| { | ||||
|  | ||||
|     /** | ||||
|      * @type HTMLPurifier_AttrDef_CSS_AlphaValue | ||||
|      */ | ||||
|     protected $alpha; | ||||
|  | ||||
|     public function __construct() | ||||
|     { | ||||
|         $this->alpha = new HTMLPurifier_AttrDef_CSS_AlphaValue(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param string $color | ||||
|      * @param HTMLPurifier_Config $config | ||||
|      * @param HTMLPurifier_Context $context | ||||
|      * @return bool|string | ||||
|      */ | ||||
|     public function validate($color, $config, $context) | ||||
|     { | ||||
|         static $colors = null; | ||||
|         if ($colors === null) { | ||||
|             $colors = $config->get('Core.ColorKeywords'); | ||||
|         } | ||||
|  | ||||
|         $color = trim($color); | ||||
|         if ($color === '') { | ||||
|             return false; | ||||
|         } | ||||
|  | ||||
|         $lower = strtolower($color); | ||||
|         if (isset($colors[$lower])) { | ||||
|             return $colors[$lower]; | ||||
|         } | ||||
|  | ||||
|         if (preg_match('#(rgb|rgba|hsl|hsla)\(#', $color, $matches) === 1) { | ||||
|             $length = strlen($color); | ||||
|             if (strpos($color, ')') !== $length - 1) { | ||||
|                 return false; | ||||
|             } | ||||
|  | ||||
|             // get used function : rgb, rgba, hsl or hsla | ||||
|             $function = $matches[1]; | ||||
|  | ||||
|             $parameters_size = 3; | ||||
|             $alpha_channel = false; | ||||
|             if (substr($function, -1) === 'a') { | ||||
|                 $parameters_size = 4; | ||||
|                 $alpha_channel = true; | ||||
|             } | ||||
|  | ||||
|             /* | ||||
|              * Allowed types for values : | ||||
|              * parameter_position => [type => max_value] | ||||
|              */ | ||||
|             $allowed_types = array( | ||||
|                 1 => array('percentage' => 100, 'integer' => 255), | ||||
|                 2 => array('percentage' => 100, 'integer' => 255), | ||||
|                 3 => array('percentage' => 100, 'integer' => 255), | ||||
|             ); | ||||
|             $allow_different_types = false; | ||||
|  | ||||
|             if (strpos($function, 'hsl') !== false) { | ||||
|                 $allowed_types = array( | ||||
|                     1 => array('integer' => 360), | ||||
|                     2 => array('percentage' => 100), | ||||
|                     3 => array('percentage' => 100), | ||||
|                 ); | ||||
|                 $allow_different_types = true; | ||||
|             } | ||||
|  | ||||
|             $values = trim(str_replace($function, '', $color), ' ()'); | ||||
|  | ||||
|             $parts = explode(',', $values); | ||||
|             if (count($parts) !== $parameters_size) { | ||||
|                 return false; | ||||
|             } | ||||
|  | ||||
|             $type = false; | ||||
|             $new_parts = array(); | ||||
|             $i = 0; | ||||
|  | ||||
|             foreach ($parts as $part) { | ||||
|                 $i++; | ||||
|                 $part = trim($part); | ||||
|  | ||||
|                 if ($part === '') { | ||||
|                     return false; | ||||
|                 } | ||||
|  | ||||
|                 // different check for alpha channel | ||||
|                 if ($alpha_channel === true && $i === count($parts)) { | ||||
|                     $result = $this->alpha->validate($part, $config, $context); | ||||
|  | ||||
|                     if ($result === false) { | ||||
|                         return false; | ||||
|                     } | ||||
|  | ||||
|                     $new_parts[] = (string)$result; | ||||
|                     continue; | ||||
|                 } | ||||
|  | ||||
|                 if (substr($part, -1) === '%') { | ||||
|                     $current_type = 'percentage'; | ||||
|                 } else { | ||||
|                     $current_type = 'integer'; | ||||
|                 } | ||||
|  | ||||
|                 if (!array_key_exists($current_type, $allowed_types[$i])) { | ||||
|                     return false; | ||||
|                 } | ||||
|  | ||||
|                 if (!$type) { | ||||
|                     $type = $current_type; | ||||
|                 } | ||||
|  | ||||
|                 if ($allow_different_types === false && $type != $current_type) { | ||||
|                     return false; | ||||
|                 } | ||||
|  | ||||
|                 $max_value = $allowed_types[$i][$current_type]; | ||||
|  | ||||
|                 if ($current_type == 'integer') { | ||||
|                     // Return value between range 0 -> $max_value | ||||
|                     $new_parts[] = (int)max(min($part, $max_value), 0); | ||||
|                 } elseif ($current_type == 'percentage') { | ||||
|                     $new_parts[] = (float)max(min(rtrim($part, '%'), $max_value), 0) . '%'; | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             $new_values = implode(',', $new_parts); | ||||
|  | ||||
|             $color = $function . '(' . $new_values . ')'; | ||||
|         } else { | ||||
|             // hexadecimal handling | ||||
|             if ($color[0] === '#') { | ||||
|                 $hex = substr($color, 1); | ||||
|             } else { | ||||
|                 $hex = $color; | ||||
|                 $color = '#' . $color; | ||||
|             } | ||||
|             $length = strlen($hex); | ||||
|             if ($length !== 3 && $length !== 6) { | ||||
|                 return false; | ||||
|             } | ||||
|             if (!ctype_xdigit($hex)) { | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
|         return $color; | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| // vim: et sw=4 sts=4 | ||||
| @@ -44,7 +44,7 @@ class HTMLPurifier_AttrDef_CSS_Multiple extends HTMLPurifier_AttrDef | ||||
|      */ | ||||
|     public function validate($string, $config, $context) | ||||
|     { | ||||
|         $string = $this->parseCDATA($string); | ||||
|         $string = $this->mungeRgb($this->parseCDATA($string)); | ||||
|         if ($string === '') { | ||||
|             return false; | ||||
|         } | ||||
| @@ -33,6 +33,9 @@ class HTMLPurifier_AttrDef_CSS_URI extends HTMLPurifier_AttrDef_URI | ||||
|             return false; | ||||
|         } | ||||
|         $uri_string = substr($uri_string, 4); | ||||
|         if (strlen($uri_string) == 0) { | ||||
|             return false; | ||||
|         } | ||||
|         $new_length = strlen($uri_string) - 1; | ||||
|         if ($uri_string[$new_length] != ')') { | ||||
|             return false; | ||||
| @@ -32,9 +32,6 @@ class HTMLPurifier_AttrDef_HTML_Bool extends HTMLPurifier_AttrDef | ||||
|      */ | ||||
|     public function validate($string, $config, $context) | ||||
|     { | ||||
|         if (empty($string)) { | ||||
|             return false; | ||||
|         } | ||||
|         return $this->name; | ||||
|     } | ||||
| 
 | ||||
| @@ -72,18 +72,26 @@ class HTMLPurifier_AttrDef_HTML_ID extends HTMLPurifier_AttrDef | ||||
| 
 | ||||
|         // we purposely avoid using regex, hopefully this is faster
 | ||||
| 
 | ||||
|         if (ctype_alpha($id)) { | ||||
|             $result = true; | ||||
|         } else { | ||||
|             if (!ctype_alpha(@$id[0])) { | ||||
|         if ($config->get('Attr.ID.HTML5') === true) { | ||||
|             if (preg_match('/[\t\n\x0b\x0c ]/', $id)) { | ||||
|                 return false; | ||||
|             } | ||||
|             // primitive style of regexps, I suppose
 | ||||
|             $trim = trim( | ||||
|                 $id, | ||||
|                 'A..Za..z0..9:-._' | ||||
|             ); | ||||
|             $result = ($trim === ''); | ||||
|         } else { | ||||
|             if (ctype_alpha($id)) { | ||||
|                 // OK
 | ||||
|             } else { | ||||
|                 if (!ctype_alpha(@$id[0])) { | ||||
|                     return false; | ||||
|                 } | ||||
|                 // primitive style of regexps, I suppose
 | ||||
|                 $trim = trim( | ||||
|                     $id, | ||||
|                     'A..Za..z0..9:-._' | ||||
|                 ); | ||||
|                 if ($trim !== '') { | ||||
|                     return false; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         $regexp = $config->get('Attr.IDBlacklistRegexp'); | ||||
| @@ -91,14 +99,14 @@ class HTMLPurifier_AttrDef_HTML_ID extends HTMLPurifier_AttrDef | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         if (!$this->selector && $result) { | ||||
|         if (!$this->selector) { | ||||
|             $id_accumulator->add($id); | ||||
|         } | ||||
| 
 | ||||
|         // if no change was made to the ID, return the result
 | ||||
|         // else, return the new id if stripping whitespace made it
 | ||||
|         //     valid, or return false.
 | ||||
|         return $result ? $id : false; | ||||
|         return $id; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| @@ -76,24 +76,33 @@ class HTMLPurifier_AttrDef_URI_Host extends HTMLPurifier_AttrDef | ||||
|         // fairly well supported.
 | ||||
|         $underscore = $config->get('Core.AllowHostnameUnderscore') ? '_' : ''; | ||||
| 
 | ||||
|         // Based off of RFC 1738, but amended so that
 | ||||
|         // as per RFC 3696, the top label need only not be all numeric.
 | ||||
|         // The productions describing this are:
 | ||||
|         $a   = '[a-z]';     // alpha
 | ||||
|         $an  = '[a-z0-9]';  // alphanum
 | ||||
|         $and = "[a-z0-9-$underscore]"; // alphanum | "-"
 | ||||
|         // domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum
 | ||||
|         $domainlabel = "$an($and*$an)?"; | ||||
|         // toplabel    = alpha | alpha *( alphanum | "-" ) alphanum
 | ||||
|         $toplabel = "$a($and*$an)?"; | ||||
|         $domainlabel = "$an(?:$and*$an)?"; | ||||
|         // AMENDED as per RFC 3696
 | ||||
|         // toplabel    = alphanum | alphanum *( alphanum | "-" ) alphanum
 | ||||
|         //      side condition: not all numeric
 | ||||
|         $toplabel = "$an(?:$and*$an)?"; | ||||
|         // hostname    = *( domainlabel "." ) toplabel [ "." ]
 | ||||
|         if (preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string)) { | ||||
|             return $string; | ||||
|         if (preg_match("/^(?:$domainlabel\.)*($toplabel)\.?$/i", $string, $matches)) { | ||||
|             if (!ctype_digit($matches[1])) { | ||||
|                 return $string; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         // PHP 5.3 and later support this functionality natively
 | ||||
|         if (function_exists('idn_to_ascii')) { | ||||
|             $string = idn_to_ascii($string); | ||||
| 
 | ||||
|         // If we have Net_IDNA2 support, we can support IRIs by
 | ||||
|         // punycoding them. (This is the most portable thing to do,
 | ||||
|         // since otherwise we have to assume browsers support
 | ||||
| 
 | ||||
|         if ($config->get('Core.EnableIDNA')) { | ||||
|         } elseif ($config->get('Core.EnableIDNA')) { | ||||
|             $idna = new Net_IDNA2(array('encoding' => 'utf8', 'overlong' => false, 'strict' => true)); | ||||
|             // we need to encode each period separately
 | ||||
|             $parts = explode('.', $string); | ||||
| @@ -114,13 +123,14 @@ class HTMLPurifier_AttrDef_URI_Host extends HTMLPurifier_AttrDef | ||||
|                     } | ||||
|                 } | ||||
|                 $string = implode('.', $new_parts); | ||||
|                 if (preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string)) { | ||||
|                     return $string; | ||||
|                 } | ||||
|             } catch (Exception $e) { | ||||
|                 // XXX error reporting
 | ||||
|             } | ||||
|         } | ||||
|         // Try again
 | ||||
|         if (preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string)) { | ||||
|             return $string; | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
| } | ||||
| @@ -32,8 +32,7 @@ class HTMLPurifier_AttrTransform_ImgRequired extends HTMLPurifier_AttrTransform | ||||
|             if ($src) { | ||||
|                 $alt = $config->get('Attr.DefaultImageAlt'); | ||||
|                 if ($alt === null) { | ||||
|                     // truncate if the alt is too long
 | ||||
|                     $attr['alt'] = substr(basename($attr['src']), 0, 40); | ||||
|                     $attr['alt'] = basename($attr['src']); | ||||
|                 } else { | ||||
|                     $attr['alt'] = $alt; | ||||
|                 } | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user