<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[47733] trunk/src/wp-includes: External Libraries: Update the SimplePie library to the latest version (1.5.5).</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/47733">47733</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/47733","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>desrosj</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2020-05-01 14:24:42 +0000 (Fri, 01 May 2020)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>External Libraries: Update the SimplePie library to the latest version (1.5.5).

This brings SimplePie in sync with the most up to date version, 1.5.5.

This update brings many bug fixes, small enhancements, and PHP compatibility fixes for newer versions of PHP.

For a full list of changes, see https://github.com/simplepie/simplepie/blob/master/CHANGELOG.md<a href="https://core.trac.wordpress.org/ticket/155">#155</a>-may-1-2020.

Props dshanske, slushman, etruel, wpshades, dmenard, desrosj, hareesh-pillai, stevenkword, jrf, Ipstenu, johnbillion.
Fixes <a href="https://core.trac.wordpress.org/ticket/36669">#36669</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpincludesSimplePieAuthorphp">trunk/src/wp-includes/SimplePie/Author.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieCacheBasephp">trunk/src/wp-includes/SimplePie/Cache/Base.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieCacheDBphp">trunk/src/wp-includes/SimplePie/Cache/DB.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieCacheFilephp">trunk/src/wp-includes/SimplePie/Cache/File.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieCacheMemcachephp">trunk/src/wp-includes/SimplePie/Cache/Memcache.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieCacheMySQLphp">trunk/src/wp-includes/SimplePie/Cache/MySQL.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieCachephp">trunk/src/wp-includes/SimplePie/Cache.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieCaptionphp">trunk/src/wp-includes/SimplePie/Caption.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieCategoryphp">trunk/src/wp-includes/SimplePie/Category.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieContentTypeSnifferphp">trunk/src/wp-includes/SimplePie/Content/Type/Sniffer.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieCopyrightphp">trunk/src/wp-includes/SimplePie/Copyright.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieCorephp">trunk/src/wp-includes/SimplePie/Core.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieCreditphp">trunk/src/wp-includes/SimplePie/Credit.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieDecodeHTMLEntitiesphp">trunk/src/wp-includes/SimplePie/Decode/HTML/Entities.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieEnclosurephp">trunk/src/wp-includes/SimplePie/Enclosure.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieExceptionphp">trunk/src/wp-includes/SimplePie/Exception.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieFilephp">trunk/src/wp-includes/SimplePie/File.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieHTTPParserphp">trunk/src/wp-includes/SimplePie/HTTP/Parser.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieIRIphp">trunk/src/wp-includes/SimplePie/IRI.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieItemphp">trunk/src/wp-includes/SimplePie/Item.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieLocatorphp">trunk/src/wp-includes/SimplePie/Locator.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieMiscphp">trunk/src/wp-includes/SimplePie/Misc.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieNetIPv6php">trunk/src/wp-includes/SimplePie/Net/IPv6.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieParseDatephp">trunk/src/wp-includes/SimplePie/Parse/Date.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieParserphp">trunk/src/wp-includes/SimplePie/Parser.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieRatingphp">trunk/src/wp-includes/SimplePie/Rating.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieRegistryphp">trunk/src/wp-includes/SimplePie/Registry.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieRestrictionphp">trunk/src/wp-includes/SimplePie/Restriction.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieSanitizephp">trunk/src/wp-includes/SimplePie/Sanitize.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieSourcephp">trunk/src/wp-includes/SimplePie/Source.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieXMLDeclarationParserphp">trunk/src/wp-includes/SimplePie/XML/Declaration/Parser.php</a></li>
<li><a href="#trunksrcwpincludesSimplePiegzdecodephp">trunk/src/wp-includes/SimplePie/gzdecode.php</a></li>
<li><a href="#trunksrcwpincludesclasssimplepiephp">trunk/src/wp-includes/class-simplepie.php</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunksrcwpincludesSimplePieCacheMemcachedphp">trunk/src/wp-includes/SimplePie/Cache/Memcached.php</a></li>
<li><a href="#trunksrcwpincludesSimplePieCacheRedisphp">trunk/src/wp-includes/SimplePie/Cache/Redis.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpincludesSimplePieAuthorphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Author.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Author.php        2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Author.php  2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -114,10 +113,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->name;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -131,10 +128,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->link;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -148,10 +143,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->email;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del></span></pre></div>
<a id="trunksrcwpincludesSimplePieCacheBasephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Cache/Base.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Cache/Base.php    2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Cache/Base.php      2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieCacheDBphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Cache/DB.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Cache/DB.php      2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Cache/DB.php        2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieCacheFilephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Cache/File.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Cache/File.php    2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Cache/File.php      2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -102,7 +101,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function save($data)
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if (file_exists($this->name) && is_writeable($this->name) || file_exists($this->location) && is_writeable($this->location))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if (file_exists($this->name) && is_writable($this->name) || file_exists($this->location) && is_writable($this->location))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ($data instanceof SimplePie)
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -136,11 +135,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function mtime()
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if (file_exists($this->name))
-               {
-                       return filemtime($this->name);
-               }
-               return false;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return @filemtime($this->name);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -150,11 +145,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function touch()
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if (file_exists($this->name))
-               {
-                       return touch($this->name);
-               }
-               return false;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return @touch($this->name);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieCacheMemcachephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Cache/Memcache.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Cache/Memcache.php        2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Cache/Memcache.php  2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -95,10 +94,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'prefix' => 'simplepie_',
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $parsed = SimplePie_Cache::parse_URL($location);
-               $this->options['host'] = empty($parsed['host']) ? $this->options['host'] : $parsed['host'];
-               $this->options['port'] = empty($parsed['port']) ? $this->options['port'] : $parsed['port'];
-               $this->options['extras'] = array_merge($this->options['extras'], $parsed['extras']);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->options = SimplePie_Misc::array_merge_recursive($this->options, SimplePie_Cache::parse_URL($location));
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->name = $this->options['extras']['prefix'] . md5("$name:$type");
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->cache = new Memcache();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -147,7 +144,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ($data !== false)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // essentially ignore the mtime because Memcache expires on it's own
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // essentially ignore the mtime because Memcache expires on its own
</ins><span class="cx" style="display: block; padding: 0 10px">                         return time();
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -165,7 +162,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ($data !== false)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $this->cache->set($this->name, $data, MEMCACHE_COMPRESSED, (int) $this->duration);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $this->cache->set($this->name, $data, MEMCACHE_COMPRESSED, (int) $this->options['extras']['timeout']);
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return false;
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieCacheMemcachedphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: trunk/src/wp-includes/SimplePie/Cache/Memcached.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Cache/Memcached.php                               (rev 0)
+++ trunk/src/wp-includes/SimplePie/Cache/Memcached.php 2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,166 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+/**
+ * SimplePie
+ *
+ * A PHP-Based RSS and Atom Feed Framework.
+ * Takes the hard work out of managing a complete RSS/Atom solution.
+ *
+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ *     * Redistributions of source code must retain the above copyright notice, this list of
+ *       conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above copyright notice, this list
+ *       of conditions and the following disclaimer in the documentation and/or other materials
+ *       provided with the distribution.
+ *
+ *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
+ *       to endorse or promote products derived from this software without specific prior
+ *       written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
+ * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @package SimplePie
+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
+ * @author Ryan Parman
+ * @author Sam Sneddon
+ * @author Ryan McCue
+ * @link http://simplepie.org/ SimplePie
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ */
+
+/**
+ * Caches data to memcached
+ *
+ * Registered for URLs with the "memcached" protocol
+ *
+ * For example, `memcached://localhost:11211/?timeout=3600&prefix=sp_` will
+ * connect to memcached on `localhost` on port 11211. All tables will be
+ * prefixed with `sp_` and data will expire after 3600 seconds
+ *
+ * @package    SimplePie
+ * @subpackage Caching
+ * @author     Paul L. McNeely
+ * @uses       Memcached
+ */
+class SimplePie_Cache_Memcached implements SimplePie_Cache_Base
+{
+    /**
+     * Memcached instance
+     * @var Memcached
+     */
+    protected $cache;
+
+    /**
+     * Options
+     * @var array
+     */
+    protected $options;
+
+    /**
+     * Cache name
+     * @var string
+     */
+    protected $name;
+
+    /**
+     * Create a new cache object
+     * @param string $location Location string (from SimplePie::$cache_location)
+     * @param string $name     Unique ID for the cache
+     * @param string $type     Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data
+     */
+    public function __construct($location, $name, $type) {
+        $this->options = array(
+            'host'   => '127.0.0.1',
+            'port'   => 11211,
+            'extras' => array(
+                'timeout' => 3600, // one hour
+                'prefix'  => 'simplepie_',
+            ),
+        );
+        $this->options = SimplePie_Misc::array_merge_recursive($this->options, SimplePie_Cache::parse_URL($location));
+
+        $this->name = $this->options['extras']['prefix'] . md5("$name:$type");
+
+        $this->cache = new Memcached();
+        $this->cache->addServer($this->options['host'], (int)$this->options['port']);
+    }
+
+    /**
+     * Save data to the cache
+     * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property
+     * @return bool Successfulness
+     */
+    public function save($data) {
+        if ($data instanceof SimplePie) {
+            $data = $data->data;
+        }
+
+        return $this->setData(serialize($data));
+    }
+
+    /**
+     * Retrieve the data saved to the cache
+     * @return array Data for SimplePie::$data
+     */
+    public function load() {
+        $data = $this->cache->get($this->name);
+
+        if ($data !== false) {
+            return unserialize($data);
+        }
+        return false;
+    }
+
+    /**
+     * Retrieve the last modified time for the cache
+     * @return int Timestamp
+     */
+    public function mtime() {
+        $data = $this->cache->get($this->name . '_mtime');
+        return (int) $data;
+    }
+
+    /**
+     * Set the last modified time to the current time
+     * @return bool Success status
+     */
+    public function touch() {
+        $data = $this->cache->get($this->name);
+        return $this->setData($data);
+    }
+
+    /**
+     * Remove the cache
+     * @return bool Success status
+     */
+    public function unlink() {
+        return $this->cache->delete($this->name, 0);
+    }
+
+    /**
+     * Set the last modified time and data to Memcached
+     * @return bool Success status
+     */
+    private function setData($data) {
+
+        if ($data !== false) {
+            $this->cache->set($this->name . '_mtime', time(), (int)$this->options['extras']['timeout']);
+            return $this->cache->set($this->name, $data, (int)$this->options['extras']['timeout']);
+        }
+
+        return false;
+    }
+}
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: trunk/src/wp-includes/SimplePie/Cache/Memcached.php
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="svnexecutable"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:executable</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+*
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="trunksrcwpincludesSimplePieCacheMySQLphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Cache/MySQL.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Cache/MySQL.php   2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Cache/MySQL.php     2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -94,10 +93,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'path' => '',
</span><span class="cx" style="display: block; padding: 0 10px">                        'extras' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'prefix' => '',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                'cache_purge_time' => 2592000
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->options = array_merge_recursive($this->options, SimplePie_Cache::parse_URL($location));
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $this->options = SimplePie_Misc::array_merge_recursive($this->options, SimplePie_Cache::parse_URL($location));
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Path is prefixed with a "/"
</span><span class="cx" style="display: block; padding: 0 10px">                $this->options['dbname'] = substr($this->options['path'], 1);
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -130,16 +131,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $query = $this->mysql->exec('CREATE TABLE `' . $this->options['extras']['prefix'] . 'cache_data` (`id` TEXT CHARACTER SET utf8 NOT NULL, `items` SMALLINT NOT NULL DEFAULT 0, `data` BLOB NOT NULL, `mtime` INT UNSIGNED NOT NULL, UNIQUE (`id`(125)))');
</span><span class="cx" style="display: block; padding: 0 10px">                        if ($query === false)
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                trigger_error("Can't create " . $this->options['extras']['prefix'] . "cache_data table, check permissions", E_USER_WARNING);
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $this->mysql = null;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                return;
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if (!in_array($this->options['extras']['prefix'] . 'items', $db))
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $query = $this->mysql->exec('CREATE TABLE `' . $this->options['extras']['prefix'] . 'items` (`feed_id` TEXT CHARACTER SET utf8 NOT NULL, `id` TEXT CHARACTER SET utf8 NOT NULL, `data` TEXT CHARACTER SET utf8 NOT NULL, `posted` INT UNSIGNED NOT NULL, INDEX `feed_id` (`feed_id`(125)))');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $query = $this->mysql->exec('CREATE TABLE `' . $this->options['extras']['prefix'] . 'items` (`feed_id` TEXT CHARACTER SET utf8 NOT NULL, `id` TEXT CHARACTER SET utf8 NOT NULL, `data` MEDIUMBLOB NOT NULL, `posted` INT UNSIGNED NOT NULL, INDEX `feed_id` (`feed_id`(125)))');
</ins><span class="cx" style="display: block; padding: 0 10px">                         if ($query === false)
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                trigger_error("Can't create " . $this->options['extras']['prefix'] . "items table, check permissions", E_USER_WARNING);
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $this->mysql = null;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                return;
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -157,6 +162,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        return false;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $query = $this->mysql->prepare('DELETE i, cd FROM `' . $this->options['extras']['prefix'] . 'cache_data` cd, ' .
+                       '`' . $this->options['extras']['prefix'] . 'items` i ' .
+                       'WHERE cd.id = i.feed_id ' .
+                       'AND cd.mtime < (unix_timestamp() - :purge_time)');
+               $query->bindValue(':purge_time', $this->options['extras']['cache_purge_time']);
+
+               if (!$query->execute())
+               {
+                       return false;
+               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ($data instanceof SimplePie)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        $data = clone $data;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -379,10 +395,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $time;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -400,14 +414,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $query = $this->mysql->prepare('UPDATE `' . $this->options['extras']['prefix'] . 'cache_data` SET `mtime` = :time WHERE `id` = :id');
</span><span class="cx" style="display: block; padding: 0 10px">                $query->bindValue(':time', time());
</span><span class="cx" style="display: block; padding: 0 10px">                $query->bindValue(':id', $this->id);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ($query->execute() && $query->rowCount() > 0)
-               {
-                       return true;
-               }
-               else
-               {
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return $query->execute() && $query->rowCount() > 0;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -426,13 +434,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $query->bindValue(':id', $this->id);
</span><span class="cx" style="display: block; padding: 0 10px">                $query2 = $this->mysql->prepare('DELETE FROM `' . $this->options['extras']['prefix'] . 'items` WHERE `feed_id` = :id');
</span><span class="cx" style="display: block; padding: 0 10px">                $query2->bindValue(':id', $this->id);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ($query->execute() && $query2->execute())
-               {
-                       return true;
-               }
-               else
-               {
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return $query->execute() && $query2->execute();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieCacheRedisphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: trunk/src/wp-includes/SimplePie/Cache/Redis.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Cache/Redis.php                           (rev 0)
+++ trunk/src/wp-includes/SimplePie/Cache/Redis.php     2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,172 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+/**
+ * SimplePie Redis Cache Extension
+ *
+ * @package SimplePie
+ * @author Jan Kozak <galvani78@gmail.com>
+ * @link http://galvani.cz/
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @version 0.2.9
+ */
+
+
+/**
+ * Caches data to redis
+ *
+ * Registered for URLs with the "redis" protocol
+ *
+ * For example, `redis://localhost:6379/?timeout=3600&prefix=sp_&dbIndex=0` will
+ * connect to redis on `localhost` on port 6379. All tables will be
+ * prefixed with `simple_primary-` and data will expire after 3600 seconds
+ *
+ * @package SimplePie
+ * @subpackage Caching
+ * @uses Redis
+ */
+class SimplePie_Cache_Redis implements SimplePie_Cache_Base {
+    /**
+     * Redis instance
+     *
+     * @var \Redis
+     */
+    protected $cache;
+
+    /**
+     * Options
+     *
+     * @var array
+     */
+    protected $options;
+
+    /**
+     * Cache name
+     *
+     * @var string
+     */
+    protected $name;
+
+    /**
+     * Cache Data
+     *
+     * @var type
+     */
+    protected $data;
+
+    /**
+     * Create a new cache object
+     *
+     * @param string $location Location string (from SimplePie::$cache_location)
+     * @param string $name Unique ID for the cache
+     * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data
+     */
+    public function __construct($location, $name, $options = null) {
+        //$this->cache = \flow\simple\cache\Redis::getRedisClientInstance();
+        $parsed = SimplePie_Cache::parse_URL($location);
+        $redis = new Redis();
+        $redis->connect($parsed['host'], $parsed['port']);
+        if (isset($parsed['pass'])) {
+            $redis->auth($parsed['pass']);
+        }
+        if (isset($parsed['path'])) {
+            $redis->select((int)substr($parsed['path'], 1));
+        }
+        $this->cache = $redis;
+
+        if (!is_null($options) && is_array($options)) {
+            $this->options = $options;
+        } else {
+            $this->options = array (
+                'prefix' => 'rss:simple_primary:',
+                'expire' => 0,
+            );
+        }
+
+        $this->name = $this->options['prefix'] . $name;
+    }
+
+    /**
+     * @param \Redis $cache
+     */
+    public function setRedisClient(\Redis $cache) {
+        $this->cache = $cache;
+    }
+
+    /**
+     * Save data to the cache
+     *
+     * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property
+     * @return bool Successfulness
+     */
+    public function save($data) {
+        if ($data instanceof SimplePie) {
+            $data = $data->data;
+        }
+        $response = $this->cache->set($this->name, serialize($data));
+        if ($this->options['expire']) {
+            $this->cache->expire($this->name, $this->options['expire']);
+        }
+
+        return $response;
+    }
+
+    /**
+     * Retrieve the data saved to the cache
+     *
+     * @return array Data for SimplePie::$data
+     */
+    public function load() {
+        $data = $this->cache->get($this->name);
+
+        if ($data !== false) {
+            return unserialize($data);
+        }
+        return false;
+    }
+
+    /**
+     * Retrieve the last modified time for the cache
+     *
+     * @return int Timestamp
+     */
+    public function mtime() {
+
+        $data = $this->cache->get($this->name);
+
+        if ($data !== false) {
+            return time();
+        }
+
+        return false;
+    }
+
+    /**
+     * Set the last modified time to the current time
+     *
+     * @return bool Success status
+     */
+    public function touch() {
+
+        $data = $this->cache->get($this->name);
+
+        if ($data !== false) {
+            $return = $this->cache->set($this->name, $data);
+            if ($this->options['expire']) {
+                return $this->cache->expire($this->name, $this->ttl);
+            }
+            return $return;
+        }
+
+        return false;
+    }
+
+    /**
+     * Remove the cache
+     *
+     * @return bool Success status
+     */
+    public function unlink() {
+        return $this->cache->set($this->name, null);
+    }
+
+}
</ins><span class="cx" style="display: block; padding: 0 10px">Property changes on: trunk/src/wp-includes/SimplePie/Cache/Redis.php
</span><span class="cx" style="display: block; padding: 0 10px">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: svn:eol-style</h4></div>
<ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+native
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of property
</span><a id="trunksrcwpincludesSimplePieCachephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Cache.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Cache.php 2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Cache.php   2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -62,8 +61,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @var array
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        protected static $handlers = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'mysql' => 'SimplePie_Cache_MySQL',
-               'memcache' => 'SimplePie_Cache_Memcache',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'mysql'     => 'SimplePie_Cache_MySQL',
+               'memcache'  => 'SimplePie_Cache_Memcache',
+               'memcached' => 'SimplePie_Cache_Memcached',
+               'redis'     => 'SimplePie_Cache_Redis'
</ins><span class="cx" style="display: block; padding: 0 10px">         );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieCaptionphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Caption.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Caption.php       2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Caption.php 2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -132,10 +131,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->endTime;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -150,10 +147,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->lang;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -167,10 +162,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->startTime;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -184,10 +177,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->text;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -201,10 +192,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->type;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del></span></pre></div>
<a id="trunksrcwpincludesSimplePieCategoryphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Category.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Category.php      2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Category.php        2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -57,7 +56,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Category identifier
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @var string
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @var string|null
</ins><span class="cx" style="display: block; padding: 0 10px">          * @see get_term
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        var $term;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -65,7 +64,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Categorization scheme identifier
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @var string
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @var string|null
</ins><span class="cx" style="display: block; padding: 0 10px">          * @see get_scheme()
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        var $scheme;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -73,23 +72,36 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Human readable label
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @var string
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @var string|null
</ins><span class="cx" style="display: block; padding: 0 10px">          * @see get_label()
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        var $label;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * Category type
+        * 
+        * category for <category>
+        * subject for <dc:subject>
+        *
+        * @var string|null
+        * @see get_type()
+        */
+       var $type;
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * Constructor, used to input the data
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param string $term
-        * @param string $scheme
-        * @param string $label
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param string|null $term
+        * @param string|null $scheme
+        * @param string|null $label
+        * @param string|null $type
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function __construct($term = null, $scheme = null, $label = null)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function __construct($term = null, $scheme = null, $label = null, $type = null)
</ins><span class="cx" style="display: block; padding: 0 10px">         {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->term = $term;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->scheme = $scheme;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->label = $label;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $this->type = $type;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -110,14 +122,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_term()
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ($this->term !== null)
-               {
-                       return $this->term;
-               }
-               else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return $this->term;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -127,31 +132,32 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_scheme()
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ($this->scheme !== null)
-               {
-                       return $this->scheme;
-               }
-               else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return $this->scheme;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Get the human readable label
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @param bool $strict
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return string|null
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function get_label()
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function get_label($strict = false)
</ins><span class="cx" style="display: block; padding: 0 10px">         {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ($this->label !== null)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ($this->label === null && $strict !== true)
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $this->label;
-               }
-               else
-               {
</del><span class="cx" style="display: block; padding: 0 10px">                         return $this->get_term();
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                return $this->label;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+       /**
+        * Get the category type
+        *
+        * @return string|null
+        */
+       public function get_type()
+       {
+               return $this->type;
+       }
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieContentTypeSnifferphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Content/Type/Sniffer.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Content/Type/Sniffer.php  2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Content/Type/Sniffer.php    2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -121,24 +120,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                {
</span><span class="cx" style="display: block; padding: 0 10px">                                        return $return;
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                else
-                               {
-                                       return $official;
-                               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                               return $official;
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px">                        elseif ($official === 'text/html')
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                return $this->feed_or_html();
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        else
-                       {
-                               return $official;
-                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                       return $official;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return $this->unknown();
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return $this->unknown();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -159,10 +152,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return 'application/octect-stream';
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return 'text/plain';
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return 'text/plain';
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -208,10 +199,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return 'image/vnd.microsoft.icon';
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return $this->text_or_binary();
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return $this->text_or_binary();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -242,10 +231,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return 'image/vnd.microsoft.icon';
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -256,7 +243,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function feed_or_html()
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><span class="cx" style="display: block; padding: 0 10px">                $len = strlen($this->file->body);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $pos = strspn($this->file->body, "\x09\x0A\x0D\x20");
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $pos = strspn($this->file->body, "\x09\x0A\x0D\x20\xEF\xBB\xBF");
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                while ($pos < $len)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -329,4 +316,3 @@
</span><span class="cx" style="display: block; padding: 0 10px">                return 'text/html';
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del></span></pre></div>
<a id="trunksrcwpincludesSimplePieCopyrightphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Copyright.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Copyright.php     2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Copyright.php       2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -104,10 +103,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->url;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -121,10 +118,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->label;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del></span></pre></div>
<a id="trunksrcwpincludesSimplePieCorephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Core.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Core.php  2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Core.php    2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2009, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieCreditphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Credit.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Credit.php        2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Credit.php  2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -113,10 +112,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->role;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -130,10 +127,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->scheme;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -147,10 +142,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->name;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del></span></pre></div>
<a id="trunksrcwpincludesSimplePieDecodeHTMLEntitiesphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Decode/HTML/Entities.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Decode/HTML/Entities.php  2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Decode/HTML/Entities.php    2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -118,10 +117,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->consumed .= $this->data[$this->position];
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->data[$this->position++];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -140,10 +137,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->position += $len;
</span><span class="cx" style="display: block; padding: 0 10px">                        return $data;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -169,7 +164,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        case "\x09":
</span><span class="cx" style="display: block; padding: 0 10px">                        case "\x0A":
</span><span class="cx" style="display: block; padding: 0 10px">                        case "\x0B":
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        case "\x0B":
</del><span class="cx" style="display: block; padding: 0 10px">                         case "\x0C":
</span><span class="cx" style="display: block; padding: 0 10px">                        case "\x20":
</span><span class="cx" style="display: block; padding: 0 10px">                        case "\x3C":
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -614,4 +608,3 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del></span></pre></div>
<a id="trunksrcwpincludesSimplePieEnclosurephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Enclosure.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Enclosure.php     2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Enclosure.php       2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -283,10 +282,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->bitrate;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -302,10 +299,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $captions[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -319,10 +314,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->captions;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -338,10 +331,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $categories[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -355,10 +346,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->categories;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -372,10 +361,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->channels;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -389,10 +376,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->copyright;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -408,10 +393,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $credits[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -425,10 +408,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->credits;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -442,16 +423,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->description;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Get the duration of the enclosure
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param string $convert Convert seconds into hh:mm:ss
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param bool $convert Convert seconds into hh:mm:ss
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return string|int|null 'hh:mm:ss' string if `$convert` was specified, otherwise integer (or null if none found)
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_duration($convert = false)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -463,15 +442,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $time = SimplePie_Misc::time_hms($this->duration);
</span><span class="cx" style="display: block; padding: 0 10px">                                return $time;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        else
-                       {
-                               return $this->duration;
-                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                       return $this->duration;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -485,10 +460,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->expression;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return 'full';
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return 'full';
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -520,10 +493,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->framerate;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -550,10 +521,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $hashes[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -567,10 +536,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->hashes;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -584,10 +551,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->height;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -602,10 +567,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->lang;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -621,10 +584,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $keywords[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -638,10 +599,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->keywords;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -655,10 +614,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->length;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -672,10 +629,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return urldecode($this->link);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -690,10 +645,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->medium;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -708,10 +661,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->player;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -727,10 +678,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $ratings[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -744,10 +693,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->ratings;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -763,10 +710,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $restrictions[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -780,10 +725,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->restrictions;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -797,10 +740,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->samplingrate;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -815,10 +756,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return round($length/1048576, 2);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -834,10 +773,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $thumbnails[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -851,10 +788,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->thumbnails;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -868,10 +803,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->title;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -886,10 +819,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->type;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -903,10 +834,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->width;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -942,7 +871,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * - `height` (integer): The height of the embedded media. Accepts any
</span><span class="cx" style="display: block; padding: 0 10px">         *    numeric pixel value (such as `360`) or `auto`. Defaults to `auto`,
</span><span class="cx" style="display: block; padding: 0 10px">         *    and it is recommended that you use this default.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * - `loop` (boolean): Do you want the media to loop when its done?
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * - `loop` (boolean): Do you want the media to loop when it's done?
</ins><span class="cx" style="display: block; padding: 0 10px">          *    Defaults to `false`.
</span><span class="cx" style="display: block; padding: 0 10px">         * - `mediaplayer` (string): The location of the included
</span><span class="cx" style="display: block; padding: 0 10px">         *    `mediaplayer.swf` file. This allows for the playback of Flash Video
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1366,15 +1295,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                return 'mp3';
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        else
-                       {
-                               return null;
-                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                       return null;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return $type;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return $type;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del></span></pre></div>
<a id="trunksrcwpincludesSimplePieExceptionphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Exception.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Exception.php     2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Exception.php       2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.4-dev
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieFilephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/File.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/File.php  2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/File.php    2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -64,16 +63,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">        var $redirects = 0;
</span><span class="cx" style="display: block; padding: 0 10px">        var $error;
</span><span class="cx" style="display: block; padding: 0 10px">        var $method = SIMPLEPIE_FILE_SOURCE_NONE;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var $permanent_url;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function __construct($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function __construct($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false, $curl_options = array())
</ins><span class="cx" style="display: block; padding: 0 10px">         {
</span><span class="cx" style="display: block; padding: 0 10px">                if (class_exists('idna_convert'))
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        $idn = new idna_convert();
</span><span class="cx" style="display: block; padding: 0 10px">                        $parsed = SimplePie_Misc::parse_url($url);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $url = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $url = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], NULL);
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                $this->url = $url;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $this->permanent_url = $url;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->useragent = $useragent;
</span><span class="cx" style="display: block; padding: 0 10px">                if (preg_match('/^http(s)?:\/\//i', $url))
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -102,16 +103,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                curl_setopt($fp, CURLOPT_URL, $url);
</span><span class="cx" style="display: block; padding: 0 10px">                                curl_setopt($fp, CURLOPT_HEADER, 1);
</span><span class="cx" style="display: block; padding: 0 10px">                                curl_setopt($fp, CURLOPT_RETURNTRANSFER, 1);
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                curl_setopt($fp, CURLOPT_FAILONERROR, 1);
</ins><span class="cx" style="display: block; padding: 0 10px">                                 curl_setopt($fp, CURLOPT_TIMEOUT, $timeout);
</span><span class="cx" style="display: block; padding: 0 10px">                                curl_setopt($fp, CURLOPT_CONNECTTIMEOUT, $timeout);
</span><span class="cx" style="display: block; padding: 0 10px">                                curl_setopt($fp, CURLOPT_REFERER, $url);
</span><span class="cx" style="display: block; padding: 0 10px">                                curl_setopt($fp, CURLOPT_USERAGENT, $useragent);
</span><span class="cx" style="display: block; padding: 0 10px">                                curl_setopt($fp, CURLOPT_HTTPHEADER, $headers2);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if (!ini_get('open_basedir') && !ini_get('safe_mode') && version_compare(SimplePie_Misc::get_curl_version(), '7.15.2', '>='))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if (!ini_get('open_basedir') && version_compare(SimplePie_Misc::get_curl_version(), '7.15.2', '>='))
</ins><span class="cx" style="display: block; padding: 0 10px">                                 {
</span><span class="cx" style="display: block; padding: 0 10px">                                        curl_setopt($fp, CURLOPT_FOLLOWLOCATION, 1);
</span><span class="cx" style="display: block; padding: 0 10px">                                        curl_setopt($fp, CURLOPT_MAXREDIRS, $redirects);
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                foreach ($curl_options as $curl_param => $curl_value) {
+                                       curl_setopt($fp, $curl_param, $curl_value);
+                               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->headers = curl_exec($fp);
</span><span class="cx" style="display: block; padding: 0 10px">                                if (curl_errno($fp) === 23 || curl_errno($fp) === 61)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -126,21 +131,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="cx" style="display: block; padding: 0 10px">                                else
</span><span class="cx" style="display: block; padding: 0 10px">                                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $info = curl_getinfo($fp);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 // Use the updated url provided by curl_getinfo after any redirects.
+                                       if ($info = curl_getinfo($fp)) {
+                                               $this->url = $info['url'];
+                                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                                         curl_close($fp);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1);
-                                       $this->headers = array_pop($this->headers);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $this->headers = SimplePie_HTTP_Parser::prepareHeaders($this->headers, $info['redirect_count'] + 1);
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $parser = new SimplePie_HTTP_Parser($this->headers);
</span><span class="cx" style="display: block; padding: 0 10px">                                        if ($parser->parse())
</span><span class="cx" style="display: block; padding: 0 10px">                                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                                $this->headers = $parser->headers;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $this->body = $parser->body;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         $this->body = trim($parser->body);
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 $this->status_code = $parser->status_code;
</span><span class="cx" style="display: block; padding: 0 10px">                                                if ((in_array($this->status_code, array(300, 301, 302, 303, 307)) || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects)
</span><span class="cx" style="display: block; padding: 0 10px">                                                {
</span><span class="cx" style="display: block; padding: 0 10px">                                                        $this->redirects++;
</span><span class="cx" style="display: block; padding: 0 10px">                                                        $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        return $this->__construct($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 $previousStatusCode = $this->status_code;
+                                                       $this->__construct($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
+                                                       $this->permanent_url = ($previousStatusCode == 301) ? $location : $url;
+                                                       return;
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                                        }
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -222,7 +232,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                                                $this->redirects++;
</span><span class="cx" style="display: block; padding: 0 10px">                                                                $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                return $this->__construct($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         $previousStatusCode = $this->status_code;
+                                                               $this->__construct($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen);
+                                                               $this->permanent_url = ($previousStatusCode == 301) ? $location : $url;
+                                                               return;
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         }
</span><span class="cx" style="display: block; padding: 0 10px">                                                        if (isset($this->headers['content-encoding']))
</span><span class="cx" style="display: block; padding: 0 10px">                                                        {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -239,7 +252,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                                                }
</span><span class="cx" style="display: block; padding: 0 10px">                                                                                else
</span><span class="cx" style="display: block; padding: 0 10px">                                                                                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                                        $this->body = $decoder->data;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                                 $this->body = trim($decoder->data);
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                                                                                break;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -282,7 +295,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                else
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->method = SIMPLEPIE_FILE_SOURCE_LOCAL | SIMPLEPIE_FILE_SOURCE_FILE_GET_CONTENTS;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if (!$this->body = file_get_contents($url))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if (empty($url) || !($this->body = trim(file_get_contents($url))))
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->error = 'file_get_contents could not read the file';
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->success = false;
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieHTTPParserphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/HTTP/Parser.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/HTTP/Parser.php   2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/HTTP/Parser.php     2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -156,15 +155,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return true;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       $this->http_version = '';
-                       $this->status_code = '';
-                       $this->reason = '';
-                       $this->headers = array();
-                       $this->body = '';
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $this->http_version = '';
+               $this->status_code = '';
+               $this->reason = '';
+               $this->headers = array();
+               $this->body = '';
+               return false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -497,4 +494,25 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+       /**
+        * Prepare headers (take care of proxies headers)
+        *
+        * @param string  $headers Raw headers
+        * @param integer $count   Redirection count. Default to 1.
+        *
+        * @return string
+        */
+       static public function prepareHeaders($headers, $count = 1)
+       {
+               $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.1 200 Connection established\r\n\r\n")) {
+                       $data = str_ireplace("HTTP/1.1 200 Connection established\r\n\r\n", '', $data);
+               }
+               return $data;
+       }
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieIRIphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/IRI.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/IRI.php   2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/IRI.php     2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -47,10 +46,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @subpackage HTTP
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Steve Minutillo
</span><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @copyright 2007-2012 Geoffrey Sneddon, Steve Minutillo, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2007-2012 Sam Sneddon, Steve Minutillo, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> class SimplePie_IRI
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -212,10 +211,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->normalization[$this->scheme][$name];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return $return;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return $return;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -226,14 +223,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function __isset($name)
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if (method_exists($this, 'get_' . $name) || isset($this->$name))
-               {
-                       return true;
-               }
-               else
-               {
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return method_exists($this, 'get_' . $name) || isset($this->$name);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -260,6 +250,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * Clean up
+        */
+       public function __destruct() {
+           $this->set_iri(null, true);
+           $this->set_path(null, true);
+           $this->set_authority(null, true);
+       }
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * Create a new IRI object by resolving a relative IRI
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * Returns false if $base is not absolute, otherwise an IRI.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -348,10 +347,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $target->scheme_normalization();
</span><span class="cx" style="display: block; padding: 0 10px">                                return $target;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        else
-                       {
-                               return false;
-                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                       return false;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -388,11 +385,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                        return $match;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       // This can occur when a paragraph is accidentally parsed as a URI
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // This can occur when a paragraph is accidentally parsed as a URI
+               return false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -768,25 +763,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function is_valid()
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $isauthority = $this->iuserinfo !== null || $this->ihost !== null || $this->port !== null;
-               if ($this->ipath !== '' &&
-                       (
-                               $isauthority && (
-                                       $this->ipath[0] !== '/' ||
-                                       substr($this->ipath, 0, 2) === '//'
-                               ) ||
-                               (
-                                       $this->scheme === null &&
-                                       !$isauthority &&
-                                       strpos($this->ipath, ':') !== false &&
-                                       (strpos($this->ipath, '/') === false ? true : strpos($this->ipath, ':') < strpos($this->ipath, '/'))
-                               )
-                       )
-               )
-               {
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ($this->ipath === '') return true;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $isauthority = $this->iuserinfo !== null || $this->ihost !== null ||
+                       $this->port !== null;
+               if ($isauthority && $this->ipath[0] === '/') return true;
+
+               if (!$isauthority && (substr($this->ipath, 0, 2) === '//')) return false;
+
+               // Relative urls cannot have a colon in the first path segment (and the
+               // slashes themselves are not included so skip the first character).
+               if (!$this->scheme && !$isauthority &&
+                   strpos($this->ipath, ':') !== false &&
+                   strpos($this->ipath, '/', 1) !== false &&
+                   strpos($this->ipath, ':') < strpos($this->ipath, '/', 1)) return false;
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 return true;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -797,9 +788,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @param string $iri
</span><span class="cx" style="display: block; padding: 0 10px">         * @return bool
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function set_iri($iri)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function set_iri($iri, $clear_cache = false)
</ins><span class="cx" style="display: block; padding: 0 10px">         {
</span><span class="cx" style="display: block; padding: 0 10px">                static $cache;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if ($clear_cache)
+               {
+                       $cache = null;
+                       return;
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">                 if (!$cache)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        $cache = array();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -821,30 +817,28 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                 $return) = $cache[$iri];
</span><span class="cx" style="display: block; padding: 0 10px">                        return $return;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $parsed = $this->parse_iri((string) $iri);
+               if (!$parsed)
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $parsed = $this->parse_iri((string) $iri);
-                       if (!$parsed)
-                       {
-                               return false;
-                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return false;
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $return = $this->set_scheme($parsed['scheme'])
-                               && $this->set_authority($parsed['authority'])
-                               && $this->set_path($parsed['path'])
-                               && $this->set_query($parsed['query'])
-                               && $this->set_fragment($parsed['fragment']);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $return = $this->set_scheme($parsed['scheme'])
+                       && $this->set_authority($parsed['authority'])
+                       && $this->set_path($parsed['path'])
+                       && $this->set_query($parsed['query'])
+                       && $this->set_fragment($parsed['fragment']);
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $cache[$iri] = array($this->scheme,
-                                                                $this->iuserinfo,
-                                                                $this->ihost,
-                                                                $this->port,
-                                                                $this->ipath,
-                                                                $this->iquery,
-                                                                $this->ifragment,
-                                                                $return);
-                       return $return;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $cache[$iri] = array($this->scheme,
+                                                        $this->iuserinfo,
+                                                        $this->ihost,
+                                                        $this->port,
+                                                        $this->ipath,
+                                                        $this->iquery,
+                                                        $this->ifragment,
+                                                        $return);
+               return $return;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -879,9 +873,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @param string $authority
</span><span class="cx" style="display: block; padding: 0 10px">         * @return bool
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function set_authority($authority)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function set_authority($authority, $clear_cache = false)
</ins><span class="cx" style="display: block; padding: 0 10px">         {
</span><span class="cx" style="display: block; padding: 0 10px">                static $cache;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if ($clear_cache)
+               {
+                       $cache = null;
+                       return;
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">                 if (!$cache)
</span><span class="cx" style="display: block; padding: 0 10px">                        $cache = array();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -901,42 +900,40 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        return $return;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $remaining = $authority;
+               if (($iuserinfo_end = strrpos($remaining, '@')) !== false)
+               {
+                       $iuserinfo = substr($remaining, 0, $iuserinfo_end);
+                       $remaining = substr($remaining, $iuserinfo_end + 1);
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">                 else
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $remaining = $authority;
-                       if (($iuserinfo_end = strrpos($remaining, '@')) !== false)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $iuserinfo = null;
+               }
+               if (($port_start = strpos($remaining, ':', strpos($remaining, ']'))) !== false)
+               {
+                       if (($port = substr($remaining, $port_start + 1)) === false)
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $iuserinfo = substr($remaining, 0, $iuserinfo_end);
-                               $remaining = substr($remaining, $iuserinfo_end + 1);
-                       }
-                       else
-                       {
-                               $iuserinfo = null;
-                       }
-                       if (($port_start = strpos($remaining, ':', strpos($remaining, ']'))) !== false)
-                       {
-                               if (($port = substr($remaining, $port_start + 1)) === false)
-                               {
-                                       $port = null;
-                               }
-                               $remaining = substr($remaining, 0, $port_start);
-                       }
-                       else
-                       {
</del><span class="cx" style="display: block; padding: 0 10px">                                 $port = null;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        $remaining = substr($remaining, 0, $port_start);
+               }
+               else
+               {
+                       $port = null;
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $return = $this->set_userinfo($iuserinfo) &&
-                                         $this->set_host($remaining) &&
-                                         $this->set_port($port);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $return = $this->set_userinfo($iuserinfo) &&
+                                 $this->set_host($remaining) &&
+                                 $this->set_port($port);
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $cache[$authority] = array($this->iuserinfo,
-                                                                          $this->ihost,
-                                                                          $this->port,
-                                                                          $return);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $cache[$authority] = array($this->iuserinfo,
+                                                                  $this->ihost,
+                                                                  $this->port,
+                                                                  $return);
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $return;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return $return;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1036,11 +1033,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->scheme_normalization();
</span><span class="cx" style="display: block; padding: 0 10px">                        return true;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       $this->port = null;
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $this->port = null;
+               return false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1049,9 +1044,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @param string $ipath
</span><span class="cx" style="display: block; padding: 0 10px">         * @return bool
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function set_path($ipath)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function set_path($ipath, $clear_cache = false)
</ins><span class="cx" style="display: block; padding: 0 10px">         {
</span><span class="cx" style="display: block; padding: 0 10px">                static $cache;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if ($clear_cache)
+               {
+                       $cache = null;
+                       return;
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">                 if (!$cache)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        $cache = array();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1166,7 +1166,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        $iri .= $this->ipath;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                elseif (!empty($this->normalization[$this->scheme]['ipath']) && $iauthority !== null && $iauthority !== '')
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        elseif (!empty($this->normalization[$this->scheme]['ipath']) && $iauthority !== null && $iauthority !== '')
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><span class="cx" style="display: block; padding: 0 10px">                        $iri .= $this->normalization[$this->scheme]['ipath'];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1210,16 +1210,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                $iauthority .= $this->ihost;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ($this->port !== null)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+            if ($this->port !== null && $this->port !== 0)
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><span class="cx" style="display: block; padding: 0 10px">                                $iauthority .= ':' . $this->port;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                        return $iauthority;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1232,7 +1230,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $iauthority = $this->get_iauthority();
</span><span class="cx" style="display: block; padding: 0 10px">                if (is_string($iauthority))
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->to_uri($iauthority);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-                       return $iauthority;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return $iauthority;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieItemphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Item.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Item.php  2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Item.php    2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -122,7 +121,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function __destruct()
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ((version_compare(PHP_VERSION, '5.3', '<') || !gc_enabled()) && !ini_get('zend.ze1_compatibility_mode'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if (!gc_enabled())
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><span class="cx" style="display: block; padding: 0 10px">                        unset($this->feed);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -148,10 +147,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->data['child'][$namespace][$tag];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -203,14 +200,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * Uses `<atom:id>`, `<guid>`, `<dc:identifier>` or the `about` attribute
</span><span class="cx" style="display: block; padding: 0 10px">         * for RDF. If none of these are supplied (or `$hash` is true), creates an
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * MD5 hash based on the permalink and title. If either of those are not
-        * supplied, creates a hash based on the full feed data.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * MD5 hash based on the permalink, title and content.
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since Beta 2
</span><span class="cx" style="display: block; padding: 0 10px">         * @param boolean $hash Should we force using a hash instead of the supplied ID?
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @return string
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param string|false $fn User-supplied function to generate an hash
+        * @return string|null
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function get_id($hash = false)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function get_id($hash = false, $fn = 'md5')
</ins><span class="cx" style="display: block; padding: 0 10px">         {
</span><span class="cx" style="display: block; padding: 0 10px">                if (!$hash)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -238,23 +235,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                return $this->sanitize($this->data['attribs'][SIMPLEPIE_NAMESPACE_RDF]['about'], SIMPLEPIE_CONSTRUCT_TEXT);
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        elseif (($return = $this->get_permalink()) !== null)
-                       {
-                               return $return;
-                       }
-                       elseif (($return = $this->get_title()) !== null)
-                       {
-                               return $return;
-                       }
</del><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ($this->get_permalink() !== null || $this->get_title() !== null)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ($fn === false)
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return md5($this->get_permalink() . $this->get_title());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return null;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         elseif (!is_callable($fn))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return md5(serialize($this->data));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 trigger_error('User-supplied function $fn must be callable', E_USER_WARNING);
+                       $fn = 'md5';
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                return call_user_func($fn,
+                      $this->get_permalink().$this->get_title().$this->get_content());
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -322,41 +314,50 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_description($description_only = false)
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'summary'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'summary')) &&
+                   ($return = $this->sanitize($tags[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($tags[0]['attribs'])), $this->get_base($tags[0]))))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $return;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'summary'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'summary')) &&
+                       ($return = $this->sanitize($tags[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($tags[0]['attribs'])), $this->get_base($tags[0]))))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $return;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description')) &&
+                       ($return = $this->sanitize($tags[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($tags[0]))))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0]));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $return;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description')) &&
+                       ($return = $this->sanitize($tags[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($tags[0]))))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $return;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description')) &&
+                       ($return = $this->sanitize($tags[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $return;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description')) &&
+                       ($return = $this->sanitize($tags[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $return;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary')) &&
+                       ($return = $this->sanitize($tags[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($tags[0]))))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $return;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle')) &&
+                       ($return = $this->sanitize($tags[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $return;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description')) &&
+                       ($return = $this->sanitize($tags[0]['data'], SIMPLEPIE_CONSTRUCT_HTML)))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $return;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                elseif (!$description_only)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -363,10 +364,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->get_content(true);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -385,26 +384,51 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_content($content_only = false)
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'content'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'content')) &&
+                   ($return = $this->sanitize($tags[0]['data'], $this->registry->call('Misc', 'atom_10_content_construct_type', array($tags[0]['attribs'])), $this->get_base($tags[0]))))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_content_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $return;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'content'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'content')) &&
+                       ($return = $this->sanitize($tags[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($tags[0]['attribs'])), $this->get_base($tags[0]))))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0]));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $return;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT, 'encoded'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT, 'encoded')) &&
+                       ($return = $this->sanitize($tags[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($tags[0]))))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $return;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                elseif (!$content_only)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->get_description(true);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
+       }
+
+       /**
+        * Get the media:thumbnail of the item
+        *
+        * Uses `<media:thumbnail>`
+        *
+        *
+        * @return array|null
+        */
+       public function get_thumbnail()
+       {
+               if (!isset($this->data['thumbnail']))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail'))
+                       {
+                               $this->data['thumbnail'] = $return[0]['attribs'][''];
+                       }
+                       else
+                       {
+                               $this->data['thumbnail'] = null;
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                return $this->data['thumbnail'];
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -421,10 +445,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $categories[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -433,13 +455,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Uses `<atom:category>`, `<category>` or `<dc:subject>`
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since Beta 3
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @return array|null List of {@see SimplePie_Category} objects
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @return SimplePie_Category[]|null List of {@see SimplePie_Category} objects
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_categories()
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><span class="cx" style="display: block; padding: 0 10px">                $categories = array();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $type = 'category';
+               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, $type) as $category)
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><span class="cx" style="display: block; padding: 0 10px">                        $term = null;
</span><span class="cx" style="display: block; padding: 0 10px">                        $scheme = null;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -456,9 +479,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT);
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $categories[] = $this->registry->create('Category', array($term, $scheme, $label));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $categories[] = $this->registry->create('Category', array($term, $scheme, $label, $type));
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, $type) as $category)
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><span class="cx" style="display: block; padding: 0 10px">                        // This is really the label, but keep this as the term also for BC.
</span><span class="cx" style="display: block; padding: 0 10px">                        // Label will also work on retrieving because that falls back to term.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -471,15 +494,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                $scheme = null;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $categories[] = $this->registry->create('Category', array($term, $scheme, null));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $categories[] = $this->registry->create('Category', array($term, $scheme, null, $type));
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $type = 'subject';
+               foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, $type) as $category)
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null, $type));
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, $type) as $category)
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null, $type));
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if (!empty($categories))
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -486,10 +511,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return array_unique($categories);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -506,10 +529,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $authors[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -526,10 +547,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $contributors[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -538,7 +557,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Uses `<atom:contributor>`
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 1.1
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @return array|null List of {@see SimplePie_Author} objects
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @return SimplePie_Author[]|null List of {@see SimplePie_Author} objects
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_contributors()
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -592,10 +611,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return array_unique($contributors);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -604,7 +621,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Uses `<atom:author>`, `<author>`, `<dc:creator>` or `<itunes:author>`
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since Beta 2
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @return array|null List of {@see SimplePie_Author} objects
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @return SimplePie_Author[]|null List of {@see SimplePie_Author} objects
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_authors()
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -682,10 +699,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $authors;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -710,10 +725,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -738,31 +751,31 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->data['date']['raw'] = $return[0]['data'];
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'pubDate'))
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->data['date']['raw'] = $return[0]['data'];
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'issued'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'date'))
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->data['date']['raw'] = $return[0]['data'];
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'created'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'date'))
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->data['date']['raw'] = $return[0]['data'];
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'modified'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated'))
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->data['date']['raw'] = $return[0]['data'];
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'pubDate'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'issued'))
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->data['date']['raw'] = $return[0]['data'];
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'date'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'created'))
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->data['date']['raw'] = $return[0]['data'];
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'date'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'modified'))
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->data['date']['raw'] = $return[0]['data'];
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -792,10 +805,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        return date($date_format, $this->data['date']['parsed']);
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -821,7 +832,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        if (!empty($this->data['updated']['raw']))
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                $parser = $this->registry->call('Parse_Date', 'get');
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $this->data['updated']['parsed'] = $parser->parse($this->data['date']['raw']);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $this->data['updated']['parsed'] = $parser->parse($this->data['updated']['raw']);
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px">                        else
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -843,10 +854,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        return date($date_format, $this->data['updated']['parsed']);
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -872,10 +881,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return strftime($date_format, $date);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -936,10 +943,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $enclosure->get_link();
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -953,14 +958,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_link($key = 0, $rel = 'alternate')
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><span class="cx" style="display: block; padding: 0 10px">                $links = $this->get_links($rel);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ($links[$key] !== null)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ($links && $links[$key] !== null)
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $links[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1040,10 +1043,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->data['links'][$rel];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1063,10 +1064,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $enclosures[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1080,8 +1079,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since Beta 2
</span><span class="cx" style="display: block; padding: 0 10px">         * @todo Add support for end-user defined sorting of enclosures by type/handler (so we can prefer the faster-loading FLV over MP4).
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @todo If an element exists at a level, but it's value is empty, we should fall back to the value from the parent (if it exists).
-        * @return array|null List of SimplePie_Enclosure items
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @todo If an element exists at a level, but its value is empty, we should fall back to the value from the parent (if it exists).
+        * @return SimplePie_Enclosure[]|null List of SimplePie_Enclosure items
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_enclosures()
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2658,7 +2657,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                // PLAYER
</span><span class="cx" style="display: block; padding: 0 10px">                                                if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player']))
</span><span class="cx" style="display: block; padding: 0 10px">                                                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'])) {
+                                                               $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                                                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                                                else
</span><span class="cx" style="display: block; padding: 0 10px">                                                {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2733,7 +2734,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                {
</span><span class="cx" style="display: block; padding: 0 10px">                                                        foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail)
</span><span class="cx" style="display: block; padding: 0 10px">                                                        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         if (isset($thumbnail['attribs']['']['url'])) {
+                                                                       $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI);
+                                                               }
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         }
</span><span class="cx" style="display: block; padding: 0 10px">                                                        if (is_array($thumbnails))
</span><span class="cx" style="display: block; padding: 0 10px">                                                        {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2789,9 +2792,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                                $length = ceil($link['attribs']['']['length']);
</span><span class="cx" style="display: block; padding: 0 10px">                                        }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                        if (isset($link['attribs']['']['title']))
+                                       {
+                                               $title = $this->sanitize($link['attribs']['']['title'], SIMPLEPIE_CONSTRUCT_TEXT);
+                                       }
+                                       else
+                                       {
+                                               $title = $title_parent;
+                                       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title, $width));
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2877,10 +2888,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->data['enclosures'];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2905,10 +2914,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return (float) $match[1];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2937,10 +2944,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return (float) $match[2];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2955,10 +2960,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->registry->create('Source', array($this, $return[0]));
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del></span></pre></div>
<a id="trunksrcwpincludesSimplePieLocatorphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Locator.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Locator.php       2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Locator.php 2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -63,14 +62,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">        var $base_location = 0;
</span><span class="cx" style="display: block; padding: 0 10px">        var $checked_feeds = 0;
</span><span class="cx" style="display: block; padding: 0 10px">        var $max_checked_feeds = 10;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        var $force_fsockopen = false;
+       var $curl_options = array();
</ins><span class="cx" style="display: block; padding: 0 10px">         protected $registry;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function __construct(SimplePie_File $file, $timeout = 10, $useragent = null, $max_checked_feeds = 10)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function __construct(SimplePie_File $file, $timeout = 10, $useragent = null, $max_checked_feeds = 10, $force_fsockopen = false, $curl_options = array())
</ins><span class="cx" style="display: block; padding: 0 10px">         {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->file = $file;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->useragent = $useragent;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->timeout = $timeout;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->max_checked_feeds = $max_checked_feeds;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $this->force_fsockopen = $force_fsockopen;
+               $this->curl_options = $curl_options;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if (class_exists('DOMDocument'))
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -121,41 +124,42 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ($type & SIMPLEPIE_LOCATOR_LOCAL_EXTENSION && $working = $this->extension($this->local))
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                return $working;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         return $working[0];
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ($type & SIMPLEPIE_LOCATOR_LOCAL_BODY && $working = $this->body($this->local))
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                return $working;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         return $working[0];
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ($type & SIMPLEPIE_LOCATOR_REMOTE_EXTENSION && $working = $this->extension($this->elsewhere))
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                return $working;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         return $working[0];
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ($type & SIMPLEPIE_LOCATOR_REMOTE_BODY && $working = $this->body($this->elsewhere))
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                return $working;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         return $working[0];
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">                return null;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function is_feed($file)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function is_feed($file, $check_html = false)
</ins><span class="cx" style="display: block; padding: 0 10px">         {
</span><span class="cx" style="display: block; padding: 0 10px">                if ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        $sniffer = $this->registry->create('Content_Type_Sniffer', array($file));
</span><span class="cx" style="display: block; padding: 0 10px">                        $sniffed = $sniffer->get_type();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if (in_array($sniffed, array('application/rss+xml', 'application/rdf+xml', 'text/rdf', 'application/atom+xml', 'text/xml', 'application/xml')))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $mime_types = array('application/rss+xml', 'application/rdf+xml',
+                                           'text/rdf', 'application/atom+xml', 'text/xml',
+                                           'application/xml', 'application/x-rss+xml');
+                       if ($check_html)
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                return true;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $mime_types[] = 'text/html';
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        else
-                       {
-                               return false;
-                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                       return in_array($sniffed, $mime_types);
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                elseif ($file->method & SIMPLEPIE_FILE_SOURCE_LOCAL)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -204,10 +208,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return array_values($feeds);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        protected function search_elements_by_tag($name, &$done, $feeds)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -226,7 +228,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                        if ($link->hasAttribute('href') && $link->hasAttribute('rel'))
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $rel = array_unique($this->registry->call('Misc', 'space_seperated_tokens', array(strtolower($link->getAttribute('rel')))));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $rel = array_unique($this->registry->call('Misc', 'space_separated_tokens', array(strtolower($link->getAttribute('rel')))));
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $line = method_exists($link, 'getLineNo') ? $link->getLineNo() : 1;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                if ($this->base_location < $line)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -242,14 +244,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        continue;
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if (!in_array($href, $done) && in_array('feed', $rel) || (in_array('alternate', $rel) && !in_array('stylesheet', $rel) && $link->hasAttribute('type') && in_array(strtolower($this->registry->call('Misc', 'parse_mime', array($link->getAttribute('type')))), array('application/rss+xml', 'application/atom+xml'))) && !isset($feeds[$href]))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if (!in_array($href, $done) && in_array('feed', $rel) || (in_array('alternate', $rel) && !in_array('stylesheet', $rel) && $link->hasAttribute('type') && in_array(strtolower($this->registry->call('Misc', 'parse_mime', array($link->getAttribute('type')))), array('text/html', 'application/rss+xml', 'application/atom+xml'))) && !isset($feeds[$href]))
</ins><span class="cx" style="display: block; padding: 0 10px">                                 {
</span><span class="cx" style="display: block; padding: 0 10px">                                        $this->checked_feeds++;
</span><span class="cx" style="display: block; padding: 0 10px">                                        $headers = array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1',
</span><span class="cx" style="display: block; padding: 0 10px">                                        );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $feed = $this->registry->create('File', array($href, $this->timeout, 5, $headers, $this->useragent));
-                                       if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $feed = $this->registry->create('File', array($href, $this->timeout, 5, $headers, $this->useragent, $this->force_fsockopen, $this->curl_options));
+                                       if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed, true))
</ins><span class="cx" style="display: block; padding: 0 10px">                                         {
</span><span class="cx" style="display: block; padding: 0 10px">                                                $feeds[$href] = $feed;
</span><span class="cx" style="display: block; padding: 0 10px">                                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -275,7 +277,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                $href = trim($link->getAttribute('href'));
</span><span class="cx" style="display: block; padding: 0 10px">                                $parsed = $this->registry->call('Misc', 'parse_url', array($href));
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if ($parsed['scheme'] === '' || preg_match('/^(http(s)|feed)?$/i', $parsed['scheme']))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ($parsed['scheme'] === '' || preg_match('/^(https?|feed)?$/i', $parsed['scheme']))
</ins><span class="cx" style="display: block; padding: 0 10px">                                 {
</span><span class="cx" style="display: block; padding: 0 10px">                                        if (method_exists($link, 'getLineNo') && $this->base_location < $link->getLineNo())
</span><span class="cx" style="display: block; padding: 0 10px">                                        {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -312,6 +314,57 @@
</span><span class="cx" style="display: block; padding: 0 10px">                return null;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        public function get_rel_link($rel)
+       {
+               if ($this->dom === null)
+               {
+                       throw new SimplePie_Exception('DOMDocument not found, unable to use '.
+                                                     'locator');
+               }
+               if (!class_exists('DOMXpath'))
+               {
+                       throw new SimplePie_Exception('DOMXpath not found, unable to use '.
+                                                     'get_rel_link');
+               }
+
+               $xpath = new DOMXpath($this->dom);
+               $query = '//a[@rel and @href] | //link[@rel and @href]';
+               foreach ($xpath->query($query) as $link)
+               {
+                       $href = trim($link->getAttribute('href'));
+                       $parsed = $this->registry->call('Misc', 'parse_url', array($href));
+                       if ($parsed['scheme'] === '' ||
+                           preg_match('/^https?$/i', $parsed['scheme']))
+                       {
+                               if (method_exists($link, 'getLineNo') &&
+                                   $this->base_location < $link->getLineNo())
+                               {
+                                       $href =
+                                               $this->registry->call('Misc', 'absolutize_url',
+                                                                     array(trim($link->getAttribute('href')),
+                                                                           $this->base));
+                               }
+                               else
+                               {
+                                       $href =
+                                               $this->registry->call('Misc', 'absolutize_url',
+                                                                     array(trim($link->getAttribute('href')),
+                                                                           $this->http_base));
+                               }
+                               if ($href === false)
+                               {
+                                       return null;
+                               }
+                               $rel_values = explode(' ', strtolower($link->getAttribute('rel')));
+                               if (in_array($rel, $rel_values))
+                               {
+                                       return $href;
+                               }
+                       }
+               }
+               return null;
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         public function extension(&$array)
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ($array as $key => $value)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -327,10 +380,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $headers = array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1',
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $feed = $this->registry->create('File', array($value, $this->timeout, 5, $headers, $this->useragent));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $feed = $this->registry->create('File', array($value, $this->timeout, 5, $headers, $this->useragent, $this->force_fsockopen, $this->curl_options));
</ins><span class="cx" style="display: block; padding: 0 10px">                                 if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed))
</span><span class="cx" style="display: block; padding: 0 10px">                                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        return $feed;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 return array($feed);
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                                else
</span><span class="cx" style="display: block; padding: 0 10px">                                {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -349,16 +402,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                break;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if (preg_match('/(rss|rdf|atom|xml)/i', $value))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if (preg_match('/(feed|rss|rdf|atom|xml)/i', $value))
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->checked_feeds++;
</span><span class="cx" style="display: block; padding: 0 10px">                                $headers = array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1',
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $feed = $this->registry->create('File', array($value, $this->timeout, 5, null, $this->useragent));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $feed = $this->registry->create('File', array($value, $this->timeout, 5, null, $this->useragent, $this->force_fsockopen, $this->curl_options));
</ins><span class="cx" style="display: block; padding: 0 10px">                                 if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed))
</span><span class="cx" style="display: block; padding: 0 10px">                                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        return $feed;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 return array($feed);
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                                else
</span><span class="cx" style="display: block; padding: 0 10px">                                {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -369,4 +422,3 @@
</span><span class="cx" style="display: block; padding: 0 10px">                return null;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del></span></pre></div>
<a id="trunksrcwpincludesSimplePieMiscphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Misc.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Misc.php  2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Misc.php    2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -138,7 +137,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ($element['attribs'] as $key => $value)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        $key = strtolower($key);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $full .= " $key=\"" . htmlspecialchars($value['data']) . '"';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $full .= " $key=\"" . htmlspecialchars($value['data'], ENT_COMPAT, 'UTF-8') . '"';
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                if ($element['self_closing'])
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -218,10 +217,25 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return substr_replace($url, 'itpc', 0, 4);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return $url;
+       }
+
+       public static function array_merge_recursive($array1, $array2)
+       {
+               foreach ($array2 as $key => $value)
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $url;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if (is_array($value))
+                       {
+                               $array1[$key] = SimplePie_Misc::array_merge_recursive($array1[$key], $value);
+                       }
+                       else
+                       {
+                               $array1[$key] = $value;
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return $array1;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public static function parse_url($url)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -260,10 +274,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return chr($integer);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return strtoupper($match[0]);
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return strtoupper($match[0]);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -317,16 +329,19 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $return;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // This is last, as behaviour of this varies with OS userland and PHP version
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // This is third, as behaviour of this varies with OS userland and PHP version
</ins><span class="cx" style="display: block; padding: 0 10px">                 elseif (function_exists('iconv') && ($return = SimplePie_Misc::change_encoding_iconv($data, $input, $output)))
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $return;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // If we can't do anything, just fail
-               else
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // This is last, as behaviour of this varies with OS userland and PHP version
+               elseif (class_exists('\UConverter') && ($return = SimplePie_Misc::change_encoding_uconverter($data, $input, $output)))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return false;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $return;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // If we can't do anything, just fail
+               return false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        protected static function change_encoding_mbstring($data, $input, $output)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -373,6 +388,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @param string $data
+        * @param string $input
+        * @param string $output
+        * @return string|false
+        */
+       protected static function change_encoding_uconverter($data, $input, $output)
+       {
+               return @\UConverter::transcode($data, $output, $input);
+       }
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * Normalize an encoding name
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * This is automatically generated by create.php
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1826,10 +1852,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return trim($mime);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return trim(substr($mime, 0, $pos));
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return trim(substr($mime, 0, $pos));
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public static function atom_03_construct_type($attribs)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1862,10 +1886,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        return SIMPLEPIE_CONSTRUCT_NONE | $mode;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return SIMPLEPIE_CONSTRUCT_TEXT | $mode;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return SIMPLEPIE_CONSTRUCT_TEXT | $mode;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public static function atom_10_construct_type($attribs)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1915,10 +1937,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                return SIMPLEPIE_CONSTRUCT_BASE64;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return SIMPLEPIE_CONSTRUCT_TEXT;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return SIMPLEPIE_CONSTRUCT_TEXT;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public static function is_isegment_nz_nc($string)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1926,7 +1946,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                return (bool) preg_match('/^([A-Za-z0-9\-._~\x{A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}\x{10000}-\x{1FFFD}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}\x{40000}-\x{4FFFD}\x{50000}-\x{5FFFD}\x{60000}-\x{6FFFD}\x{70000}-\x{7FFFD}\x{80000}-\x{8FFFD}\x{90000}-\x{9FFFD}\x{A0000}-\x{AFFFD}\x{B0000}-\x{BFFFD}\x{C0000}-\x{CFFFD}\x{D0000}-\x{DFFFD}\x{E1000}-\x{EFFFD}!$&\'()*+,;=@]|(%[0-9ABCDEF]{2}))+$/u', $string);
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public static function space_seperated_tokens($string)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public static function space_separated_tokens($string)
</ins><span class="cx" style="display: block; padding: 0 10px">         {
</span><span class="cx" style="display: block; padding: 0 10px">                $space_characters = "\x20\x09\x0A\x0B\x0C\x0D";
</span><span class="cx" style="display: block; padding: 0 10px">                $string_length = strlen($string);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1975,11 +1995,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return chr(0xf0 | ($codepoint >> 18)) . chr(0x80 | (($codepoint >> 12) & 0x3f)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f));
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       // U+FFFD REPLACEMENT CHARACTER
-                       return "\xEF\xBF\xBD";
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               // U+FFFD REPLACEMENT CHARACTER
+               return "\xEF\xBF\xBD";
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2183,10 +2201,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return filemtime(dirname(__FILE__) . '/Core.php');
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return filemtime(__FILE__);
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return filemtime(__FILE__);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2244,4 +2260,3 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // No-op
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del></span></pre></div>
<a id="trunksrcwpincludesSimplePieNetIPv6php"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Net/IPv6.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Net/IPv6.php      2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Net/IPv6.php        2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -54,7 +53,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * @author Alexander Merz <alexander.merz@web.de>
</span><span class="cx" style="display: block; padding: 0 10px">  * @author elfrink at introweb dot nl
</span><span class="cx" style="display: block; padding: 0 10px">  * @author Josh Peck <jmp at joshpeck dot org>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon <geoffers@gmail.com>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon <geoffers@gmail.com>
</ins><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> class SimplePie_Net_IPv6
</span><span class="cx" style="display: block; padding: 0 10px"> {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -174,10 +173,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return implode(':', $ip_parts);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return $ip_parts[0];
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return $ip_parts[0];
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -201,10 +198,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $ipv4_part = substr($ip, $pos + 1);
</span><span class="cx" style="display: block; padding: 0 10px">                        return array($ipv6_part, $ipv4_part);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return array($ip, '');
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return array($ip, '');
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -254,10 +249,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                        return true;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieParseDatephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Parse/Date.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Parse/Date.php    2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Parse/Date.php      2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -99,12 +98,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">                'dimanche' => 7,
</span><span class="cx" style="display: block; padding: 0 10px">                // German
</span><span class="cx" style="display: block; padding: 0 10px">                'montag' => 1,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'mo' => 1,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'dienstag' => 2,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'di' => 2,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'mittwoch' => 3,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'mi' => 3,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'donnerstag' => 4,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'do' => 4,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'freitag' => 5,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'fr' => 5,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'samstag' => 6,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'sa' => 6,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'sonnabend' => 6,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // AFAIK no short form for sonnabend
+               'so' => 7,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'sonntag' => 7,
</span><span class="cx" style="display: block; padding: 0 10px">                // Italian
</span><span class="cx" style="display: block; padding: 0 10px">                'lunedì' => 1,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -146,6 +153,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                'Παρ' => 5,
</span><span class="cx" style="display: block; padding: 0 10px">                'Σαβ' => 6,
</span><span class="cx" style="display: block; padding: 0 10px">                'Κυρ' => 7,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // Russian
+               'Пн.' => 1,
+               'Вт.' => 2,
+               'Ср.' => 3,
+               'Чт.' => 4,
+               'Пт.' => 5,
+               'Сб.' => 6,
+               'Вс.' => 7,
</ins><span class="cx" style="display: block; padding: 0 10px">         );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -173,7 +188,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                'aug' => 8,
</span><span class="cx" style="display: block; padding: 0 10px">                'august' => 8,
</span><span class="cx" style="display: block; padding: 0 10px">                'sep' => 9,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'september' => 8,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'september' => 9,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'oct' => 10,
</span><span class="cx" style="display: block; padding: 0 10px">                'october' => 10,
</span><span class="cx" style="display: block; padding: 0 10px">                'nov' => 11,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -208,17 +223,28 @@
</span><span class="cx" style="display: block; padding: 0 10px">                'décembre' => 12,
</span><span class="cx" style="display: block; padding: 0 10px">                // German
</span><span class="cx" style="display: block; padding: 0 10px">                'januar' => 1,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'jan' => 1,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'februar' => 2,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'feb' => 2,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'märz' => 3,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'mär' => 3,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'april' => 4,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'mai' => 5,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'apr' => 4,
+               'mai' => 5, // no short form for may
</ins><span class="cx" style="display: block; padding: 0 10px">                 'juni' => 6,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'jun' => 6,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'juli' => 7,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'jul' => 7,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'august' => 8,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'aug' => 8,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'september' => 9,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'sep' => 9,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'oktober' => 10,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'okt' => 10,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'november' => 11,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'nov' => 11,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'dezember' => 12,
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'dez' => 12,
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Italian
</span><span class="cx" style="display: block; padding: 0 10px">                'gennaio' => 1,
</span><span class="cx" style="display: block; padding: 0 10px">                'febbraio' => 2,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -290,7 +316,33 @@
</span><span class="cx" style="display: block; padding: 0 10px">                'Σεπ' => 9,
</span><span class="cx" style="display: block; padding: 0 10px">                'Οκτ' => 10,
</span><span class="cx" style="display: block; padding: 0 10px">                'Νοέ' => 11,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'Δεκ' => 12,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'Δεκ' => 12,              
+               // Russian
+               'Янв' => 1,
+               'января' => 1,
+               'Фев' => 2,
+               'февраля' => 2,
+               'Мар' => 3,
+               'марта' => 3,
+               'Апр' => 4,
+               'апреля' => 4,
+               'Май' => 5,
+               'мая' => 5,
+               'Июн' => 6,
+               'июня' => 6,
+               'Июл' => 7,
+               'июля' => 7,
+               'Авг' => 8,
+               'августа' => 8,
+               'Сен' => 9,
+               'сентября' => 9,
+               'Окт' => 10,
+               'октября' => 10,
+               'Ноя' => 11,
+               'ноября' => 11,
+               'Дек' => 12,
+               'декабря' => 12,
+
</ins><span class="cx" style="display: block; padding: 0 10px">         );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -614,7 +666,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @final
</span><span class="cx" style="display: block; padding: 0 10px">         * @access public
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param callable $callback
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param callback $callback
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        public function add_callback($callback)
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -631,7 +683,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Parse a superset of W3C-DTF (allows hyphens and colons to be omitted, as
</span><span class="cx" style="display: block; padding: 0 10px">         * well as allowing any of upper or lower case "T", horizontal tabs, or
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * spaces to be used as the time seperator (including more than one))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * spaces to be used as the time separator (including more than one))
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         * @access protected
</span><span class="cx" style="display: block; padding: 0 10px">         * @return int Timestamp
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -691,14 +743,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        // Convert the number of seconds to an integer, taking decimals into account
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $second = round($match[6] + $match[7] / pow(10, strlen($match[7])));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $second = round((int)$match[6] + (int)$match[7] / (10 ** strlen($match[7])));
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        return gmmktime($match[4], $match[5], $second, $match[2], $match[3], $match[1]) - $timezone;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -721,7 +771,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        $output .= substr($string, $position, $pos - $position);
</span><span class="cx" style="display: block; padding: 0 10px">                        $position = $pos + 1;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ($string[$pos - 1] !== '\\')
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ($pos === 0 || $string[$pos - 1] !== '\\')
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><span class="cx" style="display: block; padding: 0 10px">                                $depth++;
</span><span class="cx" style="display: block; padding: 0 10px">                                while ($depth && $position < $length)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -849,10 +899,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        return gmmktime($match[5], $match[6], $second, $month, $match[2], $match[4]) - $timezone;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -914,10 +962,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        return gmmktime($match[5], $match[6], $match[7], $month, $match[2], $match[4]) - $timezone;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -956,10 +1002,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $month = $this->month[strtolower($match[2])];
</span><span class="cx" style="display: block; padding: 0 10px">                        return gmmktime($match[4], $match[5], $match[6], $month, $match[3], $match[7]);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -975,10 +1019,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return false;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return $strtotime;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return $strtotime;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del></span></pre></div>
<a id="trunksrcwpincludesSimplePieParserphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Parser.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Parser.php        2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Parser.php  2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -75,8 +74,22 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->registry = $registry;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function parse(&$data, $encoding)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function parse(&$data, $encoding, $url = '')
</ins><span class="cx" style="display: block; padding: 0 10px">         {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if (class_exists('DOMXpath') && function_exists('Mf2\parse')) {
+                       $doc = new DOMDocument();
+                       @$doc->loadHTML($data);
+                       $xpath = new DOMXpath($doc);
+                       // Check for both h-feed and h-entry, as both a feed with no entries
+                       // and a list of entries without an h-feed wrapper are both valid.
+                       $query = '//*[contains(concat(" ", @class, " "), " h-feed ") or '.
+                               'contains(concat(" ", @class, " "), " h-entry ")]';
+                       $result = $xpath->query($query);
+                       if ($result->length !== 0) {
+                               return $this->parse_microformats($data, $url);
+                       }
+               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Use UTF-8 if we get passed US-ASCII, as every US-ASCII character is a UTF-8 character
</span><span class="cx" style="display: block; padding: 0 10px">                if (strtoupper($encoding) === 'US-ASCII')
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -120,7 +133,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        if ($declaration->parse())
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                $data = substr($data, $pos + 2);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $data = '<?xml version="' . $declaration->version . '" encoding="' . $encoding . '" standalone="' . (($declaration->standalone) ? 'yes' : 'no') . '"?>' . $data;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $data = '<?xml version="' . $declaration->version . '" encoding="' . $encoding . '" standalone="' . (($declaration->standalone) ? 'yes' : 'no') . '"?>' ."\n". $this->declare_html_entities() . $data;
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px">                        else
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -163,76 +176,72 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        xml_parser_free($xml);
</span><span class="cx" style="display: block; padding: 0 10px">                        return $return;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               libxml_clear_errors();
+               $xml = new XMLReader();
+               $xml->xml($data);
+               while (@$xml->read())
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        libxml_clear_errors();
-                       $xml = new XMLReader();
-                       $xml->xml($data);
-                       while (@$xml->read())
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 switch ($xml->nodeType)
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                switch ($xml->nodeType)
-                               {
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        case constant('XMLReader::END_ELEMENT'):
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case constant('XMLReader::END_ELEMENT'):
+                                       if ($xml->namespaceURI !== '')
+                                       {
+                                               $tagName = $xml->namespaceURI . $this->separator . $xml->localName;
+                                       }
+                                       else
+                                       {
+                                               $tagName = $xml->localName;
+                                       }
+                                       $this->tag_close(null, $tagName);
+                                       break;
+                               case constant('XMLReader::ELEMENT'):
+                                       $empty = $xml->isEmptyElement;
+                                       if ($xml->namespaceURI !== '')
+                                       {
+                                               $tagName = $xml->namespaceURI . $this->separator . $xml->localName;
+                                       }
+                                       else
+                                       {
+                                               $tagName = $xml->localName;
+                                       }
+                                       $attributes = array();
+                                       while ($xml->moveToNextAttribute())
+                                       {
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 if ($xml->namespaceURI !== '')
</span><span class="cx" style="display: block; padding: 0 10px">                                                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        $tagName = $xml->namespaceURI . $this->separator . $xml->localName;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 $attrName = $xml->namespaceURI . $this->separator . $xml->localName;
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                                                else
</span><span class="cx" style="display: block; padding: 0 10px">                                                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        $tagName = $xml->localName;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 $attrName = $xml->localName;
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                $attributes[$attrName] = $xml->value;
+                                       }
+                                       $this->tag_open(null, $tagName, $attributes);
+                                       if ($empty)
+                                       {
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 $this->tag_close(null, $tagName);
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                break;
-                                       case constant('XMLReader::ELEMENT'):
-                                               $empty = $xml->isEmptyElement;
-                                               if ($xml->namespaceURI !== '')
-                                               {
-                                                       $tagName = $xml->namespaceURI . $this->separator . $xml->localName;
-                                               }
-                                               else
-                                               {
-                                                       $tagName = $xml->localName;
-                                               }
-                                               $attributes = array();
-                                               while ($xml->moveToNextAttribute())
-                                               {
-                                                       if ($xml->namespaceURI !== '')
-                                                       {
-                                                               $attrName = $xml->namespaceURI . $this->separator . $xml->localName;
-                                                       }
-                                                       else
-                                                       {
-                                                               $attrName = $xml->localName;
-                                                       }
-                                                       $attributes[$attrName] = $xml->value;
-                                               }
-                                               $this->tag_open(null, $tagName, $attributes);
-                                               if ($empty)
-                                               {
-                                                       $this->tag_close(null, $tagName);
-                                               }
-                                               break;
-                                       case constant('XMLReader::TEXT'):
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 }
+                                       break;
+                               case constant('XMLReader::TEXT'):
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        case constant('XMLReader::CDATA'):
-                                               $this->cdata(null, $xml->value);
-                                               break;
-                               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case constant('XMLReader::CDATA'):
+                                       $this->cdata(null, $xml->value);
+                                       break;
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ($error = libxml_get_last_error())
-                       {
-                               $this->error_code = $error->code;
-                               $this->error_string = $error->message;
-                               $this->current_line = $error->line;
-                               $this->current_column = $error->column;
-                               return false;
-                       }
-                       else
-                       {
-                               return true;
-                       }
</del><span class="cx" style="display: block; padding: 0 10px">                 }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if ($error = libxml_get_last_error())
+               {
+                       $this->error_code = $error->code;
+                       $this->error_string = $error->message;
+                       $this->current_line = $error->line;
+                       $this->current_column = $error->column;
+                       return false;
+               }
+
+               return true;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_error_code()
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -404,4 +413,249 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">                return $cache[$string];
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+       private function parse_hcard($data, $category = false) {
+               $name = '';
+               $link = '';
+               // Check if h-card is set and pass that information on in the link.
+               if (isset($data['type']) && in_array('h-card', $data['type'])) {
+                       if (isset($data['properties']['name'][0])) {
+                               $name = $data['properties']['name'][0];
+                       }
+                       if (isset($data['properties']['url'][0])) {
+                               $link = $data['properties']['url'][0];
+                               if ($name === '') {
+                                       $name = $link;
+                               }
+                               else {
+                                       // can't have commas in categories.
+                                       $name = str_replace(',', '', $name);
+                               }
+                               $person_tag = $category ? '<span class="person-tag"></span>' : '';
+                               return '<a class="h-card" href="'.$link.'">'.$person_tag.$name.'</a>';
+                       }
+               }
+               return isset($data['value']) ? $data['value'] : '';
+       }
+
+       private function parse_microformats(&$data, $url) {
+               $feed_title = '';
+               $feed_author = NULL;
+               $author_cache = array();
+               $items = array();
+               $entries = array();
+               $mf = Mf2\parse($data, $url);
+               // First look for an h-feed.
+               $h_feed = array();
+               foreach ($mf['items'] as $mf_item) {
+                       if (in_array('h-feed', $mf_item['type'])) {
+                               $h_feed = $mf_item;
+                               break;
+                       }
+                       // Also look for h-feed or h-entry in the children of each top level item.
+                       if (!isset($mf_item['children'][0]['type'])) continue;
+                       if (in_array('h-feed', $mf_item['children'][0]['type'])) {
+                               $h_feed = $mf_item['children'][0];
+                               // In this case the parent of the h-feed may be an h-card, so use it as
+                               // the feed_author.
+                               if (in_array('h-card', $mf_item['type'])) $feed_author = $mf_item;
+                               break;
+                       }
+                       else if (in_array('h-entry', $mf_item['children'][0]['type'])) {
+                               $entries = $mf_item['children'];
+                               // In this case the parent of the h-entry list may be an h-card, so use
+                               // it as the feed_author.
+                               if (in_array('h-card', $mf_item['type'])) $feed_author = $mf_item;
+                               break;
+                       }
+               }
+               if (isset($h_feed['children'])) {
+                       $entries = $h_feed['children'];
+                       // Also set the feed title and store author from the h-feed if available.
+                       if (isset($mf['items'][0]['properties']['name'][0])) {
+                               $feed_title = $mf['items'][0]['properties']['name'][0];
+                       }
+                       if (isset($mf['items'][0]['properties']['author'][0])) {
+                               $feed_author = $mf['items'][0]['properties']['author'][0];
+                       }
+               }
+               else if (count($entries) === 0) {
+                       $entries = $mf['items'];
+               }
+               for ($i = 0; $i < count($entries); $i++) {
+                       $entry = $entries[$i];
+                       if (in_array('h-entry', $entry['type'])) {
+                               $item = array();
+                               $title = '';
+                               $description = '';
+                               if (isset($entry['properties']['url'][0])) {
+                                       $link = $entry['properties']['url'][0];
+                                       if (isset($link['value'])) $link = $link['value'];
+                                       $item['link'] = array(array('data' => $link));
+                               }
+                               if (isset($entry['properties']['uid'][0])) {
+                                       $guid = $entry['properties']['uid'][0];
+                                       if (isset($guid['value'])) $guid = $guid['value'];
+                                       $item['guid'] = array(array('data' => $guid));
+                               }
+                               if (isset($entry['properties']['name'][0])) {
+                                       $title = $entry['properties']['name'][0];
+                                       if (isset($title['value'])) $title = $title['value'];
+                                       $item['title'] = array(array('data' => $title));
+                               }
+                               if (isset($entry['properties']['author'][0]) || isset($feed_author)) {
+                                       // author is a special case, it can be plain text or an h-card array.
+                                       // If it's plain text it can also be a url that should be followed to
+                                       // get the actual h-card.
+                                       $author = isset($entry['properties']['author'][0]) ?
+                                               $entry['properties']['author'][0] : $feed_author;
+                                       if (!is_string($author)) {
+                                               $author = $this->parse_hcard($author);
+                                       }
+                                       else if (strpos($author, 'http') === 0) {
+                                               if (isset($author_cache[$author])) {
+                                                       $author = $author_cache[$author];
+                                               }
+                                               else {
+                                                       $mf = Mf2\fetch($author);
+                                                       foreach ($mf['items'] as $hcard) {
+                                                               // Only interested in an h-card by itself in this case.
+                                                               if (!in_array('h-card', $hcard['type'])) {
+                                                                       continue;
+                                                               }
+                                                               // It must have a url property matching what we fetched.
+                                                               if (!isset($hcard['properties']['url']) ||
+                                                                               !(in_array($author, $hcard['properties']['url']))) {
+                                                                       continue;
+                                                               }
+                                                               // Save parse_hcard the trouble of finding the correct url.
+                                                               $hcard['properties']['url'][0] = $author;
+                                                               // Cache this h-card for the next h-entry to check.
+                                                               $author_cache[$author] = $this->parse_hcard($hcard);
+                                                               $author = $author_cache[$author];
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                                       $item['author'] = array(array('data' => $author));
+                               }
+                               if (isset($entry['properties']['photo'][0])) {
+                                       // If a photo is also in content, don't need to add it again here.
+                                       $content = '';
+                                       if (isset($entry['properties']['content'][0]['html'])) {
+                                               $content = $entry['properties']['content'][0]['html'];
+                                       }
+                                       $photo_list = array();
+                                       for ($j = 0; $j < count($entry['properties']['photo']); $j++) {
+                                               $photo = $entry['properties']['photo'][$j];
+                                               if (!empty($photo) && strpos($content, $photo) === false) {
+                                                       $photo_list[] = $photo;
+                                               }
+                                       }
+                                       // When there's more than one photo show the first and use a lightbox.
+                                       // Need a permanent, unique name for the image set, but don't have
+                                       // anything unique except for the content itself, so use that.
+                                       $count = count($photo_list);
+                                       if ($count > 1) {
+                                               $image_set_id = preg_replace('/[[:^alnum:]]/', '', $photo_list[0]);
+                                               $description = '<p>';
+                                               for ($j = 0; $j < $count; $j++) {
+                                                       $hidden = $j === 0 ? '' : 'class="hidden" ';
+                                                       $description .= '<a href="'.$photo_list[$j].'" '.$hidden.
+                                                               'data-lightbox="image-set-'.$image_set_id.'">'.
+                                                               '<img src="'.$photo_list[$j].'"></a>';
+                                               }
+                                               $description .= '<br><b>'.$count.' photos</b></p>';
+                                       }
+                                       else if ($count == 1) {
+                                               $description = '<p><img src="'.$photo_list[0].'"></p>';
+                                       }
+                               }
+                               if (isset($entry['properties']['content'][0]['html'])) {
+                                       // e-content['value'] is the same as p-name when they are on the same
+                                       // element. Use this to replace title with a strip_tags version so
+                                       // that alt text from images is not included in the title.
+                                       if ($entry['properties']['content'][0]['value'] === $title) {
+                                               $title = strip_tags($entry['properties']['content'][0]['html']);
+                                               $item['title'] = array(array('data' => $title));
+                                       }
+                                       $description .= $entry['properties']['content'][0]['html'];
+                                       if (isset($entry['properties']['in-reply-to'][0])) {
+                                               $in_reply_to = '';
+                                               if (is_string($entry['properties']['in-reply-to'][0])) {
+                                                       $in_reply_to = $entry['properties']['in-reply-to'][0];
+                                               }
+                                               else if (isset($entry['properties']['in-reply-to'][0]['value'])) {
+                                                       $in_reply_to = $entry['properties']['in-reply-to'][0]['value'];
+                                               }
+                                               if ($in_reply_to !== '') {
+                                                       $description .= '<p><span class="in-reply-to"></span> '.
+                                                               '<a href="'.$in_reply_to.'">'.$in_reply_to.'</a><p>';
+                                               }
+                                       }
+                                       $item['description'] = array(array('data' => $description));
+                               }
+                               if (isset($entry['properties']['category'])) {
+                                       $category_csv = '';
+                                       // Categories can also contain h-cards.
+                                       foreach ($entry['properties']['category'] as $category) {
+                                               if ($category_csv !== '') $category_csv .= ', ';
+                                               if (is_string($category)) {
+                                                       // Can't have commas in categories.
+                                                       $category_csv .= str_replace(',', '', $category);
+                                               }
+                                               else {
+                                                       $category_csv .= $this->parse_hcard($category, true);
+                                               }
+                                       }
+                                       $item['category'] = array(array('data' => $category_csv));
+                               }
+                               if (isset($entry['properties']['published'][0])) {
+                                       $timestamp = strtotime($entry['properties']['published'][0]);
+                                       $pub_date = date('F j Y g:ia', $timestamp).' GMT';
+                                       $item['pubDate'] = array(array('data' => $pub_date));
+                               }
+                               // The title and description are set to the empty string to represent
+                               // a deleted item (which also makes it an invalid rss item).
+                               if (isset($entry['properties']['deleted'][0])) {
+                                       $item['title'] = array(array('data' => ''));
+                                       $item['description'] = array(array('data' => ''));
+                               }
+                               $items[] = array('child' => array('' => $item));
+                       }
+               }
+               // Mimic RSS data format when storing microformats.
+               $link = array(array('data' => $url));
+               $image = '';
+               if (!is_string($feed_author) &&
+                               isset($feed_author['properties']['photo'][0])) {
+                       $image = array(array('child' => array('' => array('url' =>
+                               array(array('data' => $feed_author['properties']['photo'][0]))))));
+               }
+               // Use the name given for the h-feed, or get the title from the html.
+               if ($feed_title !== '') {
+                       $feed_title = array(array('data' => htmlspecialchars($feed_title)));
+               }
+               else if ($position = strpos($data, '<title>')) {
+                       $start = $position < 200 ? 0 : $position - 200;
+                       $check = substr($data, $start, 400);
+                       $matches = array();
+                       if (preg_match('/<title>(.+)<\/title>/', $check, $matches)) {
+                               $feed_title = array(array('data' => htmlspecialchars($matches[1])));
+                       }
+               }
+               $channel = array('channel' => array(array('child' => array('' =>
+                       array('link' => $link, 'image' => $image, 'title' => $feed_title,
+                             'item' => $items)))));
+               $rss = array(array('attribs' => array('' => array('version' => '2.0')),
+                                  'child' => array('' => $channel)));
+               $this->data = array('child' => array('' => array('rss' => $rss)));
+               return true;
+       }
+
+       private function declare_html_entities() {
+               // This is required because the RSS specification says that entity-encoded
+               // html is allowed, but the xml specification says they must be declared.
+               return '<!DOCTYPE html [ <!ENTITY nbsp "&#x00A0;"> <!ENTITY iexcl "&#x00A1;"> <!ENTITY cent "&#x00A2;"> <!ENTITY pound "&#x00A3;"> <!ENTITY curren "&#x00A4;"> <!ENTITY yen "&#x00A5;"> <!ENTITY brvbar "&#x00A6;"> <!ENTITY sect "&#x00A7;"> <!ENTITY uml "&#x00A8;"> <!ENTITY copy "&#x00A9;"> <!ENTITY ordf "&#x00AA;"> <!ENTITY laquo "&#x00AB;"> <!ENTITY not "&#x00AC;"> <!ENTITY shy "&#x00AD;"> <!ENTITY reg "&#x00AE;"> <!ENTITY macr "&#x00AF;"> <!ENTITY deg "&#x00B0;"> <!ENTITY plusmn "&#x00B1;"> <!ENTITY sup2 "&#x00B2;"> <!ENTITY sup3 "&#x00B3;"> <!ENTITY acute "&#x00B4;"&g
 t; <!ENTITY micro "&#x00B5;"> <!ENTITY para "&#x00B6;"> <!ENTITY middot "&#x00B7;"> <!ENTITY cedil "&#x00B8;"> <!ENTITY sup1 "&#x00B9;"> <!ENTITY ordm "&#x00BA;"> <!ENTITY raquo "&#x00BB;"> <!ENTITY frac14 "&#x00BC;"> <!ENTITY frac12 "&#x00BD;"> <!ENTITY frac34 "&#x00BE;"> <!ENTITY iquest "&#x00BF;"> <!ENTITY Agrave "&#x00C0;"> <!ENTITY Aacute "&#x00C1;"> <!ENTITY Acirc "&#x00C2;"> <!ENTITY Atilde "&#x00C3;"> <!ENTITY Auml "&#x00C4;"> <!ENTITY Aring "&#x00C5;"> <!ENTITY AElig "&#x00C6;"> <!ENTITY Ccedil "&#x00C7;"> <!ENTITY Egrave "&#x00C8;"> <!ENTITY Eacute "&#x00C9;"> 
 <!ENTITY Ecirc "&#x00CA;"> <!ENTITY Euml "&#x00CB;"> <!ENTITY Igrave "&#x00CC;"> <!ENTITY Iacute "&#x00CD;"> <!ENTITY Icirc "&#x00CE;"> <!ENTITY Iuml "&#x00CF;"> <!ENTITY ETH "&#x00D0;"> <!ENTITY Ntilde "&#x00D1;"> <!ENTITY Ograve "&#x00D2;"> <!ENTITY Oacute "&#x00D3;"> <!ENTITY Ocirc "&#x00D4;"> <!ENTITY Otilde "&#x00D5;"> <!ENTITY Ouml "&#x00D6;"> <!ENTITY times "&#x00D7;"> <!ENTITY Oslash "&#x00D8;"> <!ENTITY Ugrave "&#x00D9;"> <!ENTITY Uacute "&#x00DA;"> <!ENTITY Ucirc "&#x00DB;"> <!ENTITY Uuml "&#x00DC;"> <!ENTITY Yacute "&#x00DD;"> <!ENTITY THORN "&#x00DE;"> <!E
 NTITY szlig "&#x00DF;"> <!ENTITY agrave "&#x00E0;"> <!ENTITY aacute "&#x00E1;"> <!ENTITY acirc "&#x00E2;"> <!ENTITY atilde "&#x00E3;"> <!ENTITY auml "&#x00E4;"> <!ENTITY aring "&#x00E5;"> <!ENTITY aelig "&#x00E6;"> <!ENTITY ccedil "&#x00E7;"> <!ENTITY egrave "&#x00E8;"> <!ENTITY eacute "&#x00E9;"> <!ENTITY ecirc "&#x00EA;"> <!ENTITY euml "&#x00EB;"> <!ENTITY igrave "&#x00EC;"> <!ENTITY iacute "&#x00ED;"> <!ENTITY icirc "&#x00EE;"> <!ENTITY iuml "&#x00EF;"> <!ENTITY eth "&#x00F0;"> <!ENTITY ntilde "&#x00F1;"> <!ENTITY ograve "&#x00F2;"> <!ENTITY oacute "&#x00F3;"> <!ENTIT
 Y ocirc "&#x00F4;"> <!ENTITY otilde "&#x00F5;"> <!ENTITY ouml "&#x00F6;"> <!ENTITY divide "&#x00F7;"> <!ENTITY oslash "&#x00F8;"> <!ENTITY ugrave "&#x00F9;"> <!ENTITY uacute "&#x00FA;"> <!ENTITY ucirc "&#x00FB;"> <!ENTITY uuml "&#x00FC;"> <!ENTITY yacute "&#x00FD;"> <!ENTITY thorn "&#x00FE;"> <!ENTITY yuml "&#x00FF;"> <!ENTITY OElig "&#x0152;"> <!ENTITY oelig "&#x0153;"> <!ENTITY Scaron "&#x0160;"> <!ENTITY scaron "&#x0161;"> <!ENTITY Yuml "&#x0178;"> <!ENTITY fnof "&#x0192;"> <!ENTITY circ "&#x02C6;"> <!ENTITY tilde "&#x02DC;"> <!ENTITY Alpha "&#x0391;"> <!ENTITY Beta &
 quot;&#x0392;"> <!ENTITY Gamma "&#x0393;"> <!ENTITY Epsilon "&#x0395;"> <!ENTITY Zeta "&#x0396;"> <!ENTITY Eta "&#x0397;"> <!ENTITY Theta "&#x0398;"> <!ENTITY Iota "&#x0399;"> <!ENTITY Kappa "&#x039A;"> <!ENTITY Lambda "&#x039B;"> <!ENTITY Mu "&#x039C;"> <!ENTITY Nu "&#x039D;"> <!ENTITY Xi "&#x039E;"> <!ENTITY Omicron "&#x039F;"> <!ENTITY Pi "&#x03A0;"> <!ENTITY Rho "&#x03A1;"> <!ENTITY Sigma "&#x03A3;"> <!ENTITY Tau "&#x03A4;"> <!ENTITY Upsilon "&#x03A5;"> <!ENTITY Phi "&#x03A6;"> <!ENTITY Chi "&#x03A7;"> <!ENTITY Psi "&#x03A8;"> <!ENTITY Omega "&#x03A9;"> &
 lt;!ENTITY alpha "&#x03B1;"> <!ENTITY beta "&#x03B2;"> <!ENTITY gamma "&#x03B3;"> <!ENTITY delta "&#x03B4;"> <!ENTITY epsilon "&#x03B5;"> <!ENTITY zeta "&#x03B6;"> <!ENTITY eta "&#x03B7;"> <!ENTITY theta "&#x03B8;"> <!ENTITY iota "&#x03B9;"> <!ENTITY kappa "&#x03BA;"> <!ENTITY lambda "&#x03BB;"> <!ENTITY mu "&#x03BC;"> <!ENTITY nu "&#x03BD;"> <!ENTITY xi "&#x03BE;"> <!ENTITY omicron "&#x03BF;"> <!ENTITY pi "&#x03C0;"> <!ENTITY rho "&#x03C1;"> <!ENTITY sigmaf "&#x03C2;"> <!ENTITY sigma "&#x03C3;"> <!ENTITY tau "&#x03C4;"> <!ENTITY upsilon "&#x03C5;"> <!ENTITY phi "&a
 mp;#x03C6;"> <!ENTITY chi "&#x03C7;"> <!ENTITY psi "&#x03C8;"> <!ENTITY omega "&#x03C9;"> <!ENTITY thetasym "&#x03D1;"> <!ENTITY upsih "&#x03D2;"> <!ENTITY piv "&#x03D6;"> <!ENTITY ensp "&#x2002;"> <!ENTITY emsp "&#x2003;"> <!ENTITY thinsp "&#x2009;"> <!ENTITY zwnj "&#x200C;"> <!ENTITY zwj "&#x200D;"> <!ENTITY lrm "&#x200E;"> <!ENTITY rlm "&#x200F;"> <!ENTITY ndash "&#x2013;"> <!ENTITY mdash "&#x2014;"> <!ENTITY lsquo "&#x2018;"> <!ENTITY rsquo "&#x2019;"> <!ENTITY sbquo "&#x201A;"> <!ENTITY ldquo "&#x201C;"> <!ENTITY rdquo "&#x201D;"> <!ENTITY bdquo "&#x201E;"> 
 <!ENTITY dagger "&#x2020;"> <!ENTITY Dagger "&#x2021;"> <!ENTITY bull "&#x2022;"> <!ENTITY hellip "&#x2026;"> <!ENTITY permil "&#x2030;"> <!ENTITY prime "&#x2032;"> <!ENTITY Prime "&#x2033;"> <!ENTITY lsaquo "&#x2039;"> <!ENTITY rsaquo "&#x203A;"> <!ENTITY oline "&#x203E;"> <!ENTITY frasl "&#x2044;"> <!ENTITY euro "&#x20AC;"> <!ENTITY image "&#x2111;"> <!ENTITY weierp "&#x2118;"> <!ENTITY real "&#x211C;"> <!ENTITY trade "&#x2122;"> <!ENTITY alefsym "&#x2135;"> <!ENTITY larr "&#x2190;"> <!ENTITY uarr "&#x2191;"> <!ENTITY rarr "&#x2192;"> <!ENTITY darr "&#x2193;"> <!ENT
 ITY harr "&#x2194;"> <!ENTITY crarr "&#x21B5;"> <!ENTITY lArr "&#x21D0;"> <!ENTITY uArr "&#x21D1;"> <!ENTITY rArr "&#x21D2;"> <!ENTITY dArr "&#x21D3;"> <!ENTITY hArr "&#x21D4;"> <!ENTITY forall "&#x2200;"> <!ENTITY part "&#x2202;"> <!ENTITY exist "&#x2203;"> <!ENTITY empty "&#x2205;"> <!ENTITY nabla "&#x2207;"> <!ENTITY isin "&#x2208;"> <!ENTITY notin "&#x2209;"> <!ENTITY ni "&#x220B;"> <!ENTITY prod "&#x220F;"> <!ENTITY sum "&#x2211;"> <!ENTITY minus "&#x2212;"> <!ENTITY lowast "&#x2217;"> <!ENTITY radic "&#x221A;"> <!ENTITY prop "&#x221D;"> <!ENTITY infin "&#x
 221E;"> <!ENTITY ang "&#x2220;"> <!ENTITY and "&#x2227;"> <!ENTITY or "&#x2228;"> <!ENTITY cap "&#x2229;"> <!ENTITY cup "&#x222A;"> <!ENTITY int "&#x222B;"> <!ENTITY there4 "&#x2234;"> <!ENTITY sim "&#x223C;"> <!ENTITY cong "&#x2245;"> <!ENTITY asymp "&#x2248;"> <!ENTITY ne "&#x2260;"> <!ENTITY equiv "&#x2261;"> <!ENTITY le "&#x2264;"> <!ENTITY ge "&#x2265;"> <!ENTITY sub "&#x2282;"> <!ENTITY sup "&#x2283;"> <!ENTITY nsub "&#x2284;"> <!ENTITY sube "&#x2286;"> <!ENTITY supe "&#x2287;"> <!ENTITY oplus "&#x2295;"> <!ENTITY otimes "&#x2297;"> <!ENTITY perp "&
 amp;#x22A5;"> <!ENTITY sdot "&#x22C5;"> <!ENTITY lceil "&#x2308;"> <!ENTITY rceil "&#x2309;"> <!ENTITY lfloor "&#x230A;"> <!ENTITY rfloor "&#x230B;"> <!ENTITY lang "&#x2329;"> <!ENTITY rang "&#x232A;"> <!ENTITY loz "&#x25CA;"> <!ENTITY spades "&#x2660;"> <!ENTITY clubs "&#x2663;"> <!ENTITY hearts "&#x2665;"> <!ENTITY diams "&#x2666;"> ]>';
+       }
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieRatingphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Rating.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Rating.php        2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Rating.php  2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -104,10 +103,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->scheme;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -121,9 +118,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->value;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieRegistryphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Registry.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Registry.php      2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Registry.php        2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -113,7 +112,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function register($type, $class, $legacy = false)
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if (!is_subclass_of($class, $this->default[$type]))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if (!@is_subclass_of($class, $this->default[$type]))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><span class="cx" style="display: block; padding: 0 10px">                        return false;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -222,4 +221,4 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $result = call_user_func_array(array($class, $method), $parameters);
</span><span class="cx" style="display: block; padding: 0 10px">                return $result;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-}
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+}
</ins></span></pre></div>
<a id="trunksrcwpincludesSimplePieRestrictionphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Restriction.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Restriction.php   2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Restriction.php     2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -113,10 +112,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->relationship;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -130,10 +127,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->type;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -147,9 +142,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->value;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieSanitizephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Sanitize.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Sanitize.php      2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Sanitize.php        2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -61,7 +60,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">        var $image_handler = '';
</span><span class="cx" style="display: block; padding: 0 10px">        var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
</span><span class="cx" style="display: block; padding: 0 10px">        var $encode_instead_of_strip = false;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ var $strip_attributes = array('bgsound', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
+       var $add_attributes = array('audio' => array('preload' => 'none'), 'iframe' => array('sandbox' => 'allow-scripts allow-same-origin'), 'video' => array('preload' => 'none'));
</ins><span class="cx" style="display: block; padding: 0 10px">         var $strip_comments = false;
</span><span class="cx" style="display: block; padding: 0 10px">        var $output_encoding = 'UTF-8';
</span><span class="cx" style="display: block; padding: 0 10px">        var $enable_cache = true;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -160,7 +160,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->encode_instead_of_strip = (bool) $encode;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function strip_attributes($attribs = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function strip_attributes($attribs = array('bgsound', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'))
</ins><span class="cx" style="display: block; padding: 0 10px">         {
</span><span class="cx" style="display: block; padding: 0 10px">                if ($attribs)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -179,6 +179,25 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        public function add_attributes($attribs = array('audio' => array('preload' => 'none'), 'iframe' => array('sandbox' => 'allow-scripts allow-same-origin'), 'video' => array('preload' => 'none')))
+       {
+               if ($attribs)
+               {
+                       if (is_array($attribs))
+                       {
+                               $this->add_attributes = $attribs;
+                       }
+                       else
+                       {
+                               $this->add_attributes = explode(',', $attribs);
+                       }
+               }
+               else
+               {
+                       $this->add_attributes = false;
+               }
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         public function strip_comments($strip = false)
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->strip_comments = (bool) $strip;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -249,11 +268,11 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                if (!class_exists('DOMDocument'))
</span><span class="cx" style="display: block; padding: 0 10px">                                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $this->registry->call('Misc', 'error', array('DOMDocument not found, unable to use sanitizer', E_USER_WARNING, __FILE__, __LINE__));
-                                       return '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 throw new SimplePie_Exception('DOMDocument not found, unable to use sanitizer');
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                                $document = new DOMDocument();
</span><span class="cx" style="display: block; padding: 0 10px">                                $document->encoding = 'UTF-8';
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $data = $this->preprocess($data, $type);
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                set_error_handler(array('SimplePie_Misc', 'silence_errors'));
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -260,10 +279,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $document->loadHTML($data);
</span><span class="cx" style="display: block; padding: 0 10px">                                restore_error_handler();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                $xpath = new DOMXPath($document);
+
</ins><span class="cx" style="display: block; padding: 0 10px">                                 // Strip comments
</span><span class="cx" style="display: block; padding: 0 10px">                                if ($this->strip_comments)
</span><span class="cx" style="display: block; padding: 0 10px">                                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $xpath = new DOMXPath($document);
</del><span class="cx" style="display: block; padding: 0 10px">                                         $comments = $xpath->query('//comment()');
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        foreach ($comments as $comment)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -279,7 +299,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                {
</span><span class="cx" style="display: block; padding: 0 10px">                                        foreach ($this->strip_htmltags as $tag)
</span><span class="cx" style="display: block; padding: 0 10px">                                        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $this->strip_tag($tag, $document, $type);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         $this->strip_tag($tag, $document, $xpath, $type);
</ins><span class="cx" style="display: block; padding: 0 10px">                                         }
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -287,10 +307,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                {
</span><span class="cx" style="display: block; padding: 0 10px">                                        foreach ($this->strip_attributes as $attrib)
</span><span class="cx" style="display: block; padding: 0 10px">                                        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $this->strip_attr($attrib, $document);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         $this->strip_attr($attrib, $xpath);
</ins><span class="cx" style="display: block; padding: 0 10px">                                         }
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                if ($this->add_attributes)
+                               {
+                                       foreach ($this->add_attributes as $tag => $valuePairs)
+                                       {
+                                               $this->add_attr($tag, $valuePairs, $document);
+                                       }
+                               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                                 // Replace relative URLs
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->base = $base;
</span><span class="cx" style="display: block; padding: 0 10px">                                foreach ($this->replace_url_attributes as $element => $attributes)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -326,7 +354,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                                        }
</span><span class="cx" style="display: block; padding: 0 10px">                                                                        else
</span><span class="cx" style="display: block; padding: 0 10px">                                                                        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                                trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                         trigger_error("$this->cache_location is not writable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                         }
</span><span class="cx" style="display: block; padding: 0 10px">                                                                }
</span><span class="cx" style="display: block; padding: 0 10px">                                                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -334,19 +362,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        }
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                // Remove the DOCTYPE
-                               // Seems to cause segfaulting if we don't do this
-                               if ($document->firstChild instanceof DOMDocumentType)
-                               {
-                                       $document->removeChild($document->firstChild);
-                               }
-
-                               // Move everything from the body to the root
-                               $real_body = $document->getElementsByTagName('body')->item(0)->childNodes->item(0);
-                               $document->replaceChild($real_body, $document->firstChild);
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // Get content node
+                               $div = $document->getElementsByTagName('body')->item(0)->firstChild;
</ins><span class="cx" style="display: block; padding: 0 10px">                                 // Finally, convert to a HTML string
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $data = trim($document->saveHTML());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $data = trim($document->saveHTML($div));
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                if ($this->remove_div)
</span><span class="cx" style="display: block; padding: 0 10px">                                {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -384,6 +403,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        protected function preprocess($html, $type)
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><span class="cx" style="display: block; padding: 0 10px">                $ret = '';
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $html = preg_replace('%</?(?:html|body)[^>]*?'.'>%is', '', $html);
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ($type & ~SIMPLEPIE_CONSTRUCT_XHTML)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        // Atom XHTML constructs are wrapped with a div by default
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -456,9 +476,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        protected function strip_tag($tag, $document, $type)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ protected function strip_tag($tag, $document, $xpath, $type)
</ins><span class="cx" style="display: block; padding: 0 10px">         {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $xpath = new DOMXPath($document);
</del><span class="cx" style="display: block; padding: 0 10px">                 $elements = $xpath->query('body//' . $tag);
</span><span class="cx" style="display: block; padding: 0 10px">                if ($this->encode_instead_of_strip)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -541,9 +560,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        protected function strip_attr($attrib, $document)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ protected function strip_attr($attrib, $xpath)
</ins><span class="cx" style="display: block; padding: 0 10px">         {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $xpath = new DOMXPath($document);
</del><span class="cx" style="display: block; padding: 0 10px">                 $elements = $xpath->query('//*[@' . $attrib . ']');
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ($elements as $element)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -551,4 +569,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $element->removeAttribute($attrib);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+       protected function add_attr($tag, $valuePairs, $document)
+       {
+               $elements = $document->getElementsByTagName($tag);
+               foreach ($elements as $element)
+               {
+                       foreach ($valuePairs as $attrib => $value)
+                       {
+                               $element->setAttribute($attrib, $value);
+                       }
+               }
+       }
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePieSourcephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/Source.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/Source.php        2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/Source.php  2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -80,10 +79,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->data['child'][$namespace][$tag];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_base($element = array())
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -131,10 +128,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_category($key = 0)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -144,10 +139,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $categories[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_categories()
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -201,10 +194,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return array_unique($categories);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_author($key = 0)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -214,10 +205,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $authors[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_authors()
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -284,10 +273,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return array_unique($authors);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_contributor($key = 0)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -297,10 +284,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $contributors[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_contributors()
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -355,10 +340,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return array_unique($contributors);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_link($key = 0, $rel = 'alternate')
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -368,10 +351,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $links[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -450,10 +431,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->data['links'][$rel];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_description()
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -494,10 +473,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_copyright()
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -522,10 +499,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_language()
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -546,10 +521,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->sanitize($this->data['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_latitude()
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -562,10 +535,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return (float) $match[1];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_longitude()
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -582,10 +553,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return (float) $match[2];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_image_url()
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -602,10 +571,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del></span></pre></div>
<a id="trunksrcwpincludesSimplePieXMLDeclarationParserphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/XML/Declaration/Parser.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/XML/Declaration/Parser.php        2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/XML/Declaration/Parser.php  2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -137,13 +136,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return true;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       $this->version = '';
-                       $this->encoding = '';
-                       $this->standalone = '';
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $this->version = '';
+               $this->encoding = '';
+               $this->standalone = '';
+               return false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span></span></pre></div>
<a id="trunksrcwpincludesSimplePiegzdecodephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/SimplePie/gzdecode.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/SimplePie/gzdecode.php      2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/SimplePie/gzdecode.php        2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,7 +5,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33,10 +33,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -339,11 +338,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                return false;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        else
-                       {
-                               $this->position = $this->compressed_size - 8;
-                       }
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        $this->position = $this->compressed_size - 8;
+
</ins><span class="cx" style="display: block; padding: 0 10px">                         // Check CRC of data
</span><span class="cx" style="display: block; padding: 0 10px">                        $crc = current(unpack('V', substr($this->compressed_data, $this->position, 4)));
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->position += 4;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -363,9 +360,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        // Wow, against all odds, we've actually got a valid gzip string
</span><span class="cx" style="display: block; padding: 0 10px">                        return true;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return false;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return false;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="trunksrcwpincludesclasssimplepiephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/class-simplepie.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/class-simplepie.php 2020-05-01 13:01:47 UTC (rev 47732)
+++ trunk/src/wp-includes/class-simplepie.php   2020-05-01 14:24:42 UTC (rev 47733)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -40,7 +40,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * A PHP-Based RSS and Atom Feed Framework.
</span><span class="cx" style="display: block; padding: 0 10px">  * Takes the hard work out of managing a complete RSS/Atom solution.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Copyright (c) 2004-2017, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
</ins><span class="cx" style="display: block; padding: 0 10px">  * All rights reserved.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Redistribution and use in source and binary forms, with or without modification, are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -68,10 +68,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @package SimplePie
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 1.3.1
- * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @version 1.5.5
+ * @copyright 2004-2017 Ryan Parman, Sam Sneddon, Ryan McCue
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan Parman
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @author Geoffrey Sneddon
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @author Sam Sneddon
</ins><span class="cx" style="display: block; padding: 0 10px">  * @author Ryan McCue
</span><span class="cx" style="display: block; padding: 0 10px">  * @link http://simplepie.org/ SimplePie
</span><span class="cx" style="display: block; padding: 0 10px">  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -85,7 +85,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="cx" style="display: block; padding: 0 10px">  * SimplePie Version
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-define('SIMPLEPIE_VERSION', '1.3.1');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+define('SIMPLEPIE_VERSION', '1.5.5');
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="cx" style="display: block; padding: 0 10px">  * SimplePie Build
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -481,6 +481,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public $feed_url;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @var string Original feed URL, or new feed URL iff HTTP 301 Moved Permanently
+        * @see SimplePie::subscribe_url()
+        * @access private
+        */
+       public $permanent_url = null;
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * @var object Instance of SimplePie_File to use as a feed
</span><span class="cx" style="display: block; padding: 0 10px">         * @see SimplePie::set_file()
</span><span class="cx" style="display: block; padding: 0 10px">         * @access private
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -502,6 +509,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public $timeout = 10;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @var array Custom curl options
+        * @see SimplePie::set_curl_options()
+        * @access private
+        */
+       public $curl_options = array();
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * @var bool Forces fsockopen() to be used for remote files instead
</span><span class="cx" style="display: block; padding: 0 10px">         * of cURL, even if a new enough version is installed
</span><span class="cx" style="display: block; padding: 0 10px">         * @see SimplePie::force_fsockopen()
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -525,6 +539,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public $cache = true;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @var bool Force SimplePie to fallback to expired cache, if enabled,
+        * when feed is unavailable.
+        * @see SimplePie::force_cache_fallback()
+        * @access private
+        */
+       public $force_cache_fallback = false;
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * @var int Cache duration (in seconds)
</span><span class="cx" style="display: block; padding: 0 10px">         * @see SimplePie::set_cache_duration()
</span><span class="cx" style="display: block; padding: 0 10px">         * @access private
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -630,6 +652,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public $item_limit = 0;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @var bool Stores if last-modified and/or etag headers were sent with the
+        * request when checking a feed.
+        */
+       public $check_modified = false;
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * @var array Stores the default attributes to be stripped by strip_attributes().
</span><span class="cx" style="display: block; padding: 0 10px">         * @see SimplePie::strip_attributes()
</span><span class="cx" style="display: block; padding: 0 10px">         * @access private
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -637,6 +665,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @var array Stores the default attributes to add to different tags by add_attributes().
+        * @see SimplePie::add_attributes()
+        * @access private
+        */
+       public $add_attributes = array('audio' => array('preload' => 'none'), 'iframe' => array('sandbox' => 'allow-scripts allow-same-origin'), 'video' => array('preload' => 'none'));
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * @var array Stores the default tags to be stripped by strip_htmltags().
</span><span class="cx" style="display: block; padding: 0 10px">         * @see SimplePie::strip_htmltags()
</span><span class="cx" style="display: block; padding: 0 10px">         * @access private
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -644,6 +679,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @var bool Should we throw exceptions, or use the old-style error property?
+        * @access private
+        */
+       public $enable_exceptions = false;
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * The SimplePie class contains feed level data and options
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * To use SimplePie, create the SimplePie object with no parameters. You can
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -659,9 +700,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function __construct()
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if (version_compare(PHP_VERSION, '5.2', '<'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if (version_compare(PHP_VERSION, '5.6', '<'))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        trigger_error('PHP 4.x, 5.0 and 5.1 are no longer supported. Please upgrade to PHP 5.2 or newer.');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 trigger_error('Please upgrade to PHP 5.6 or newer.');
</ins><span class="cx" style="display: block; padding: 0 10px">                         die();
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -672,7 +713,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if (func_num_args() > 0)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        $level = defined('E_USER_DEPRECATED') ? E_USER_DEPRECATED : E_USER_WARNING;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        trigger_error('Passing parameters to the constructor is no longer supported. Please use set_feed_url(), set_cache_location(), and set_cache_location() directly.', $level);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 trigger_error('Passing parameters to the constructor is no longer supported. Please use set_feed_url(), set_cache_location(), and set_cache_duration() directly.', $level);
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $args = func_get_args();
</span><span class="cx" style="display: block; padding: 0 10px">                        switch (count($args)) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -700,7 +741,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function __destruct()
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ((version_compare(PHP_VERSION, '5.3', '<') || !gc_enabled()) && !ini_get('zend.ze1_compatibility_mode'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if (!gc_enabled())
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><span class="cx" style="display: block; padding: 0 10px">                        if (!empty($this->data['items']))
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -763,6 +804,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                else
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->feed_url = $this->registry->call('Misc', 'fix_protocol', array($url, 1));
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        $this->permanent_url = $this->feed_url;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -777,6 +819,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ($file instanceof SimplePie_File)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->feed_url = $file->url;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        $this->permanent_url = $this->feed_url;
</ins><span class="cx" style="display: block; padding: 0 10px">                         $this->file =& $file;
</span><span class="cx" style="display: block; padding: 0 10px">                        return true;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -802,7 +845,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * Set the the default timeout for fetching remote feeds
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * Set the default timeout for fetching remote feeds
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         * This allows you to change the maximum time the feed's server to respond
</span><span class="cx" style="display: block; padding: 0 10px">         * and send the feed back.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -816,6 +859,19 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * Set custom curl options
+        *
+        * This allows you to change default curl options
+        *
+        * @since 1.0 Beta 3
+        * @param array $curl_options Curl options to add to default settings
+        */
+       public function set_curl_options(array $curl_options = array())
+       {
+               $this->curl_options = $curl_options;
+       }
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * Force SimplePie to use fsockopen() instead of cURL
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 1.0 Beta 3
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -841,6 +897,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * SimplePie to continue to fall back to expired cache, if enabled, when
+        * feed is unavailable.
+        *
+        * This tells SimplePie to ignore any file errors and fall back to cache
+        * instead. This only works if caching is enabled and cached content
+        * still exists.
+
+        * @param bool $enable Force use of cache on fail.
+        */
+       public function force_cache_fallback($enable = false)
+       {
+               $this->force_cache_fallback= (bool) $enable;
+       }
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * Set the length of time (in seconds) that the contents of a feed will be
</span><span class="cx" style="display: block; padding: 0 10px">         * cached
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1108,6 +1179,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->strip_comments(false);
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->strip_htmltags(false);
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->strip_attributes(false);
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        $this->add_attributes(false);
</ins><span class="cx" style="display: block; padding: 0 10px">                         $this->set_image_handler(false);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1154,16 +1226,25 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->sanitize->strip_attributes($attribs);
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        public function add_attributes($attribs = '')
+       {
+               if ($attribs === '')
+               {
+                       $attribs = $this->add_attributes;
+               }
+               $this->sanitize->add_attributes($attribs);
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Set the output encoding
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * Allows you to override SimplePie's output to match that of your webpage.
</span><span class="cx" style="display: block; padding: 0 10px">         * This is useful for times when your webpages are not being served as
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * UTF-8.  This setting will be obeyed by {@see handle_content_type()}, and
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * UTF-8. This setting will be obeyed by {@see handle_content_type()}, and
</ins><span class="cx" style="display: block; padding: 0 10px">          * is similar to {@see set_input_encoding()}.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * It should be noted, however, that not all character encodings can support
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * all characters.  If your page is being served as ISO-8859-1 and you try
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * all characters. If your page is being served as ISO-8859-1 and you try
</ins><span class="cx" style="display: block; padding: 0 10px">          * to display a Japanese feed, you'll likely see garbled characters.
</span><span class="cx" style="display: block; padding: 0 10px">         * Because of this, it is highly recommended to ensure that your webpages
</span><span class="cx" style="display: block; padding: 0 10px">         * are served as UTF-8.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1205,8 +1286,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Set the handler to enable the display of cached images.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param str $page Web-accessible path to the handler_image.php file.
-        * @param str $qs The query string that the value should be passed to.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param string $page Web-accessible path to the handler_image.php file.
+        * @param string $qs The query string that the value should be passed to.
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        public function set_image_handler($page = false, $qs = 'i')
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1231,9 +1312,19 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * Enable throwing exceptions
+        *
+        * @param boolean $enable Should we throw exceptions, or use the old-style error property?
+        */
+       public function enable_exceptions($enable = true)
+       {
+               $this->enable_exceptions = $enable;
+       }
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * Initialize the feed object
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * This is what makes everything happen.  Period.  This is where all of the
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * This is what makes everything happen. Period. This is where all of the
</ins><span class="cx" style="display: block; padding: 0 10px">          * configuration options get processed, feeds are fetched, cached, and
</span><span class="cx" style="display: block; padding: 0 10px">         * parsed, and all of that other good stuff.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1244,6 +1335,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Check absolute bare minimum requirements.
</span><span class="cx" style="display: block; padding: 0 10px">                if (!extension_loaded('xml') || !extension_loaded('pcre'))
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        $this->error = 'XML or PCRE extensions not loaded!';
</ins><span class="cx" style="display: block; padding: 0 10px">                         return false;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">                // Then check the xml extension is sane (i.e., libxml 2.7.x issue on PHP < 5.2.9 and libxml 2.7.0 to 2.7.2 on any version) if we don't have xmlreader.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1263,6 +1355,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // The default sanitize class gets set in the constructor, check if it has
+               // changed.
+               if ($this->registry->get_class('Sanitize') !== 'SimplePie_Sanitize') {
+                       $this->sanitize = $this->registry->create('Sanitize');
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">                 if (method_exists($this->sanitize, 'set_registry'))
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->sanitize->set_registry($this->registry);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1271,7 +1368,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Pass whatever was set with config options over to the sanitizer.
</span><span class="cx" style="display: block; padding: 0 10px">                // Pass the classes in for legacy support; new classes should use the registry instead
</span><span class="cx" style="display: block; padding: 0 10px">                $this->sanitize->pass_cache_data($this->cache, $this->cache_location, $this->cache_name_function, $this->registry->get_class('Cache'));
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->sanitize->pass_file_data($this->registry->get_class('File'), $this->timeout, $this->useragent, $this->force_fsockopen);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->sanitize->pass_file_data($this->registry->get_class('File'), $this->timeout, $this->useragent, $this->force_fsockopen, $this->curl_options);
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if (!empty($this->multifeed_url))
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1300,6 +1397,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->error = null;
</span><span class="cx" style="display: block; padding: 0 10px">                $this->data = array();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $this->check_modified = false;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->multifeed_objects = array();
</span><span class="cx" style="display: block; padding: 0 10px">                $cache = false;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1310,7 +1408,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        // Decide whether to enable caching
</span><span class="cx" style="display: block; padding: 0 10px">                        if ($this->cache && $parsed_feed_url['scheme'] !== '')
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, call_user_func($this->cache_name_function, $this->feed_url), 'spc'));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $url = $this->feed_url . ($this->force_feed ? '#force_feed' : '');
+                               $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, call_user_func($this->cache_name_function, $url), 'spc'));
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        // Fetch the data via SimplePie_File into $this->raw_data
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1325,6 +1424,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        list($headers, $sniffed) = $fetched;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // Empty response check
+               if(empty($this->raw_data)){
+                       $this->error = "A feed could not be found at `$this->feed_url`. Empty body.";
+                       $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, __FILE__, __LINE__));
+                       return false;
+               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Set up array of possible encodings
</span><span class="cx" style="display: block; padding: 0 10px">                $encodings = array();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1331,7 +1437,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // First check to see if input has been overridden.
</span><span class="cx" style="display: block; padding: 0 10px">                if ($this->input_encoding !== false)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $encodings[] = $this->input_encoding;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $encodings[] = strtoupper($this->input_encoding);
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $application_types = array('application/xml', 'application/xml-dtd', 'application/xml-external-parsed-entity');
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1353,7 +1459,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                if (isset($headers['content-type']) && preg_match('/;\x20?charset=([^;]*)/i', $headers['content-type'], $charset))
</span><span class="cx" style="display: block; padding: 0 10px">                                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $encodings[] = $charset[1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $encodings[] = strtoupper($charset[1]);
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                                $encodings[] = 'US-ASCII';
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1360,7 +1466,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        // Text MIME-type default
</span><span class="cx" style="display: block; padding: 0 10px">                        elseif (substr($sniffed, 0, 5) === 'text/')
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $encodings[] = 'US-ASCII';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $encodings[] = 'UTF-8';
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1382,12 +1488,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $parser = $this->registry->create('Parser');
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                // If it's parsed fine
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if ($parser->parse($utf8_data, 'UTF-8'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ($parser->parse($utf8_data, 'UTF-8', $this->permanent_url))
</ins><span class="cx" style="display: block; padding: 0 10px">                                 {
</span><span class="cx" style="display: block; padding: 0 10px">                                        $this->data = $parser->get_data();
</span><span class="cx" style="display: block; padding: 0 10px">                                        if (!($this->get_type() & ~SIMPLEPIE_TYPE_NONE))
</span><span class="cx" style="display: block; padding: 0 10px">                                        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $this->error = "A feed could not be found at $this->feed_url. This does not appear to be a valid RSS or Atom feed.";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         $this->error = "A feed could not be found at `$this->feed_url`. This does not appear to be a valid RSS or Atom feed.";
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, __FILE__, __LINE__));
</span><span class="cx" style="display: block; padding: 0 10px">                                                return false;
</span><span class="cx" style="display: block; padding: 0 10px">                                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1401,7 +1507,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        // Cache the file if caching is enabled
</span><span class="cx" style="display: block; padding: 0 10px">                                        if ($cache && !$cache->save($this))
</span><span class="cx" style="display: block; padding: 0 10px">                                        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         trigger_error("$this->cache_location is not writable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
</ins><span class="cx" style="display: block; padding: 0 10px">                                         }
</span><span class="cx" style="display: block; padding: 0 10px">                                        return true;
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1411,11 +1517,27 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if (isset($parser))
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        // We have an error, just set SimplePie_Misc::error to it and quit
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $this->error = sprintf('This XML document is invalid, likely due to invalid characters. XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column());
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $this->error = $this->feed_url;
+                       $this->error .= sprintf(' is invalid XML, likely due to invalid characters. XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column());
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                else
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $this->error = 'The data could not be converted to UTF-8. You MUST have either the iconv or mbstring extension installed. Upgrading to PHP 5.x (which includes iconv) is highly recommended.';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $this->error = 'The data could not be converted to UTF-8.';
+                       if (!extension_loaded('mbstring') && !extension_loaded('iconv') && !class_exists('\UConverter')) {
+                               $this->error .= ' You MUST have either the iconv, mbstring or intl (PHP 5.5+) extension installed and enabled.';
+                       } else {
+                               $missingExtensions = array();
+                               if (!extension_loaded('iconv')) {
+                                       $missingExtensions[] = 'iconv';
+                               }
+                               if (!extension_loaded('mbstring')) {
+                                       $missingExtensions[] = 'mbstring';
+                               }
+                               if (!class_exists('\UConverter')) {
+                                       $missingExtensions[] = 'intl (PHP 5.5+)';
+                               }
+                               $this->error .= ' Try installing/enabling the ' . implode(' or ', $missingExtensions) . ' extension.';
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, __FILE__, __LINE__));
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1471,7 +1593,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                // Check if the cache has been updated
</span><span class="cx" style="display: block; padding: 0 10px">                                elseif ($cache->mtime() + $this->cache_duration < time())
</span><span class="cx" style="display: block; padding: 0 10px">                                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        // If we have last-modified and/or etag set
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 // Want to know if we tried to send last-modified and/or etag headers
+                                       // when requesting this file. (Note that it's up to the file to
+                                       // support this, but we don't always send the headers either.)
+                                       $this->check_modified = true;
</ins><span class="cx" style="display: block; padding: 0 10px">                                         if (isset($this->data['headers']['last-modified']) || isset($this->data['headers']['etag']))
</span><span class="cx" style="display: block; padding: 0 10px">                                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                                $headers = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1486,12 +1611,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                        $headers['if-none-match'] = $this->data['headers']['etag'];
</span><span class="cx" style="display: block; padding: 0 10px">                                                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $file = $this->registry->create('File', array($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         $file = $this->registry->create('File', array($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen, $this->curl_options));
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                                if ($file->success)
</span><span class="cx" style="display: block; padding: 0 10px">                                                {
</span><span class="cx" style="display: block; padding: 0 10px">                                                        if ($file->status_code === 304)
</span><span class="cx" style="display: block; padding: 0 10px">                                                        {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                // Set raw_data to false here too, to signify that the cache
+                                                               // is still valid.
+                                                               $this->raw_data = false;
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                 $cache->touch();
</span><span class="cx" style="display: block; padding: 0 10px">                                                                return true;
</span><span class="cx" style="display: block; padding: 0 10px">                                                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1498,6 +1626,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                }
</span><span class="cx" style="display: block; padding: 0 10px">                                                else
</span><span class="cx" style="display: block; padding: 0 10px">                                                {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                        $this->check_modified = false;
+                                                       if($this->force_cache_fallback)
+                                                       {
+                                                               $cache->touch();
+                                                               return true;
+                                                       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         unset($file);
</span><span class="cx" style="display: block; padding: 0 10px">                                                }
</span><span class="cx" style="display: block; padding: 0 10px">                                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1528,7 +1663,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $headers = array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1',
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $file = $this->registry->create('File', array($this->feed_url, $this->timeout, 5, $headers, $this->useragent, $this->force_fsockopen));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $file = $this->registry->create('File', array($this->feed_url, $this->timeout, 5, $headers, $this->useragent, $this->force_fsockopen, $this->curl_options));
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">                // If the file connection has an error, set SimplePie::error to that and quit
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1541,23 +1676,64 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if (!$this->force_feed)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        // Check if the supplied URL is a feed, if it isn't, look for it.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $locate = $this->registry->create('Locator', array(&$file, $this->timeout, $this->useragent, $this->max_checked_feeds));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $locate = $this->registry->create('Locator', array(&$file, $this->timeout, $this->useragent, $this->max_checked_feeds, $this->force_fsockopen, $this->curl_options));
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if (!$locate->is_feed($file))
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                // We need to unset this so that if SimplePie::set_file() has been called that object is untouched
-                               unset($file);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $copyStatusCode = $file->status_code;
+                               $copyContentType = $file->headers['content-type'];
</ins><span class="cx" style="display: block; padding: 0 10px">                                 try
</span><span class="cx" style="display: block; padding: 0 10px">                                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        if (!($file = $locate->find($this->autodiscovery, $this->all_discovered_feeds)))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $microformats = false;
+                                       if (class_exists('DOMXpath') && function_exists('Mf2\parse')) {
+                                               $doc = new DOMDocument();
+                                               @$doc->loadHTML($file->body);
+                                               $xpath = new DOMXpath($doc);
+                                               // Check for both h-feed and h-entry, as both a feed with no entries
+                                               // and a list of entries without an h-feed wrapper are both valid.
+                                               $query = '//*[contains(concat(" ", @class, " "), " h-feed ") or '.
+                                                       'contains(concat(" ", @class, " "), " h-entry ")]';
+                                               $result = $xpath->query($query);
+                                               $microformats = $result->length !== 0;
+                                       }
+                                       // Now also do feed discovery, but if microformats were found don't
+                                       // overwrite the current value of file.
+                                       $discovered = $locate->find($this->autodiscovery,
+                                                                   $this->all_discovered_feeds);
+                                       if ($microformats)
</ins><span class="cx" style="display: block; padding: 0 10px">                                         {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $this->error = "A feed could not be found at $this->feed_url. A feed with an invalid mime type may fall victim to this error, or " . SIMPLEPIE_NAME . " was unable to auto-discover it.. Use force_feed() if you are certain this URL is a real feed.";
-                                               $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, __FILE__, __LINE__));
-                                               return false;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         if ($hub = $locate->get_rel_link('hub'))
+                                               {
+                                                       $self = $locate->get_rel_link('self');
+                                                       $this->store_links($file, $hub, $self);
+                                               }
+                                               // Push the current file onto all_discovered feeds so the user can
+                                               // be shown this as one of the options.
+                                               if (isset($this->all_discovered_feeds)) {
+                                                       $this->all_discovered_feeds[] = $file;
+                                               }
</ins><span class="cx" style="display: block; padding: 0 10px">                                         }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                        else
+                                       {
+                                               if ($discovered)
+                                               {
+                                                       $file = $discovered;
+                                               }
+                                               else
+                                               {
+                                                       // We need to unset this so that if SimplePie::set_file() has
+                                                       // been called that object is untouched
+                                                       unset($file);
+                                                       $this->error = "A feed could not be found at `$this->feed_url`; the status code is `$copyStatusCode` and content-type is `$copyContentType`";
+                                                       $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, __FILE__, __LINE__));
+                                                       return false;
+                                               }
+                                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                                catch (SimplePie_Exception $e)
</span><span class="cx" style="display: block; padding: 0 10px">                                {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                        // We need to unset this so that if SimplePie::set_file() has been called that object is untouched
+                                       unset($file);
</ins><span class="cx" style="display: block; padding: 0 10px">                                         // This is usually because DOMDocument doesn't exist
</span><span class="cx" style="display: block; padding: 0 10px">                                        $this->error = $e->getMessage();
</span><span class="cx" style="display: block; padding: 0 10px">                                        $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, $e->getFile(), $e->getLine()));
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1568,17 +1744,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        $this->data = array('url' => $this->feed_url, 'feed_url' => $file->url, 'build' => SIMPLEPIE_BUILD);
</span><span class="cx" style="display: block; padding: 0 10px">                                        if (!$cache->save($this))
</span><span class="cx" style="display: block; padding: 0 10px">                                        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         trigger_error("$this->cache_location is not writable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING);
</ins><span class="cx" style="display: block; padding: 0 10px">                                         }
</span><span class="cx" style="display: block; padding: 0 10px">                                        $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc'));
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $this->feed_url = $file->url;
</del><span class="cx" style="display: block; padding: 0 10px">                         }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        $this->feed_url = $file->url;
</ins><span class="cx" style="display: block; padding: 0 10px">                         $locate = null;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->raw_data = $file->body;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $this->permanent_url = $file->permanent_url;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $headers = $file->headers;
</span><span class="cx" style="display: block; padding: 0 10px">                $sniffer = $this->registry->create('Content_Type_Sniffer', array(&$file));
</span><span class="cx" style="display: block; padding: 0 10px">                $sniffed = $sniffer->get_type();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1587,7 +1763,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * Get the error message for the occurred error.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * Get the error message for the occured error
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         * @return string|array Error message, or array of messages for multifeeds
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1765,25 +1941,44 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Get the URL for the feed
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * May or may not be different from the URL passed to {@see set_feed_url()},
-        * depending on whether auto-discovery was used.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * When the 'permanent' mode is enabled, returns the original feed URL,
+        * except in the case of an `HTTP 301 Moved Permanently` status response,
+        * in which case the location of the first redirection is returned.
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * When the 'permanent' mode is disabled (default),
+        * may or may not be different from the URL passed to {@see set_feed_url()},
+        * depending on whether auto-discovery was used, and whether there were
+        * any redirects along the way.
+        *
</ins><span class="cx" style="display: block; padding: 0 10px">          * @since Preview Release (previously called `get_feed_url()` since SimplePie 0.8.)
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @todo If we have a perm redirect we should return the new URL
-        * @todo When we make the above change, let's support <itunes:new-feed-url> as well
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @todo Support <itunes:new-feed-url>
</ins><span class="cx" style="display: block; padding: 0 10px">          * @todo Also, |atom:link|@rel=self
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @param bool $permanent Permanent mode to return only the original URL or the first redirection
+        * iff it is a 301 redirection
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return string|null
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function subscribe_url()
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function subscribe_url($permanent = false)
</ins><span class="cx" style="display: block; padding: 0 10px">         {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ($this->feed_url !== null)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ($permanent)
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $this->sanitize($this->feed_url, SIMPLEPIE_CONSTRUCT_IRI);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ($this->permanent_url !== null)
+                       {
+                               // sanitize encodes ampersands which are required when used in a url.
+                               return str_replace('&amp;', '&',
+                                                  $this->sanitize($this->permanent_url,
+                                                                  SIMPLEPIE_CONSTRUCT_IRI));
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                else
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ($this->feed_url !== null)
+                       {
+                               return str_replace('&amp;', '&',
+                                                  $this->sanitize($this->feed_url,
+                                                                  SIMPLEPIE_CONSTRUCT_IRI));
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1980,10 +2175,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->get_link();
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return $this->subscribe_url();
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return $this->subscribe_url();
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1998,7 +2191,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function sanitize($data, $type, $base = '')
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return $this->sanitize->sanitize($data, $type, $base);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         try
+               {
+                       return $this->sanitize->sanitize($data, $type, $base);
+               }
+               catch (SimplePie_Exception $e)
+               {
+                       if (!$this->enable_exceptions)
+                       {
+                               $this->error = $e->getMessage();
+                               $this->registry->call('Misc', 'error', array($this->error, E_USER_WARNING, $e->getFile(), $e->getLine()));
+                               return '';
+                       }
+
+                       throw $e;
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2039,10 +2246,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2049,7 +2254,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Get a category for the feed
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since Unknown
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param int $key The category that you want to return.  Remember that arrays begin with 0, not 1
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param int $key The category that you want to return. Remember that arrays begin with 0, not 1
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return SimplePie_Category|null
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_category($key = 0)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2059,10 +2264,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $categories[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2124,10 +2327,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return array_unique($categories);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2134,7 +2335,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Get an author for the feed
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 1.1
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param int $key The author that you want to return.  Remember that arrays begin with 0, not 1
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param int $key The author that you want to return. Remember that arrays begin with 0, not 1
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return SimplePie_Author|null
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_author($key = 0)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2144,10 +2345,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $authors[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2222,10 +2421,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return array_unique($authors);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2232,7 +2429,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Get a contributor for the feed
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 1.1
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param int $key The contrbutor that you want to return.  Remember that arrays begin with 0, not 1
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param int $key The contrbutor that you want to return. Remember that arrays begin with 0, not 1
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return SimplePie_Author|null
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_contributor($key = 0)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2242,10 +2439,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $contributors[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2308,10 +2503,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return array_unique($contributors);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2318,7 +2511,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Get a single link for the feed
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 1.0 (previously called `get_feed_link` since Preview Release, `get_feed_permalink()` since 0.8)
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param int $key The link that you want to return.  Remember that arrays begin with 0, not 1
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param int $key The link that you want to return. Remember that arrays begin with 0, not 1
</ins><span class="cx" style="display: block; padding: 0 10px">          * @param string $rel The relationship of the link to return
</span><span class="cx" style="display: block; padding: 0 10px">         * @return string|null Link URL
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2329,10 +2522,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $links[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2424,14 +2615,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if (isset($this->data['links'][$rel]))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if (isset($this->data['headers']['link']) &&
+                   preg_match('/<([^>]+)>; rel='.preg_quote($rel).'/',
+                              $this->data['headers']['link'], $match))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $this->data['links'][$rel];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return array($match[1]);
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         else if (isset($this->data['links'][$rel]))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $this->data['links'][$rel];
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_all_discovered_feeds()
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2486,10 +2681,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0]));
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2522,10 +2715,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2566,10 +2757,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->sanitize($this->data['headers']['content-language'], SIMPLEPIE_CONSTRUCT_TEXT);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2595,10 +2784,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return (float) $match[1];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2627,10 +2814,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return (float) $match[2];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2664,10 +2849,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT);
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2707,10 +2890,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2739,10 +2920,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0]));
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2765,10 +2944,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return 88.0;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2791,10 +2968,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return 31.0;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2814,10 +2989,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $qty;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return ($qty > $max) ? $max : $qty;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return ($qty > $max) ? $max : $qty;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2829,7 +3002,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @see get_item_quantity()
</span><span class="cx" style="display: block; padding: 0 10px">         * @since Beta 2
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param int $key The item that you want to return.  Remember that arrays begin with 0, not 1
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param int $key The item that you want to return. Remember that arrays begin with 0, not 1
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return SimplePie_Item|null
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_item($key = 0)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2839,10 +3012,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $items[$key];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       return null;
-               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return null;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2856,7 +3027,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @since Beta 2
</span><span class="cx" style="display: block; padding: 0 10px">         * @param int $start Index to start at
</span><span class="cx" style="display: block; padding: 0 10px">         * @param int $end Number of items to return. 0 for all items after `$start`
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @return array|null List of {@see SimplePie_Item} objects
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @return SimplePie_Item[]|null List of {@see SimplePie_Item} objects
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_items($start = 0, $end = 0)
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2865,97 +3036,80 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        if (!empty($this->multifeed_objects))
</span><span class="cx" style="display: block; padding: 0 10px">                        {
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->data['items'] = SimplePie::merge_items($this->multifeed_objects, $start, $end, $this->item_limit);
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                if (empty($this->data['items']))
+                               {
+                                       return array();
+                               }
+                               return $this->data['items'];
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        else
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $this->data['items'] = array();
+                       if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'entry'))
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $this->data['items'] = array();
-                               if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'entry'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $keys = array_keys($items);
+                               foreach ($keys as $key)
</ins><span class="cx" style="display: block; padding: 0 10px">                                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $keys = array_keys($items);
-                                       foreach ($keys as $key)
-                                       {
-                                               $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
-                                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'entry'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 }
+                       if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'entry'))
+                       {
+                               $keys = array_keys($items);
+                               foreach ($keys as $key)
</ins><span class="cx" style="display: block; padding: 0 10px">                                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $keys = array_keys($items);
-                                       foreach ($keys as $key)
-                                       {
-                                               $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
-                                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'item'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 }
+                       if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'item'))
+                       {
+                               $keys = array_keys($items);
+                               foreach ($keys as $key)
</ins><span class="cx" style="display: block; padding: 0 10px">                                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $keys = array_keys($items);
-                                       foreach ($keys as $key)
-                                       {
-                                               $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
-                                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'item'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 }
+                       if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'item'))
+                       {
+                               $keys = array_keys($items);
+                               foreach ($keys as $key)
</ins><span class="cx" style="display: block; padding: 0 10px">                                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $keys = array_keys($items);
-                                       foreach ($keys as $key)
-                                       {
-                                               $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
-                                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if ($items = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'item'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 }
+                       if ($items = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'item'))
+                       {
+                               $keys = array_keys($items);
+                               foreach ($keys as $key)
</ins><span class="cx" style="display: block; padding: 0 10px">                                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $keys = array_keys($items);
-                                       foreach ($keys as $key)
-                                       {
-                                               $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
-                                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key]));
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if (!empty($this->data['items']))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if (empty($this->data['items']))
</ins><span class="cx" style="display: block; padding: 0 10px">                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // If we want to order it by date, check if all items have a date, and then sort it
-                       if ($this->order_by_date && empty($this->multifeed_objects))
-                       {
-                               if (!isset($this->data['ordered_items']))
-                               {
-                                       $do_sort = true;
-                                       foreach ($this->data['items'] as $item)
-                                       {
-                                               if (!$item->get_date('U'))
-                                               {
-                                                       $do_sort = false;
-                                                       break;
-                                               }
-                                       }
-                                       $item = null;
-                                       $this->data['ordered_items'] = $this->data['items'];
-                                       if ($do_sort)
-                                       {
-                                               usort($this->data['ordered_items'], array(get_class($this), 'sort_items'));
-                                       }
-                               }
-                               $items = $this->data['ordered_items'];
-                       }
-                       else
-                       {
-                               $items = $this->data['items'];
-                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return array();
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Slice the data as desired
-                       if ($end === 0)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ($this->order_by_date)
+               {
+                       if (!isset($this->data['ordered_items']))
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                return array_slice($items, $start);
-                       }
-                       else
-                       {
-                               return array_slice($items, $start, $end);
-                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $this->data['ordered_items'] = $this->data['items'];
+                               usort($this->data['ordered_items'], array(get_class($this), 'sort_items'));
+                       }
+                       $items = $this->data['ordered_items'];
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                else
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return array();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $items = $this->data['items'];
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // Slice the data as desired
+               if ($end === 0)
+               {
+                       return array_slice($items, $start);
+               }
+
+               return array_slice($items, $start, $end);
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2982,7 +3136,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if (($url = $this->get_link()) !== null)
</span><span class="cx" style="display: block; padding: 0 10px">                {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return 'http://g.etfv.co/' . urlencode($url);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return 'https://www.google.com/s2/favicons?domain=' . urlencode($url);
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return false;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3027,7 +3181,19 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function sort_items($a, $b)
</span><span class="cx" style="display: block; padding: 0 10px">        {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return $a->get_date('U') <= $b->get_date('U');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $a_date = $a->get_date('U');
+               $b_date = $b->get_date('U');
+               if ($a_date && $b_date) {
+                       return $a_date > $b_date ? -1 : 1;
+               }
+               // Sort items without dates to the top.
+               if ($a_date) {
+                       return 1;
+               }
+               if ($b_date) {
+                       return -1;
+               }
+               return 0;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3060,35 +3226,56 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $do_sort = true;
-                       foreach ($items as $item)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 usort($items, array(get_class($urls[0]), 'sort_items'));
+
+                       if ($end === 0)
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if (!$item->get_date('U'))
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         return array_slice($items, $start);
+                       }
+
+                       return array_slice($items, $start, $end);
+               }
+
+               trigger_error('Cannot merge zero SimplePie objects', E_USER_WARNING);
+               return array();
+       }
+
+       /**
+        * Store PubSubHubbub links as headers
+        *
+        * There is no way to find PuSH links in the body of a microformats feed,
+        * so they are added to the headers when found, to be used later by get_links.
+        * @param SimplePie_File $file
+        * @param string $hub
+        * @param string $self
+        */
+       private function store_links(&$file, $hub, $self) {
+               if (isset($file->headers['link']['hub']) ||
+                         (isset($file->headers['link']) &&
+                          preg_match('/rel=hub/', $file->headers['link'])))
+               {
+                       return;
+               }
+
+               if ($hub)
+               {
+                       if (isset($file->headers['link']))
+                       {
+                               if ($file->headers['link'] !== '')
</ins><span class="cx" style="display: block; padding: 0 10px">                                 {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $do_sort = false;
-                                       break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $file->headers['link'] = ', ';
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $item = null;
-                       if ($do_sort)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 else
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                usort($items, array(get_class($urls[0]), 'sort_items'));
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $file->headers['link'] = '';
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
-                       if ($end === 0)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $file->headers['link'] .= '<'.$hub.'>; rel=hub';
+                       if ($self)
</ins><span class="cx" style="display: block; padding: 0 10px">                         {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                return array_slice($items, $start);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $file->headers['link'] .= ', <'.$self.'>; rel=self';
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        else
-                       {
-                               return array_slice($items, $start, $end);
-                       }
</del><span class="cx" style="display: block; padding: 0 10px">                 }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
-               {
-                       trigger_error('Cannot merge zero SimplePie objects', E_USER_WARNING);
-                       return array();
-               }
</del><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-endif;
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+endif;
</ins></span></pre>
</div>
</div>

</body>
</html>