Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge
This commit is contained in:
		| @@ -2,23 +2,29 @@ | |||||||
|  |  | ||||||
| namespace Zotlabs\Module; | namespace Zotlabs\Module; | ||||||
|  |  | ||||||
| // Import a channel, either by direct file upload or via |  | ||||||
| // connection to original server.  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| require_once('include/zot.php'); | require_once('include/zot.php'); | ||||||
| require_once('include/channel.php'); | require_once('include/channel.php'); | ||||||
| require_once('include/import.php'); | require_once('include/import.php'); | ||||||
| require_once('include/perm_upgrade.php'); | require_once('include/perm_upgrade.php'); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @brief Module for channel import. | ||||||
|  |  * | ||||||
|  |  * Import a channel, either by direct file upload or via | ||||||
|  |  * connection to another server. | ||||||
|  |  */ | ||||||
| class Import extends \Zotlabs\Web\Controller { | class Import extends \Zotlabs\Web\Controller { | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * @brief Import channel into account. | ||||||
|  | 	 * | ||||||
|  | 	 * @param int $account_id | ||||||
|  | 	 */ | ||||||
| 	function import_account($account_id) { | 	function import_account($account_id) { | ||||||
|  |  | ||||||
| 		if(! $account_id){ | 		if(! $account_id){ | ||||||
| 			logger("import_account: No account ID supplied"); | 			logger('No account ID supplied'); | ||||||
| 			return; | 			return; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| @@ -33,11 +39,11 @@ class Import extends \Zotlabs\Web\Controller { | |||||||
| 		$filesize       = intval($_FILES['filename']['size']); | 		$filesize       = intval($_FILES['filename']['size']); | ||||||
| 		$filetype       = $_FILES['filename']['type']; | 		$filetype       = $_FILES['filename']['type']; | ||||||
|  |  | ||||||
|  | 		// import channel from file | ||||||
| 		if($src) { | 		if($src) { | ||||||
|  |  | ||||||
| 			// This is OS specific and could also fail if your tmpdir isn't very large | 			// This is OS specific and could also fail if your tmpdir isn't very | ||||||
| 			// mostly used for Diaspora which exports gzipped files. | 			// large mostly used for Diaspora which exports gzipped files. | ||||||
|  |  | ||||||
| 			if(strpos($filename,'.gz')){ | 			if(strpos($filename,'.gz')){ | ||||||
| 				@rename($src,$src . '.gz'); | 				@rename($src,$src . '.gz'); | ||||||
| @@ -50,12 +56,16 @@ class Import extends \Zotlabs\Web\Controller { | |||||||
| 			unlink($src); | 			unlink($src); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		// import channel from another server | ||||||
| 		if(! $src) { | 		if(! $src) { | ||||||
| 			$old_address = ((x($_REQUEST,'old_address')) ? $_REQUEST['old_address'] : ''); | 			$old_address = ((x($_REQUEST,'old_address')) ? $_REQUEST['old_address'] : ''); | ||||||
| 			if(! $old_address) { | 			if(! $old_address) { | ||||||
| 				logger('mod_import: nothing to import.'); | 				logger('Nothing to import.'); | ||||||
| 				notice( t('Nothing to import.') . EOL); | 				notice( t('Nothing to import.') . EOL); | ||||||
| 				return; | 				return; | ||||||
|  | 			} else if(strpos($old_address, '@')) { | ||||||
|  | 				// if you copy the identity address from your profile page, make it work for convenience | ||||||
|  | 				$old_address = str_replace('@', '@', $old_address); | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			$email    = ((x($_REQUEST,'email'))    ? $_REQUEST['email']    : ''); | 			$email    = ((x($_REQUEST,'email'))    ? $_REQUEST['email']    : ''); | ||||||
| @@ -87,7 +97,7 @@ class Import extends \Zotlabs\Web\Controller { | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		if(! $data) { | 		if(! $data) { | ||||||
| 			logger('mod_import: empty file.'); | 			logger('Empty import file.'); | ||||||
| 			notice( t('Imported file is empty.') . EOL); | 			notice( t('Imported file is empty.') . EOL); | ||||||
| 			return; | 			return; | ||||||
| 		} | 		} | ||||||
| @@ -97,7 +107,6 @@ class Import extends \Zotlabs\Web\Controller { | |||||||
| 	//	logger('import: data: ' . print_r($data,true)); | 	//	logger('import: data: ' . print_r($data,true)); | ||||||
| 	//	print_r($data); | 	//	print_r($data); | ||||||
|  |  | ||||||
| 	 |  | ||||||
| 		if(! array_key_exists('compatibility',$data)) { | 		if(! array_key_exists('compatibility',$data)) { | ||||||
| 			call_hooks('import_foreign_channel_data',$data); | 			call_hooks('import_foreign_channel_data',$data); | ||||||
| 			if($data['handled']) | 			if($data['handled']) | ||||||
| @@ -137,7 +146,6 @@ class Import extends \Zotlabs\Web\Controller { | |||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			$channel = import_channel($data['channel'], $account_id, $seize); | 			$channel = import_channel($data['channel'], $account_id, $seize); | ||||||
| 	 |  | ||||||
| 		} | 		} | ||||||
| 		else { | 		else { | ||||||
| 			$moving  = false; | 			$moving  = false; | ||||||
| @@ -145,22 +153,17 @@ class Import extends \Zotlabs\Web\Controller { | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		if(! $channel) { | 		if(! $channel) { | ||||||
| 			logger('mod_import: channel not found. ', print_r($channel,true)); | 			logger('Channel not found. ', print_r($channel,true)); | ||||||
| 			notice( t('No channel. Import failed.') . EOL); | 			notice( t('No channel. Import failed.') . EOL); | ||||||
| 			return; | 			return; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 	 |  | ||||||
|  |  | ||||||
| 		if(is_array($data['config'])) { | 		if(is_array($data['config'])) { | ||||||
| 			import_config($channel,$data['config']); | 			import_config($channel,$data['config']); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		logger('import step 2'); | 		logger('import step 2'); | ||||||
|  |  | ||||||
| 	 |  | ||||||
|  |  | ||||||
| 	 |  | ||||||
| 		if(array_key_exists('channel',$data)) { | 		if(array_key_exists('channel',$data)) { | ||||||
| 			if($data['photo']) { | 			if($data['photo']) { | ||||||
| 				require_once('include/photo/photo_driver.php'); | 				require_once('include/photo/photo_driver.php'); | ||||||
| @@ -212,7 +215,6 @@ class Import extends \Zotlabs\Web\Controller { | |||||||
| 		logger('import step 5'); | 		logger('import step 5'); | ||||||
|  |  | ||||||
|  |  | ||||||
| 	 |  | ||||||
| 		// import xchans and contact photos | 		// import xchans and contact photos | ||||||
|  |  | ||||||
| 		if(array_key_exists('channel',$data) && $seize) { | 		if(array_key_exists('channel',$data) && $seize) { | ||||||
| @@ -223,7 +225,6 @@ class Import extends \Zotlabs\Web\Controller { | |||||||
| 				dbesc($channel['channel_hash']) | 				dbesc($channel['channel_hash']) | ||||||
| 			); | 			); | ||||||
|  |  | ||||||
|  |  | ||||||
| 			$r = xchan_store_lowlevel( | 			$r = xchan_store_lowlevel( | ||||||
| 				[ | 				[ | ||||||
| 					'xchan_hash'           => $channel['channel_hash'], | 					'xchan_hash'           => $channel['channel_hash'], | ||||||
| @@ -248,7 +249,6 @@ class Import extends \Zotlabs\Web\Controller { | |||||||
| 		logger('import step 6'); | 		logger('import step 6'); | ||||||
|  |  | ||||||
|  |  | ||||||
| 	 |  | ||||||
| 		$xchans = $data['xchan']; | 		$xchans = $data['xchan']; | ||||||
| 		if($xchans) { | 		if($xchans) { | ||||||
| 			foreach($xchans as $xchan) { | 			foreach($xchans as $xchan) { | ||||||
| @@ -357,7 +357,7 @@ class Import extends \Zotlabs\Web\Controller { | |||||||
| 				translate_abook_perms_inbound($channel,$abook_copy); | 				translate_abook_perms_inbound($channel,$abook_copy); | ||||||
|  |  | ||||||
| 				if($abconfig) { | 				if($abconfig) { | ||||||
| 					// @fixme does not handle sync of del_abconfig | 					/// @FIXME does not handle sync of del_abconfig | ||||||
| 					foreach($abconfig as $abc) { | 					foreach($abconfig as $abc) { | ||||||
| 						set_abconfig($channel['channel_id'],$abc['xchan'],$abc['cat'],$abc['k'],$abc['v']); | 						set_abconfig($channel['channel_id'],$abc['xchan'],$abc['cat'],$abc['k'],$abc['v']); | ||||||
| 					} | 					} | ||||||
| @@ -469,12 +469,12 @@ class Import extends \Zotlabs\Web\Controller { | |||||||
| 		change_channel($channel['channel_id']); | 		change_channel($channel['channel_id']); | ||||||
|  |  | ||||||
| 		goaway(z_root() . '/network' ); | 		goaway(z_root() . '/network' ); | ||||||
| 	 |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	 | 	/** | ||||||
|  | 	 * @brief Handle POST action on channel import page. | ||||||
|  | 	 */ | ||||||
| 	function post() { | 	function post() { | ||||||
| 	 |  | ||||||
| 		$account_id = get_account_id(); | 		$account_id = get_account_id(); | ||||||
| 		if(! $account_id) | 		if(! $account_id) | ||||||
| 			return; | 			return; | ||||||
| @@ -482,6 +482,11 @@ class Import extends \Zotlabs\Web\Controller { | |||||||
| 		$this->import_account($account_id); | 		$this->import_account($account_id); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * @brief Generate channel import page. | ||||||
|  | 	 * | ||||||
|  | 	 * @return string with parsed HTML. | ||||||
|  | 	 */ | ||||||
| 	function get() { | 	function get() { | ||||||
|  |  | ||||||
| 		if(! get_account_id()) { | 		if(! get_account_id()) { | ||||||
| @@ -508,7 +513,6 @@ class Import extends \Zotlabs\Web\Controller { | |||||||
| 		)); | 		)); | ||||||
|  |  | ||||||
| 		return $o; | 		return $o; | ||||||
| 	 |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								app/admin.png
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								app/admin.png
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 2.8 KiB | 
| @@ -1,6 +0,0 @@ | |||||||
| version: 1 |  | ||||||
| url: $baseurl/settings/features |  | ||||||
| requires: local_channel |  | ||||||
| name: Features |  | ||||||
| photo: icon:cogs |  | ||||||
| categories: System |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								app/features.png
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								app/features.png
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 8.3 KiB | 
| @@ -1,6 +0,0 @@ | |||||||
| version: 1 |  | ||||||
| url: $baseurl/manage |  | ||||||
| requires: local_channel |  | ||||||
| name: Channel Manager |  | ||||||
| photo: icon:id-card-o |  | ||||||
| categories: Personal |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								app/manage.png
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								app/manage.png
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 7.2 KiB | 
| @@ -1,6 +0,0 @@ | |||||||
| version: 1 |  | ||||||
| url: $baseurl/profile/$nick |  | ||||||
| requires: local_channel |  | ||||||
| name: View Profile |  | ||||||
| photo: icon:user |  | ||||||
| categories: Personal |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								app/profile.png
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								app/profile.png
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 3.5 KiB | 
| @@ -1,6 +0,0 @@ | |||||||
| version: 1 |  | ||||||
| url: $baseurl/settings |  | ||||||
| requires: local_channel |  | ||||||
| name: Settings |  | ||||||
| photo: icon:cog |  | ||||||
| categories: System |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								app/settings.png
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								app/settings.png
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 7.8 KiB | 
| @@ -31,7 +31,8 @@ | |||||||
| 		"sabre/dav" : "~3.2", | 		"sabre/dav" : "~3.2", | ||||||
| 		"michelf/php-markdown" : "^1.7", | 		"michelf/php-markdown" : "^1.7", | ||||||
| 		"pixel418/markdownify": "^2.2", | 		"pixel418/markdownify": "^2.2", | ||||||
| 		"bshaffer/oauth2-server-php": "^1.9" | 		"bshaffer/oauth2-server-php": "^1.9", | ||||||
|  | 		"ezyang/htmlpurifier": "^4.9" | ||||||
| 	}, | 	}, | ||||||
| 	"require-dev" : { | 	"require-dev" : { | ||||||
| 		"php" : ">=7.0", | 		"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", |         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", | ||||||
|         "This file is @generated automatically" |         "This file is @generated automatically" | ||||||
|     ], |     ], | ||||||
|     "content-hash": "9842014a99ac4e654bc7bfd6061d6f60", |     "content-hash": "f1d40dcfbbb2f5364ad55235efaeb5ab", | ||||||
|     "packages": [ |     "packages": [ | ||||||
|         { |         { | ||||||
|             "name": "bshaffer/oauth2-server-php", |             "name": "bshaffer/oauth2-server-php", | ||||||
| @@ -62,6 +62,53 @@ | |||||||
|             ], |             ], | ||||||
|             "time": "2017-01-06T23:20:00+00:00" |             "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", |             "name": "michelf/php-markdown", | ||||||
|             "version": "1.7.0", |             "version": "1.7.0", | ||||||
|   | |||||||
| @@ -121,13 +121,23 @@ function z_input_filter($s,$type = 'text/bbcode',$allow_code = false) { | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * @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) { | 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 |  * @FIXME this function has html output, not bbcode - so safely purify these | ||||||
|  |  * require_once('include/html2bbcode.php'); | ||||||
|  * $s = html2bb_video($s); |  * $s = html2bb_video($s); | ||||||
|  * $s = oembed_html2bbcode($s); |  * $s = oembed_html2bbcode($s); | ||||||
|  */ |  */ | ||||||
| @@ -136,6 +146,15 @@ function purify_html($s, $allow_position = false) { | |||||||
| 	$config->set('Cache.DefinitionImpl', null); | 	$config->set('Cache.DefinitionImpl', null); | ||||||
| 	$config->set('Attr.EnableID', true); | 	$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. | 	//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. | 	//In this way members which do not have allowcode set can still use the built-in js libs in webpages to some extent. | ||||||
|  |  | ||||||
| @@ -273,7 +292,6 @@ function purify_html($s, $allow_position = false) { | |||||||
| 			new HTMLPurifier_AttrDef_CSS_Length(), | 			new HTMLPurifier_AttrDef_CSS_Length(), | ||||||
| 			new HTMLPurifier_AttrDef_CSS_Percentage() | 			new HTMLPurifier_AttrDef_CSS_Percentage() | ||||||
| 		)); | 		)); | ||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	$purifier = new HTMLPurifier($config); | 	$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($html5elements, purify_html($html5elements)); | ||||||
| 		$this->assertEquals('<button>button label</button>', purify_html('<button>button label</button>')); | 		$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 | 		// 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('<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>')); | 		$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 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('a b', purify_html('a b')); | ||||||
| 		$this->assertEquals('ä ä € €', purify_html('ä ä € €')); | 		$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() { | 	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); | $baseDir = dirname($vendorDir); | ||||||
|  |  | ||||||
| return array( | 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', |     'Hubzilla\\Import\\Import' => $baseDir . '/include/Import/Importer.php', | ||||||
|     'Markdownify\\Converter' => $vendorDir . '/pixel418/markdownify/src/Converter.php', |     'Markdownify\\Converter' => $vendorDir . '/pixel418/markdownify/src/Converter.php', | ||||||
|     'Markdownify\\ConverterExtra' => $vendorDir . '/pixel418/markdownify/src/ConverterExtra.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', |     '3569eecfeed3bcf0bad3c998a494ecb8' => $vendorDir . '/sabre/xml/lib/Deserializer/functions.php', | ||||||
|     '93aa591bc4ca510c520999e34229ee79' => $vendorDir . '/sabre/xml/lib/Serializer/functions.php', |     '93aa591bc4ca510c520999e34229ee79' => $vendorDir . '/sabre/xml/lib/Serializer/functions.php', | ||||||
|     'ebdb698ed4152ae445614b69b5e4bb6a' => $vendorDir . '/sabre/http/lib/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( | return array( | ||||||
|     'OAuth2' => array($vendorDir . '/bshaffer/oauth2-server-php/src'), |     'OAuth2' => array($vendorDir . '/bshaffer/oauth2-server-php/src'), | ||||||
|     'Michelf' => array($vendorDir . '/michelf/php-markdown'), |     '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', |         '3569eecfeed3bcf0bad3c998a494ecb8' => __DIR__ . '/..' . '/sabre/xml/lib/Deserializer/functions.php', | ||||||
|         '93aa591bc4ca510c520999e34229ee79' => __DIR__ . '/..' . '/sabre/xml/lib/Serializer/functions.php', |         '93aa591bc4ca510c520999e34229ee79' => __DIR__ . '/..' . '/sabre/xml/lib/Serializer/functions.php', | ||||||
|         'ebdb698ed4152ae445614b69b5e4bb6a' => __DIR__ . '/..' . '/sabre/http/lib/functions.php', |         'ebdb698ed4152ae445614b69b5e4bb6a' => __DIR__ . '/..' . '/sabre/http/lib/functions.php', | ||||||
|  |         '2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php', | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|     public static $prefixLengthsPsr4 = array ( |     public static $prefixLengthsPsr4 = array ( | ||||||
| @@ -125,9 +126,250 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d | |||||||
|                 0 => __DIR__ . '/..' . '/michelf/php-markdown', |                 0 => __DIR__ . '/..' . '/michelf/php-markdown', | ||||||
|             ), |             ), | ||||||
|         ), |         ), | ||||||
|  |         'H' =>  | ||||||
|  |         array ( | ||||||
|  |             'HTMLPurifier' =>  | ||||||
|  |             array ( | ||||||
|  |                 0 => __DIR__ . '/..' . '/ezyang/htmlpurifier/library', | ||||||
|  |             ), | ||||||
|  |         ), | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|     public static $classMap = array ( |     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', |         'Hubzilla\\Import\\Import' => __DIR__ . '/../..' . '/include/Import/Importer.php', | ||||||
|         'Markdownify\\Converter' => __DIR__ . '/..' . '/pixel418/markdownify/src/Converter.php', |         'Markdownify\\Converter' => __DIR__ . '/..' . '/pixel418/markdownify/src/Converter.php', | ||||||
|         'Markdownify\\ConverterExtra' => __DIR__ . '/..' . '/pixel418/markdownify/src/ConverterExtra.php', |         'Markdownify\\ConverterExtra' => __DIR__ . '/..' . '/pixel418/markdownify/src/ConverterExtra.php', | ||||||
|   | |||||||
							
								
								
									
										49
									
								
								vendor/composer/installed.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										49
									
								
								vendor/composer/installed.json
									
									
									
									
										vendored
									
									
								
							| @@ -693,5 +693,54 @@ | |||||||
|             "oauth", |             "oauth", | ||||||
|             "oauth2" |             "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 | 1.  Compatibility | ||||||
| 
 | 
 | ||||||
| HTML Purifier is PHP 5 only, and is actively tested from PHP 5.0.5 and | HTML Purifier is PHP 5 and PHP 7, and is actively tested from PHP 5.0.5 | ||||||
| up. It has no core dependencies with other libraries. PHP | and up. It has no core dependencies with other libraries. | ||||||
| 4 support was deprecated on December 31, 2007 with HTML Purifier 3.0.0. |  | ||||||
| HTML Purifier is not compatible with zend.ze1_compatibility_mode. |  | ||||||
| 
 | 
 | ||||||
| These optional extensions can enhance the capabilities of HTML Purifier: | 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: | These optional libraries can enhance the capabilities of HTML Purifier: | ||||||
| 
 | 
 | ||||||
|     * CSSTidy : Clean CSS stylesheets using %Core.ExtractStyleBlocks |     * 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 |     * Net_IDNA2 (PEAR) : IRI support using %Core.EnableIDNA | ||||||
|  |         Note: This is not necessary for PHP 5.3 or later | ||||||
| 
 | 
 | ||||||
| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ||||||
| 2.  Reconnaissance | 2.  Reconnaissance | ||||||
| @@ -305,11 +306,9 @@ appropriate permissions using: | |||||||
|     chmod -R 0755 HTMLPurifier/DefinitionCache/Serializer |     chmod -R 0755 HTMLPurifier/DefinitionCache/Serializer | ||||||
| 
 | 
 | ||||||
| If the above command doesn't work, you may need to assign write permissions | 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 | to group: | ||||||
| not recommended since it means any other user can write files in the |  | ||||||
| directory. Use: |  | ||||||
| 
 | 
 | ||||||
|     chmod -R 0777 HTMLPurifier/DefinitionCache/Serializer |     chmod -R 0775 HTMLPurifier/DefinitionCache/Serializer | ||||||
| 
 | 
 | ||||||
| You can also chmod files via your FTP client; this option | You can also chmod files via your FTP client; this option | ||||||
| is usually accessible by right clicking the corresponding directory and | 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 |     . 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 | 4.6.0, released 2013-11-30 | ||||||
| # Secure URI munge hashing algorithm has changed to hash_hmac("sha256", $url, $secret). | # Secure URI munge hashing algorithm has changed to hash_hmac("sha256", $url, $secret). | ||||||
|   Please update any verification scripts you may have. |   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 |  * 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. |  * FILE, changes will be overwritten the next time the script is run. | ||||||
|  * |  * | ||||||
|  * @version 4.6.0 |  * @version 4.9.2 | ||||||
|  * |  * | ||||||
|  * @warning |  * @warning | ||||||
|  *      You must *not* include any other HTML Purifier files before this file, |  *      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/SafeParam.php'; | ||||||
| require 'HTMLPurifier/AttrTransform/ScriptRequired.php'; | require 'HTMLPurifier/AttrTransform/ScriptRequired.php'; | ||||||
| require 'HTMLPurifier/AttrTransform/TargetBlank.php'; | require 'HTMLPurifier/AttrTransform/TargetBlank.php'; | ||||||
|  | require 'HTMLPurifier/AttrTransform/TargetNoopener.php'; | ||||||
|  | require 'HTMLPurifier/AttrTransform/TargetNoreferrer.php'; | ||||||
| require 'HTMLPurifier/AttrTransform/Textarea.php'; | require 'HTMLPurifier/AttrTransform/Textarea.php'; | ||||||
| require 'HTMLPurifier/ChildDef/Chameleon.php'; | require 'HTMLPurifier/ChildDef/Chameleon.php'; | ||||||
| require 'HTMLPurifier/ChildDef/Custom.php'; | require 'HTMLPurifier/ChildDef/Custom.php'; | ||||||
| @@ -175,6 +177,8 @@ require 'HTMLPurifier/HTMLModule/StyleAttribute.php'; | |||||||
| require 'HTMLPurifier/HTMLModule/Tables.php'; | require 'HTMLPurifier/HTMLModule/Tables.php'; | ||||||
| require 'HTMLPurifier/HTMLModule/Target.php'; | require 'HTMLPurifier/HTMLModule/Target.php'; | ||||||
| require 'HTMLPurifier/HTMLModule/TargetBlank.php'; | require 'HTMLPurifier/HTMLModule/TargetBlank.php'; | ||||||
|  | require 'HTMLPurifier/HTMLModule/TargetNoopener.php'; | ||||||
|  | require 'HTMLPurifier/HTMLModule/TargetNoreferrer.php'; | ||||||
| require 'HTMLPurifier/HTMLModule/Text.php'; | require 'HTMLPurifier/HTMLModule/Text.php'; | ||||||
| require 'HTMLPurifier/HTMLModule/Tidy.php'; | require 'HTMLPurifier/HTMLModule/Tidy.php'; | ||||||
| require 'HTMLPurifier/HTMLModule/XMLCommonAttributes.php'; | require 'HTMLPurifier/HTMLModule/XMLCommonAttributes.php'; | ||||||
| @@ -225,5 +229,6 @@ require 'HTMLPurifier/URIScheme/https.php'; | |||||||
| require 'HTMLPurifier/URIScheme/mailto.php'; | require 'HTMLPurifier/URIScheme/mailto.php'; | ||||||
| require 'HTMLPurifier/URIScheme/news.php'; | require 'HTMLPurifier/URIScheme/news.php'; | ||||||
| require 'HTMLPurifier/URIScheme/nntp.php'; | require 'HTMLPurifier/URIScheme/nntp.php'; | ||||||
|  | require 'HTMLPurifier/URIScheme/tel.php'; | ||||||
| require 'HTMLPurifier/VarParser/Flexible.php'; | require 'HTMLPurifier/VarParser/Flexible.php'; | ||||||
| require 'HTMLPurifier/VarParser/Native.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 |     Copyright (C) 2006-2008 Edward Z. Yang | ||||||
| 
 | 
 | ||||||
|     This library is free software; you can redistribute it and/or |     This library is free software; you can redistribute it and/or | ||||||
| @@ -58,12 +58,12 @@ class HTMLPurifier | |||||||
|      * Version of HTML Purifier. |      * Version of HTML Purifier. | ||||||
|      * @type string |      * @type string | ||||||
|      */ |      */ | ||||||
|     public $version = '4.6.0'; |     public $version = '4.9.2'; | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * Constant with version of HTML Purifier. |      * Constant with version of HTML Purifier. | ||||||
|      */ |      */ | ||||||
|     const VERSION = '4.6.0'; |     const VERSION = '4.9.2'; | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * Global configuration object. |      * Global configuration object. | ||||||
| @@ -104,7 +104,7 @@ class HTMLPurifier | |||||||
|     /** |     /** | ||||||
|      * Initializes the purifier. |      * 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 |      *                for all instances of the purifier, if omitted, a default | ||||||
|      *                configuration is supplied (which can be overridden on a |      *                configuration is supplied (which can be overridden on a | ||||||
|      *                per-use basis). |      *                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/SafeParam.php'; | ||||||
| require_once $__dir . '/HTMLPurifier/AttrTransform/ScriptRequired.php'; | require_once $__dir . '/HTMLPurifier/AttrTransform/ScriptRequired.php'; | ||||||
| require_once $__dir . '/HTMLPurifier/AttrTransform/TargetBlank.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/AttrTransform/Textarea.php'; | ||||||
| require_once $__dir . '/HTMLPurifier/ChildDef/Chameleon.php'; | require_once $__dir . '/HTMLPurifier/ChildDef/Chameleon.php'; | ||||||
| require_once $__dir . '/HTMLPurifier/ChildDef/Custom.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/Tables.php'; | ||||||
| require_once $__dir . '/HTMLPurifier/HTMLModule/Target.php'; | require_once $__dir . '/HTMLPurifier/HTMLModule/Target.php'; | ||||||
| require_once $__dir . '/HTMLPurifier/HTMLModule/TargetBlank.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/Text.php'; | ||||||
| require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy.php'; | require_once $__dir . '/HTMLPurifier/HTMLModule/Tidy.php'; | ||||||
| require_once $__dir . '/HTMLPurifier/HTMLModule/XMLCommonAttributes.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/mailto.php'; | ||||||
| require_once $__dir . '/HTMLPurifier/URIScheme/news.php'; | require_once $__dir . '/HTMLPurifier/URIScheme/news.php'; | ||||||
| require_once $__dir . '/HTMLPurifier/URIScheme/nntp.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/Flexible.php'; | ||||||
| require_once $__dir . '/HTMLPurifier/VarParser/Native.php'; | require_once $__dir . '/HTMLPurifier/VarParser/Native.php'; | ||||||
| @@ -19,8 +19,8 @@ class HTMLPurifier_Arborize | |||||||
|             if ($token instanceof HTMLPurifier_Token_End) { |             if ($token instanceof HTMLPurifier_Token_End) { | ||||||
|                 $token->start = null; // [MUT]
 |                 $token->start = null; // [MUT]
 | ||||||
|                 $r = array_pop($stack); |                 $r = array_pop($stack); | ||||||
|                 assert($r->name === $token->name); |                 //assert($r->name === $token->name);
 | ||||||
|                 assert(empty($token->attr)); |                 //assert(empty($token->attr));
 | ||||||
|                 $r->endCol = $token->col; |                 $r->endCol = $token->col; | ||||||
|                 $r->endLine = $token->line; |                 $r->endLine = $token->line; | ||||||
|                 $r->endArmor = $token->armor; |                 $r->endArmor = $token->armor; | ||||||
| @@ -32,7 +32,7 @@ class HTMLPurifier_Arborize | |||||||
|                 $stack[] = $node; |                 $stack[] = $node; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         assert(count($stack) == 1); |         //assert(count($stack) == 1);
 | ||||||
|         return $stack[0]; |         return $stack[0]; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @@ -21,6 +21,11 @@ class HTMLPurifier_AttrCollections | |||||||
|      * @param HTMLPurifier_HTMLModule[] $modules Hash array of HTMLPurifier_HTMLModule members |      * @param HTMLPurifier_HTMLModule[] $modules Hash array of HTMLPurifier_HTMLModule members | ||||||
|      */ |      */ | ||||||
|     public function __construct($attr_types, $modules) |     public function __construct($attr_types, $modules) | ||||||
|  |     { | ||||||
|  |         $this->doConstruct($attr_types, $modules); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public function doConstruct($attr_types, $modules) | ||||||
|     { |     { | ||||||
|         // load extensions from the modules
 |         // load extensions from the modules
 | ||||||
|         foreach ($modules as $module) { |         foreach ($modules as $module) { | ||||||
| @@ -86,7 +86,13 @@ abstract class HTMLPurifier_AttrDef | |||||||
|      */ |      */ | ||||||
|     protected function mungeRgb($string) |     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); |         $css = $this->parseCDATA($css); | ||||||
| 
 | 
 | ||||||
|         $definition = $config->getCSSDefinition(); |         $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(); |         $propvalues = array(); | ||||||
|  |         $new_declarations = ''; | ||||||
| 
 | 
 | ||||||
|         /** |         /** | ||||||
|          * Name of the current CSS property being validated. |          * Name of the current CSS property being validated. | ||||||
| @@ -83,7 +110,11 @@ class HTMLPurifier_AttrDef_CSS extends HTMLPurifier_AttrDef | |||||||
|             if ($result === false) { |             if ($result === false) { | ||||||
|                 continue; |                 continue; | ||||||
|             } |             } | ||||||
|             $propvalues[$property] = $result; |             if ($allow_duplicates) { | ||||||
|  |                 $new_declarations .= "$property:$result;"; | ||||||
|  |             } else { | ||||||
|  |                 $propvalues[$property] = $result; | ||||||
|  |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         $context->destroy('CurrentCSSProperty'); |         $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
 |         // slightly inefficient, but it's the only way of getting rid of
 | ||||||
|         // duplicates. Perhaps config to optimize it, but not now.
 |         // duplicates. Perhaps config to optimize it, but not now.
 | ||||||
| 
 | 
 | ||||||
|         $new_declarations = ''; |  | ||||||
|         foreach ($propvalues as $prop => $value) { |         foreach ($propvalues as $prop => $value) { | ||||||
|             $new_declarations .= "$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) |     public function validate($string, $config, $context) | ||||||
|     { |     { | ||||||
|         $string = $this->parseCDATA($string); |         $string = $this->mungeRgb($this->parseCDATA($string)); | ||||||
|         if ($string === '') { |         if ($string === '') { | ||||||
|             return false; |             return false; | ||||||
|         } |         } | ||||||
| @@ -33,6 +33,9 @@ class HTMLPurifier_AttrDef_CSS_URI extends HTMLPurifier_AttrDef_URI | |||||||
|             return false; |             return false; | ||||||
|         } |         } | ||||||
|         $uri_string = substr($uri_string, 4); |         $uri_string = substr($uri_string, 4); | ||||||
|  |         if (strlen($uri_string) == 0) { | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|         $new_length = strlen($uri_string) - 1; |         $new_length = strlen($uri_string) - 1; | ||||||
|         if ($uri_string[$new_length] != ')') { |         if ($uri_string[$new_length] != ')') { | ||||||
|             return false; |             return false; | ||||||
| @@ -32,9 +32,6 @@ class HTMLPurifier_AttrDef_HTML_Bool extends HTMLPurifier_AttrDef | |||||||
|      */ |      */ | ||||||
|     public function validate($string, $config, $context) |     public function validate($string, $config, $context) | ||||||
|     { |     { | ||||||
|         if (empty($string)) { |  | ||||||
|             return false; |  | ||||||
|         } |  | ||||||
|         return $this->name; |         return $this->name; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @@ -72,18 +72,26 @@ class HTMLPurifier_AttrDef_HTML_ID extends HTMLPurifier_AttrDef | |||||||
| 
 | 
 | ||||||
|         // we purposely avoid using regex, hopefully this is faster
 |         // we purposely avoid using regex, hopefully this is faster
 | ||||||
| 
 | 
 | ||||||
|         if (ctype_alpha($id)) { |         if ($config->get('Attr.ID.HTML5') === true) { | ||||||
|             $result = true; |             if (preg_match('/[\t\n\x0b\x0c ]/', $id)) { | ||||||
|         } else { |  | ||||||
|             if (!ctype_alpha(@$id[0])) { |  | ||||||
|                 return false; |                 return false; | ||||||
|             } |             } | ||||||
|             // primitive style of regexps, I suppose
 |         } else { | ||||||
|             $trim = trim( |             if (ctype_alpha($id)) { | ||||||
|                 $id, |                 // OK
 | ||||||
|                 'A..Za..z0..9:-._' |             } else { | ||||||
|             ); |                 if (!ctype_alpha(@$id[0])) { | ||||||
|             $result = ($trim === ''); |                     return false; | ||||||
|  |                 } | ||||||
|  |                 // primitive style of regexps, I suppose
 | ||||||
|  |                 $trim = trim( | ||||||
|  |                     $id, | ||||||
|  |                     'A..Za..z0..9:-._' | ||||||
|  |                 ); | ||||||
|  |                 if ($trim !== '') { | ||||||
|  |                     return false; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         $regexp = $config->get('Attr.IDBlacklistRegexp'); |         $regexp = $config->get('Attr.IDBlacklistRegexp'); | ||||||
| @@ -91,14 +99,14 @@ class HTMLPurifier_AttrDef_HTML_ID extends HTMLPurifier_AttrDef | |||||||
|             return false; |             return false; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if (!$this->selector && $result) { |         if (!$this->selector) { | ||||||
|             $id_accumulator->add($id); |             $id_accumulator->add($id); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // if no change was made to the ID, return the result
 |         // if no change was made to the ID, return the result
 | ||||||
|         // else, return the new id if stripping whitespace made it
 |         // else, return the new id if stripping whitespace made it
 | ||||||
|         //     valid, or return false.
 |         //     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.
 |         // fairly well supported.
 | ||||||
|         $underscore = $config->get('Core.AllowHostnameUnderscore') ? '_' : ''; |         $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:
 |         // The productions describing this are:
 | ||||||
|         $a   = '[a-z]';     // alpha
 |         $a   = '[a-z]';     // alpha
 | ||||||
|         $an  = '[a-z0-9]';  // alphanum
 |         $an  = '[a-z0-9]';  // alphanum
 | ||||||
|         $and = "[a-z0-9-$underscore]"; // alphanum | "-"
 |         $and = "[a-z0-9-$underscore]"; // alphanum | "-"
 | ||||||
|         // domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum
 |         // domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum
 | ||||||
|         $domainlabel = "$an($and*$an)?"; |         $domainlabel = "$an(?:$and*$an)?"; | ||||||
|         // toplabel    = alpha | alpha *( alphanum | "-" ) alphanum
 |         // AMENDED as per RFC 3696
 | ||||||
|         $toplabel = "$a($and*$an)?"; |         // toplabel    = alphanum | alphanum *( alphanum | "-" ) alphanum
 | ||||||
|  |         //      side condition: not all numeric
 | ||||||
|  |         $toplabel = "$an(?:$and*$an)?"; | ||||||
|         // hostname    = *( domainlabel "." ) toplabel [ "." ]
 |         // hostname    = *( domainlabel "." ) toplabel [ "." ]
 | ||||||
|         if (preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string)) { |         if (preg_match("/^(?:$domainlabel\.)*($toplabel)\.?$/i", $string, $matches)) { | ||||||
|             return $string; |             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
 |         // If we have Net_IDNA2 support, we can support IRIs by
 | ||||||
|         // punycoding them. (This is the most portable thing to do,
 |         // punycoding them. (This is the most portable thing to do,
 | ||||||
|         // since otherwise we have to assume browsers support
 |         // since otherwise we have to assume browsers support
 | ||||||
| 
 |         } elseif ($config->get('Core.EnableIDNA')) { | ||||||
|         if ($config->get('Core.EnableIDNA')) { |  | ||||||
|             $idna = new Net_IDNA2(array('encoding' => 'utf8', 'overlong' => false, 'strict' => true)); |             $idna = new Net_IDNA2(array('encoding' => 'utf8', 'overlong' => false, 'strict' => true)); | ||||||
|             // we need to encode each period separately
 |             // we need to encode each period separately
 | ||||||
|             $parts = explode('.', $string); |             $parts = explode('.', $string); | ||||||
| @@ -114,13 +123,14 @@ class HTMLPurifier_AttrDef_URI_Host extends HTMLPurifier_AttrDef | |||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|                 $string = implode('.', $new_parts); |                 $string = implode('.', $new_parts); | ||||||
|                 if (preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string)) { |  | ||||||
|                     return $string; |  | ||||||
|                 } |  | ||||||
|             } catch (Exception $e) { |             } catch (Exception $e) { | ||||||
|                 // XXX error reporting
 |                 // XXX error reporting
 | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |         // Try again
 | ||||||
|  |         if (preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string)) { | ||||||
|  |             return $string; | ||||||
|  |         } | ||||||
|         return false; |         return false; | ||||||
|     } |     } | ||||||
| } | } | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user