From 02b6ced8955cd5b773e958cd12f586b69933b84f Mon Sep 17 00:00:00 2001 From: Manuel Hiebel Date: Tue, 5 Sep 2023 22:16:29 +0200 Subject: Update simplepie to try to fix mga#32236 --- lib/simplepie/autoloader.php | 2 + lib/simplepie/library/SimplePie.php | 42 +++++++++++---- lib/simplepie/library/SimplePie/Author.php | 2 + lib/simplepie/library/SimplePie/Cache.php | 2 + lib/simplepie/library/SimplePie/Cache/Base.php | 2 + lib/simplepie/library/SimplePie/Cache/DB.php | 2 + lib/simplepie/library/SimplePie/Cache/File.php | 2 + lib/simplepie/library/SimplePie/Cache/Memcache.php | 2 + .../library/SimplePie/Cache/Memcached.php | 2 + lib/simplepie/library/SimplePie/Cache/MySQL.php | 4 +- lib/simplepie/library/SimplePie/Cache/Redis.php | 4 +- lib/simplepie/library/SimplePie/Caption.php | 2 + lib/simplepie/library/SimplePie/Category.php | 3 +- .../library/SimplePie/Content/Type/Sniffer.php | 2 + lib/simplepie/library/SimplePie/Copyright.php | 2 + lib/simplepie/library/SimplePie/Credit.php | 2 + lib/simplepie/library/SimplePie/Enclosure.php | 9 +++- lib/simplepie/library/SimplePie/Exception.php | 4 +- lib/simplepie/library/SimplePie/File.php | 4 +- lib/simplepie/library/SimplePie/HTTP/Parser.php | 12 +++-- lib/simplepie/library/SimplePie/IRI.php | 2 + lib/simplepie/library/SimplePie/Item.php | 2 + lib/simplepie/library/SimplePie/Locator.php | 3 ++ lib/simplepie/library/SimplePie/Misc.php | 12 +++++ lib/simplepie/library/SimplePie/Net/IPv6.php | 2 + lib/simplepie/library/SimplePie/Parse/Date.php | 2 + lib/simplepie/library/SimplePie/Parser.php | 2 + lib/simplepie/library/SimplePie/Rating.php | 2 + lib/simplepie/library/SimplePie/Registry.php | 5 +- lib/simplepie/library/SimplePie/Restriction.php | 2 + lib/simplepie/library/SimplePie/Sanitize.php | 60 ++++++++++++++++++++-- lib/simplepie/library/SimplePie/Source.php | 2 + .../library/SimplePie/XML/Declaration/Parser.php | 2 + lib/simplepie/library/SimplePie/gzdecode.php | 2 + 34 files changed, 181 insertions(+), 25 deletions(-) diff --git a/lib/simplepie/autoloader.php b/lib/simplepie/autoloader.php index e42f07b3a..bf34a7003 100644 --- a/lib/simplepie/autoloader.php +++ b/lib/simplepie/autoloader.php @@ -58,6 +58,8 @@ if (!class_exists('SimplePie')) */ class SimplePie_Autoloader { + protected $path; + /** * Constructor */ diff --git a/lib/simplepie/library/SimplePie.php b/lib/simplepie/library/SimplePie.php index d4c2f0f1d..2ae78c359 100755 --- a/lib/simplepie/library/SimplePie.php +++ b/lib/simplepie/library/SimplePie.php @@ -33,7 +33,7 @@ * POSSIBILITY OF SUCH DAMAGE. * * @package SimplePie - * @version 1.5.6 + * @version 1.6.0 * @copyright 2004-2017 Ryan Parman, Sam Sneddon, Ryan McCue * @author Ryan Parman * @author Sam Sneddon @@ -50,7 +50,7 @@ define('SIMPLEPIE_NAME', 'SimplePie'); /** * SimplePie Version */ -define('SIMPLEPIE_VERSION', '1.5.6'); +define('SIMPLEPIE_VERSION', '1.6.0'); /** * SimplePie Build @@ -650,6 +650,13 @@ class SimplePie */ public $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'); + /** + * @var array Stores the default attributes to be renamed by rename_attributes(). + * @see SimplePie::rename_attributes() + * @access private + */ + public $rename_attributes = array(); + /** * @var bool Should we throw exceptions, or use the old-style error property? * @access private @@ -1223,6 +1230,15 @@ class SimplePie $this->sanitize->encode_instead_of_strip($enable); } + public function rename_attributes($attribs = '') + { + if ($attribs === '') + { + $attribs = $this->rename_attributes; + } + $this->sanitize->rename_attributes($attribs); + } + public function strip_attributes($attribs = '') { if ($attribs === '') @@ -1785,7 +1801,7 @@ class SimplePie } /** - * Get the error message for the occured error + * Get the error message for the occurred error * * @return string|array Error message, or array of messages for multifeeds */ @@ -2199,7 +2215,7 @@ class SimplePie */ public function get_base($element = array()) { - if (!($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION) && !empty($element['xml_base_explicit']) && isset($element['xml_base'])) + if (!empty($element['xml_base_explicit']) && isset($element['xml_base'])) { return $element['xml_base']; } @@ -2647,13 +2663,19 @@ class SimplePie } } - if (isset($this->data['headers']['link']) && - preg_match('/<([^>]+)>; rel='.preg_quote($rel).'/', - $this->data['headers']['link'], $match)) + if (isset($this->data['headers']['link'])) { - return array($match[1]); + $link_headers = $this->data['headers']['link']; + if (is_string($link_headers)) { + $link_headers = array($link_headers); + } + $matches = preg_filter('/<([^>]+)>; rel='.preg_quote($rel).'/', '$1', $link_headers); + if (!empty($matches)) { + return $matches; + } } - else if (isset($this->data['links'][$rel])) + + if (isset($this->data['links'][$rel])) { return $this->data['links'][$rel]; } @@ -3310,3 +3332,5 @@ class SimplePie } } } + +class_alias('SimplePie', 'SimplePie\SimplePie', false); diff --git a/lib/simplepie/library/SimplePie/Author.php b/lib/simplepie/library/SimplePie/Author.php index 563932f4c..3baadee62 100644 --- a/lib/simplepie/library/SimplePie/Author.php +++ b/lib/simplepie/library/SimplePie/Author.php @@ -147,3 +147,5 @@ class SimplePie_Author return null; } } + +class_alias('SimplePie_Author', 'SimplePie\Author', false); diff --git a/lib/simplepie/library/SimplePie/Cache.php b/lib/simplepie/library/SimplePie/Cache.php index 9c5577d95..88d811660 100644 --- a/lib/simplepie/library/SimplePie/Cache.php +++ b/lib/simplepie/library/SimplePie/Cache.php @@ -132,3 +132,5 @@ class SimplePie_Cache return $params; } } + +class_alias('SimplePie_Cache', 'SimplePie\Cache', false); diff --git a/lib/simplepie/library/SimplePie/Cache/Base.php b/lib/simplepie/library/SimplePie/Cache/Base.php index 522ff7e10..29eb0594b 100644 --- a/lib/simplepie/library/SimplePie/Cache/Base.php +++ b/lib/simplepie/library/SimplePie/Cache/Base.php @@ -111,3 +111,5 @@ interface SimplePie_Cache_Base */ public function unlink(); } + +class_alias('SimplePie_Cache_Base', 'SimplePie\Cache\Base', false); diff --git a/lib/simplepie/library/SimplePie/Cache/DB.php b/lib/simplepie/library/SimplePie/Cache/DB.php index 74d57b8da..3dca8e5db 100644 --- a/lib/simplepie/library/SimplePie/Cache/DB.php +++ b/lib/simplepie/library/SimplePie/Cache/DB.php @@ -134,3 +134,5 @@ abstract class SimplePie_Cache_DB implements SimplePie_Cache_Base return array(serialize($data->data), $items_by_id); } } + +class_alias('SimplePie_Cache_DB', 'SimplePie\Cache\DB', false); diff --git a/lib/simplepie/library/SimplePie/Cache/File.php b/lib/simplepie/library/SimplePie/Cache/File.php index 03758e923..db30e7a0f 100644 --- a/lib/simplepie/library/SimplePie/Cache/File.php +++ b/lib/simplepie/library/SimplePie/Cache/File.php @@ -162,3 +162,5 @@ class SimplePie_Cache_File implements SimplePie_Cache_Base return false; } } + +class_alias('SimplePie_Cache_File', 'SimplePie\Cache\File', false); diff --git a/lib/simplepie/library/SimplePie/Cache/Memcache.php b/lib/simplepie/library/SimplePie/Cache/Memcache.php index caf785275..2cc37f907 100644 --- a/lib/simplepie/library/SimplePie/Cache/Memcache.php +++ b/lib/simplepie/library/SimplePie/Cache/Memcache.php @@ -178,3 +178,5 @@ class SimplePie_Cache_Memcache implements SimplePie_Cache_Base return $this->cache->delete($this->name, 0); } } + +class_alias('SimplePie_Cache_Memcache', 'SimplePie\Cache\Memcache', false); diff --git a/lib/simplepie/library/SimplePie/Cache/Memcached.php b/lib/simplepie/library/SimplePie/Cache/Memcached.php index 0b40d87c8..32a53eb7b 100755 --- a/lib/simplepie/library/SimplePie/Cache/Memcached.php +++ b/lib/simplepie/library/SimplePie/Cache/Memcached.php @@ -164,3 +164,5 @@ class SimplePie_Cache_Memcached implements SimplePie_Cache_Base return false; } } + +class_alias('SimplePie_Cache_Memcached', 'SimplePie\Cache\Memcached', false); diff --git a/lib/simplepie/library/SimplePie/Cache/MySQL.php b/lib/simplepie/library/SimplePie/Cache/MySQL.php index a684eb833..d21e2b6e4 100644 --- a/lib/simplepie/library/SimplePie/Cache/MySQL.php +++ b/lib/simplepie/library/SimplePie/Cache/MySQL.php @@ -278,7 +278,7 @@ class SimplePie_Cache_MySQL extends SimplePie_Cache_DB $query->bindValue(':data', serialize($data)); $query->bindValue(':time', time()); $query->bindValue(':feed', $this->id); - if ($this->execute()) + if ($query->execute()) { return true; } @@ -438,3 +438,5 @@ class SimplePie_Cache_MySQL extends SimplePie_Cache_DB return $query->execute() && $query2->execute(); } } + +class_alias('SimplePie_Cache_MySQL', 'SimplePie\Cache\MySQL', false); diff --git a/lib/simplepie/library/SimplePie/Cache/Redis.php b/lib/simplepie/library/SimplePie/Cache/Redis.php index dbc88e829..82d759b01 100644 --- a/lib/simplepie/library/SimplePie/Cache/Redis.php +++ b/lib/simplepie/library/SimplePie/Cache/Redis.php @@ -152,7 +152,7 @@ class SimplePie_Cache_Redis implements SimplePie_Cache_Base { if ($data !== false) { $return = $this->cache->set($this->name, $data); if ($this->options['expire']) { - return $this->cache->expire($this->name, $this->ttl); + return $this->cache->expire($this->name, $this->options['expire']); } return $return; } @@ -170,3 +170,5 @@ class SimplePie_Cache_Redis implements SimplePie_Cache_Base { } } + +class_alias('SimplePie_Cache_Redis', 'SimplePie\Cache\Redis', false); diff --git a/lib/simplepie/library/SimplePie/Caption.php b/lib/simplepie/library/SimplePie/Caption.php index 3d7bfdd71..355ab52f3 100644 --- a/lib/simplepie/library/SimplePie/Caption.php +++ b/lib/simplepie/library/SimplePie/Caption.php @@ -196,3 +196,5 @@ class SimplePie_Caption return null; } } + +class_alias('SimplePie_Caption', 'SimplePie\Caption', false); diff --git a/lib/simplepie/library/SimplePie/Category.php b/lib/simplepie/library/SimplePie/Category.php index e4dabed8b..02cb76482 100644 --- a/lib/simplepie/library/SimplePie/Category.php +++ b/lib/simplepie/library/SimplePie/Category.php @@ -79,7 +79,7 @@ class SimplePie_Category /** * Category type - * + * * category for * subject for * @@ -161,3 +161,4 @@ class SimplePie_Category } } +class_alias('SimplePie_Category', 'SimplePie\Category', false); diff --git a/lib/simplepie/library/SimplePie/Content/Type/Sniffer.php b/lib/simplepie/library/SimplePie/Content/Type/Sniffer.php index 027e131ef..b3a8cf378 100644 --- a/lib/simplepie/library/SimplePie/Content/Type/Sniffer.php +++ b/lib/simplepie/library/SimplePie/Content/Type/Sniffer.php @@ -316,3 +316,5 @@ class SimplePie_Content_Type_Sniffer return 'text/html'; } } + +class_alias('SimplePie_Content_Type_Sniffer', 'SimplePie\Content\Type\Sniffer', false); diff --git a/lib/simplepie/library/SimplePie/Copyright.php b/lib/simplepie/library/SimplePie/Copyright.php index 92f9b0947..e043ced8b 100644 --- a/lib/simplepie/library/SimplePie/Copyright.php +++ b/lib/simplepie/library/SimplePie/Copyright.php @@ -122,3 +122,5 @@ class SimplePie_Copyright return null; } } + +class_alias('SimplePie_Copyright', 'SimplePie\Copyright', false); diff --git a/lib/simplepie/library/SimplePie/Credit.php b/lib/simplepie/library/SimplePie/Credit.php index d6ff07eba..347902e02 100644 --- a/lib/simplepie/library/SimplePie/Credit.php +++ b/lib/simplepie/library/SimplePie/Credit.php @@ -146,3 +146,5 @@ class SimplePie_Credit return null; } } + +class_alias('SimplePie_Credit', 'SimplePie\Credit', false); diff --git a/lib/simplepie/library/SimplePie/Enclosure.php b/lib/simplepie/library/SimplePie/Enclosure.php index 32216d848..71cdd7d45 100644 --- a/lib/simplepie/library/SimplePie/Enclosure.php +++ b/lib/simplepie/library/SimplePie/Enclosure.php @@ -1152,7 +1152,12 @@ class SimplePie_Enclosure // If we encounter an unsupported mime-type, check the file extension and guess intelligently. if (!in_array($type, array_merge($types_flash, $types_fmedia, $types_quicktime, $types_wmedia, $types_mp3))) { - switch (strtolower($this->get_extension())) + $extension = $this->get_extension(); + if ($extension === null) { + return null; + } + + switch (strtolower($extension)) { // Audio mime-types case 'aac': @@ -1302,3 +1307,5 @@ class SimplePie_Enclosure return $type; } } + +class_alias('SimplePie_Enclosure', 'SimplePie\Enclosure', false); diff --git a/lib/simplepie/library/SimplePie/Exception.php b/lib/simplepie/library/SimplePie/Exception.php index 7a04c560c..715cefc72 100644 --- a/lib/simplepie/library/SimplePie/Exception.php +++ b/lib/simplepie/library/SimplePie/Exception.php @@ -48,4 +48,6 @@ */ class SimplePie_Exception extends Exception { -} \ No newline at end of file +} + +class_alias('SimplePie_Exception', 'SimplePie\Exception', false); diff --git a/lib/simplepie/library/SimplePie/File.php b/lib/simplepie/library/SimplePie/File.php index c326ba26a..7f894fb59 100644 --- a/lib/simplepie/library/SimplePie/File.php +++ b/lib/simplepie/library/SimplePie/File.php @@ -106,7 +106,7 @@ class SimplePie_File curl_setopt($fp, CURLOPT_FAILONERROR, 1); curl_setopt($fp, CURLOPT_TIMEOUT, $timeout); curl_setopt($fp, CURLOPT_CONNECTTIMEOUT, $timeout); - curl_setopt($fp, CURLOPT_REFERER, $url); + curl_setopt($fp, CURLOPT_REFERER, SimplePie_Misc::url_remove_credentials($url)); curl_setopt($fp, CURLOPT_USERAGENT, $useragent); curl_setopt($fp, CURLOPT_HTTPHEADER, $headers2); foreach ($curl_options as $curl_param => $curl_value) { @@ -299,3 +299,5 @@ class SimplePie_File } } } + +class_alias('SimplePie_File', 'SimplePie\File', false); diff --git a/lib/simplepie/library/SimplePie/HTTP/Parser.php b/lib/simplepie/library/SimplePie/HTTP/Parser.php index 1dbe06c3e..b0f0f4a8b 100644 --- a/lib/simplepie/library/SimplePie/HTTP/Parser.php +++ b/lib/simplepie/library/SimplePie/HTTP/Parser.php @@ -507,12 +507,16 @@ class SimplePie_HTTP_Parser { $data = explode("\r\n\r\n", $headers, $count); $data = array_pop($data); - if (false !== stripos($data, "HTTP/1.0 200 Connection established\r\n\r\n")) { - $data = str_ireplace("HTTP/1.0 200 Connection established\r\n\r\n", '', $data); + if (false !== stripos($data, "HTTP/1.0 200 Connection established\r\n")) { + $exploded = explode("\r\n\r\n", $data, 2); + $data = end($exploded); } - if (false !== stripos($data, "HTTP/1.1 200 Connection established\r\n\r\n")) { - $data = str_ireplace("HTTP/1.1 200 Connection established\r\n\r\n", '', $data); + if (false !== stripos($data, "HTTP/1.1 200 Connection established\r\n")) { + $exploded = explode("\r\n\r\n", $data, 2); + $data = end($exploded); } return $data; } } + +class_alias('SimplePie_HTTP_Parser', 'SimplePie\HTTP\Parser', false); diff --git a/lib/simplepie/library/SimplePie/IRI.php b/lib/simplepie/library/SimplePie/IRI.php index a02de682c..6cd27ddba 100644 --- a/lib/simplepie/library/SimplePie/IRI.php +++ b/lib/simplepie/library/SimplePie/IRI.php @@ -1234,3 +1234,5 @@ class SimplePie_IRI return $iauthority; } } + +class_alias('SimplePie_IRI', 'SimplePie\IRI', false); diff --git a/lib/simplepie/library/SimplePie/Item.php b/lib/simplepie/library/SimplePie/Item.php index 3ac4fa882..02f158bfc 100644 --- a/lib/simplepie/library/SimplePie/Item.php +++ b/lib/simplepie/library/SimplePie/Item.php @@ -2965,3 +2965,5 @@ class SimplePie_Item return null; } } + +class_alias('SimplePie_Item', 'SimplePie\Item', false); diff --git a/lib/simplepie/library/SimplePie/Locator.php b/lib/simplepie/library/SimplePie/Locator.php index ebc7ec9c1..12961dd3d 100644 --- a/lib/simplepie/library/SimplePie/Locator.php +++ b/lib/simplepie/library/SimplePie/Locator.php @@ -64,6 +64,7 @@ class SimplePie_Locator var $max_checked_feeds = 10; var $force_fsockopen = false; var $curl_options = array(); + var $dom; protected $registry; public function __construct(SimplePie_File $file, $timeout = 10, $useragent = null, $max_checked_feeds = 10, $force_fsockopen = false, $curl_options = array()) @@ -429,3 +430,5 @@ class SimplePie_Locator return null; } } + +class_alias('SimplePie_Locator', 'SimplePie\Locator', false); diff --git a/lib/simplepie/library/SimplePie/Misc.php b/lib/simplepie/library/SimplePie/Misc.php index a52498ac7..4318573ba 100644 --- a/lib/simplepie/library/SimplePie/Misc.php +++ b/lib/simplepie/library/SimplePie/Misc.php @@ -2260,4 +2260,16 @@ function embed_wmedia(width, height, link) { { // No-op } + + /** + * Sanitize a URL by removing HTTP credentials. + * @param string $url the URL to sanitize. + * @return string the same URL without HTTP credentials. + */ + public static function url_remove_credentials($url) + { + return preg_replace('#^(https?://)[^/:@]+:[^/:@]+@#i', '$1', $url); + } } + +class_alias('SimplePie_Misc', 'SimplePie\Misc', false); diff --git a/lib/simplepie/library/SimplePie/Net/IPv6.php b/lib/simplepie/library/SimplePie/Net/IPv6.php index 25c992bd1..c7e466a54 100644 --- a/lib/simplepie/library/SimplePie/Net/IPv6.php +++ b/lib/simplepie/library/SimplePie/Net/IPv6.php @@ -267,3 +267,5 @@ class SimplePie_Net_IPv6 return self::check_ipv6($ip); } } + +class_alias('SimplePie_Net_IPv6', 'SimplePie\Net\IPv6', false); diff --git a/lib/simplepie/library/SimplePie/Parse/Date.php b/lib/simplepie/library/SimplePie/Parse/Date.php index cf57437d2..fe7e3ea49 100644 --- a/lib/simplepie/library/SimplePie/Parse/Date.php +++ b/lib/simplepie/library/SimplePie/Parse/Date.php @@ -1023,3 +1023,5 @@ class SimplePie_Parse_Date return $strtotime; } } + +class_alias('SimplePie_Parse_Date', 'SimplePie\Parse\Date', false); diff --git a/lib/simplepie/library/SimplePie/Parser.php b/lib/simplepie/library/SimplePie/Parser.php index 3813b74b2..65f32d72a 100644 --- a/lib/simplepie/library/SimplePie/Parser.php +++ b/lib/simplepie/library/SimplePie/Parser.php @@ -677,3 +677,5 @@ class SimplePie_Parser return ' ]>'; } } + +class_alias('SimplePie_Parser', 'SimplePie\Parser', false); diff --git a/lib/simplepie/library/SimplePie/Rating.php b/lib/simplepie/library/SimplePie/Rating.php index 599f75acb..eae6718a7 100644 --- a/lib/simplepie/library/SimplePie/Rating.php +++ b/lib/simplepie/library/SimplePie/Rating.php @@ -122,3 +122,5 @@ class SimplePie_Rating return null; } } + +class_alias('SimplePie_Rating', 'SimplePie\Rating', false); diff --git a/lib/simplepie/library/SimplePie/Registry.php b/lib/simplepie/library/SimplePie/Registry.php index bf3baf179..2486f3c69 100755 --- a/lib/simplepie/library/SimplePie/Registry.php +++ b/lib/simplepie/library/SimplePie/Registry.php @@ -208,7 +208,8 @@ class SimplePie_Registry { case 'Cache': // For backwards compatibility with old non-static - // Cache::create() methods + // Cache::create() methods in PHP < 8.0. + // No longer supported as of PHP 8.0. if ($method === 'get_handler') { $result = @call_user_func_array(array($class, 'create'), $parameters); @@ -222,3 +223,5 @@ class SimplePie_Registry return $result; } } + +class_alias('SimplePie_Registry', 'SimplePie\Registry', false); diff --git a/lib/simplepie/library/SimplePie/Restriction.php b/lib/simplepie/library/SimplePie/Restriction.php index 950017fae..0a168bbbe 100644 --- a/lib/simplepie/library/SimplePie/Restriction.php +++ b/lib/simplepie/library/SimplePie/Restriction.php @@ -146,3 +146,5 @@ class SimplePie_Restriction return null; } } + +class_alias('SimplePie_Restriction', 'SimplePie\Restriction', false); diff --git a/lib/simplepie/library/SimplePie/Sanitize.php b/lib/simplepie/library/SimplePie/Sanitize.php index 84d35ad25..1f202ecc0 100644 --- a/lib/simplepie/library/SimplePie/Sanitize.php +++ b/lib/simplepie/library/SimplePie/Sanitize.php @@ -61,6 +61,7 @@ class SimplePie_Sanitize var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'); var $encode_instead_of_strip = false; var $strip_attributes = array('bgsound', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'); + var $rename_attributes = array(); var $add_attributes = array('audio' => array('preload' => 'none'), 'iframe' => array('sandbox' => 'allow-scripts allow-same-origin'), 'video' => array('preload' => 'none')); var $strip_comments = false; var $output_encoding = 'UTF-8'; @@ -71,12 +72,13 @@ class SimplePie_Sanitize var $useragent = ''; var $force_fsockopen = false; var $replace_url_attributes = null; + var $registry; /** * List of domains for which to force HTTPS. * @see SimplePie_Sanitize::set_https_domains() * Array is a tree split at DNS levels. Example: - * array('biz' => true, 'com' => array('example' => true), 'net' => array('example') => array('www' => true)) + * array('biz' => true, 'com' => array('example' => true), 'net' => array('example' => array('www' => true))) */ var $https_domains = array(); @@ -168,6 +170,25 @@ class SimplePie_Sanitize $this->encode_instead_of_strip = (bool) $encode; } + public function rename_attributes($attribs = array()) + { + if ($attribs) + { + if (is_array($attribs)) + { + $this->rename_attributes = $attribs; + } + else + { + $this->rename_attributes = explode(',', $attribs); + } + } + else + { + $this->rename_attributes = false; + } + } + public function strip_attributes($attribs = array('bgsound', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc')) { if ($attribs) @@ -220,9 +241,9 @@ class SimplePie_Sanitize * Set element/attribute key/value pairs of HTML attributes * containing URLs that need to be resolved relative to the feed * - * Defaults to |a|@href, |area|@href, |blockquote|@cite, |del|@cite, - * |form|@action, |img|@longdesc, |img|@src, |input|@src, |ins|@cite, - * |q|@cite + * Defaults to |a|@href, |area|@href, |audio|@src, |blockquote|@cite, + * |del|@cite, |form|@action, |img|@longdesc, |img|@src, |input|@src, + * |ins|@cite, |q|@cite, |source|@src, |video|@src * * @since 1.0 * @param array|null $element_attribute Element/attribute key/value pairs, null for default @@ -234,6 +255,7 @@ class SimplePie_Sanitize $element_attribute = array( 'a' => 'href', 'area' => 'href', + 'audio' => 'src', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', @@ -243,7 +265,12 @@ class SimplePie_Sanitize ), 'input' => 'src', 'ins' => 'cite', - 'q' => 'cite' + 'q' => 'cite', + 'source' => 'src', + 'video' => array( + 'poster', + 'src' + ) ); } $this->replace_url_attributes = (array) $element_attribute; @@ -373,6 +400,14 @@ class SimplePie_Sanitize } } + if ($this->rename_attributes) + { + foreach ($this->rename_attributes as $attrib) + { + $this->rename_attr($attrib, $xpath); + } + } + if ($this->strip_attributes) { foreach ($this->strip_attributes as $attrib) @@ -446,6 +481,8 @@ class SimplePie_Sanitize { $data = preg_replace('/^/', '
', $data); } + + $data = str_replace('', '', $data); } if ($type & SIMPLEPIE_CONSTRUCT_IRI) @@ -641,6 +678,17 @@ class SimplePie_Sanitize } } + protected function rename_attr($attrib, $xpath) + { + $elements = $xpath->query('//*[@' . $attrib . ']'); + + foreach ($elements as $element) + { + $element->setAttribute('data-sanitized-' . $attrib, $element->getAttribute($attrib)); + $element->removeAttribute($attrib); + } + } + protected function add_attr($tag, $valuePairs, $document) { $elements = $document->getElementsByTagName($tag); @@ -653,3 +701,5 @@ class SimplePie_Sanitize } } } + +class_alias('SimplePie_Sanitize', 'SimplePie\Sanitize', false); diff --git a/lib/simplepie/library/SimplePie/Source.php b/lib/simplepie/library/SimplePie/Source.php index f14e5b220..9e7ddf04d 100644 --- a/lib/simplepie/library/SimplePie/Source.php +++ b/lib/simplepie/library/SimplePie/Source.php @@ -575,3 +575,5 @@ class SimplePie_Source return null; } } + +class_alias('SimplePie_Source', 'SimplePie\Source', false); diff --git a/lib/simplepie/library/SimplePie/XML/Declaration/Parser.php b/lib/simplepie/library/SimplePie/XML/Declaration/Parser.php index 0c857a586..9ac088704 100644 --- a/lib/simplepie/library/SimplePie/XML/Declaration/Parser.php +++ b/lib/simplepie/library/SimplePie/XML/Declaration/Parser.php @@ -357,3 +357,5 @@ class SimplePie_XML_Declaration_Parser } } } + +class_alias('SimplePie_XML_Declaration_Parser', 'SimplePie\XML\Declaration\Parser', false); diff --git a/lib/simplepie/library/SimplePie/gzdecode.php b/lib/simplepie/library/SimplePie/gzdecode.php index 9c54f8833..030a230d0 100644 --- a/lib/simplepie/library/SimplePie/gzdecode.php +++ b/lib/simplepie/library/SimplePie/gzdecode.php @@ -364,3 +364,5 @@ class SimplePie_gzdecode return false; } } + +class_alias('SimplePie_gzdecode', 'SimplePie\Gzdecode', false); -- cgit v1.2.1