<!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>[6287] sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory: PLugins: Clean up formatting with phpcbf</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 { 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="http://meta.trac.wordpress.org/changeset/6287">6287</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"http://meta.trac.wordpress.org/changeset/6287","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>obenland</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2017-12-19 16:22:37 +0000 (Tue, 19 Dec 2017)</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'>PLugins: Clean up formatting with phpcbf</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminclasscustomizationsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/class-customizations.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminclassstatustransitionsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/class-status-transitions.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminlisttableclasscommittersphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-committers.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminlisttableclassplugincommentsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-plugin-comments.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminlisttableclasspluginpostsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-plugin-posts.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminlisttableclasssupportrepsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-support-reps.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclassauthorcardphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-author-card.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclassauthorphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-author.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclasscommittersphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-committers.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclasscontrolsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-controls.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclasscustomfieldsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-custom-fields.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclassinternalnotesphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-internal-notes.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclassreviewtoolsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-review-tools.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclasssupportrepsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-support-reps.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadmintoolsclassauthorcardsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/tools/class-author-cards.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadmintoolsclassstatsreportphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/tools/class-stats-report.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiclassbasephp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/class-base.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclasscommitsubscriptionsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-commit-subscriptions.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclassinternalstatsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-internal-stats.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclasslocalebannerphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-locale-banner.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclassplugincommittersphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-committers.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclasspluginfavoritesphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-favorites.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclasspluginsupportrepsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-support-reps.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclasspluginphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclasspopulartagsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-popular-tags.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclassquerypluginsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-query-plugins.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclasssvnaccessphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-svn-access.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorybinimportplugintoglotpressphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/import-plugin-to-glotpress.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorybinimportpluginphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/import-plugin.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorybinquickstatsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/quick-stats.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorybinrebuildzipphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/rebuild-zip.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclasscapabilitiesphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-capabilities.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclassi18nphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-i18n.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclassmarkdownphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-markdown.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclassplugindirectoryphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-directory.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclassplugingeopatternsvgphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-geopattern-svg.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclassplugingeopatternsvgtextphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-geopattern-svgtext.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclassplugingeopatternphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-geopattern.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclassplugini18nphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-i18n.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclasstemplatephp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-template.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclasstoolsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-tools.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorycliclassimportphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/class-import.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorycliclasssvnwatcherphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/class-svn-watcher.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclii18nclasscodeimportphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/i18n/class-code-import.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclii18nclassi18nimportphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/i18n/class-i18n-import.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclii18nclassreadmeimportphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/i18n/class-readme-import.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclientsclassslackphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/clients/class-slack.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryjobsclassapiupdateupdaterphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-api-update-updater.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryjobsclassmanagerphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-manager.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryjobsclassmetasyncphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-meta-sync.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryjobsclassplugini18nimportphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-plugin-i18n-import.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryjobsclasspluginimportphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-plugin-import.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorylibssitesearchclassjetpacksearchresultpostsiteratorphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/libs/site-search/class.jetpack-searchresult-posts-iterator.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorylibssitesearchjetpacksearchdebugphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/libs/site-search/jetpack-search-debug.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorylibssitesearchjetpacksearchphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/libs/site-search/jetpack-search.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryplugindirectoryphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/plugin-directory.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryreadmeclassparserphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/readme/class-parser.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryreadmeclassvalidatorphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/readme/class-validator.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryshortcodesclassdevelopersphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-developers.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryshortcodesclassreadmevalidatorphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-readme-validator.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryshortcodesclassreviewsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-reviews.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryshortcodesclassscreenshotsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-screenshots.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryshortcodesclassuploadhandlerphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload-handler.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryshortcodesclassuploadphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorystandaloneclasspluginsinfoapirequestphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/standalone/class-plugins-info-api-request.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorystandaloneclasspluginsinfoapiphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/standalone/class-plugins-info-api.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorystandalonedownloadsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/standalone/downloads.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorystandalonepluginsinfoapiphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/standalone/plugins-info-api.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorytestsbootstrapphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/bootstrap.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorytestsphpunittestsapisvnaccessphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/phpunit/tests/api/svn-access.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorytestsphpunittestswporgpluginapiperformancephp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/phpunit/tests/wporg-plugin-api-performance.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorytestsphpunittestswporgpluginapiphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/phpunit/tests/wporg-plugin-api.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorytestsphpunittestswporgurlschemesphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/phpunit/tests/wporg-url-schemes.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorywidgetsclasscommittersphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-committers.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorywidgetsclasscontributorsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-contributors.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorywidgetsclassmetaphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-meta.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorywidgetsclassratingsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-ratings.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorywidgetsclasssupportrepsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-support-reps.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorywidgetsclasssupportphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-support.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryzipclassbuilderphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/zip/class-builder.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryzipclassservephp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/zip/class-serve.php</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/</li>
<li>sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/</li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapifieldspluginclassbannersphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-banners.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapifieldspluginclassiconsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-icons.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapifieldspluginclassratingphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-rating.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapifieldspluginclassratingsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-ratings.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapifieldspluginclassscreenshotsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-screenshots.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryphpcsxmldist">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/phpcs.xml.dist</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminclasscustomizationsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/class-customizations.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/class-customizations.php  2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/class-customizations.php    2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Admin;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use \WordPressdotorg\Plugin_Directory;
</span><span class="cx" style="display: block; padding: 0 10px"> use \WordPressdotorg\Plugin_Directory\Tools;
</span><span class="cx" style="display: block; padding: 0 10px"> use \WordPressdotorg\Plugin_Directory\Readme\Validator;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -48,13 +49,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                add_action( 'add_meta_boxes', array( $this, 'register_admin_metaboxes' ), 10, 2 );
</span><span class="cx" style="display: block; padding: 0 10px">                add_action( 'do_meta_boxes', array( $this, 'replace_title_global' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_filter( 'postbox_classes_plugin_internal-notes',      array( __NAMESPACE__ . '\Metabox\Internal_Notes', 'postbox_classes' ) );
-               add_filter( 'postbox_classes_plugin_plugin-committers',   array( __NAMESPACE__ . '\Metabox\Committers',     'postbox_classes' ) );
-               add_filter( 'postbox_classes_plugin_plugin-support-reps', array( __NAMESPACE__ . '\Metabox\Support_Reps',   'postbox_classes' ) );
-               add_filter( 'wp_ajax_add-committer',        array( __NAMESPACE__ . '\Metabox\Committers', 'add_committer' ) );
-               add_filter( 'wp_ajax_delete-committer',     array( __NAMESPACE__ . '\Metabox\Committers', 'remove_committer' ) );
-               add_filter( 'wp_ajax_add-support-rep',      array( __NAMESPACE__ . '\Metabox\Support_Reps', 'add_support_rep' ) );
-               add_filter( 'wp_ajax_delete-support-rep',   array( __NAMESPACE__ . '\Metabox\Support_Reps', 'remove_support_rep' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         add_filter( 'postbox_classes_plugin_internal-notes', array( __NAMESPACE__ . '\Metabox\Internal_Notes', 'postbox_classes' ) );
+               add_filter( 'postbox_classes_plugin_plugin-committers', array( __NAMESPACE__ . '\Metabox\Committers', 'postbox_classes' ) );
+               add_filter( 'postbox_classes_plugin_plugin-support-reps', array( __NAMESPACE__ . '\Metabox\Support_Reps', 'postbox_classes' ) );
+               add_filter( 'wp_ajax_add-committer', array( __NAMESPACE__ . '\Metabox\Committers', 'add_committer' ) );
+               add_filter( 'wp_ajax_delete-committer', array( __NAMESPACE__ . '\Metabox\Committers', 'remove_committer' ) );
+               add_filter( 'wp_ajax_add-support-rep', array( __NAMESPACE__ . '\Metabox\Support_Reps', 'add_support_rep' ) );
+               add_filter( 'wp_ajax_delete-support-rep', array( __NAMESPACE__ . '\Metabox\Support_Reps', 'remove_support_rep' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_action( 'wp_ajax_plugin-author-lookup', array( __NAMESPACE__ . '\Metabox\Author', 'lookup_author' ) );
</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,12 +204,14 @@
</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 ( $rejected ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        set_transient( 'settings_errors', array( array(
-                               'setting' => 'wporg-plugins',
-                               'code'    => 'plugins-bulk-rejected',
-                               'message' => sprintf( _n( '%d plugin rejected.', '%d plugins rejected.', $rejected, 'wporg-plugins' ), $rejected ),
-                               'type'    => 'updated',
-                       ) ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 set_transient( 'settings_errors', array(
+                               array(
+                                       'setting' => 'wporg-plugins',
+                                       'code'    => 'plugins-bulk-rejected',
+                                       'message' => sprintf( _n( '%d plugin rejected.', '%d plugins rejected.', $rejected, 'wporg-plugins' ), $rejected ),
+                                       'type'    => 'updated',
+                               ),
+                       ) );
</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">                $send_back = remove_query_arg( array( 'trashed', 'untrashed', 'deleted', 'locked', 'ids', 'action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status', 'post', 'bulk_edit', 'post_view' ), wp_get_referer() );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -276,7 +279,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">                if ( $message ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        printf( '<div class="notice %1$s"><p>%2$s</p></div>', esc_attr( $type ), esc_html( $message ) ); 
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 printf( '<div class="notice %1$s"><p>%2$s</p></div>', esc_attr( $type ), esc_html( $message ) );
</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">@@ -330,7 +333,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( 'plugin' !== $data['post_type'] || ! isset( $postarr['ID'] ) ) {
</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">-                
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $existing_plugin = Plugin_Directory\Plugin_Directory::get_plugin_post( $data['post_name'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Is there already a plugin with the same slug?
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -415,7 +418,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'plugin', 'normal'
</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 class="cx" style="display: block; padding: 0 10px">                 add_meta_box(
</span><span class="cx" style="display: block; padding: 0 10px">                        'plugin-fields',
</span><span class="cx" style="display: block; padding: 0 10px">                        __( 'Plugin Meta', 'wporg-plugins' ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -448,7 +450,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">                // Remove unnecessary metaboxes.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                remove_meta_box( 'commentsdiv',      'plugin', 'normal' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         remove_meta_box( 'commentsdiv', 'plugin', 'normal' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 remove_meta_box( 'commentstatusdiv', 'plugin', 'normal' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Remove slug metabox unless the slug is editable for the current user.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -488,7 +490,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Changes the permalink for internal notes to link to the edit post screen.
</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 $link The comment permalink with '#comment-$id' appended.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param string      $link The comment permalink with '#comment-$id' appended.
</ins><span class="cx" style="display: block; padding: 0 10px">          * @param \WP_Comment $comment The current comment object.
</span><span class="cx" style="display: block; padding: 0 10px">         * @return string The permalink to the given comment.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -601,7 +603,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                ob_start();
</span><span class="cx" style="display: block; padding: 0 10px">                if ( isset( $_REQUEST['mode'] ) && 'dashboard' == $_REQUEST['mode'] ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        require_once( ABSPATH . 'wp-admin/includes/dashboard.php' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 require_once ABSPATH . 'wp-admin/includes/dashboard.php';
</ins><span class="cx" style="display: block; padding: 0 10px">                         _wp_dashboard_recent_comments_row( $comment );
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( isset( $_REQUEST['mode'] ) && 'single' == $_REQUEST['mode'] ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -617,7 +619,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'what'     => 'comment',
</span><span class="cx" style="display: block; padding: 0 10px">                        'id'       => $comment->comment_ID,
</span><span class="cx" style="display: block; padding: 0 10px">                        'data'     => $comment_list_item,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'position' => $position
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'position' => $position,
</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">                $counts                   = wp_count_comments();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -630,7 +632,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'i18n_moderation_text' => sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                _nx( '%s in moderation', '%s in moderation', $counts->moderated, 'comments', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                number_format_i18n( $counts->moderated )
</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">+                 ),
</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 ( $comment_auto_approved && isset( $parent ) ) {
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminclassstatustransitionsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/class-status-transitions.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/class-status-transitions.php      2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/class-status-transitions.php        2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -95,10 +95,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">                // ...or it's a white-listed status for plugin reviewers.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( current_user_can( 'plugin_review', $postarr['ID'] ) && in_array( $postarr['post_status'], array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( current_user_can( 'plugin_review', $postarr['ID'] ) && in_array(
+                       $postarr['post_status'], array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'new',
</span><span class="cx" style="display: block; padding: 0 10px">                                'pending',
</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">+                 )
+               ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return $data;
</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,12 +132,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        case 'approved':
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->approved( $post->ID, $post );
</span><span class="cx" style="display: block; padding: 0 10px">                                break;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                         case 'rejected':
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->rejected( $post->ID, $post );
</span><span class="cx" style="display: block; padding: 0 10px">                                break;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                         case 'publish':
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->clean_closed_date( $post->ID );
</span><span class="cx" style="display: block; padding: 0 10px">                                break;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                         case 'disabled':
</span><span class="cx" style="display: block; padding: 0 10px">                        case 'closed':
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->save_close_reason( $post->ID );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -162,7 +167,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        mkdir( "$dir/$folder", 0777 );
</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">-                /* Temporarily disable SVN prefill from ZIP files
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /*
+                Temporarily disable SVN prefill from ZIP files
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( $attachments ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $attachment = end( $attachments );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -190,7 +196,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $subject = sprintf( __( '[WordPress Plugin Directory] %s has been approved!', 'wporg-plugins' ), $post->post_title );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                /* translators: 1: plugin name, 2: plugin slug */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $content = sprintf( __( 'Congratulations, your plugin hosting request for %1$s has been approved.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $content = sprintf(
+                       __(
+                               'Congratulations, your plugin hosting request for %1$s has been approved.
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> Within one hour you will have access to your SVN repository with the WordPress.org username and password you used to log in and submit your request. Your username is case sensitive.
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -222,7 +230,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"> The WordPress Plugin Directory Team
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-https://make.wordpress.org/plugins', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+https://make.wordpress.org/plugins', 'wporg-plugins'
+                       ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         $post->post_title,
</span><span class="cx" style="display: block; padding: 0 10px">                        $post->post_name
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -255,13 +264,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $subject = sprintf( __( '[WordPress Plugin Directory] %s has been rejected', 'wporg-plugins' ), $post->post_title );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                /* translators: 1: plugin name, 2: plugins@wordpress.org */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $content = sprintf( __( 'Unfortunately your plugin submission for %1$s has been rejected from the WordPress Plugin Directory.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $content = sprintf(
+                       __(
+                               'Unfortunately your plugin submission for %1$s has been rejected from the WordPress Plugin Directory.
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> If you believe this to be in error, please email %2$s with your plugin attached as a zip and explain why you feel your plugin should be an exception.
</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"> The WordPress Plugin Directory Team
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-https://make.wordpress.org/plugins', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+https://make.wordpress.org/plugins', 'wporg-plugins'
+                       ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         $post->post_title,
</span><span class="cx" style="display: block; padding: 0 10px">                        'plugins@wordpress.org'
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -339,7 +351,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $comment = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_author'       => $user->display_name,
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_author_email' => $user->user_email,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'comment_author_url'   => $user->user_url,        
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'comment_author_url'   => $user->user_url,
</ins><span class="cx" style="display: block; padding: 0 10px">                         'comment_type'         => 'internal-note',
</span><span class="cx" style="display: block; padding: 0 10px">                        'comment_post_ID'      => $post_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'user_id'              => get_current_user_id(),
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminlisttableclasscommittersphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-committers.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-committers.php   2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-committers.php     2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Admin\List_Table;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> _get_list_table( 'WP_List_Table' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -44,14 +45,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @global string $usersearch
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function prepare_items() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $plugin_slug         = get_post()->post_name;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $plugin_slug = get_post()->post_name;
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( ! $plugin_slug ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        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">-                $existing_committers = Tools::get_plugin_committers( $plugin_slug );
-               $this->items         = array_map( function ( $user ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $this->items = array_map( function ( $user ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return new \WP_User( $user );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                }, $existing_committers );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         }, Tools::get_plugin_committers( $plugin_slug ) );
</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,7 +148,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! ( $user_object instanceof \WP_User ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $user_object = get_userdata( (int) $user_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">-                $user_object->filter = 'display';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $user_object->filter                = 'display';
</ins><span class="cx" style="display: block; padding: 0 10px">                 list( $columns, $hidden, $primary ) = $this->get_column_info();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Set up the hover actions for this committer.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -156,7 +157,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Check if the committer for this row is removable.
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = get_post()->ID;
</span><span class="cx" style="display: block; padding: 0 10px">                if ( current_user_can( 'plugin_remove_committer', $post_id ) && $user_object->ID != get_current_user_id() ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $actions['delete'] = "<a class='submitremove' data-wp-lists='delete:the-committer-list:committer-{$user_object->ID}:faafaa:post_id={$post_id}' href='" . wp_nonce_url( 'users.php?action=remove&amp;committer=' . $user_object->ID, "remove-committer-{$user_object->ID}" ) . "'>" . __( 'Remove', 'wporg-plugins' ) . "</a>";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $actions['delete'] = "<a class='submitremove' data-wp-lists='delete:the-committer-list:committer-{$user_object->ID}:faafaa:post_id={$post_id}' href='" . wp_nonce_url( 'users.php?action=remove&amp;committer=' . $user_object->ID, "remove-committer-{$user_object->ID}" ) . "'>" . __( 'Remove', 'wporg-plugins' ) . '</a>';
</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">@@ -187,7 +188,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                case 'username':
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $row .= sprintf( '<strong><a href="%s">%s</a></strong><br />&lt;%s&gt;',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $row .= sprintf(
+                                               '<strong><a href="%s">%s</a></strong><br />&lt;%s&gt;',
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 esc_url( '//profiles.wordpress.org/' . $user_object->user_nicename ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                $user_object->user_login,
</span><span class="cx" style="display: block; padding: 0 10px">                                                $user_object->user_email
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminlisttableclassplugincommentsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-plugin-comments.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-plugin-comments.php      2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-plugin-comments.php        2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -37,7 +37,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function display( $output_empty = false ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $singular = $this->_args['singular'];
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         wp_nonce_field( 'fetch-list-' . get_class( $this ), '_ajax_fetch_list_nonce' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 ?>
</span><span class="cx" style="display: block; padding: 0 10px">                <table class="<?php echo implode( ' ', $this->get_table_classes() ); ?>" data-comment-type="<?php echo esc_attr( $this->comment_type ); ?>" style="display:none;">
</span><span class="cx" style="display: block; padding: 0 10px">                        <colgroup>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -46,9 +46,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        </colgroup>
</span><span class="cx" style="display: block; padding: 0 10px">                        <tbody id="the-comment-list"<?php if ( $singular ) { echo " data-wp-lists='list:$singular'"; } ?>>
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if ( ! $output_empty ) {
-                                       $this->display_rows_or_placeholder();
-                               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! $output_empty ) {
+                               $this->display_rows_or_placeholder();
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                         ?>
</span><span class="cx" style="display: block; padding: 0 10px">                        </tbody>
</span><span class="cx" style="display: block; padding: 0 10px">                </table>
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminlisttableclasspluginpostsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-plugin-posts.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-plugin-posts.php 2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-plugin-posts.php   2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Admin\List_Table;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use \WordPressdotorg\Plugin_Directory\Tools;
</span><span class="cx" style="display: block; padding: 0 10px"> use \WordPressdotorg\Plugin_Directory\Template;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20,7 +21,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->set_hierarchical_display( is_post_type_hierarchical( $this->screen->post_type ) && 'menu_order title' === $wp_query->query['orderby'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post_type = $this->screen->post_type;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $per_page = $this->get_items_per_page( 'edit_' . $post_type . '_per_page' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $per_page  = $this->get_items_per_page( 'edit_' . $post_type . '_per_page' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                /** This filter is documented in wp-admin/includes/post.php */
</span><span class="cx" style="display: block; padding: 0 10px">                $per_page = apply_filters( 'edit_posts_per_page', $per_page, $post_type );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -32,7 +33,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><span class="cx" style="display: block; padding: 0 10px">                        $post_counts = (array) wp_count_posts( $post_type, 'readable' );
</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( $_REQUEST['post_status'] ) && in_array( $_REQUEST['post_status'] , $avail_post_stati ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( isset( $_REQUEST['post_status'] ) && in_array( $_REQUEST['post_status'], $avail_post_stati ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $total_items = $post_counts[ $_REQUEST['post_status'] ];
</span><span class="cx" style="display: block; padding: 0 10px">                        } elseif ( isset( $_REQUEST['show_sticky'] ) && $_REQUEST['show_sticky'] ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $total_items = $this->sticky_posts_count;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -59,7 +60,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->set_pagination_args( array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'total_items' => $total_items,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'per_page' => $per_page
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'per_page'    => $per_page,
</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">@@ -68,7 +69,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return array
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        protected function get_bulk_actions() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $actions = array();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $actions       = array();
</ins><span class="cx" style="display: block; padding: 0 10px">                 $post_type_obj = get_post_type_object( $this->screen->post_type );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( current_user_can( $post_type_obj->cap->edit_posts ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -91,10 +92,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_columns() {
</span><span class="cx" style="display: block; padding: 0 10px">                $post_type     = $this->screen->post_type;
</span><span class="cx" style="display: block; padding: 0 10px">                $posts_columns = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'cb'        => '<input type="checkbox" />',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'cb'     => '<input type="checkbox" />',
</ins><span class="cx" style="display: block; padding: 0 10px">                         /* translators: manage posts column name */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'title'     => _x( 'Title', 'column name', 'wporg-plugins' ),
-                       'author'    => __( 'Submitter', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'title'  => _x( 'Title', 'column name', 'wporg-plugins' ),
+                       'author' => __( 'Submitter', 'wporg-plugins' ),
</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">                $taxonomies = get_object_taxonomies( $post_type, 'objects' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -103,12 +104,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $taxonomies = array_filter( $taxonomies, 'taxonomy_exists' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $taxonomies as $taxonomy ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $column_key = 'taxonomy-' . $taxonomy;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $column_key                   = 'taxonomy-' . $taxonomy;
</ins><span class="cx" style="display: block; padding: 0 10px">                         $posts_columns[ $column_key ] = get_taxonomy( $taxonomy )->labels->name;
</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">                $posts_columns['comments'] = '<span class="vers comment-grey-bubble" title="' . esc_attr__( 'Internal Notes', 'wporg-plugins' ) . '"><span class="screen-reader-text">' . __( 'Internal Notes', 'wporg-plugins' ) . '</span></span>';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $posts_columns['date'] = __( 'Date', 'wporg-plugins' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $posts_columns['date']     = __( 'Date', 'wporg-plugins' );
</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">                 * Filter the columns displayed in the Plugins list table.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -132,12 +133,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @global \WP_Post $post
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @param int|\WP_Post $post
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param int         $level
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param int          $level
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        public function single_row( $post, $level = 0 ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $global_post = get_post();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $post = get_post( $post );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $post                = get_post( $post );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->current_level = $level;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $GLOBALS['post'] = $post;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -154,7 +155,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">                if ( $post->post_parent ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $count = count( get_post_ancestors( $post->ID ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $count     = count( get_post_ancestors( $post->ID ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                         $classes[] = 'level-' . $count;
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><span class="cx" style="display: block; padding: 0 10px">                        $classes[] = 'level-0';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -183,9 +184,9 @@
</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">                $post_type_object = get_post_type_object( $post->post_type );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $can_edit_post = current_user_can( 'edit_post', $post->ID );
-               $actions = array();
-               $title = _draft_or_post_title();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $can_edit_post    = current_user_can( 'edit_post', $post->ID );
+               $actions          = array();
+               $title            = _draft_or_post_title();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $can_edit_post && 'trash' != $post->post_status ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $actions['edit'] = sprintf(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -259,11 +260,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $screen = $this->screen;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $taxonomy_names = get_object_taxonomies( $screen->post_type );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $taxonomy_names          = get_object_taxonomies( $screen->post_type );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $hierarchical_taxonomies = array();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $taxonomy_names as $taxonomy_name ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                         $taxonomy = get_taxonomy( $taxonomy_name );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( ! $taxonomy->show_in_quick_edit ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -301,10 +301,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        <?php foreach ( $hierarchical_taxonomies as $taxonomy ) : ?>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <span class="title inline-edit-categories-label"><?php echo esc_html( $taxonomy->labels->name ) ?></span>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 <span class="title inline-edit-categories-label"><?php echo esc_html( $taxonomy->labels->name ); ?></span>
</ins><span class="cx" style="display: block; padding: 0 10px">                         <input type="hidden" name="tax_input[<?php echo esc_attr( $taxonomy->name ); ?>][]" value="0" />
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <ul class="cat-checklist <?php echo esc_attr( $taxonomy->name )?>-checklist">
-                               <?php wp_terms_checklist( null, array( 'taxonomy' => $taxonomy->name ) ) ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 <ul class="cat-checklist <?php echo esc_attr( $taxonomy->name ); ?>-checklist">
+                               <?php wp_terms_checklist( null, array( 'taxonomy' => $taxonomy->name ) ); ?>
</ins><span class="cx" style="display: block; padding: 0 10px">                         </ul>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        <?php endforeach; // $hierarchical_taxonomies as $taxonomy ?>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -354,9 +354,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $all_args        = array( 'post_type' => $post_type );
</span><span class="cx" style="display: block; padding: 0 10px">                $mine            = '';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $plugins = Tools::get_users_write_access_plugins( $current_user_id );
-               $plugins = array_map( 'sanitize_title_for_query', $plugins );
-               $exclude_states   = get_post_stati( array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $plugins        = Tools::get_users_write_access_plugins( $current_user_id );
+               $plugins        = array_map( 'sanitize_title_for_query', $plugins );
+               $exclude_states = get_post_stati( array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'show_in_admin_all_list' => 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">@@ -377,7 +377,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">                if ( ! empty( $plugins ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $user_post_count_query = str_replace('AND post_author = %d', "AND ( post_author = %d OR post_name IN ( '" . implode( "','", $plugins ) . "' ) )", $user_post_count_query );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $user_post_count_query = str_replace( 'AND post_author = %d', "AND ( post_author = %d OR post_name IN ( '" . implode( "','", $plugins ) . "' ) )", $user_post_count_query );
</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">                $user_post_count = intval( $wpdb->get_var( $wpdb->prepare( $user_post_count_query, $post_type, $current_user_id ) ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -394,7 +394,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $mine_args = array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_type' => $post_type,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'author'    => $current_user_id
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'author'    => $current_user_id,
</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">                        $mine_inner_html = sprintf(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -409,14 +409,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">                        if ( ! current_user_can( 'plugin_review' ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $status_links['mine'] = $this->get_edit_link( $mine_args, $mine_inner_html, 'current' );;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $status_links['mine'] = $this->get_edit_link( $mine_args, $mine_inner_html, 'current' );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                                 return $status_links;
</span><span class="cx" style="display: block; padding: 0 10px">                        } else {
</span><span class="cx" style="display: block; padding: 0 10px">                                $mine = $this->get_edit_link( $mine_args, $mine_inner_html, $class );
</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">                        $all_args['all_posts'] = 1;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $class = '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $class                 = '';
</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( $class ) && ( $this->is_base_request() || isset( $_REQUEST['all_posts'] ) ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -439,7 +440,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $status_links['mine'] = $mine;
</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">-                foreach ( get_post_stati(array('show_in_admin_status_list' => true), 'objects') as $status ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         foreach ( get_post_stati( array( 'show_in_admin_status_list' => true ), 'objects' ) as $status ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $class = '';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $status_name = $status->name;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -452,13 +453,13 @@
</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 ( isset($_REQUEST['post_status']) && $status_name === $_REQUEST['post_status'] ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( isset( $_REQUEST['post_status'] ) && $status_name === $_REQUEST['post_status'] ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $class = 'current';
</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">                        $status_args = array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status' => $status_name,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'post_type' => $post_type,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'post_type'   => $post_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">                        $status_label = sprintf(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -473,8 +474,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $class = ! empty( $_REQUEST['show_sticky'] ) ? 'current' : '';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $sticky_args = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'post_type'     => $post_type,
-                               'show_sticky' => 1
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'post_type'   => $post_type,
+                               'show_sticky' => 1,
</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">                        $sticky_inner_html = sprintf(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -489,11 +490,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">                        $sticky_link = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'sticky' => $this->get_edit_link( $sticky_args, $sticky_inner_html, $class )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'sticky' => $this->get_edit_link( $sticky_args, $sticky_inner_html, $class ),
</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">                        // Sticky comes after Publish, or if not listed, after All.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $split = 1 + array_search( ( isset( $status_links['publish'] ) ? 'publish' : 'all' ), array_keys( $status_links ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $split        = 1 + array_search( ( isset( $status_links['publish'] ) ? 'publish' : 'all' ), array_keys( $status_links ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                         $status_links = array_merge( array_slice( $status_links, 0, $split ), $sticky_link, array_slice( $status_links, $split ) );
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminlisttableclasssupportrepsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-support-reps.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-support-reps.php 2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/list-table/class-support-reps.php   2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Admin\List_Table;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> _get_list_table( 'WP_List_Table' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -44,14 +45,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @global string $usersearch
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function prepare_items() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $plugin_slug         = get_post()->post_name;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $plugin_slug = get_post()->post_name;
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( ! $plugin_slug ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        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">-                $existing_support_reps = Tools::get_plugin_support_reps( $plugin_slug );
-               $this->items           = array_map( function ( $user ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $this->items = array_map( function ( $user ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return new \WP_User( $user );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                }, $existing_support_reps );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         }, Tools::get_plugin_support_reps( $plugin_slug ) );
</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,7 +148,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! ( $user_object instanceof \WP_User ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $user_object = get_userdata( (int) $user_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">-                $user_object->filter = 'display';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $user_object->filter                = 'display';
</ins><span class="cx" style="display: block; padding: 0 10px">                 list( $columns, $hidden, $primary ) = $this->get_column_info();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Set up the hover actions for this support rep.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -156,7 +157,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Check if the support rep for this row is removable.
</span><span class="cx" style="display: block; padding: 0 10px">                $post_id = get_post()->ID;
</span><span class="cx" style="display: block; padding: 0 10px">                if ( current_user_can( 'plugin_remove_support_rep', $post_id ) && $user_object->ID != get_current_user_id() ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $actions['delete'] = "<a class='submitremove' data-wp-lists='delete:the-support-rep-list:support-rep-{$user_object->ID}:faafaa:post_id={$post_id}' href='" . wp_nonce_url( 'users.php?action=remove&amp;support-rep=' . $user_object->ID, "remove-support-rep-{$user_object->ID}" ) . "'>" . __( 'Remove', 'wporg-plugins' ) . "</a>";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $actions['delete'] = "<a class='submitremove' data-wp-lists='delete:the-support-rep-list:support-rep-{$user_object->ID}:faafaa:post_id={$post_id}' href='" . wp_nonce_url( 'users.php?action=remove&amp;support-rep=' . $user_object->ID, "remove-support-rep-{$user_object->ID}" ) . "'>" . __( 'Remove', 'wporg-plugins' ) . '</a>';
</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">@@ -187,7 +188,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                case 'username':
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $row .= sprintf( '<strong><a href="%s">%s</a></strong><br />&lt;%s&gt;',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $row .= sprintf(
+                                               '<strong><a href="%s">%s</a></strong><br />&lt;%s&gt;',
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 esc_url( '//profiles.wordpress.org/' . $user_object->user_nicename ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                $user_object->user_login,
</span><span class="cx" style="display: block; padding: 0 10px">                                                $user_object->user_email
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclassauthorcardphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-author-card.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-author-card.php     2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-author-card.php       2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23,7 +23,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                add_action( 'wporg_usercards_after_content', array(
</span><span class="cx" style="display: block; padding: 0 10px">                        __NAMESPACE__ . '\Author_Card',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'show_warning_flags'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'show_warning_flags',
</ins><span class="cx" style="display: block; padding: 0 10px">                 ), 10, 6 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( is_numeric( $post_or_user_id ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -38,7 +38,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        return;
</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">-                $author_commit  = Tools::get_users_write_access_plugins( $author );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $author_commit    = Tools::get_users_write_access_plugins( $author );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $author_plugins_q = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'author'         => $author->ID,
</span><span class="cx" style="display: block; padding: 0 10px">                        'post_type'      => 'plugin',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -49,7 +49,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $author_plugins_q['post__not_in'] = array( $post->ID );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">                $author_plugins = get_posts( $author_plugins_q );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $all_plugins = $wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE post_name IN ('" . implode( "', '", array_merge( $author_commit, wp_list_pluck( $author_plugins, 'post_name' ) ) ) . "')" );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $all_plugins    = $wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE post_name IN ('" . implode( "', '", array_merge( $author_commit, wp_list_pluck( $author_plugins, 'post_name' ) ) ) . "')" );
</ins><span class="cx" style="display: block; padding: 0 10px">                 ?>
</span><span class="cx" style="display: block; padding: 0 10px">                <div class="profile">
</span><span class="cx" style="display: block; padding: 0 10px">                <div class="profile-personal">
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -58,11 +58,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                <strong><a href="//profiles.wordpress.org/<?php echo $author->user_nicename; ?>"><?php echo $author->user_login; ?></a></strong>
</span><span class="cx" style="display: block; padding: 0 10px">                                <?php
</span><span class="cx" style="display: block; padding: 0 10px">                                        $author_links = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                sprintf( '<a href="//make.wordpress.org/pluginrepo/?s=%s" title="%s">P2</a>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         sprintf(
+                                                       '<a href="//make.wordpress.org/pluginrepo/?s=%s" title="%s">P2</a>',
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         urlencode( esc_attr( $author->user_nicename ) ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                        esc_attr__( 'Click to search Pluginrepo P2 for mentions of this author', 'wporg-plugins' )
</span><span class="cx" style="display: block; padding: 0 10px">                                                ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                sprintf( '<a href="https://supportpress.wordpress.org/plugins/?q=%s&status=&todo=Search+%%C2%%BB" title="%s">SP</a>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         sprintf(
+                                                       '<a href="https://supportpress.wordpress.org/plugins/?q=%s&status=&todo=Search+%%C2%%BB" title="%s">SP</a>',
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         urlencode( esc_attr( $author->user_nicename ) ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                        esc_attr__( 'Click to search Pluginrepo SupportPress for mentions of this author', 'wporg-plugins' )
</span><span class="cx" style="display: block; padding: 0 10px">                                                ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -76,20 +78,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                </span>
</span><span class="cx" style="display: block; padding: 0 10px">                                <div class="profile-email">
</span><span class="cx" style="display: block; padding: 0 10px">                                        &lt;<?php echo $author->user_email; ?>&gt;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <span class="profile-sp-link"><?php
-                                               printf( '[ <a href="https://supportpress.wordpress.org/plugins/?sender=%s&status=&todo=Search" title="%s">SP</a> ]',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <span class="profile-sp-link">
+                                       <?php
+                                               printf(
+                                                       '[ <a href="https://supportpress.wordpress.org/plugins/?sender=%s&status=&todo=Search" title="%s">SP</a> ]',
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         esc_attr( $author->user_email ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                        esc_attr__( 'Click to search Pluginrepo SupportPress for emails sent to/from this email address', 'wporg-plugins' )
</span><span class="cx" style="display: block; padding: 0 10px">                                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        ?></span>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 ?>
+                                       </span>
</ins><span class="cx" style="display: block; padding: 0 10px">                                 </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                <div class="profile-join"><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="profile-join">
+                               <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                         /* translators: 1: time ago, 2: registration date */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        printf( __( 'Joined %1$s ago (%2$s)', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 printf(
+                                               __( 'Joined %1$s ago (%2$s)', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 human_time_diff( strtotime( $author->user_registered ) ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                date( 'Y-M-d', strtotime( $author->user_registered ) )
</span><span class="cx" style="display: block; padding: 0 10px">                                        );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                ?></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         ?>
+                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -102,7 +110,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                <?php
</span><span class="cx" style="display: block; padding: 0 10px">                if ( defined( 'WPORG_SUPPORT_FORUMS_BLOGID' ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $user = new \WP_User( $author, '', WPORG_SUPPORT_FORUMS_BLOGID );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $user     = new \WP_User( $author, '', WPORG_SUPPORT_FORUMS_BLOGID );
</ins><span class="cx" style="display: block; padding: 0 10px">                         $statuses = array();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( ! empty( $user->allcaps['bbp_blocked'] ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -122,7 +130,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $statuses ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $labels = array();
</span><span class="cx" style="display: block; padding: 0 10px">                                foreach ( $statuses as $status ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $labels[] = sprintf( '<strong><span title="%s">%s</span></strong>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $labels[] = sprintf(
+                                               '<strong><span title="%s">%s</span></strong>',
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 esc_attr( $status['desc'] ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                $status['text']
</span><span class="cx" style="display: block; padding: 0 10px">                                        );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -149,7 +158,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        sort( $user_ips, SORT_NUMERIC );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        /* translators: %s: comma-separated list of plugin author's IP addresses */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        printf( '<p>' . __( 'IPs : %s', 'wporg-plugins' ) . '</p>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 printf(
+                               '<p>' . __( 'IPs : %s', 'wporg-plugins' ) . '</p>',
</ins><span class="cx" style="display: block; padding: 0 10px">                                 implode( ', ', array_map( array( __NAMESPACE__ . '\Author_Card', 'link_ip' ), $user_ips ) )
</span><span class="cx" style="display: block; padding: 0 10px">                        );
</span><span class="cx" style="display: block; padding: 0 10px">                endif;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -169,9 +179,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                echo '<ul>';
</span><span class="cx" style="display: block; padding: 0 10px">                                foreach ( $all_plugins as $plugin ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        echo '<li>';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $note    = false;
-                                       $extra   = '';
-                                       $classes = $tooltips = array();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $note         = false;
+                                       $extra        = '';
+                                       $classes      = $tooltips = array();
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $last_updated = get_post_meta( $plugin->ID, 'last_updated', true );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        if ( in_array( $plugin->post_name, wp_list_pluck( $author_plugins, 'post_name' ) ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -186,7 +196,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        $plugin_slug = $plugin->post_name;
</span><span class="cx" style="display: block; padding: 0 10px">                                        if ( in_array( $plugin->post_status, array( 'new', 'pending' ) ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                                /* translators: %s: time ago */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $extra .= sprintf( __( '(requested %s ago)', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         $extra     .= sprintf(
+                                                       __( '(requested %s ago)', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         human_time_diff( strtotime( $last_updated ) )
</span><span class="cx" style="display: block; padding: 0 10px">                                                );
</span><span class="cx" style="display: block; padding: 0 10px">                                                $tooltips[] = __( 'Requested, remains unapproved.', 'wporg-plugins' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -199,7 +210,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        } elseif ( 'closed' === $plugin->post_status ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                                /* translators: %s: close/disable reason */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $extra .= sprintf( __( '(closed: %s)', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         $extra     .= sprintf(
+                                                       __( '(closed: %s)', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         Template::get_close_reason( $plugin )
</span><span class="cx" style="display: block; padding: 0 10px">                                                );
</span><span class="cx" style="display: block; padding: 0 10px">                                                $tooltips[] = __( 'Plugin is closed.', 'wporg-plugins' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -207,12 +219,13 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        } elseif ( 'disabled' === $plugin->post_status ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                                /* translators: %s: close/disable reason */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $extra .= sprintf( __( '(disabled: %s)', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         $extra     .= sprintf(
+                                                       __( '(disabled: %s)', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         Template::get_close_reason( $plugin )
</span><span class="cx" style="display: block; padding: 0 10px">                                                );
</span><span class="cx" style="display: block; padding: 0 10px">                                                $tooltips[] = __( 'Plugin is disabled (updates are active).', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px">                                                $classes[]  = 'profile-plugin-closed';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $note = true;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         $note       = true;
</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">                                                // Plugin is some fashion of open.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -225,12 +238,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                } else {
</span><span class="cx" style="display: block; padding: 0 10px">                                                        $tooltips[] = __( 'Plugin is open.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px">                                                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $classes[]      = 'profile-plugin-open';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         $classes[] = 'profile-plugin-open';
</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">                                        echo '<span>';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        printf( '<a class="%1$s" title="%2$s" href="%3$s">%4$s</a>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 printf(
+                                               '<a class="%1$s" title="%2$s" href="%3$s">%4$s</a>',
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 esc_attr( implode( ' ', $classes ) ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                esc_attr( implode( ' ', $tooltips ) ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                esc_attr( get_permalink( $plugin ) ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -242,16 +256,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">                                        $plugin_links = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                sprintf( '<a href="%s" title="%s">%s</a>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         sprintf(
+                                                       '<a href="%s" title="%s">%s</a>',
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         esc_url( get_edit_post_link( $plugin->ID, '' ) ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                        esc_attr__( 'Edit this plugin', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                        __( 'Edit', 'wporg-plugins' )
</span><span class="cx" style="display: block; padding: 0 10px">                                                ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                sprintf( '<a href="//make.wordpress.org/pluginrepo/?s=%s" title="%s">P2</a>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         sprintf(
+                                                       '<a href="//make.wordpress.org/pluginrepo/?s=%s" title="%s">P2</a>',
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         urlencode( esc_attr( $plugin_slug ) ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                        esc_attr__( 'Click to search Pluginrepo P2 for mentions of this plugin', 'wporg-plugins' )
</span><span class="cx" style="display: block; padding: 0 10px">                                                ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                sprintf( '<a href="https://supportpress.wordpress.org/plugins/?q=%s&status=&todo=Search+%%C2%%BB" title="%s">SP</a>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         sprintf(
+                                                       '<a href="https://supportpress.wordpress.org/plugins/?q=%s&status=&todo=Search+%%C2%%BB" title="%s">SP</a>',
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         urlencode( esc_attr( $plugin_slug ) ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                        esc_attr__( 'Click to search Pluginrepo SupportPress for mentions of this plugin', 'wporg-plugins' )
</span><span class="cx" style="display: block; padding: 0 10px">                                                ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -289,9 +306,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return string
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        protected static function link_ip( $ip ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                return sprintf( '<a href="%1$s">%2$s</a>', esc_url( add_query_arg( array(
-                       'post_type' => 'plugin',
-                       's'         => $ip,
-               ), admin_url( 'edit.php' ) ) ), $ip );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return sprintf(
+                       '<a href="%1$s">%2$s</a>',
+                       esc_url( add_query_arg( array(
+                               'post_type' => 'plugin',
+                               's'         => $ip,
+                       ), admin_url( 'edit.php' ) ) ),
+                       $ip
+               );
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclassauthorphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-author.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-author.php  2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-author.php    2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14,9 +14,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Displays information about the author of the current plugin.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function display() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $post  = get_post();
-               $value = empty( $post->ID ) ? get_current_user_id() : $post->post_author;
-               $user  = new \WP_User( $value );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $post   = get_post();
+               $value  = empty( $post->ID ) ? get_current_user_id() : $post->post_author;
+               $user   = new \WP_User( $value );
+               $source = add_query_arg( array(
+                       'action'      => 'plugin-author-lookup',
+                       '_ajax_nonce' => wp_create_nonce( 'wporg_plugins_author_lookup' ),
+               ), admin_url( 'admin-ajax.php' ) );
</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">                <label><input id="post_author_username" type="text" value="<?php echo esc_attr( $user->user_login ); ?>" /></label>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -26,7 +30,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                <script>
</span><span class="cx" style="display: block; padding: 0 10px">                        jQuery( function( $ ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $( '#post_author_username' ).autocomplete( {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        source: '<?php echo add_query_arg( array( 'action' => 'plugin-author-lookup', '_ajax_nonce' => wp_create_nonce( 'wporg_plugins_author_lookup' ) ), admin_url( 'admin-ajax.php' ) ); ?>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 source: '<?php echo esc_js( $source ); ?>',
</ins><span class="cx" style="display: block; padding: 0 10px">                                         minLength: 2,
</span><span class="cx" style="display: block; padding: 0 10px">                                        delay: 700,
</span><span class="cx" style="display: block; padding: 0 10px">                                        autoFocus: true,
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclasscommittersphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-committers.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-committers.php      2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-committers.php        2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Admin\Metabox;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Admin\List_Table;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -35,8 +36,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Ajax handler for adding a new committer.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function add_committer() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $login    = isset( $_POST['add_committer'] ) ? sanitize_user( $_POST['add_committer'] ) : '';
-               $post_id  = isset( $_POST['post_id'] ) ? (int) $_POST['post_id'] : 0;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $login   = isset( $_POST['add_committer'] ) ? sanitize_user( $_POST['add_committer'] ) : '';
+               $post_id = isset( $_POST['post_id'] ) ? (int) $_POST['post_id'] : 0;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                check_ajax_referer( 'add-committer' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -84,7 +85,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Ajax handler for removing a committer.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function remove_committer() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id      = isset( $_POST['id'] )      ? (int) $_POST['id']      : 0;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id      = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $post_id = isset( $_POST['post_id'] ) ? (int) $_POST['post_id'] : 0;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                check_ajax_referer( "remove-committer-$id" );
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclasscontrolsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-controls.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-controls.php        2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-controls.php  2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Admin\Metabox;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Admin\Status_Transitions;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Template;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -89,8 +90,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $statuses = Status_Transitions::get_allowed_transitions( $post->post_status );
</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">-                $close_reasons  = Template::get_close_reasons();
-               $close_reason   = (string) get_post_meta( $post->ID, '_close_reason', true );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $close_reasons = Template::get_close_reasons();
+               $close_reason  = (string) get_post_meta( $post->ID, '_close_reason', true );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $reason_label   = Template::get_close_reason();
</span><span class="cx" style="display: block; padding: 0 10px">                $reason_unknown = ( _x( 'Unknown', 'unknown close reason', 'wporg-plugins' ) === $reason_label );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -109,11 +110,13 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php endif; ?>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <?php if (
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 <?php
+                       if (
</ins><span class="cx" style="display: block; padding: 0 10px">                                         ( in_array( 'closed', $statuses, true ) || in_array( 'disabled', $statuses, true ) )
</span><span class="cx" style="display: block; padding: 0 10px">                                &&
</span><span class="cx" style="display: block; padding: 0 10px">                                        ( ! in_array( $post->post_status, array( 'closed', 'disabled' ) ) || $reason_unknown )
</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">+                         ) :
+                               ?>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                <p>
</span><span class="cx" style="display: block; padding: 0 10px">                                        <label for="close_reason"><?php _e( 'Close/Disable Reason:', 'wporg-plugins' ); ?></label>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -133,7 +136,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                </button></p>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php endforeach; ?>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                </div><!-- .misc-pub-section --><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         </div><!-- .misc-pub-section -->
+               <?php
</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,8 +151,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                <div class="misc-pub-section misc-pub-tested">
</span><span class="cx" style="display: block; padding: 0 10px">                        <label for="tested_with"><?php _e( 'Tested With:', 'wporg-plugins' ); ?></label>
</span><span class="cx" style="display: block; padding: 0 10px">                        <strong id="tested-with-display"><?php echo ( $tested_up_to ? sprintf( 'WordPress %s', $tested_up_to ) : $unknown_string ); ?></strong>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
-               </div><!-- .misc-pub-section --><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         </div><!-- .misc-pub-section -->
+               <?php
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclasscustomfieldsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-custom-fields.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-custom-fields.php   2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-custom-fields.php     2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10,16 +10,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">        static function display() {
</span><span class="cx" style="display: block; padding: 0 10px">                $post   = get_post();
</span><span class="cx" style="display: block; padding: 0 10px">                $fields = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'version' => 'Latest Plugin Version',
-                       'stable_tag' => 'Stable Tag',
-                       'tested' => 'Tested With',
-                       'requires' => 'Requires',
-                       'requires_php' => 'Requires PHP',
-                       'donate_link' => 'Donate URL',
-                       'header_plugin_uri' => 'Plugin URI',
-                       'header_author' => 'Plugin Author',
-                       'header_author_uri' => 'Plugin Author URI',
-                       'header_textdomain' => 'Plugin TextDomain',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'version'            => 'Latest Plugin Version',
+                       'stable_tag'         => 'Stable Tag',
+                       'tested'             => 'Tested With',
+                       'requires'           => 'Requires',
+                       'requires_php'       => 'Requires PHP',
+                       'donate_link'        => 'Donate URL',
+                       'header_plugin_uri'  => 'Plugin URI',
+                       'header_author'      => 'Plugin Author',
+                       'header_author_uri'  => 'Plugin Author URI',
+                       'header_textdomain'  => 'Plugin TextDomain',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'header_description' => 'Plugin Description',
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclassinternalnotesphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-internal-notes.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-internal-notes.php  2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-internal-notes.php    2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Admin\Metabox;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Admin\List_Table\Plugin_Comments;
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclassreviewtoolsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-review-tools.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-review-tools.php    2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-review-tools.php      2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Admin\Metabox;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools;
</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">@@ -13,7 +14,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $zip_files = array();
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( get_attached_media( 'application/zip', $post ) as $zip_file ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $zip_files[ $zip_file->post_date ] = array(  wp_get_attachment_url( $zip_file->ID ), $zip_file );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $zip_files[ $zip_file->post_date ] = array( wp_get_attachment_url( $zip_file->ID ), $zip_file );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                uksort( $zip_files, function( $a, $b ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        return strtotime( $a ) < strtotime( $b );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21,13 +22,14 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $zip_url = get_post_meta( $post->ID, '_submitted_zip', true ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        // Back-compat only.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $zip_files[ 'User provided URL' ] = array( $zip_url, null );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $zip_files['User provided URL'] = array( $zip_url, 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">                foreach ( $zip_files as $zip_date => $zip ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        list( $zip_url, $zip_file ) = $zip;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $zip_size = ( is_object( $zip_file ) ? size_format( filesize( get_attached_file( $zip_file->ID ) ), 1 ) : __( 'unknown size', 'wporg-plugins' ) );
-                       printf( '<p>' . __( '<strong>Zip file:</strong> %s', 'wporg-plugins' ) . '</p>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $zip_size                   = ( is_object( $zip_file ) ? size_format( filesize( get_attached_file( $zip_file->ID ) ), 1 ) : __( 'unknown size', 'wporg-plugins' ) );
+                       printf(
+                               '<p>' . __( '<strong>Zip file:</strong> %s', 'wporg-plugins' ) . '</p>',
</ins><span class="cx" style="display: block; padding: 0 10px">                                 sprintf( '%s <a href="%s">%s</a> (%s)', esc_html( $zip_date ), esc_url( $zip_url ), esc_html( $zip_url ), esc_html( $zip_size ) )
</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">@@ -64,7 +66,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                /* translators: %s: plugin title */
</span><span class="cx" style="display: block; padding: 0 10px">                                $subject = sprintf( __( '[WordPress Plugin Directory] Notice: %s', 'wporg-plugins' ), $post->post_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">-                        
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                         ?>
</span><span class="cx" style="display: block; padding: 0 10px">                        <form id="contact-author" class="contact-author" method="POST" action="https://supportpress.wordpress.org/plugins/thread-new.php">
</span><span class="cx" style="display: block; padding: 0 10px">                                <input type="hidden" name="to_email" value="<?php echo esc_attr( $author->user_email ); ?>" />
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -74,6 +76,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                <button class="button button-primary" type="submit"><?php _e( 'Contact plugin author', 'wporg-plugins' ); ?></button>
</span><span class="cx" style="display: block; padding: 0 10px">                        </form>
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                         return $string;
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclasssupportrepsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-support-reps.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-support-reps.php    2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-support-reps.php      2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Admin\Metabox;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Admin\List_Table;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -35,8 +36,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Ajax handler for adding a new support rep.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function add_support_rep() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $login    = isset( $_POST['add_support_rep'] ) ? sanitize_user( $_POST['add_support_rep'] ) : '';
-               $post_id  = isset( $_POST['post_id'] ) ? (int) $_POST['post_id'] : 0;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $login   = isset( $_POST['add_support_rep'] ) ? sanitize_user( $_POST['add_support_rep'] ) : '';
+               $post_id = isset( $_POST['post_id'] ) ? (int) $_POST['post_id'] : 0;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                check_ajax_referer( 'add-support-rep' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -84,7 +85,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Ajax handler for removing a support rep.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function remove_support_rep() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $id      = isset( $_POST['id'] )      ? (int) $_POST['id']      : 0;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $id      = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $post_id = isset( $_POST['post_id'] ) ? (int) $_POST['post_id'] : 0;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                check_ajax_referer( "remove-support-rep-$id" );
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadmintoolsclassauthorcardsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/tools/class-author-cards.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/tools/class-author-cards.php      2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/tools/class-author-cards.php        2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24,7 +24,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Constructor.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        private function __construct() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_action( 'admin_menu',            array( $this, 'add_to_menu' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         add_action( 'admin_menu', array( $this, 'add_to_menu' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_assets' ) );
</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">@@ -37,10 +37,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                switch ( $hook_suffix ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        case 'tools_page_authorcards':
</span><span class="cx" style="display: block; padding: 0 10px">                                wp_enqueue_style( 'plugin-admin-post-css', plugins_url( 'css/edit-form.css', Plugin_Directory\PLUGIN_FILE ), array( 'edit' ), 4 );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        break;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         break;
</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><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">         public function add_to_menu() {
</span><span class="cx" style="display: block; padding: 0 10px">                add_submenu_page(
</span><span class="cx" style="display: block; padding: 0 10px">                        'tools.php',
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadmintoolsclassstatsreportphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/tools/class-stats-report.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/tools/class-stats-report.php      2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/tools/class-stats-report.php        2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -41,8 +41,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Returns the stats.
</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 array  $args {
-        *     Optional. Array of override arguments
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param array $args {
+        *    Optional. Array of override arguments
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         *     @type string $date       The date (in Y-m-d format) for the end of the stats time interval (non-inclusive). Default today.
</span><span class="cx" style="display: block; padding: 0 10px">         *     @type int    $num_days   The number of days in the stats time interval that ends at $date. Default 7.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -87,12 +87,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // --------------
</span><span class="cx" style="display: block; padding: 0 10px">                // Plugin Status Changes
</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">                 $states = array( 'plugin_approve', 'plugin_delist', 'plugin_new', 'plugin_reject' );
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $states as $state ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        // The stats table used by bbPress1 (and could still be used, but isn't yet).
</span><span class="cx" style="display: block; padding: 0 10px">                        // Won't provide meaningful results for time intervals that include days after the switch to WP.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $stats[ $state ] = $wpdb->get_var( $wpdb->prepare (
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $stats[ $state ] = $wpdb->get_var( $wpdb->prepare(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 "SELECT SUM(views) FROM stats_extras WHERE name = 'plugin' AND date < %s AND date > DATE_SUB( %s, INTERVAL %d DAY ) AND value = %s",
</span><span class="cx" style="display: block; padding: 0 10px">                                $args['date'],
</span><span class="cx" style="display: block; padding: 0 10px">                                $args['date'],
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -103,13 +102,14 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Temporary until the above is updated to work with the new directory:
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( array( 'plugin_approve', 'plugin_delist', 'plugin_reject' ) as $unused_stat ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( ! $stats[ $unused_stat ] ) $stats[ $unused_stat ] = __( 'N/A', 'wporg-plugins' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! $stats[ $unused_stat ] ) {
+                               $stats[ $unused_stat ] = __( 'N/A', 'wporg-plugins' );
+                       }
</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">                // Plugin Queue
</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">                 // # of plugins currently in the queue that are new (have not been processed/replied to yet)
</span><span class="cx" style="display: block; padding: 0 10px">                $stats['in_queue_new'] = $wpdb->get_var(
</span><span class="cx" style="display: block; padding: 0 10px">                        "SELECT COUNT(*) FROM $wpdb->posts WHERE `post_type` = 'plugin' AND `post_status` = 'new'"
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -141,7 +141,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // --------------
</span><span class="cx" style="display: block; padding: 0 10px">                // SupportPress Queue
</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">                 // # of currently open threads
</span><span class="cx" style="display: block; padding: 0 10px">                $stats['supportpress_queue_total_open'] = $wpdb->get_var(
</span><span class="cx" style="display: block; padding: 0 10px">                        "SELECT COUNT(*) FROM plugins_support_threads WHERE state = 'open'"
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -193,7 +192,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $args['date'] = '';
</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">-                $args['num_days'] = empty( $_POST['days'] ) ? '' : absint( $_POST['days'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $args['num_days']   = empty( $_POST['days'] ) ? '' : absint( $_POST['days'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $args['recentdays'] = empty( $_POST['recentdays'] ) ? '' : absint( $_POST['recentdays'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $stats = $this->get_stats( $args );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -211,32 +210,41 @@
</span><span class="cx" style="display: block; padding: 0 10px">                <table class="form-table"><tbody>
</span><span class="cx" style="display: block; padding: 0 10px">                <tr><th scope="row"><label for="date"><?php _e( 'Date', 'wporg-plugins' ); ?></label></th><td>
</span><span class="cx" style="display: block; padding: 0 10px">                <input name="date" type="text" id="date" value="<?php echo esc_attr( $args['date'] ); ?>" class="text">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <p><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         <p>
+               <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                         /* translators: %s: today's date */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        printf( __( 'The day up to which stats are to be gathered. In YYYY-MM-DD format. Defaults to today (%s).', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 printf(
+                               __( 'The day up to which stats are to be gathered. In YYYY-MM-DD format. Defaults to today (%s).', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $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">-                ?></p>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         ?>
+               </p>
</ins><span class="cx" style="display: block; padding: 0 10px">                 </td></tr>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                <tr><th scope="row"><label for="days"><?php _e( 'Number of days', 'wporg-plugins' ); ?></label></th><td>
</span><span class="cx" style="display: block; padding: 0 10px">                <input name="days" type="text" id="days" value="<?php echo esc_attr( $args['num_days'] ); ?>" class="small-text">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <p><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         <p>
+               <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                         /* translators: %d: 7 */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        printf( __( 'The number of days before "Date" to include in stats. Default is %d.', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 printf(
+                               __( 'The number of days before "Date" to include in stats. Default is %d.', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 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">-                ?></p>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         ?>
+               </p>
</ins><span class="cx" style="display: block; padding: 0 10px">                 </td></tr>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                <tr><th scope="row"><label for="recentdays"><?php _e( '"Recent" number of days', 'wporg-plugins' ); ?></label></th><td>
</span><span class="cx" style="display: block; padding: 0 10px">                <input name="recentdays" type="text" id="recentdays" value="<?php echo esc_attr( $args['recentdays'] ); ?>" class="small-text">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <p><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         <p>
+               <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                         /* translators: %d: 7 */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        printf( __( 'The number of days before today to consider as being "recent" (stats marked with **). Default is %d.', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 printf(
+                               __( 'The number of days before today to consider as being "recent" (stats marked with **). Default is %d.', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 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">-                ?></p>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         ?>
+               </p>
</ins><span class="cx" style="display: block; padding: 0 10px">                 </td></tr>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                </tbody></table>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -245,122 +253,170 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                <h2><?php _e( 'Stats', 'wporg-plugins' ); ?></h2>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <p><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         <p>
+               <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                         /* translators: 1: number of days, 2: selected date, 3: number of most recent days */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        printf( __( 'Displaying stats for the %1$d days preceding %2$s (and other stats for the %3$d most recent days).', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 printf(
+                               __( 'Displaying stats for the %1$d days preceding %2$s (and other stats for the %3$d most recent days).', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $stats['num_days'],
</span><span class="cx" style="display: block; padding: 0 10px">                                $stats['date'],
</span><span class="cx" style="display: block; padding: 0 10px">                                $stats['recentdays']
</span><span class="cx" style="display: block; padding: 0 10px">                        );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                ?></p>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         ?>
+               </p>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                <h3><?php _e( 'Plugin Status Change Stats', 'wporg-plugins' ); ?></h3>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                <ul style="font-family:Courier New;">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 <li>
+                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: %d: number of requested plugins */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                printf( __( 'Plugins requested : %d', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         printf(
+                                       __( 'Plugins requested : %d', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $stats['plugin_new']
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        ?></li>
-                       <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 ?>
+                       </li>
+                       <li>
+                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: %s: number of rejected plugins */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                printf( __( 'Plugins rejected : %s', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         printf(
+                                       __( 'Plugins rejected : %s', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $stats['plugin_reject']
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        ?></li>
-                       <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 ?>
+                       </li>
+                       <li>
+                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: %s: number of closed plugins */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                printf( __( 'Plugins closed : %s', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         printf(
+                                       __( 'Plugins closed : %s', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $stats['plugin_delist']
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        ?></li>
-                       <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 ?>
+                       </li>
+                       <li>
+                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: %s: number of approved plugins */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                printf( __( 'Plugins approved : %s', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         printf(
+                                       __( 'Plugins approved : %s', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $stats['plugin_approve']
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        ?></li>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 ?>
+                       </li>
</ins><span class="cx" style="display: block; padding: 0 10px">                 </ul>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                <h3><?php _e( 'Plugin Queue Stats (current)', 'wporg-plugins' ); ?></h3>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                <ul style="font-family:Courier New;">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 <li>
+                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: %d: number of plugins in the queue */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                printf( __( 'Plugins in the queue (new and pending)* : %d', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         printf(
+                                       __( 'Plugins in the queue (new and pending)* : %d', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $stats['in_queue']
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        ?></li>
-                       <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 ?>
+                       </li>
+                       <li>
+                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: 1: number of most recent days, 2: number of older plugins in the queue */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                printf( __( '&rarr; (older than %1$d days ago)** : %2$d', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         printf(
+                                       __( '&rarr; (older than %1$d days ago)** : %2$d', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $stats['recentdays'],
</span><span class="cx" style="display: block; padding: 0 10px">                                        $stats['in_queue_old']
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        ?></li>
-                       <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 ?>
+                       </li>
+                       <li>
+                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: 1: start date, 2: end date, 3: number of plugins in the queue within defined time window */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                printf( __( '&rarr; (%1$s - %2$s) : %3$d', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         printf(
+                                       __( '&rarr; (%1$s - %2$s) : %3$d', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $start_date,
</span><span class="cx" style="display: block; padding: 0 10px">                                        $stats['date'],
</span><span class="cx" style="display: block; padding: 0 10px">                                        $stats['in_queue_from_time_window']
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        ?></li>
-                       <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 ?>
+                       </li>
+                       <li>
+                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: %d: number of new plugins */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                printf( __( '&rarr; (new; not processed or replied to yet)* : %d', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         printf(
+                                       __( '&rarr; (new; not processed or replied to yet)* : %d', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $stats['in_queue_new']
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        ?></li>
-                       <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 ?>
+                       </li>
+                       <li>
+                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: %d: number of pending plugins */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                printf( __( '&rarr; (pending; replied to)* : %d', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         printf(
+                                       __( '&rarr; (pending; replied to)* : %d', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $stats['in_queue_pending']
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        ?></li>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 ?>
+                       </li>
</ins><span class="cx" style="display: block; padding: 0 10px">                 </ul>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                <h3><?php _e( 'SupportPress Queue Stats', 'wporg-plugins' ); ?></h3>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                <ul style="font-family:Courier New;">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 <li>
+                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: %d: number of open tickets */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                printf( __( 'Total open tickets* : %d', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         printf(
+                                       __( 'Total open tickets* : %d', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $stats['supportpress_queue_total_open']
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        ?></li>
-                       <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 ?>
+                       </li>
+                       <li>
+                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: 1: number of most recent days, 2: number of plugins with no activity */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                printf( __( ' &rarr; (with no activity in last %1$d days)** : %2$d', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         printf(
+                                       __( ' &rarr; (with no activity in last %1$d days)** : %2$d', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $stats['recentdays'],
</span><span class="cx" style="display: block; padding: 0 10px">                                        $stats['supportpress_queue_total_open_old']
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        ?></li>
-                       <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 ?>
+                       </li>
+                       <li>
+                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: %d: number of most recent days */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                printf( __( 'Within defined %d day time window:', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         printf(
+                                       __( 'Within defined %d day time window:', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $stats['num_days']
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                ?><ul style="margin-left:20px;margin-top:0.5em;">
-                                       <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         ?>
+                               <ul style="margin-left:20px;margin-top:0.5em;">
+                                       <li>
+                                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 /* translators: %d: total number of plugins within defined time window */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                printf( __( 'Total : %d', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         printf(
+                                                       __( 'Total : %d', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         $stats['supportpress_queue_interval_all']
</span><span class="cx" style="display: block; padding: 0 10px">                                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        ?></li>
-                                       <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 ?>
+                                       </li>
+                                       <li>
+                                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 /* translators: %d: number of closed plugins within defined time window */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                printf( __( 'Closed : %d', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         printf(
+                                                       __( 'Closed : %d', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         $stats['supportpress_queue_interval_closed']
</span><span class="cx" style="display: block; padding: 0 10px">                                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        ?></li>
-                                       <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 ?>
+                                       </li>
+                                       <li>
+                                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 /* translators: %d: number of open plugins within defined time window */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                printf( __( 'Open : %d', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         printf(
+                                                       __( 'Open : %d', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         $stats['supportpress_queue_interval_open']
</span><span class="cx" style="display: block; padding: 0 10px">                                                );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        ?></li>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 ?>
+                                       </li>
</ins><span class="cx" style="display: block; padding: 0 10px">                                 </ul>
</span><span class="cx" style="display: block; padding: 0 10px">                        </li>
</span><span class="cx" style="display: block; padding: 0 10px">                </ul>
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiclassbasephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/class-base.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/class-base.php      2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/class-base.php        2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,16 +1,26 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\API;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Plugin_Directory;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+use WordPressdotorg\Plugin_Directory\Plugin_I18n;
+use WordPressdotorg\Plugin_Directory\Template;
</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">  * @package WordPressdotorg_Plugin_Directory
</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"> class 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">-         * Initialises each API route we offer.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * Initializes REST API customizations.
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        static function load_routes() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public static function init() {
+               self::load_routes();
+               self::load_fields();
+       }
+
+       /**
+        * Loads all API route we offer.
+        */
+       public static function load_routes() {
</ins><span class="cx" style="display: block; padding: 0 10px">                 new Routes\Internal_Stats();
</span><span class="cx" style="display: block; padding: 0 10px">                new Routes\Plugin();
</span><span class="cx" style="display: block; padding: 0 10px">                new Routes\Locale_Banner();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -24,6 +34,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">+         * Loads all API field for existing WordPress object types we offer.
+        */
+       public static function load_fields() {
+               new Fields\Plugin\Banners();
+               new Fields\Plugin\Icons();
+               new Fields\Plugin\Rating();
+               new Fields\Plugin\Ratings();
+               new Fields\Plugin\Screenshots();
+       }
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * A validation callback for REST API Requests to ensure a valid plugin slug is presented.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @param string $value The plugin slug to be checked for.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -57,7 +78,4 @@
</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">-
</del><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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapifieldspluginclassbannersphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-banners.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-banners.php                             (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-banners.php       2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,31 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+namespace WordPressdotorg\Plugin_Directory\API\Fields\Plugin;
+
+use WordPressdotorg\Plugin_Directory\Template;
+
+class Banners {
+
+       /**
+        * Banners constructor.
+        */
+       public function __construct() {
+               register_rest_field( 'plugin', 'banners', [
+                       'get_callback' => [ $this, 'get_banner' ],
+                       'schema'       => [
+                               'description' => __( 'Plugin banner.', 'wporg-plugins' ),
+                               'type'        => 'object',
+                               'context'     => [ 'view' ],
+                               'properties'  => [ 'banner', 'banner_x2' ],
+                       ],
+               ] );
+       }
+
+       /**
+        * @param array $object
+        * @return mixed
+        */
+       public function get_banner( $object ) {
+               return Template::get_plugin_banner( $object['id'] );
+       }
+}
</ins></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapifieldspluginclassiconsphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-icons.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-icons.php                               (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-icons.php 2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,30 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+namespace WordPressdotorg\Plugin_Directory\API\Fields\Plugin;
+
+use WordPressdotorg\Plugin_Directory\Template;
+
+class Icons {
+
+       /**
+        * Icons constructor.
+        */
+       public function __construct() {
+               register_rest_field( 'plugin', 'icons', [
+                       'get_callback' => [ $this, 'get_icon' ],
+                       'schema'       => [
+                               'description' => __( 'Plugin icon.', 'wporg-plugins' ),
+                               'type'        => 'object',
+                               'context'     => [ 'view' ],
+                               'properties'  => [ 'svg', 'icon', 'icon_x2', 'generated' ],
+                       ],
+               ] );
+       }
+
+       /**
+        * @param array $object
+        * @return mixed
+        */
+       public function get_icon( $object ) {
+               return Template::get_plugin_icon( $object['id'] );
+       }
+}
</ins></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapifieldspluginclassratingphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-rating.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-rating.php                              (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-rating.php        2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,28 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+namespace WordPressdotorg\Plugin_Directory\API\Fields\Plugin;
+
+class Rating {
+
+       /**
+        * Icons constructor.
+        */
+       public function __construct() {
+               register_rest_field( 'plugin', 'rating', [
+                       'get_callback' => [ $this, 'get_rating' ],
+                       'schema'       => [
+                               'description' => __( 'Plugin rating.', 'wporg-plugins' ),
+                               'type'        => 'float',
+                               'context'     => [ 'view' ],
+                               'properties'  => [],
+                       ],
+               ] );
+       }
+
+       /**
+        * @param array $object
+        * @return float
+        */
+       public function get_rating( $object ) {
+               return (float) get_post_meta( $object['id'], 'rating', true ) ?: 0.0;
+       }
+}
</ins></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapifieldspluginclassratingsphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-ratings.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-ratings.php                             (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-ratings.php       2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,30 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+namespace WordPressdotorg\Plugin_Directory\API\Fields\Plugin;
+
+class Ratings {
+
+       /**
+        * Icons constructor.
+        */
+       public function __construct() {
+               register_rest_field( 'plugin', 'ratings', [
+                       'get_callback' => [ $this, 'get_ratings' ],
+                       'schema'       => [
+                               'description' => __( 'Plugin ratings.', 'wporg-pluginss' ),
+                               'type'        => 'object',
+                               'context'     => [ 'view' ],
+                               'properties'  => [ '1', '2', '3', '4', '5' ],
+                       ],
+               ] );
+       }
+
+       /**
+        * @param array $object
+        * @return array
+        */
+       public function get_ratings( $object ) {
+               $ratings = array_map( 'absint', get_post_meta( $object['id'], 'ratings', true ) );
+
+               return $ratings ?: [];
+       }
+}
</ins></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapifieldspluginclassscreenshotsphp"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-screenshots.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-screenshots.php                         (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/fields/plugin/class-screenshots.php   2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,49 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?php
+
+namespace WordPressdotorg\Plugin_Directory\API\Fields\Plugin;
+
+use WordPressdotorg\Plugin_Directory\Plugin_I18n;
+use WordPressdotorg\Plugin_Directory\Template;
+
+class Screenshots {
+
+       /**
+        * Banners constructor.
+        */
+       public function __construct() {
+               register_rest_field( 'plugin', 'screenshots', [
+                       'get_callback' => [ $this, 'get_screenshots' ],
+                       'schema'       => [
+                               'description' => __( 'Plugin screenshots.', 'wporg-plugins' ),
+                               'type'        => 'object',
+                               'context'     => [ 'view' ],
+                               'properties'  => [ 'src', 'caption' ],
+                       ],
+               ] );
+       }
+
+       /**
+        * @param array $object
+        * @return array
+        */
+       public function get_screenshots( $object ) {
+               $descriptions = get_post_meta( $object['id'], 'screenshots', true ) ?: [];
+               $screen_shots = get_post_meta( $object['id'], 'assets_screenshots', true ) ?: [];
+               $response     = [];
+
+               foreach ( $screen_shots as $image ) {
+                       $screen_shot = [
+                               'src' => esc_url( Template::get_asset_url( $object['id'], $image ) ),
+                       ];
+
+                       if ( $descriptions && ! empty( $descriptions[ (int) $image['resolution'] ] ) ) {
+                               $caption                = $descriptions[ (int) $image['resolution'] ];
+                               $screen_shot['caption'] = Plugin_I18n::instance()->translate( 'screenshot-' . $image['resolution'], $caption, [ 'post_id' => $object['id'] ] );
+                       }
+
+                       $response[] = $screen_shot;
+               }
+
+               return $response;
+       }
+}
</ins></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclasscommitsubscriptionsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-commit-subscriptions.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-commit-subscriptions.php       2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-commit-subscriptions.php 2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\API\Routes;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Plugin_Directory;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\API\Base;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -13,20 +14,24 @@
</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">                register_rest_route( 'plugins/v1', '/plugin/(?P<plugin_slug>[^/]+)/commit-subscription', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'methods'  => \WP_REST_Server::READABLE,
-                       'callback' => array( $this, 'subscribe' ),
-                       'args' => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'methods'             => \WP_REST_Server::READABLE,
+                       'callback'            => array( $this, 'subscribe' ),
+                       'args'                => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'plugin_slug' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'validate_callback' => array( $this, 'validate_plugin_slug_callback' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'subscribe' => array(
-                                       'validate_callback' => function( $bool ) { return is_numeric( $bool ); },
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'subscribe'   => array(
+                                       'validate_callback' => function( $bool ) {
+                                               return is_numeric( $bool );
+                                       },
</ins><span class="cx" style="display: block; padding: 0 10px">                                 ),
</span><span class="cx" style="display: block; padding: 0 10px">                                'unsubscribe' => array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'validate_callback' => function( $bool ) { return is_numeric( $bool ); },
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'validate_callback' => function( $bool ) {
+                                               return is_numeric( $bool );
+                                       },
</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">-                        'permission_callback' => 'is_user_logged_in'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'permission_callback' => 'is_user_logged_in',
</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">@@ -41,7 +46,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                header( "Location: $location" );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $result = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        "location" => $location,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'location' => $location,
</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 ( ! isset( $request['subscribe'] ) && ! isset( $request['unsubscribe'] ) ) {
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclassinternalstatsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-internal-stats.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-internal-stats.php     2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-internal-stats.php       2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\API\Routes;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Plugin_Directory;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\API\Base;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -18,8 +19,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        function __construct() {
</span><span class="cx" style="display: block; padding: 0 10px">                register_rest_route( 'plugins/v1', '/update-stats', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'methods'  => \WP_REST_Server::CREATABLE,
-                       'callback' => array( $this, 'bulk_update_stats' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'methods'             => \WP_REST_Server::CREATABLE,
+                       'callback'            => array( $this, 'bulk_update_stats' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         'permission_callback' => array( $this, 'permission_check_internal_api_bearer' ),
</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">@@ -111,7 +112,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        protected function sanitize_usage_numbers( $usage, $plugin ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $latest_version = get_post_meta( $plugin->ID, 'version', true ) ?: '0.0';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $latest_branch = implode( '.', array_slice( explode('.', $latest_version ), 0, 2 ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $latest_branch  = implode( '.', array_slice( explode( '.', $latest_version ), 0, 2 ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Exclude any version strings higher than the latest plugin version (ie. 99.9)
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $usage as $version => $count ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -125,7 +126,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $percent_cut_off = 5;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Calculate the percentage of each version branch
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $total = array_sum( $usage );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $total  = array_sum( $usage );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $others = array();
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $usage as $version => $count ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $percent = round( $count / $total * 100, 2 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -140,10 +141,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // If there was only one version < $percent_cut_off then display it as-is
</span><span class="cx" style="display: block; padding: 0 10px">                if ( count( $others ) == 1 ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $version = array_keys( $others );
-                       $version = array_shift( $version );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $version           = array_keys( $others );
+                       $version           = array_shift( $version );
</ins><span class="cx" style="display: block; padding: 0 10px">                         $usage[ $version ] = round( $others[ $version ] / $total * 100, 2 );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Else we'll add an 'others' version.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Else we'll add an 'others' version.
</ins><span class="cx" style="display: block; padding: 0 10px">                 } elseif ( count( $others ) > 1 ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $usage['other'] = round( array_sum( $others ) / $total * 100, 2 );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclasslocalebannerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-locale-banner.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-locale-banner.php      2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-locale-banner.php        2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\API\Routes;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\API\Base;
</span><span class="cx" style="display: block; padding: 0 10px"> use WP_REST_Server;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14,7 +15,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                register_rest_route( 'plugins/v1', '/locale-banner', array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'methods'  => WP_REST_Server::EDITABLE,
</span><span class="cx" style="display: block; padding: 0 10px">                        'callback' => array( $this, 'locale_banner' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'args' => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'args'     => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'plugin_slug' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'validate_callback' => array( $this, 'validate_plugin_slug_callback' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -68,8 +69,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $current_locale = get_locale();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Build a list of WordPress locales which we'll suggest to the user.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $suggest_locales = array_values( array_intersect( $locales_from_header, $translated_locales ) );
-               $current_locale_is_suggested = in_array( $current_locale, $suggest_locales );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $suggest_locales              = array_values( array_intersect( $locales_from_header, $translated_locales ) );
+               $current_locale_is_suggested  = in_array( $current_locale, $suggest_locales );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $current_locale_is_translated = in_array( $current_locale, $translated_locales );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                require_once GLOTPRESS_LOCALES_PATH;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -115,9 +116,9 @@
</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">-                        // Multiple locale suggestions.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // Multiple locale suggestions.
</ins><span class="cx" style="display: block; padding: 0 10px">                         } elseif ( ! empty( $suggest_named_locales ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $primary_locale = key( $suggest_named_locales );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $primary_locale   = key( $suggest_named_locales );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $primary_language = current( $suggest_named_locales );
</span><span class="cx" style="display: block; padding: 0 10px">                                array_shift( $suggest_named_locales );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -168,7 +169,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">-                        // Non-English locale in header, no translations.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // Non-English locale in header, no translations.
</ins><span class="cx" style="display: block; padding: 0 10px">                         } elseif ( $locales_from_header ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $locale = reset( $locales_from_header );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -179,7 +180,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">-                // Localized directory.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Localized directory.
</ins><span class="cx" style="display: block; padding: 0 10px">                 } elseif ( ! $current_locale_is_suggested && ! $current_locale_is_translated && $is_plugin_request ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $suggest_string = sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->translate( 'This plugin is not translated into %1$s yet. <a href="%2$s">Help translate it!</a>', $current_locale ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -253,7 +254,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        protected function get_http_locales( $header ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $locale_part_re = '[a-z]{2,}';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $locale_re = "($locale_part_re(\-$locale_part_re)?)";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $locale_re      = "($locale_part_re(\-$locale_part_re)?)";
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( preg_match_all( "/$locale_re/i", $header, $matches ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $matches[0];
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -270,8 +272,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return string|false Our locale matching $lang and $region, false otherwise.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        protected function map_locale( $lang, $region, $available_locales ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $uregion = strtoupper( $region );
-               $ulang   = strtoupper( $lang );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $uregion  = strtoupper( $region );
+               $ulang    = strtoupper( $lang );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $variants = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        "$lang-$region",
</span><span class="cx" style="display: block; padding: 0 10px">                        "{$lang}_$region",
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -352,7 +354,6 @@
</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"> // Strings for the POT file.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px"> /* translators: %s: native language name. */
</span><span class="cx" style="display: block; padding: 0 10px"> __( 'This plugin is also available in %1$s. <a href="%2$s">Help improve the translation!</a>', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> /* translators: 1: native language name, 2: other native language names, comma separated */
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclassplugincommittersphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-committers.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-committers.php  2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-committers.php    2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\API\Routes;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Plugin_Directory;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Template;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -19,58 +20,58 @@
</span><span class="cx" style="display: block; padding: 0 10px">        function __construct() {
</span><span class="cx" style="display: block; padding: 0 10px">                register_rest_route( 'plugins/v1', '/plugin/(?P<plugin_slug>[^/]+)/committers/?', array(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'methods'  => WP_REST_Server::READABLE,
-                               'callback' => array( $this, 'list_committers' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'methods'             => WP_REST_Server::READABLE,
+                               'callback'            => array( $this, 'list_committers' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'permission_callback' => function( $request ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        return current_user_can(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'plugin_admin_edit',
</span><span class="cx" style="display: block; padding: 0 10px">                                                Plugin_Directory::get_plugin_post( $request['plugin_slug'] )
</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">-                                'args' => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'args'                => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                         'plugin_slug' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'validate_callback' => array( $this, 'validate_plugin_slug_callback' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'required' => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'required'          => 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">-                                )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'methods'  => WP_REST_Server::CREATABLE,
-                               'callback' => array( $this, 'add_committer' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'methods'             => WP_REST_Server::CREATABLE,
+                               'callback'            => array( $this, 'add_committer' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'permission_callback' => function( $request ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        return current_user_can(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'plugin_add_committer',
</span><span class="cx" style="display: block; padding: 0 10px">                                                Plugin_Directory::get_plugin_post( $request['plugin_slug'] )
</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">-                                'args' => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'args'                => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                         'plugin_slug' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'validate_callback' => array( $this, 'validate_plugin_slug_callback' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'required' => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'required'          => 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">-                                )
-                       )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         ),
+                       ),
</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">                register_rest_route( 'plugins/v1', '/plugin/(?P<plugin_slug>[^/]+)/committers/(?P<committer>[^/]+)/?', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'methods'  => WP_REST_Server::DELETABLE,
-                       'callback' => array( $this, 'revoke_committer' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'methods'             => WP_REST_Server::DELETABLE,
+                       'callback'            => array( $this, 'revoke_committer' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         'permission_callback' => function( $request ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                return current_user_can(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'plugin_remove_committer',
</span><span class="cx" style="display: block; padding: 0 10px">                                        Plugin_Directory::get_plugin_post( $request['plugin_slug'] )
</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">-                        'args' => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'args'                => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'plugin_slug' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'validate_callback' => array( $this, 'validate_plugin_slug_callback' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'required' => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'required'          => 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">-                                'committer' => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'committer'   => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                         'validate_callback' => array( $this, 'validate_user_slug_callback' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'required' => true,
-                               )
-                       )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'required'          => 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"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -82,7 +83,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $committers = array();
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( (array) Tools::get_plugin_committers( $plugin_slug ) as $user_login ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $user = get_user_by( 'login', $user_login );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $user         = get_user_by( 'login', $user_login );
</ins><span class="cx" style="display: block; padding: 0 10px">                         $committers[] = $this->user_committer_details( $user );
</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,7 +158,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'nicename' => $user->user_nicename,
</span><span class="cx" style="display: block; padding: 0 10px">                        'profile'  => esc_url( 'https://profiles.wordpress.org/' . $user->user_nicename ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'avatar'   => get_avatar_url( $user->ID, 32 ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'name'     => Template::encode( $user->display_name )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'name'     => Template::encode( $user->display_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">                if ( current_user_can( 'plugin_review' ) ) {
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclasspluginfavoritesphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-favorites.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-favorites.php   2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-favorites.php     2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\API\Routes;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Plugin_Directory;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\API\Base;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -13,20 +14,24 @@
</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">                register_rest_route( 'plugins/v1', '/plugin/(?P<plugin_slug>[^/]+)/favorite', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'methods'  => array( \WP_REST_Server::READABLE, \WP_REST_Server::CREATABLE ),
-                       'callback' => array( $this, 'favorite' ),
-                       'args' => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'methods'             => array( \WP_REST_Server::READABLE, \WP_REST_Server::CREATABLE ),
+                       'callback'            => array( $this, 'favorite' ),
+                       'args'                => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'plugin_slug' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'validate_callback' => array( $this, 'validate_plugin_slug_callback' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'favorite' => array(
-                                       'validate_callback' => function( $bool ) { return is_numeric( $bool ); },
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'favorite'    => array(
+                                       'validate_callback' => function( $bool ) {
+                                               return is_numeric( $bool );
+                                       },
</ins><span class="cx" style="display: block; padding: 0 10px">                                 ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'unfavorite' => array(
-                                       'validate_callback' => function( $bool ) { return is_numeric( $bool ); },
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'unfavorite'  => array(
+                                       'validate_callback' => function( $bool ) {
+                                               return is_numeric( $bool );
+                                       },
</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">-                        'permission_callback' => 'is_user_logged_in'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'permission_callback' => 'is_user_logged_in',
</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">@@ -41,7 +46,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                header( "Location: $location" );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $result = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        "location" => $location,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'location' => $location,
</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 ( ! isset( $request['favorite'] ) && ! isset( $request['unfavorite'] ) ) {
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclasspluginsupportrepsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-support-reps.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-support-reps.php        2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-support-reps.php  2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\API\Routes;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Plugin_Directory;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Template;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -19,58 +20,58 @@
</span><span class="cx" style="display: block; padding: 0 10px">        function __construct() {
</span><span class="cx" style="display: block; padding: 0 10px">                register_rest_route( 'plugins/v1', '/plugin/(?P<plugin_slug>[^/]+)/support-reps/?', array(
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'methods'  => WP_REST_Server::READABLE,
-                               'callback' => array( $this, 'list_support_reps' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'methods'             => WP_REST_Server::READABLE,
+                               'callback'            => array( $this, 'list_support_reps' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'permission_callback' => function( $request ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        return current_user_can(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'plugin_admin_edit',
</span><span class="cx" style="display: block; padding: 0 10px">                                                Plugin_Directory::get_plugin_post( $request['plugin_slug'] )
</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">-                                'args' => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'args'                => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                         'plugin_slug' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'validate_callback' => array( $this, 'validate_plugin_slug_callback' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'required' => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'required'          => 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">-                                )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'methods'  => WP_REST_Server::CREATABLE,
-                               'callback' => array( $this, 'add_support_rep' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'methods'             => WP_REST_Server::CREATABLE,
+                               'callback'            => array( $this, 'add_support_rep' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'permission_callback' => function( $request ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        return current_user_can(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'plugin_add_support_rep',
</span><span class="cx" style="display: block; padding: 0 10px">                                                Plugin_Directory::get_plugin_post( $request['plugin_slug'] )
</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">-                                'args' => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'args'                => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                         'plugin_slug' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'validate_callback' => array( $this, 'validate_plugin_slug_callback' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'required' => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'required'          => 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">-                                )
-                       )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         ),
+                       ),
</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">                register_rest_route( 'plugins/v1', '/plugin/(?P<plugin_slug>[^/]+)/support-reps/(?P<support_rep>[^/]+)/?', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'methods'  => WP_REST_Server::DELETABLE,
-                       'callback' => array( $this, 'remove_support_rep' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'methods'             => WP_REST_Server::DELETABLE,
+                       'callback'            => array( $this, 'remove_support_rep' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         'permission_callback' => function( $request ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                return current_user_can(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'plugin_remove_support_rep',
</span><span class="cx" style="display: block; padding: 0 10px">                                        Plugin_Directory::get_plugin_post( $request['plugin_slug'] )
</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">-                        'args' => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'args'                => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'plugin_slug' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'validate_callback' => array( $this, 'validate_plugin_slug_callback' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'required' => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'required'          => true,
</ins><span class="cx" style="display: block; padding: 0 10px">                                 ),
</span><span class="cx" style="display: block; padding: 0 10px">                                'support_rep' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'validate_callback' => array( $this, 'validate_user_slug_callback' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'required' => true,
-                               )
-                       )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'required'          => 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"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -82,7 +83,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $support_reps = array();
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( (array) Tools::get_plugin_support_reps( $plugin_slug ) as $user_nicename ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $user = get_user_by( 'slug', $user_nicename );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $user           = get_user_by( 'slug', $user_nicename );
</ins><span class="cx" style="display: block; padding: 0 10px">                         $support_reps[] = $this->user_support_rep_details( $user );
</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,7 +158,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'nicename' => $user->user_nicename,
</span><span class="cx" style="display: block; padding: 0 10px">                        'profile'  => esc_url( 'https://profiles.wordpress.org/' . $user->user_nicename ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'avatar'   => get_avatar_url( $user->ID, 32 ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'name'     => Template::encode( $user->display_name )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'name'     => Template::encode( $user->display_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">                if ( current_user_can( 'plugin_review' ) ) {
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclasspluginphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin.php     2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin.php       2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\API\Routes;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Plugin_Directory;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Plugin_i18n;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Template;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21,11 +22,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                register_rest_route( 'plugins/v1', '/plugin/(?P<plugin_slug>[^/]+)/?', array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'methods'  => WP_REST_Server::READABLE,
</span><span class="cx" style="display: block; padding: 0 10px">                        'callback' => array( $this, 'plugin_info' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'args' => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'args'     => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'plugin_slug' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'validate_callback' => array( $this, 'validate_plugin_slug_callback' ),
</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">+                         ),
+                       ),
</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">@@ -49,22 +50,22 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'status' => \WP_HTTP::BAD_REQUEST,
</span><span class="cx" style="display: block; padding: 0 10px">                                        'params' => array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'plugin_slug' => 'Invalid parameter.'
-                                       )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'plugin_slug' => 'Invalid parameter.',
+                                       ),
</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><span class="cx" style="display: block; padding: 0 10px">                // Support returning API data in different locales, even on wordpress.org (for api.wordpress.org usage)
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( ! empty( $request['locale'] ) && !in_array( strtolower( $request['locale'] ), array( 'en_us', 'en' ) ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! empty( $request['locale'] ) && ! in_array( strtolower( $request['locale'] ), array( 'en_us', 'en' ) ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         switch_to_locale( $request['locale'] );
</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">                $post_id = $post->ID;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $result = array();
-               $result['name'] = get_the_title();
-               $result['slug'] = $post->post_name;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $result            = array();
+               $result['name']    = get_the_title();
+               $result['slug']    = $post->post_name;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $result['version'] = get_post_meta( $post_id, 'version', true ) ?: '0.0';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $result['author'] = strip_tags( get_post_meta( $post_id, 'header_author', true ) ) ?: get_user_by( 'id', $post->post_author )->display_name;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -74,13 +75,13 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Profile of the original plugin submitter
</span><span class="cx" style="display: block; padding: 0 10px">                $result['author_profile'] = $this->get_user_profile_link( $post->post_author );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $result['contributors'] = array();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $result['contributors']   = array();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $contributors = get_terms( array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'taxonomy' => 'plugin_contributors',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'taxonomy'   => 'plugin_contributors',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'object_ids' => array( $post->ID ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'orderby' => 'term_order',
-                       'fields' => 'names',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'orderby'    => 'term_order',
+                       'fields'     => 'names',
</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 ( is_wp_error( $contributors ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -93,6 +94,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $contributors[] = $author->user_nicename;
</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">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 foreach ( $contributors as $contributor ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $user = get_user_by( 'slug', $contributor );
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( ! $user ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -100,59 +102,62 @@
</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">                        $result['contributors'][ $user->user_nicename ] = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'profile' => $this->get_user_profile_link( $user ),
-                               'avatar' => get_avatar_url( $user, array( 'default' => 'monsterid', 'rating' => 'g' ) ),
-                               'display_name' => $user->display_name
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'profile'      => $this->get_user_profile_link( $user ),
+                               'avatar'       => get_avatar_url( $user, array(
+                                       'default' => 'monsterid',
+                                       'rating'  => 'g',
+                               ) ),
+                               'display_name' => $user->display_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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $result['requires'] = get_post_meta( $post_id, 'requires', true ) ?: false;
-               $result['tested'] = get_post_meta( $post_id, 'tested', true ) ?: false;
-               $result['requires_php'] = get_post_meta( $post_id, 'requires_php', true ) ?: false;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $result['requires']      = get_post_meta( $post_id, 'requires', true ) ?: false;
+               $result['tested']        = get_post_meta( $post_id, 'tested', true ) ?: false;
+               $result['requires_php']  = get_post_meta( $post_id, 'requires_php', true ) ?: false;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $result['compatibility'] = array();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $result['rating'] = ( get_post_meta( $post_id, 'rating', true ) ?: 0 ) * 20; // Stored as 0.0 ~ 5.0, API outputs as 0..100
-               $result['ratings'] = array_map( 'intval', (array) get_post_meta( $post_id, 'ratings', true ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $result['rating']        = ( get_post_meta( $post_id, 'rating', true ) ?: 0 ) * 20; // Stored as 0.0 ~ 5.0, API outputs as 0..100
+               $result['ratings']       = array_map( 'intval', (array) get_post_meta( $post_id, 'ratings', true ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 krsort( $result['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">-                $result['num_ratings'] = array_sum( $result['ratings'] );
-               $result['support_threads'] = intval( get_post_meta( $post_id, 'support_threads', true ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $result['num_ratings']              = array_sum( $result['ratings'] );
+               $result['support_threads']          = intval( get_post_meta( $post_id, 'support_threads', true ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $result['support_threads_resolved'] = intval( get_post_meta( $post_id, 'support_threads_resolved', true ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $result['active_installs'] = intval( get_post_meta( $post_id, 'active_installs', true ) );
-               $result['downloaded'] = intval( get_post_meta( $post_id, 'downloads', true ) );
-               $result['last_updated'] = gmdate( 'Y-m-d g:ia \G\M\T', strtotime( $post->post_modified_gmt ) );
-               $result['added'] = gmdate( 'Y-m-d', strtotime( $post->post_date_gmt ) );
-               $result['homepage'] = get_post_meta( $post_id, 'header_plugin_uri', true );
-               $result['sections'] = array();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $result['active_installs']          = intval( get_post_meta( $post_id, 'active_installs', true ) );
+               $result['downloaded']               = intval( get_post_meta( $post_id, 'downloads', true ) );
+               $result['last_updated']             = gmdate( 'Y-m-d g:ia \G\M\T', strtotime( $post->post_modified_gmt ) );
+               $result['added']                    = gmdate( 'Y-m-d', strtotime( $post->post_date_gmt ) );
+               $result['homepage']                 = get_post_meta( $post_id, 'header_plugin_uri', true );
+               $result['sections']                 = 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">-                $_pages = preg_split( "#<!--section=(.+?)-->#", $post->post_content, - 1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $_pages = preg_split( '#<!--section=(.+?)-->#', $post->post_content, - 1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );
</ins><span class="cx" style="display: block; padding: 0 10px">                 for ( $i = 0; $i < count( $_pages ); $i += 2 ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $result['sections'][ $_pages[ $i ] ] = apply_filters( 'the_content', $_pages[ $i + 1 ], $_pages[ $i ] );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">                $result['sections']['screenshots'] = ''; // placeholder to put screenshots prior to reviews at the end.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $result['sections']['reviews'] = $this->get_plugin_reviews_markup( $post->post_name );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $result['sections']['reviews']     = $this->get_plugin_reviews_markup( $post->post_name );
</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 ( !empty( $result['sections']['faq'] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! empty( $result['sections']['faq'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $result['sections']['faq'] = $this->get_simplified_faq_markup( $result['sections']['faq'] );
</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><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $result['description'] = $result['sections']['description'];
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $result['short_description'] = get_the_excerpt();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $result['download_link'] = Template::download_link( $post );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $result['download_link']     = Template::download_link( $post );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $result['screenshots'] = array();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $descriptions = get_post_meta( $post->ID, 'screenshots', true ) ?: array();
-               $screen_shots = get_post_meta( $post->ID, 'assets_screenshots', true ) ?: array();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $descriptions          = get_post_meta( $post->ID, 'screenshots', true ) ?: array();
+               $screen_shots          = get_post_meta( $post->ID, 'assets_screenshots', true ) ?: array();
</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">                 * Find the image that corresponds with the text.
</span><span class="cx" style="display: block; padding: 0 10px">                 * The image numbers are stored within the 'resolution' key.
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $screen_shots as $image ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $src = Template::get_asset_url( $post, $image );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $src     = Template::get_asset_url( $post, $image );
</ins><span class="cx" style="display: block; padding: 0 10px">                         $caption = '';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( $descriptions && !empty( $descriptions[ (int)$image['resolution'] ] ) ) {
-                               $caption = $descriptions[ (int)$image['resolution'] ];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( $descriptions && ! empty( $descriptions[ (int) $image['resolution'] ] ) ) {
+                               $caption = $descriptions[ (int) $image['resolution'] ];
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $caption = Plugin_I18n::instance()->translate( 'screenshot-' . $image['resolution'], $caption, [ 'post_id' => $post->ID ] );
</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">@@ -198,21 +203,20 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $result['icons'] = array();
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $icons = Template::get_plugin_icon( $post ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( !empty( $icons['icon'] ) && empty( $icons['generated'] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! empty( $icons['icon'] ) && empty( $icons['generated'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $result['icons']['1x'] = $icons['icon'];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        } elseif ( !empty( $icons['icon'] ) && ! empty( $icons['generated'] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 } elseif ( ! empty( $icons['icon'] ) && ! empty( $icons['generated'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $result['icons']['default'] = $icons['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">-                        if ( !empty( $icons['icon_2x'] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! empty( $icons['icon_2x'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $result['icons']['2x'] = $icons['icon_2x'];
</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( $icons['svg'] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! empty( $icons['svg'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $result['icons']['svg'] = $icons['svg'];
</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><span class="cx" style="display: block; padding: 0 10px">                // That's all folks!
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 return $result;
</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">@@ -224,7 +228,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        protected function get_user_profile_link( $user ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $u = false;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $user instanceOf \WP_User ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( $user instanceof \WP_User ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $u = $user;
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( is_numeric( $user ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -273,30 +277,33 @@
</span><span class="cx" style="display: block; padding: 0 10px">                <div class="reviewer-info">
</span><span class="cx" style="display: block; padding: 0 10px">                        <div class="review-title-section">
</span><span class="cx" style="display: block; padding: 0 10px">                                <h4 class="review-title"><?php echo esc_html( $review->post_title ); ?></h4>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                <div class="star-rating"><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <div class="star-rating">
+                               <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                         /* Core has .star-rating .star colour styling, which is why we use a custom wrapper and template */
</span><span class="cx" style="display: block; padding: 0 10px">                                        echo Template::dashicons_stars( array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'rating' => $review->post_rating,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'rating'   => $review->post_rating,
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 'template' => '<span class="star %1$s"></span>',
</span><span class="cx" style="display: block; padding: 0 10px">                                        ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                ?></div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         ?>
+                               </div>
</ins><span class="cx" style="display: block; padding: 0 10px">                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                        <p class="reviewer">
</span><span class="cx" style="display: block; padding: 0 10px">                                <?php
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $review_author_markup_profile = esc_url( 'https://profiles.wordpress.org/' . $reviewer->user_nicename );
-                                       $review_author_markup  = '<a href="' . $review_author_markup_profile . '">';
-                                       $review_author_markup .= get_avatar( $reviewer->ID, 16, 'monsterid' ) . '</a>';
-                                       $review_author_markup .= '<a href="' . $review_author_markup_profile . '" class="reviewer-name">';
-                                       $review_author_markup .= $reviewer->display_name;
-                                       if ( $reviewer->display_name != $reviewer->user_login ) {
-                                               $review_author_markup .= " <small>({$reviewer->user_login})</small>";
-                                       }
-                                       $review_author_markup .= '</a>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $review_author_markup_profile = esc_url( 'https://profiles.wordpress.org/' . $reviewer->user_nicename );
+                               $review_author_markup         = '<a href="' . $review_author_markup_profile . '">';
+                               $review_author_markup        .= get_avatar( $reviewer->ID, 16, 'monsterid' ) . '</a>';
+                               $review_author_markup        .= '<a href="' . $review_author_markup_profile . '" class="reviewer-name">';
+                               $review_author_markup        .= $reviewer->display_name;
+                               if ( $reviewer->display_name != $reviewer->user_login ) {
+                                       $review_author_markup .= " <small>({$reviewer->user_login})</small>";
+                               }
+                               $review_author_markup .= '</a>';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        printf( __( 'By %1$s on %2$s', 'wporg-plugins' ),
-                                               $review_author_markup,
-                                               '<span class="review-date">' . gmdate( 'F j, Y', strtotime( $review->post_modified ) ) . '</span>'
-                                       );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         printf(
+                                       __( 'By %1$s on %2$s', 'wporg-plugins' ),
+                                       $review_author_markup,
+                                       '<span class="review-date">' . gmdate( 'F j, Y', strtotime( $review->post_modified ) ) . '</span>'
+                               );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 ?>
</span><span class="cx" style="display: block; padding: 0 10px">                        </p>
</span><span class="cx" style="display: block; padding: 0 10px">                </div>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -305,7 +312,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> </div>
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px">                return ob_get_clean();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><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,7 +325,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        protected function get_simplified_faq_markup( $markup ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $markup = str_replace(
</span><span class="cx" style="display: block; padding: 0 10px">                        array( '<dl>', '</dl>', '<dt>', '</dt>', '<dd>', '</dd>' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        array( '',      '',     '<h4>', '</h4>', '<p>',  '</p>'  ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 array( '',     '',      '<h4>', '</h4>', '<p>',  '</p>'  ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         $markup
</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">@@ -348,6 +354,4 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $markup .= '</ol>';
</span><span class="cx" style="display: block; padding: 0 10px">                return $markup;
</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"> }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclasspopulartagsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-popular-tags.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-popular-tags.php       2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-popular-tags.php 2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\API\Routes;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\API\Base;
</span><span class="cx" style="display: block; padding: 0 10px"> use WP_REST_Server;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -26,9 +27,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">        function popular_tags( $request ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $terms = get_terms( 'plugin_tags', array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'hide_empty' => true,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'orderby' => 'count',
-                       'order' => 'DESC',
-                       'number' => 1000
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'orderby'    => 'count',
+                       'order'      => 'DESC',
+                       'number'     => 1000,
</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">                $response = array();
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclassquerypluginsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-query-plugins.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-query-plugins.php      2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-query-plugins.php        2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\API\Routes;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\API\Base;
</span><span class="cx" style="display: block; padding: 0 10px"> use WP_REST_Server;
</span><span class="cx" style="display: block; padding: 0 10px"> use WP_Query;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20,7 +21,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                's',
</span><span class="cx" style="display: block; padding: 0 10px">                'author_name',
</span><span class="cx" style="display: block; padding: 0 10px">                'installed_plugins',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'plugin_tags'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'plugin_tags',
</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">        function __construct() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -40,7 +41,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                global $wp_query;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $response = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'info' => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'info'    => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'page'    => 0,
</span><span class="cx" style="display: block; padding: 0 10px">                                'pages'   => 0,
</span><span class="cx" style="display: block; padding: 0 10px">                                'results' => 0,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -68,8 +69,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $wp_query->query( $query );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $response['info']['page']    = (int) $wp_query->get( 'paged' ) ?: 1;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $response['info']['pages']   = (int) $wp_query->max_num_pages  ?: 0;
-               $response['info']['results'] = (int) $wp_query->found_posts    ?: 0;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $response['info']['pages']   = (int) $wp_query->max_num_pages ?: 0;
+               $response['info']['results'] = (int) $wp_query->found_posts ?: 0;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $wp_query->posts as $post ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $response['plugins'][] = $post->post_name ?: get_post( $post->ID )->post_name;
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclasssvnaccessphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-svn-access.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-svn-access.php 2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-svn-access.php   2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\API\Routes;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Plugin_Directory;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\API\Base;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20,8 +21,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->svn_access_table = PLUGINS_TABLE_PREFIX . 'svn_access';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                register_rest_route( 'plugins/v1', '/svn-access', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'methods'  => \WP_REST_Server::READABLE,
-                       'callback' => array( $this, 'generate_svn_access' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'methods'             => \WP_REST_Server::READABLE,
+                       'callback'            => array( $this, 'generate_svn_access' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         'permission_callback' => array( $this, 'permission_check_internal_api_bearer' ),
</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">@@ -41,7 +42,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( empty( $svn_access ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        return false;
</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">+         }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $svn_access as $slug => $users ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $slug = ltrim( $slug, '/' );
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorybinimportplugintoglotpressphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/import-plugin-to-glotpress.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/import-plugin-to-glotpress.php      2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/import-plugin-to-glotpress.php        2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14,7 +14,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> // Guess the default parameters:
</span><span class="cx" style="display: block; padding: 0 10px"> if ( empty( $opts ) && $argc == 2 ) {
</span><span class="cx" style="display: block; padding: 0 10px">        $opts['plugin'] = $argv[1];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $argv[1] = '--plugin ' . $argv[1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $argv[1]        = '--plugin ' . $argv[1];
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> if ( empty( $opts['url'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">        $opts['url'] = 'https://wordpress.org/plugins/';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -41,13 +41,13 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $_SERVER['HTTP_HOST']   = parse_url( $opts['url'], PHP_URL_HOST );
</span><span class="cx" style="display: block; padding: 0 10px"> $_SERVER['REQUEST_URI'] = parse_url( $opts['url'], PHP_URL_PATH );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-include rtrim( $opts['abspath'], '/' ) . '/wp-load.php';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+require rtrim( $opts['abspath'], '/' ) . '/wp-load.php';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> if ( ! class_exists( '\WordPressdotorg\Plugin_Directory\Plugin_Directory' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">        fwrite( STDERR, "Error! This site doesn't have the Plugin Directory plugin enabled.\n" );
</span><span class="cx" style="display: block; padding: 0 10px">        if ( defined( 'WPORG_PLUGIN_DIRECTORY_BLOGID' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                fwrite( STDERR, "Run the following command instead:\n" );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                fwrite( STDERR, "\tphp " . implode( ' ', $argv ) . " --url " . get_site_url( WPORG_PLUGIN_DIRECTORY_BLOGID, '/' ) . "\n" );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         fwrite( STDERR, "\tphp " . implode( ' ', $argv ) . ' --url ' . get_site_url( WPORG_PLUGIN_DIRECTORY_BLOGID, '/' ) . "\n" );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">        die();
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorybinimportpluginphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/import-plugin.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/import-plugin.php   2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/import-plugin.php     2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -13,7 +13,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> // Guess the default parameters:
</span><span class="cx" style="display: block; padding: 0 10px"> if ( empty( $opts ) && $argc == 2 ) {
</span><span class="cx" style="display: block; padding: 0 10px">        $opts['plugin'] = $argv[1];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $argv[1] = '--plugin ' . $argv[1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $argv[1]        = '--plugin ' . $argv[1];
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> if ( empty( $opts['url'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">        $opts['url'] = 'https://wordpress.org/plugins/';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -43,20 +43,20 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $_SERVER['HTTP_HOST']   = parse_url( $opts['url'], PHP_URL_HOST );
</span><span class="cx" style="display: block; padding: 0 10px"> $_SERVER['REQUEST_URI'] = parse_url( $opts['url'], PHP_URL_PATH );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-include rtrim( $opts['abspath'], '/' ) . '/wp-load.php';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+require rtrim( $opts['abspath'], '/' ) . '/wp-load.php';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> if ( ! class_exists( '\WordPressdotorg\Plugin_Directory\Plugin_Directory' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">        fwrite( STDERR, "Error! This site doesn't have the Plugin Directory plugin enabled.\n" );
</span><span class="cx" style="display: block; padding: 0 10px">        if ( defined( 'WPORG_PLUGIN_DIRECTORY_BLOGID' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                fwrite( STDERR, "Run the following command instead:\n" );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                fwrite( STDERR, "\tphp " . implode( ' ', $argv ) . " --url " . get_site_url( WPORG_PLUGIN_DIRECTORY_BLOGID, '/' ) . "\n" );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         fwrite( STDERR, "\tphp " . implode( ' ', $argv ) . ' --url ' . get_site_url( WPORG_PLUGIN_DIRECTORY_BLOGID, '/' ) . "\n" );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><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="cx" style="display: block; padding: 0 10px"> $plugin_slug  = $opts['plugin'];
</span><span class="cx" style="display: block; padding: 0 10px"> $changed_tags = $opts['changed-tags'];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-$start_time   = microtime(1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+$start_time   = microtime( 1 );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> // If async, queue it to be parsed instead.
</span><span class="cx" style="display: block; padding: 0 10px"> if ( $opts['async'] ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -67,12 +67,12 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> echo "Processing Import for $plugin_slug... ";
</span><span class="cx" style="display: block; padding: 0 10px"> try {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $importer = new CLI\Import;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $importer = new CLI\Import();
</ins><span class="cx" style="display: block; padding: 0 10px">         $importer->import_from_svn( $plugin_slug, $changed_tags );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        echo "OK. Took " . round( microtime(1) - $start_time, 2 )  . "s\n";
-} catch( \Exception $e ) {
-       echo "Failed. Took " . round( microtime(1) - $start_time, 2 )  . "s\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ echo 'OK. Took ' . round( microtime( 1 ) - $start_time, 2 ) . "s\n";
+} catch ( \Exception $e ) {
+       echo 'Failed. Took ' . round( microtime( 1 ) - $start_time, 2 ) . "s\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        fwrite( STDERR, "[{$plugin_slug}] Plugin Import Failed: " . $e->getMessage() . "\n" );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        exit(1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ exit( 1 );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorybinquickstatsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/quick-stats.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/quick-stats.php     2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/quick-stats.php       2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -19,13 +19,13 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $_SERVER['HTTP_HOST']   = parse_url( $opts['url'], PHP_URL_HOST );
</span><span class="cx" style="display: block; padding: 0 10px"> $_SERVER['REQUEST_URI'] = parse_url( $opts['url'], PHP_URL_PATH );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-include rtrim( $opts['abspath'], '/' ) . '/wp-load.php';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+require rtrim( $opts['abspath'], '/' ) . '/wp-load.php';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> if ( ! class_exists( '\WordPressdotorg\Plugin_Directory\Plugin_Directory' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">        fwrite( STDERR, "Error! This site doesn't have the Plugin Directory plugin enabled.\n" );
</span><span class="cx" style="display: block; padding: 0 10px">        if ( defined( 'WPORG_PLUGIN_DIRECTORY_BLOGID' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                fwrite( STDERR, "Run the following command instead:\n" );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                fwrite( STDERR, "\tphp " . implode( ' ', $argv ) . " --url " . get_site_url( WPORG_PLUGIN_DIRECTORY_BLOGID, '/' ) . "\n" );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         fwrite( STDERR, "\tphp " . implode( ' ', $argv ) . ' --url ' . get_site_url( WPORG_PLUGIN_DIRECTORY_BLOGID, '/' ) . "\n" );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">        die();
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -37,22 +37,22 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> function display_top_table( $stats, $n = 20 ) {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $top = array_slice( $stats, 0, $n );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $top  = array_slice( $stats, 0, $n );
</ins><span class="cx" style="display: block; padding: 0 10px">         $tail = array_slice( $stats, $n );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        foreach ( $top as $row ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                #$vals = array_values( (array) $row );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // $vals = array_values( (array) $row );
</ins><span class="cx" style="display: block; padding: 0 10px">                 echo $row[0] . "\t\t\t" . number_format( $row[1] ) . "\n";
</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">-        echo "Top $n Total: " . number_format( array_reduce( $top, __NAMESPACE__.'\callback_sum' ) ) . "\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ echo "Top $n Total: " . number_format( array_reduce( $top, __NAMESPACE__ . '\callback_sum' ) ) . "\n";
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $tail_n = count( $tail );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        echo "Other $tail_n: " . number_format( array_reduce( $tail, __NAMESPACE__.'\callback_sum' ) ) . "\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ echo "Other $tail_n: " . number_format( array_reduce( $tail, __NAMESPACE__ . '\callback_sum' ) ) . "\n";
</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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-function tested_to_summary($pfx_where = '1=1') {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+function tested_to_summary( $pfx_where = '1=1' ) {
</ins><span class="cx" style="display: block; padding: 0 10px">         global $wpdb;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $stats = $wpdb->get_results( $wpdb->prepare( "SELECT meta_value AS k, COUNT( DISTINCT post_id ) AS c FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON {$wpdb->postmeta}.post_id = {$wpdb->posts}.ID WHERE $pfx_where AND meta_key = %s GROUP BY meta_value ORDER BY c DESC", 'tested' ), ARRAY_N );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -60,10 +60,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">        return $stats;
</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">-$where = $wpdb->prepare( "post_status = %s", 'publish' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+$where = $wpdb->prepare( 'post_status = %s', 'publish' );
</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 ( !empty( $opts['age'] ) && strtotime( $opts['age'] ) > 0 )
-       $where .= $wpdb->prepare( " AND post_modified >= %s", strftime( '%Y-%m-%d',     strtotime( $opts['age'] ) ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+if ( ! empty( $opts['age'] ) && strtotime( $opts['age'] ) > 0 ) {
+       $where .= $wpdb->prepare( ' AND post_modified >= %s', strftime( '%Y-%m-%d', strtotime( $opts['age'] ) ) );
+}
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-//TODO: add some more reports, and a CLI argument for choosing them
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+// TODO: add some more reports, and a CLI argument for choosing them
</ins><span class="cx" style="display: block; padding: 0 10px"> display_top_table( tested_to_summary( $where ) );
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorybinrebuildzipphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/rebuild-zip.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/rebuild-zip.php     2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/rebuild-zip.php       2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Plugin_Directory;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools\SVN;
</span><span class="cx" style="display: block; padding: 0 10px"> use Exception;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16,14 +17,14 @@
</span><span class="cx" style="display: block; padding: 0 10px"> // Guess the default parameters:
</span><span class="cx" style="display: block; padding: 0 10px"> if ( empty( $opts ) && $argc == 2 ) {
</span><span class="cx" style="display: block; padding: 0 10px">        $opts['plugin'] = $argv[1];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $argv[1] = '--plugin ' . $argv[1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $argv[1]        = '--plugin ' . $argv[1];
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> if ( empty( $opts ) && $argc == 3 ) {
</span><span class="cx" style="display: block; padding: 0 10px">        $opts['plugin'] = $argv[1];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $argv[1] = '--plugin ' . $argv[1];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $argv[1]        = '--plugin ' . $argv[1];
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $opts['versions'] = $argv[2];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        $argv[2] = '--versions ' . $argv[2];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $argv[2]          = '--versions ' . $argv[2];
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> if ( empty( $opts['url'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">        $opts['url'] = 'https://wordpress.org/plugins/';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -40,7 +41,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                fwrite( STDERR, "Missing Parameter: $opt\n" );
</span><span class="cx" style="display: block; padding: 0 10px">                fwrite( STDERR, "Usage: php {$argv[0]} --plugin hello-dolly --abspath /home/example/public_html --url https://wordpress.org/plugins/\n" );
</span><span class="cx" style="display: block; padding: 0 10px">                fwrite( STDERR, "--url and --abspath will be guessed if possible.\n" );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                exit(1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         exit( 1 );
</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">@@ -48,20 +49,20 @@
</span><span class="cx" style="display: block; padding: 0 10px"> $_SERVER['HTTP_HOST']   = parse_url( $opts['url'], PHP_URL_HOST );
</span><span class="cx" style="display: block; padding: 0 10px"> $_SERVER['REQUEST_URI'] = parse_url( $opts['url'], PHP_URL_PATH );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-include rtrim( $opts['abspath'], '/' ) . '/wp-load.php';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+require rtrim( $opts['abspath'], '/' ) . '/wp-load.php';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> if ( ! class_exists( '\WordPressdotorg\Plugin_Directory\Plugin_Directory' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">        fwrite( STDERR, "Error! This site doesn't have the Plugin Directory plugin enabled.\n" );
</span><span class="cx" style="display: block; padding: 0 10px">        if ( defined( 'WPORG_PLUGIN_DIRECTORY_BLOGID' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                fwrite( STDERR, "Run the following command instead:\n" );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                fwrite( STDERR, "\tphp " . implode( ' ', $argv ) . " --url " . get_site_url( WPORG_PLUGIN_DIRECTORY_BLOGID, '/' ) . "\n" );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         fwrite( STDERR, "\tphp " . implode( ' ', $argv ) . ' --url ' . get_site_url( WPORG_PLUGIN_DIRECTORY_BLOGID, '/' ) . "\n" );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        exit(1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ exit( 1 );
</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"> $plugin_slug = $opts['plugin'];
</span><span class="cx" style="display: block; padding: 0 10px"> $versions    = array_filter( array_unique( array_map( 'trim', (array) explode( ',', $opts['versions'] ) ) ), 'strlen' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-$start_time  = microtime(1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+$start_time  = microtime( 1 );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> if ( empty( $versions ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">        // Rebuild them all!
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -71,16 +72,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $svn_tags = array();
</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">-        $versions = array_map(
-               function( $dir ) { return trim( $dir, '/' ); },
-               $svn_tags
-       );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ $versions = array_map( function( $dir ) {
+               return trim( $dir, '/' );
+       }, $svn_tags );
</ins><span class="cx" style="display: block; padding: 0 10px">         $versions[] = 'trunk';
</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 ( ! $versions ) {
</span><span class="cx" style="display: block; padding: 0 10px">        fwrite( STDERR, "{$plugin_slug}: Error! No versions specified.\n" );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        exit(1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ exit( 1 );
</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"> echo "Rebuilding ZIPs for $plugin_slug... ";
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -89,7 +89,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $plugin_post = Plugin_Directory::get_plugin_post( $plugin_slug );
</span><span class="cx" style="display: block; padding: 0 10px">        if ( ! $plugin_post ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                throw new Exception( "Could not locate plugin post" );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         throw new Exception( 'Could not locate plugin post' );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px">        $stable_tag = get_post_meta( $plugin_post->ID, 'stable_tag', true ) ?? 'trunk';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -98,14 +98,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $zip_builder->build(
</span><span class="cx" style="display: block; padding: 0 10px">                        $plugin_slug,
</span><span class="cx" style="display: block; padding: 0 10px">                        $versions_to_build,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        "{$plugin_slug}: Rebuild triggered by " . php_uname('n' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 "{$plugin_slug}: Rebuild triggered by " . php_uname( 'n' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         $stable_tag
</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">-        echo "OK. Took " . round( microtime(1) - $start_time, 2 )  . "s\n";
-} catch( Exception $e ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ echo 'OK. Took ' . round( microtime( 1 ) - $start_time, 2 ) . "s\n";
+} catch ( Exception $e ) {
</ins><span class="cx" style="display: block; padding: 0 10px">         fwrite( STDERR, "{$plugin_slug}: Zip Rebuild failed: " . $e->getMessage() . "\n" );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        echo "Failed. Took " . round( microtime(1) - $start_time, 2 )  . "s\n";
-       exit(1);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ echo 'Failed. Took ' . round( microtime( 1 ) - $start_time, 2 ) . "s\n";
+       exit( 1 );
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclasscapabilitiesphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-capabilities.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-capabilities.php  2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-capabilities.php    2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools;
</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">@@ -22,21 +23,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function map_meta_cap( $required_caps, $cap, $user_id, $context ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $plugin_edit_cap = false;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                switch( $cap ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         switch ( $cap ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         case 'plugin_admin_edit':
</span><span class="cx" style="display: block; padding: 0 10px">                        case 'plugin_add_committer':
</span><span class="cx" style="display: block; padding: 0 10px">                        case 'plugin_remove_committer':
</span><span class="cx" style="display: block; padding: 0 10px">                        case 'plugin_add_support_rep':
</span><span class="cx" style="display: block; padding: 0 10px">                        case 'plugin_remove_support_rep':
</span><span class="cx" style="display: block; padding: 0 10px">                                $plugin_edit_cap = true;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                                 // Fall through
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
-                       // Although we no longer have a admin view, this capability is still used to determine if the current user is a committer/contributor.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // Although we no longer have a admin view, this capability is still used to determine if the current user is a committer/contributor.
</ins><span class="cx" style="display: block; padding: 0 10px">                         case 'plugin_admin_view':
</span><span class="cx" style="display: block; padding: 0 10px">                                // Committers + Contributors.
</span><span class="cx" style="display: block; padding: 0 10px">                                // If no committers, post_author.
</span><span class="cx" style="display: block; padding: 0 10px">                                $required_caps = array();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $post = get_post( $context[0] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $post          = get_post( $context[0] );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( ! $post ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        $required_caps[] = 'do_not_allow';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -97,7 +98,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @static
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function add_roles() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $reviewer = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'read'                    => true,
</span><span class="cx" style="display: block; padding: 0 10px">                        'plugin_set_category'     => true,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -120,9 +120,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Remove the roles first, incase we've changed the permission set.
</span><span class="cx" style="display: block; padding: 0 10px">                remove_role( 'plugin_reviewer' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                remove_role( 'plugin_admin'    );
-               add_role( 'plugin_reviewer',  'Plugin Reviewer', $reviewer );
-               add_role( 'plugin_admin',     'Plugin Admin',    $admin    );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         remove_role( 'plugin_admin' );
+               add_role( 'plugin_reviewer', 'Plugin Reviewer', $reviewer );
+               add_role( 'plugin_admin', 'Plugin Admin', $admin );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $wp_admin_role = get_role( 'administrator' );
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $wp_admin_role ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -134,4 +134,3 @@
</span><span class="cx" style="display: block; padding: 0 10px">                update_option( 'default_role', 'subscriber' );
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclassi18nphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-i18n.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-i18n.php  2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-i18n.php    2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -37,44 +37,45 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * A private method to hold a list of the strings contained within the Database.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * This function is never called, and only exists so that out pot tools can detect the strings.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         *
</ins><span class="cx" style="display: block; padding: 0 10px">          * @ignore
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        private function static_strings() {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Category terms.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                _x( 'Accessibility',              'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Advertising',                'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Analytics',                  'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Arts & Entertainment',       'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Authentication',             'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Business',                   'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Calendar & Events',          'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Communication',              'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Contact Forms',              'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Customization',              'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Discussion & Community',     'Plugin Category Name', 'wporg-plugins' );
-               _x( 'eCommerce',                  'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Editor & Writing',           'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Education & Support',        'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Language Tools',             'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Maps & Location',            'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Media',                      'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Multisite',                  'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Performance',                'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Ratings & Reviews',          'Plugin Category Name', 'wporg-plugins' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         _x( 'Accessibility', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Advertising', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Analytics', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Arts & Entertainment', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Authentication', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Business', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Calendar & Events', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Communication', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Contact Forms', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Customization', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Discussion & Community', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'eCommerce', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Editor & Writing', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Education & Support', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Language Tools', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Maps & Location', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Media', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Multisite', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Performance', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Ratings & Reviews', 'Plugin Category Name', 'wporg-plugins' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 _x( 'Security & Spam Protection', 'Plugin Category Name', 'wporg-plugins' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                _x( 'SEO & Marketing',            'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Social & Sharing',           'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Taxonomy',                   'Plugin Category Name', 'wporg-plugins' );
-               _x( 'User Management',            'Plugin Category Name', 'wporg-plugins' );
-               _x( 'Utilities & Tools',          'Plugin Category Name', 'wporg-plugins' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         _x( 'SEO & Marketing', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Social & Sharing', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Taxonomy', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'User Management', 'Plugin Category Name', 'wporg-plugins' );
+               _x( 'Utilities & Tools', 'Plugin Category Name', 'wporg-plugins' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Section terms.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                _x( 'Adopt Me',     'Plugin Section Name', 'wporg-plugins' );
-               _x( 'Beta',         'Plugin Section Name', 'wporg-plugins' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         _x( 'Adopt Me', 'Plugin Section Name', 'wporg-plugins' );
+               _x( 'Beta', 'Plugin Section Name', 'wporg-plugins' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 _x( 'My Favorites', 'Plugin Section Name', 'wporg-plugins' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                _x( 'Featured',     'Plugin Section Name', 'wporg-plugins' );
-               _x( 'Popular',      'Plugin Section Name', 'wporg-plugins' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         _x( 'Featured', 'Plugin Section Name', 'wporg-plugins' );
+               _x( 'Popular', 'Plugin Section Name', 'wporg-plugins' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Section descriptions.
</span><span class="cx" style="display: block; padding: 0 10px">                _x( 'Plugins that have been offered for adoption by others.', 'Plugin Section Description', 'wporg-plugins' );
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclassmarkdownphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-markdown.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-markdown.php      2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-markdown.php        2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -41,7 +41,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 * When doing markdown, first take any user formatted code blocks and turn them into backticks so that
</span><span class="cx" style="display: block; padding: 0 10px">                 * markdown will preserve things like underscores in code blocks.
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $text = preg_replace_callback( "!(<pre><code>|<code>)(.*?)(</code></pre>|</code>)!s", array( $this, 'code_trick_decodeit_cb' ), $text );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $text = preg_replace_callback( '!(<pre><code>|<code>)(.*?)(</code></pre>|</code>)!s', array( $this, 'code_trick_decodeit_cb' ), $text );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $text = str_replace( array( "\r\n", "\r" ), "\n", $text );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Markdown can do inline code, we convert bbPress style block level code to Markdown style.
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclassplugindirectoryphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-directory.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-directory.php      2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-directory.php        2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Admin\Customizations;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Admin\Tools\Author_Cards;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Admin\Tools\Stats_Report;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -58,21 +59,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'map_meta_cap', array( __NAMESPACE__ . '\Capabilities', 'map_meta_cap' ), 10, 4 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Load the API routes.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_action( 'rest_api_init', array( __NAMESPACE__ . '\API\Base', 'load_routes' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         add_action( 'rest_api_init', array( __NAMESPACE__ . '\API\Base', 'init' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Allow post_modified not to be modified when we don't specifically bump it.
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'wp_insert_post_data', array( $this, 'filter_wp_insert_post_data' ), 10, 2 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Work around caching issues
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_filter( 'pre_option_jetpack_sync_full__started' , array( $this, 'bypass_options_cache' ), 10, 2 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         add_filter( 'pre_option_jetpack_sync_full__started', array( $this, 'bypass_options_cache' ), 10, 2 );
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_filter( 'default_option_jetpack_sync_full__started', '__return_null' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_filter( 'pre_option_jetpack_sync_full__params' , array( $this, 'bypass_options_cache' ), 10, 2 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         add_filter( 'pre_option_jetpack_sync_full__params', array( $this, 'bypass_options_cache' ), 10, 2 );
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_filter( 'default_option_jetpack_sync_full__params', '__return_null' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_filter( 'pre_option_jetpack_sync_full__queue_finished' , array( $this, 'bypass_options_cache' ), 10, 2 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         add_filter( 'pre_option_jetpack_sync_full__queue_finished', array( $this, 'bypass_options_cache' ), 10, 2 );
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_filter( 'default_option_jetpack_sync_full__queue_finished', '__return_null' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_filter( 'pre_option_jetpack_sync_full__send_started' , array( $this, 'bypass_options_cache' ), 10, 2 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         add_filter( 'pre_option_jetpack_sync_full__send_started', array( $this, 'bypass_options_cache' ), 10, 2 );
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_filter( 'default_option_jetpack_sync_full__send_started', '__return_null' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_filter( 'pre_option_jetpack_sync_full__finished' , array( $this, 'bypass_options_cache' ), 10, 2 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         add_filter( 'pre_option_jetpack_sync_full__finished', array( $this, 'bypass_options_cache' ), 10, 2 );
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_filter( 'default_option_jetpack_sync_full__finished', '__return_null' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Fix login URLs in admin bar
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -87,7 +88,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        Author_Cards::instance();
</span><span class="cx" style="display: block; padding: 0 10px">                        Stats_Report::instance();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        add_action( 'wp_insert_post_data',    array( __NAMESPACE__ . '\Admin\Status_Transitions', 'can_change_post_status' ), 10, 2 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 add_action( 'wp_insert_post_data', array( __NAMESPACE__ . '\Admin\Status_Transitions', 'can_change_post_status' ), 10, 2 );
</ins><span class="cx" style="display: block; padding: 0 10px">                         add_action( 'transition_post_status', array( __NAMESPACE__ . '\Admin\Status_Transitions', 'instance' ) );
</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">@@ -123,29 +124,29 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                register_post_type( 'plugin', array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'labels'       => array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'name'               => __( 'Repo Plugins',              'wporg-plugins' ),
-                               'singular_name'      => __( 'Repo Plugin',               'wporg-plugins' ),
-                               'menu_name'          => __( 'Repo Plugins',              'wporg-plugins' ),
-                               'add_new'            => __( 'Add New',                   'wporg-plugins' ),
-                               'add_new_item'       => __( 'Add New Plugin',            'wporg-plugins' ),
-                               'new_item'           => __( 'New Plugin',                'wporg-plugins' ),
-                               'view_item'          => __( 'View Plugin',               'wporg-plugins' ),
-                               'search_items'       => __( 'Search Plugins',            'wporg-plugins' ),
-                               'not_found'          => __( 'No plugins found',          'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'name'               => __( 'Repo Plugins', 'wporg-plugins' ),
+                               'singular_name'      => __( 'Repo Plugin', 'wporg-plugins' ),
+                               'menu_name'          => __( 'Repo Plugins', 'wporg-plugins' ),
+                               'add_new'            => __( 'Add New', 'wporg-plugins' ),
+                               'add_new_item'       => __( 'Add New Plugin', 'wporg-plugins' ),
+                               'new_item'           => __( 'New Plugin', 'wporg-plugins' ),
+                               'view_item'          => __( 'View Plugin', 'wporg-plugins' ),
+                               'search_items'       => __( 'Search Plugins', 'wporg-plugins' ),
+                               'not_found'          => __( 'No plugins found', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'not_found_in_trash' => __( 'No plugins found in Trash', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                // Context only available in admin, not in toolbar.
</span><span class="cx" style="display: block; padding: 0 10px">                                'edit_item'          => is_admin() ? __( 'Editing Plugin: %s', 'wporg-plugins' ) : __( 'Edit Plugin', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'description'     => __( 'A Repo Plugin', 'wporg-plugins' ),
-                       'supports'        => array( 'comments', 'author', 'custom-fields' ),
-                       'public'          => true,
-                       'show_ui'         => true,
-                       'show_in_rest'    => true,
-                       'has_archive'     => true,
-                       'rewrite'         => false,
-                       'menu_icon'       => 'dashicons-admin-plugins',
-                       'capabilities'    => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'description'  => __( 'A Repo Plugin', 'wporg-plugins' ),
+                       'supports'     => array( 'comments', 'author', 'custom-fields' ),
+                       'public'       => true,
+                       'show_ui'      => true,
+                       'show_in_rest' => true,
+                       'has_archive'  => true,
+                       'rewrite'      => false,
+                       'menu_icon'    => 'dashicons-admin-plugins',
+                       'capabilities' => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'edit_post'          => 'plugin_edit',
</span><span class="cx" style="display: block; padding: 0 10px">                                'read_post'          => 'read',
</span><span class="cx" style="display: block; padding: 0 10px">                                'edit_posts'         => 'plugin_dashboard_access',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -183,10 +184,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'labels'            => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'name'          => __( 'Plugin Categories', 'wporg-plugins' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'singular_name' => __( 'Plugin Category',   'wporg-plugins' ),
-                               'edit_item'     => __( 'Edit Category',     'wporg-plugins' ),
-                               'update_item'   => __( 'Update Category',   'wporg-plugins' ),
-                               'add_new_item'  => __( 'Add New Category',  'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'singular_name' => __( 'Plugin Category', 'wporg-plugins' ),
+                               'edit_item'     => __( 'Edit Category', 'wporg-plugins' ),
+                               'update_item'   => __( 'Update Category', 'wporg-plugins' ),
+                               'add_new_item'  => __( 'Add New Category', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'new_item_name' => __( 'New Category Name', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                'search_items'  => __( 'Search Categories', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -236,7 +237,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'sort'              => true,
</span><span class="cx" style="display: block; padding: 0 10px">                        'rewrite'           => false,
</span><span class="cx" style="display: block; padding: 0 10px">                        'labels'            => array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'name' => __( 'Contributors', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'name'          => __( 'Contributors', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'singular_name' => __( 'Contributor', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'public'            => true,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -252,7 +253,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'query_var'         => 'plugin_committer',
</span><span class="cx" style="display: block; padding: 0 10px">                        'rewrite'           => false,
</span><span class="cx" style="display: block; padding: 0 10px">                        'labels'            => array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'name' => __( 'Committers', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'name'          => __( 'Committers', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'singular_name' => __( 'Committer', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'public'            => true,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -268,7 +269,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'query_var'         => 'plugin_support_rep',
</span><span class="cx" style="display: block; padding: 0 10px">                        'rewrite'           => false,
</span><span class="cx" style="display: block; padding: 0 10px">                        'labels'            => array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'name' => __( 'Support Reps', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'name'          => __( 'Support Reps', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'singular_name' => __( 'Support Rep', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'public'            => true,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -290,10 +291,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'labels'            => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'name'          => __( 'Plugin Tags', 'wporg-plugins' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'singular_name' => __( 'Plugin Tag',   'wporg-plugins' ),
-                               'edit_item'     => __( 'Edit Tag',     'wporg-plugins' ),
-                               'update_item'   => __( 'Update Tag',   'wporg-plugins' ),
-                               'add_new_item'  => __( 'Add New Tag',  'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'singular_name' => __( 'Plugin Tag', 'wporg-plugins' ),
+                               'edit_item'     => __( 'Edit Tag', 'wporg-plugins' ),
+                               'update_item'   => __( 'Update Tag', 'wporg-plugins' ),
+                               'add_new_item'  => __( 'Add New Tag', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'new_item_name' => __( 'New Tag Name', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                'search_items'  => __( 'Search Tags', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -351,11 +352,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">                register_meta( 'post', 'rating', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'type'              => 'number',
-                       'description'       => __( 'Overall rating of the plugin.', 'wporg-plugins' ),
-                       'single'            => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'type'         => 'number',
+                       'description'  => __( 'Overall rating of the plugin.', 'wporg-plugins' ),
+                       'single'       => true,
</ins><span class="cx" style="display: block; padding: 0 10px">                         // todo 'sanitize_callback' => 'absint',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'show_in_rest'      => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'show_in_rest' => 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">                register_meta( 'post', 'active_installs', array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -375,31 +376,31 @@
</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">                register_meta( 'post', 'tested', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'description'       => __( 'The version of WordPress the plugin was tested with.', 'wporg-plugins' ),
-                       'single'            => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'description'  => __( 'The version of WordPress the plugin was tested with.', 'wporg-plugins' ),
+                       'single'       => true,
</ins><span class="cx" style="display: block; padding: 0 10px">                         // TODO 'sanitize_callback' => 'absint',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'show_in_rest'      => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'show_in_rest' => 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">                register_meta( 'post', 'requires', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'description'       => __( 'The minimum version of WordPress the plugin needs to run.', 'wporg-plugins' ),
-                       'single'            => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'description'  => __( 'The minimum version of WordPress the plugin needs to run.', 'wporg-plugins' ),
+                       'single'       => true,
</ins><span class="cx" style="display: block; padding: 0 10px">                         // TODO 'sanitize_callback' => 'absint',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'show_in_rest'      => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'show_in_rest' => 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">                register_meta( 'post', 'requires_php', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'description'       => __( 'The minimum version of PHP the plugin needs to run.', 'wporg-plugins' ),
-                       'single'            => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'description'  => __( 'The minimum version of PHP the plugin needs to run.', 'wporg-plugins' ),
+                       'single'       => true,
</ins><span class="cx" style="display: block; padding: 0 10px">                         // TODO 'sanitize_callback' => 'absint',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'show_in_rest'      => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'show_in_rest' => 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">                register_meta( 'post', 'stable_tag', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'description'       => __( 'Stable version of the plugin.', 'wporg-plugins' ),
-                       'single'            => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'description'  => __( 'Stable version of the plugin.', 'wporg-plugins' ),
+                       'single'       => true,
</ins><span class="cx" style="display: block; padding: 0 10px">                         // TODO 'sanitize_callback' => 'absint',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'show_in_rest'      => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'show_in_rest' => 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">                register_meta( 'post', 'donate_link', array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -410,17 +411,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">                register_meta( 'post', 'version', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'description'       => __( 'Current stable version.', 'wporg-plugins' ),
-                       'single'            => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'description'  => __( 'Current stable version.', 'wporg-plugins' ),
+                       'single'       => true,
</ins><span class="cx" style="display: block; padding: 0 10px">                         // TODO 'sanitize_callback' => 'esc_url_raw',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'show_in_rest'      => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'show_in_rest' => 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">                register_meta( 'post', 'header_name', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'description'       => __( 'Name of the plugin.', 'wporg-plugins' ),
-                       'single'            => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'description'  => __( 'Name of the plugin.', 'wporg-plugins' ),
+                       'single'       => true,
</ins><span class="cx" style="display: block; padding: 0 10px">                         // TODO 'sanitize_callback' => 'esc_url_raw',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'show_in_rest'      => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'show_in_rest' => 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">                register_meta( 'post', 'header_plugin_uri', array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -431,17 +432,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">                register_meta( 'post', 'header_name', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'description'       => __( 'Name of the plugin.', 'wporg-plugins' ),
-                       'single'            => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'description'  => __( 'Name of the plugin.', 'wporg-plugins' ),
+                       'single'       => true,
</ins><span class="cx" style="display: block; padding: 0 10px">                         // TODO 'sanitize_callback' => 'esc_url_raw',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'show_in_rest'      => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'show_in_rest' => 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">                register_meta( 'post', 'header_author', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'description'       => __( 'Name of the plugin author.', 'wporg-plugins' ),
-                       'single'            => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'description'  => __( 'Name of the plugin author.', 'wporg-plugins' ),
+                       'single'       => true,
</ins><span class="cx" style="display: block; padding: 0 10px">                         // TODO 'sanitize_callback' => 'esc_url_raw',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'show_in_rest'      => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'show_in_rest' => 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">                register_meta( 'post', 'header_author_uri', array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -452,25 +453,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">                register_meta( 'post', 'header_description', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'description'       => __( 'Description of the plugin.', 'wporg-plugins' ),
-                       'single'            => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'description'  => __( 'Description of the plugin.', 'wporg-plugins' ),
+                       'single'       => true,
</ins><span class="cx" style="display: block; padding: 0 10px">                         // TODO 'sanitize_callback' => 'esc_url_raw',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'show_in_rest'      => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'show_in_rest' => 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">                register_meta( 'post', 'assets_icons', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'type'              => 'array',
-                       'description'       => __( 'Icon images of the plugin.', 'wporg-plugins' ),
-                       'single'            => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'type'         => 'array',
+                       'description'  => __( 'Icon images of the plugin.', 'wporg-plugins' ),
+                       'single'       => true,
</ins><span class="cx" style="display: block; padding: 0 10px">                         // TODO 'sanitize_callback' => 'esc_url_raw',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'show_in_rest'      => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'show_in_rest' => 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">                register_meta( 'post', 'assets_banners_color', array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'description'       => __( 'Fallback color for the plugin.', 'wporg-plugins' ),
-                       'single'            => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'description'  => __( 'Fallback color for the plugin.', 'wporg-plugins' ),
+                       'single'       => true,
</ins><span class="cx" style="display: block; padding: 0 10px">                         // TODO 'sanitize_callback' => 'esc_url_raw',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'show_in_rest'      => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'show_in_rest' => 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">                register_meta( 'post', 'support_threads', array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -509,7 +510,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                add_rewrite_rule( '^([^/]+)/\#(.*)/?$', 'index.php?name=$matches[1]', 'top' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // If changing capabilities around, uncomment this.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                //Capabilities::add_roles();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Capabilities::add_roles();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Remove the /admin$ redirect to wp-admin
</span><span class="cx" style="display: block; padding: 0 10px">                remove_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -522,7 +523,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Instantiate our copy of the Jetpack_Search class.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( class_exists( 'Jetpack' ) && \Jetpack::get_option( 'id' ) && ! class_exists( 'Jetpack_Search' )
</span><span class="cx" style="display: block; padding: 0 10px">                        && ! isset( $_GET['s'] ) ) { // Don't run the ES query if we're going to redirect to the pretty search URL
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                require_once( __DIR__ . '/libs/site-search/jetpack-search.php' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         require_once __DIR__ . '/libs/site-search/jetpack-search.php';
</ins><span class="cx" style="display: block; padding: 0 10px">                                 \Jetpack_Search::instance();
</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">@@ -531,11 +532,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Register the Shortcodes used within the content.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function register_shortcodes() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_shortcode( 'wporg-plugins-developers',  array( __NAMESPACE__ . '\Shortcodes\Developers',  'display' ) );
-               add_shortcode( 'wporg-plugin-upload',       array( __NAMESPACE__ . '\Shortcodes\Upload',      'display' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         add_shortcode( 'wporg-plugins-developers', array( __NAMESPACE__ . '\Shortcodes\Developers', 'display' ) );
+               add_shortcode( 'wporg-plugin-upload', array( __NAMESPACE__ . '\Shortcodes\Upload', 'display' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_shortcode( 'wporg-plugins-screenshots', array( __NAMESPACE__ . '\Shortcodes\Screenshots', 'display' ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_shortcode( 'wporg-plugins-reviews',     array( __NAMESPACE__ . '\Shortcodes\Reviews',     'display' ) );
-               add_shortcode( 'readme-validator',          array( __NAMESPACE__ . '\Shortcodes\Readme_Validator',     'display' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         add_shortcode( 'wporg-plugins-reviews', array( __NAMESPACE__ . '\Shortcodes\Reviews', 'display' ) );
+               add_shortcode( 'readme-validator', array( __NAMESPACE__ . '\Shortcodes\Readme_Validator', 'display' ) );
</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">@@ -551,7 +552,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'wporg-plugin-upload',
</span><span class="cx" style="display: block; padding: 0 10px">                        'wporg-plugins-screenshots',
</span><span class="cx" style="display: block; padding: 0 10px">                        'wporg-plugins-reviews',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'readme-validator'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'readme-validator',
</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">                $not_allowed_shortcodes = array_diff( array_keys( $shortcode_tags ), $allowed_shortcodes );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -567,13 +568,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *  Register the Widgets used plugin detail pages.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function register_widgets() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                register_widget( __NAMESPACE__ . '\Widgets\Donate'        );
-               register_widget( __NAMESPACE__ . '\Widgets\Meta'          );
-               register_widget( __NAMESPACE__ . '\Widgets\Ratings'       );
-               register_widget( __NAMESPACE__ . '\Widgets\Support'       );
-               register_widget( __NAMESPACE__ . '\Widgets\Committers'    );
-               register_widget( __NAMESPACE__ . '\Widgets\Contributors'  );
-               register_widget( __NAMESPACE__ . '\Widgets\Support_Reps'  );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         register_widget( __NAMESPACE__ . '\Widgets\Donate' );
+               register_widget( __NAMESPACE__ . '\Widgets\Meta' );
+               register_widget( __NAMESPACE__ . '\Widgets\Ratings' );
+               register_widget( __NAMESPACE__ . '\Widgets\Support' );
+               register_widget( __NAMESPACE__ . '\Widgets\Committers' );
+               register_widget( __NAMESPACE__ . '\Widgets\Contributors' );
+               register_widget( __NAMESPACE__ . '\Widgets\Support_Reps' );
</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">@@ -668,13 +669,14 @@
</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">         * Filter content to make links rel=nofollow on plugin pages only
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param string        $content        The content.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  *
+        * @param string $content    The content.
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return string
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function filter_rel_nofollow( $content ) {
</span><span class="cx" style="display: block; padding: 0 10px">                if ( get_post_type() == 'plugin' ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        // regex copied from wp_rel_nofollow(). Not calling that function because it messes with slashes.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $content = preg_replace_callback('|<a (.+?)>|i', 'wp_rel_nofollow_callback', $content);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $content = preg_replace_callback( '|<a (.+?)>|i', 'wp_rel_nofollow_callback', $content );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                return $content;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -705,6 +707,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $wp_query->query_vars['orderby']  = 'meta_value';
</span><span class="cx" style="display: block; padding: 0 10px">                                $wp_query->query_vars['order']    = 'DESC';
</span><span class="cx" style="display: block; padding: 0 10px">                                break;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                         case 'favorites':
</span><span class="cx" style="display: block; padding: 0 10px">                                $favorites_user = wp_get_current_user();
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( ! empty( $wp_query->query_vars['favorites_user'] ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -722,7 +725,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        $wp_query->query_vars['post_name__in']  = get_user_meta( $favorites_user->ID, 'plugin_favorites', true );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        $wp_query->query_vars['orderby'] = 'post_title';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $wp_query->query_vars['order'] = 'ASC';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $wp_query->query_vars['order']   = 'ASC';
</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 ( ! $favorites_user || ! $wp_query->query_vars['post_name__in'] ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -765,9 +768,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'relation' => 'OR',
</span><span class="cx" style="display: block; padding: 0 10px">                                array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'taxonomy' => 'plugin_contributors',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'field' => 'slug',
-                                       'terms' => $user
-                               )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'field'    => 'slug',
+                                       'terms'    => $user,
+                               ),
</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">                        // Author archives for self include plugins you're a committer on, not just publically a contributor
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -775,17 +778,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $viewing_own_author_archive ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $wp_query->query_vars['tax_query'][] = array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'taxonomy' => 'plugin_committers',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'field' => 'slug',
-                                       'terms' => $user
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'field'    => 'slug',
+                                       'terms'    => $user,
</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">                        $wp_query->query_vars['orderby'] = 'post_title';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $wp_query->query_vars['order'] = 'ASC';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $wp_query->query_vars['order']   = 'ASC';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        // Treat it as a taxonomy query now, not the author archive.
</span><span class="cx" style="display: block; padding: 0 10px">                        $wp_query->is_author = false;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $wp_query->is_tax = true;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $wp_query->is_tax    = true;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        unset( $wp_query->query_vars['author_name'], $wp_query->query_vars['author'] );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -795,7 +798,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $wp_query->query_vars['post_status'] = array( 'approved', 'publish', 'closed', 'disabled' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        add_filter( 'posts_results', function( $posts, $this_wp_query ) use( $wp_query ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 add_filter( 'posts_results', function( $posts, $this_wp_query ) use ( $wp_query ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 if ( $this_wp_query != $wp_query ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        return $posts;
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -824,10 +827,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Allow anyone to view a closed plugin directly from its page. It won't show in search results or lists.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $wp_query->is_main_query() && ! empty( $wp_query->query_vars['name'] ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $wp_query->query_vars['post_status'] = (array) $wp_query->query_vars['post_status'];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $wp_query->query_vars['post_status']   = (array) $wp_query->query_vars['post_status'];
</ins><span class="cx" style="display: block; padding: 0 10px">                         $wp_query->query_vars['post_status'][] = 'closed';
</span><span class="cx" style="display: block; padding: 0 10px">                        $wp_query->query_vars['post_status'][] = 'disabled';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $wp_query->query_vars['post_status'] = array_unique( $wp_query->query_vars['post_status'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $wp_query->query_vars['post_status']   = array_unique( $wp_query->query_vars['post_status'] );
</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">                // By default, all archives are sorted by active installs
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -855,12 +858,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function bypass_options_cache( $value, $option ) {
</span><span class="cx" style="display: block; padding: 0 10px">                global $wpdb;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $value = $wpdb->get_var(
-                       $wpdb->prepare(
-                               "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1",
-                               $option
-                       )
-               );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $value = $wpdb->get_var( $wpdb->prepare(
+                       "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1",
+                       $option
+               ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $value = maybe_unserialize( $value );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return $value;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -873,7 +874,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function fix_login_url( $login_url, $redirect, $force_reauth ) {
</span><span class="cx" style="display: block; padding: 0 10px">                // modify the redirect_to for the support forums to point to the current page
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( 0 === strpos($_SERVER['REQUEST_URI'], '/plugins' ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( 0 === strpos( $_SERVER['REQUEST_URI'], '/plugins' ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         // Note that this is not normal because of the code in /mu-plugins/wporg-sso/class-wporg-sso.php.
</span><span class="cx" style="display: block; padding: 0 10px">                        // The login_url function there expects the redirect_to as the first parameter passed into it instead of the second
</span><span class="cx" style="display: block; padding: 0 10px">                        // Since we're changing this with a filter on login_url, then we have to change the login_url to the
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -883,9 +884,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        //
</span><span class="cx" style="display: block; padding: 0 10px">                        // parse_url is used here to remove any additional query args from the REQUEST_URI before redirection
</span><span class="cx" style="display: block; padding: 0 10px">                        // The SSO code handles the urlencoding of the redirect_to parameter
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $url_parts = parse_url('https://wordpress.org'.$_SERVER['REQUEST_URI']);
-                       $constructed_url = $url_parts['scheme'] . '://' . $url_parts['host'] . (isset($url_parts['path'])?$url_parts['path']:'');
-                       $login_url = $constructed_url;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $url_parts       = parse_url( 'https://wordpress.org' . $_SERVER['REQUEST_URI'] );
+                       $constructed_url = $url_parts['scheme'] . '://' . $url_parts['host'] . ( isset( $url_parts['path'] ) ? $url_parts['path'] : '' );
+                       $login_url       = $constructed_url;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                return $login_url;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -939,28 +940,30 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @global string $locale Current locale.
</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 int   $post_id        Post ID to update.
-        * @param int   $min_translated Translations below this % threshold will not be synced to meta, to save space.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param int $post_id    Post ID to update.
+        * @param int $min_translated Translations below this % threshold will not be synced to meta, to save space.
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return 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">-        public function sync_all_translations_to_meta( $post_id, $min_translated = 40, $skip_pfx = array('en_') ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function sync_all_translations_to_meta( $post_id, $min_translated = 40, $skip_pfx = array( 'en_' ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $locales_to_sync = array();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $post = get_post( $post_id );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $post            = get_post( $post_id );
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( $post ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $translations = Plugin_I18n::instance()->find_all_translations_for_plugin( $post->post_name, 'stable-readme', $min_translated ); // at least $min_translated % translated
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $translations ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                // Eliminate translations that start with unwanted prefixes, so we don't waste space on near-duplicates like en_AU, en_CA etc.
</span><span class="cx" style="display: block; padding: 0 10px">                                foreach ( $translations as $i => $_locale ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        foreach ( $skip_pfx as $pfx )
-                                               if ( substr( $_locale, 0, strlen( $pfx ) ) === $pfx )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 foreach ( $skip_pfx as $pfx ) {
+                                               if ( substr( $_locale, 0, strlen( $pfx ) ) === $pfx ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         unset( $translations[ $i ] );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                }
+                                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                                 }
</span><span class="cx" style="display: block; padding: 0 10px">                                $locales_to_sync = array_unique( $translations );
</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 ( count($locales_to_sync) > 0 ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( count( $locales_to_sync ) > 0 ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         foreach ( $locales_to_sync as $locale ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->sync_translation_to_meta( $post_id, $locale );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -974,22 +977,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @global string $locale Current locale.
</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 int   $post_id        Post ID to update.
-        * @param string   $locale      Locale to translate.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param int    $post_id    Post ID to update.
+        * @param string $locale  Locale to translate.
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        public function sync_translation_to_meta( $post_id, $_locale ) {
</span><span class="cx" style="display: block; padding: 0 10px">                global $locale;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $old_locale = $locale;
</span><span class="cx" style="display: block; padding: 0 10px">                // Keep track of the original untranslated strings
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $orig_title = get_the_title( $post_id );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $orig_title   = get_the_title( $post_id );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $orig_excerpt = get_the_excerpt( $post_id );
</span><span class="cx" style="display: block; padding: 0 10px">                $orig_content = get_post_field( 'post_content', $post_id );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $locale = $_locale;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $locale       = $_locale;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Update postmeta values for the translated title, excerpt, and content, if they are available and different from the originals.
</span><span class="cx" style="display: block; padding: 0 10px">                // There is a bug here, in that no attempt is made to remove old meta values for translations that do not have new translations.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $the_title = Plugin_I18n::instance()->translate( 'title', $orig_title, [ 'post_id' => $post_id ] );
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $the_title && $the_title != $orig_title ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        update_post_meta( $post_id, 'title_' . $locale, $the_title );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1002,7 +1004,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Split up the content to translate it in sections.
</span><span class="cx" style="display: block; padding: 0 10px">                $the_content = array();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $sections = $this->split_post_content_into_pages( $orig_content );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $sections    = $this->split_post_content_into_pages( $orig_content );
</ins><span class="cx" style="display: block; padding: 0 10px">                 foreach ( $sections as $section => $section_content ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $translated_section = $this->translate_post_content( $section_content, $section, $post_id );
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $translated_section && $translated_section != $section_content ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1011,7 +1013,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">-                if ( !empty( $the_content ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! empty( $the_content ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         update_post_meta( $post_id, 'content_' . $locale, implode( $the_content ) );
</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">@@ -1108,7 +1110,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $path = explode( '/', $_SERVER['REQUEST_URI'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( 'tags' === $path[2] ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if ( isset( $path[3] ) && !empty( $path[3] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ( isset( $path[3] ) && ! empty( $path[3] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                         wp_safe_redirect( home_url( '/search/' . urlencode( $path[3] ) . '/' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                                        die();
</span><span class="cx" style="display: block; padding: 0 10px">                                } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1144,8 +1146,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">-                        //Otherwise, let's redirect to the search page
-                       if ( isset( $path[2] ) && !empty( $path[2] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Otherwise, let's redirect to the search page
+                       if ( isset( $path[2] ) && ! empty( $path[2] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 wp_safe_redirect( home_url( '/search/' . urlencode( $path[2] ) . '/' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                                die();
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1204,7 +1206,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return array
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function split_post_content_into_pages( $content ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $_pages        = preg_split( "#<!--section=(.+?)-->#", $content, - 1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $_pages        = preg_split( '#<!--section=(.+?)-->#', $content, - 1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $content_pages = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'screenshots' => '[wporg-plugins-screenshots]',
</span><span class="cx" style="display: block; padding: 0 10px">                        'developers'  => '[wporg-plugins-developers]',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1317,7 +1319,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function create_plugin_post( array $args ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $title = $args['post_title'] ?: $args['post_name'];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $slug  = $args['post_name']  ?: sanitize_title( $title );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $slug  = $args['post_name'] ?: sanitize_title( $title );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $args = wp_parse_args( $args, array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'post_title'        => $title,
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclassplugingeopatternsvgphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-geopattern-svg.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-geopattern-svg.php 2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-geopattern-svg.php   2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use RedeyeVentures\GeoPattern\SVG;
</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">@@ -40,17 +41,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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param       $text
-        * @param       $x
-        * @param       $y
-        * @param       $text_anchor
-        * @param       $style
-        * @param array $args
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param string $text
+        * @param string $x
+        * @param string $y
+        * @param string $text_anchor
+        * @param string $style
+        * @param array  $args
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         * @return $this
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function addText( $text, $x, $y, $text_anchor, $style, $args = array() ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $element = new Plugin_Geopattern_SVGText( $text, $x, $y, $text_anchor, $style, $args );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $element          = new Plugin_Geopattern_SVGText( $text, $x, $y, $text_anchor, $style, $args );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->svgString .= $element;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return $this;
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclassplugingeopatternsvgtextphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-geopattern-svgtext.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-geopattern-svgtext.php     2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-geopattern-svgtext.php       2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use RedeyeVentures\GeoPattern\SVGElements\Base;
</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">@@ -20,12 +21,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">        protected $text;
</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">-         * @param       $text
-        * @param       $x
-        * @param       $y
-        * @param       $text_anchor
-        * @param       $style
-        * @param array $args
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param string $text
+        * @param string $x
+        * @param string $y
+        * @param string $text_anchor
+        * @param string $style
+        * @param array  $args
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        function __construct( $text, $x, $y, $text_anchor, $style, $args = array() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->elements = array(
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclassplugingeopatternphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-geopattern.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-geopattern.php     2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-geopattern.php       2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use RedeyeVentures\GeoPattern\GeoPattern;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> require __DIR__ . '/libs/geopattern-1.1.0/geopattern_loader.php';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -90,10 +91,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->generatePattern();
</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->svg->getWidth() < $width || $this->svg->getHeight() < $height ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // if ( $this->svg->getWidth() < $width || $this->svg->getHeight() < $height ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $this->svg->setViewBox( 0, 0, $this->svg->getWidth(), $this->svg->getHeight() );
</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">+         // }
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( $this->text ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $inner = $this->svg;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclassplugini18nphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-i18n.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-i18n.php   2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-i18n.php     2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -63,7 +63,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Plugin_I18n constructor.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @access private
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         *
</del><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        private function __construct() {
</span><span class="cx" style="display: block; padding: 0 10px">                wp_cache_add_global_groups( self::CACHE_GROUP );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -236,7 +235,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $translation_set_id = $wpdb->get_var( $wpdb->prepare(
</span><span class="cx" style="display: block; padding: 0 10px">                        'SELECT id FROM ' . GLOTPRESS_TABLE_PREFIX . 'translation_sets WHERE project_id = %d AND locale = %s',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $branch_id, $locale ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $branch_id, $locale
+               ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( empty( $translation_set_id ) ) {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -455,13 +455,13 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $translation_sets = $this->cache_get( $post->post_name, $branch, $cache_suffix );
</span><span class="cx" style="display: block; padding: 0 10px">                if ( false === $translation_sets ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $api_url = esc_url_raw( 'https://translate.wordpress.org/api/projects/wp-plugins/' . $post->post_name . '/' . $branch, [ 'https' ] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $api_url  = esc_url_raw( 'https://translate.wordpress.org/api/projects/wp-plugins/' . $post->post_name . '/' . $branch, [ 'https' ] );
</ins><span class="cx" style="display: block; padding: 0 10px">                         $response = wp_remote_get( $api_url );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( is_wp_error( $response ) || WP_Http::OK !== wp_remote_retrieve_response_code( $response ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $translation_sets = [];
</span><span class="cx" style="display: block; padding: 0 10px">                        } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $result = json_decode( wp_remote_retrieve_body( $response ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $result           = json_decode( wp_remote_retrieve_body( $response ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $translation_sets = isset( $result->translation_sets ) ? $result->translation_sets : [];
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclasstemplatephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-template.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-template.php      2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-template.php        2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2,9 +2,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> // Explicitly require dependencies so this file can be sourced outside the Plugin Directory.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-require_once( __DIR__ . '/class-plugin-geopattern.php' );
-require_once( __DIR__ . '/class-plugin-geopattern-svg.php' );
-require_once( __DIR__ . '/class-plugin-geopattern-svgtext.php' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+require_once __DIR__ . '/class-plugin-geopattern.php';
+require_once __DIR__ . '/class-plugin-geopattern-svg.php';
+require_once __DIR__ . '/class-plugin-geopattern-svgtext.php';
</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">  * Various helpers to retrieve data not stored within WordPress.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -136,7 +136,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $metas = [];
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( is_singular( 'plugin' ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $metas[] = sprintf( '<meta name="description" value="%s" />',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $metas[] = sprintf(
+                               '<meta name="description" value="%s" />',
</ins><span class="cx" style="display: block; padding: 0 10px">                                 esc_attr( get_the_excerpt() )
</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">@@ -191,7 +192,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        global $wpdb;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        // TODO: While the plugin ZIPs are still being served by bbPress, the download stats are stored there.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $count = $wpdb->get_var( $wpdb->prepare( "SELECT downloads FROM `" . PLUGINS_TABLE_PREFIX . "download_counts` WHERE topic_id = (SELECT topic_id FROM `" . PLUGINS_TABLE_PREFIX . "topics` WHERE topic_slug = %s )", $post->post_name ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $count = $wpdb->get_var( $wpdb->prepare( 'SELECT downloads FROM `' . PLUGINS_TABLE_PREFIX . 'download_counts` WHERE topic_id = (SELECT topic_id FROM `' . PLUGINS_TABLE_PREFIX . 'topics` WHERE topic_slug = %s )', $post->post_name ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        wp_cache_set( $post->ID, $count, 'plugin_download_count', HOUR_IN_SECONDS );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -211,7 +212,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( false === ( $count = wp_cache_get( 'plugin_download_count', 'plugin_download_count' ) ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        global $wpdb;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $count = $wpdb->get_var( "SELECT SUM(downloads) FROM `" . PLUGINS_TABLE_PREFIX . "stats`" );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $count = $wpdb->get_var( 'SELECT SUM(downloads) FROM `' . PLUGINS_TABLE_PREFIX . 'stats`' );
</ins><span class="cx" style="display: block; padding: 0 10px">                         wp_cache_set( 'plugin_download_count', $count, 'plugin_download_count', DAY_IN_SECONDS );
</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">@@ -233,8 +234,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $ratings     = get_post_meta( $post->ID, 'ratings', true ) ?: array();
</span><span class="cx" style="display: block; padding: 0 10px">                $num_ratings = array_sum( $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">-                return
-                       '<div class="plugin-rating">' .
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return '<div class="plugin-rating">' .
</ins><span class="cx" style="display: block; padding: 0 10px">                                 Template::dashicons_stars( $rating ) .
</span><span class="cx" style="display: block; padding: 0 10px">                                '<span class="rating-count">(' .
</span><span class="cx" style="display: block; padding: 0 10px">                                        '<a href="https://wordpress.org/support/plugin/' . $post->post_name . '/reviews/">' .
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -355,11 +355,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return mixed
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function get_plugin_icon( $post = null, $output = 'raw' ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $plugin    = get_post( $post );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $plugin = get_post( $post );
+
+               if ( in_array( $plugin->post_status, [ 'disabled', 'closed' ], true ) ) {
+                       return false;
+               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $raw_icons = get_post_meta( $plugin->ID, 'assets_icons', true ) ?: array();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $icon      = $icon_2x = $svg = $generated = 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">-                $icon = $icon_2x = $svg = $generated = false;
-
</del><span class="cx" style="display: block; padding: 0 10px">                 foreach ( $raw_icons as $file => $info ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        switch ( $info['resolution'] ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                case '256x256':
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -390,7 +394,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! $icon || 'publish' !== $plugin->post_status ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $generated = 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">-                        $icon = new Plugin_Geopattern;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $icon = new Plugin_Geopattern();
</ins><span class="cx" style="display: block; padding: 0 10px">                         $icon->setString( $plugin->post_name );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        // Use the average color of the first known banner as the icon background color
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -411,7 +415,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( ! empty( $icon_2x ) && ! $generated ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        $html .= "@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) { #{$id} { background-image: url('{$icon_2x}'); } }";
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $html .= "</style>";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $html .= '</style>';
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $html .= "<div class='plugin-icon' id='{$id}'></div>";
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                return $html;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -424,7 +428,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">-         * Retrieve the Plugin Icon details for a plugin.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * Retrieve the Plugin banner details for a plugin.
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         * @static
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -435,7 +439,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public static function get_plugin_banner( $post = null, $output = 'raw' ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $plugin = get_post( $post );
</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( $plugin->post_status, ['disabled', 'closed'], true ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( in_array( $plugin->post_status, [ 'disabled', 'closed' ], true ) ) {
</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"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -487,7 +491,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( ! empty( $banner_2x ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        $html .= "@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) { #{$id} { background-image: url('{$banner_2x}'); } }";
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $html .= "</style>";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $html .= '</style>';
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $html .= "<div class='plugin-banner' id='{$id}'></div>";
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                return $html;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -579,7 +583,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return string The Rating HTML.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function dashicons_stars( $args = array() ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $args = wp_parse_args( ( is_numeric( $args ) ? array( 'rating' => $args ) : $args ), array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $args = is_numeric( $args ) ? array( 'rating' => $args ) : $args;
+               $args = wp_parse_args( $args, array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'rating'   => 0,
</span><span class="cx" style="display: block; padding: 0 10px">                        'template' => '<span class="%1$s"></span>',
</span><span class="cx" style="display: block; padding: 0 10px">                ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -628,9 +633,9 @@
</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 ( 'trunk' != $version ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return sprintf( "https://downloads.wordpress.org/plugin/%s.%s.zip", $post->post_name, $version );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return sprintf( 'https://downloads.wordpress.org/plugin/%s.%s.zip', $post->post_name, $version );
</ins><span class="cx" style="display: block; padding: 0 10px">                 } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return sprintf( "https://downloads.wordpress.org/plugin/%s.zip", $post->post_name );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return sprintf( 'https://downloads.wordpress.org/plugin/%s.zip', $post->post_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">@@ -661,8 +666,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $favorited = Tools::favorited_plugin( $post, $user );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return add_query_arg( array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        '_wpnonce' => wp_create_nonce( 'wp_rest' ),
-                       ( $favorited ? 'unfavorite' : 'favorite' ) => '1'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 '_wpnonce'                                 => wp_create_nonce( 'wp_rest' ),
+                       ( $favorited ? 'unfavorite' : 'favorite' ) => '1',
</ins><span class="cx" style="display: block; padding: 0 10px">                 ), home_url( 'wp-json/plugins/v1/plugin/' . $post->post_name . '/favorite' ) );
</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">@@ -758,21 +763,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $sites['en_US'] = (object) array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'locale'    => 'en_US',
</span><span class="cx" style="display: block; padding: 0 10px">                                'hreflang'  => 'en',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'subdomain' => ''
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'subdomain' => '',
</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">                        uasort( $sites, function( $a, $b ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                return strcasecmp( $a->hreflang, $b->hreflang );
</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">-                        wp_cache_set( 'local-sites-'.get_post()->post_name, $sites, 'locale-associations', DAY_IN_SECONDS );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 wp_cache_set( 'local-sites-' . get_post()->post_name, $sites, 'locale-associations', DAY_IN_SECONDS );
</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">                foreach ( $sites as $site ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $url = sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                'https://%swordpress.org%s',
</span><span class="cx" style="display: block; padding: 0 10px">                                $site->subdomain ? "{$site->subdomain}." : '',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $_SERVER[ 'REQUEST_URI' ]
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $_SERVER['REQUEST_URI']
</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">                        printf(
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclasstoolsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-tools.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-tools.php 2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-tools.php   2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WP_User;
</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">@@ -53,14 +54,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        global $wpdb;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $reviews = $wpdb->get_results( $wpdb->prepare(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        "SELECT
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         "SELECT
</ins><span class="cx" style="display: block; padding: 0 10px">                                         ID, post_content, post_title, post_author, post_modified,
</span><span class="cx" style="display: block; padding: 0 10px">                                        r.rating as post_rating
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        FROM ratings r
-                               LEFT JOIN wporg_419_posts p ON r.post_id = p.ID
-                       WHERE r.object_type = 'plugin' AND r.object_slug = %s AND p.post_status = 'publish'
-                       ORDER BY r.review_id DESC
-                       LIMIT %d", $plugin_slug, $number ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         FROM ratings r
+                                       LEFT JOIN wporg_419_posts p ON r.post_id = p.ID
+                               WHERE r.object_type = 'plugin' AND r.object_slug = %s AND p.post_status = 'publish'
+                               ORDER BY r.review_id DESC
+                               LIMIT %d",
+                               $plugin_slug,
+                               $number
+                       ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        wp_cache_set( "{$plugin_slug}_last{$number}", $reviews, 'plugin-reviews', HOUR_IN_SECONDS );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -240,7 +244,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">                if ( false === ( $support_reps = wp_cache_get( $plugin_slug, 'plugin-support-reps' ) ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $post = Plugin_Directory::get_plugin_post( $plugin_slug );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $post         = Plugin_Directory::get_plugin_post( $plugin_slug );
</ins><span class="cx" style="display: block; padding: 0 10px">                         $support_reps = wp_get_object_terms( $post->ID, 'plugin_support_reps', array( 'fields' => 'names' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        wp_cache_set( $plugin_slug, $support_reps, 'plugin-support-reps', 12 * HOUR_IN_SECONDS );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -340,7 +344,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $subscribe ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $users[] = $user->ID;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $users = array_unique( $users );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $users   = array_unique( $users );
</ins><span class="cx" style="display: block; padding: 0 10px">                 } else {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( false !== ( $pos = array_search( $user->ID, $users, true ) ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                unset( $users[ $pos ] );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -422,8 +426,7 @@
</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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $users_favorites = get_user_meta( $user->ID, 'plugin_favorites', true ) ?: array();
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $users_favorites   = get_user_meta( $user->ID, 'plugin_favorites', true ) ?: array();
</ins><span class="cx" style="display: block; padding: 0 10px">                 $already_favorited = in_array( $post->post_name, $users_favorites, true );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $favorite && $already_favorited ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -446,7 +449,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Retrieve a list of users who are subscribed to plugin commits.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @param string $plugin_slug       The plugin to retrieve subscribers for.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param bool   $include_committers Whether to include Plugin Committers in the list. Default false. 
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param bool   $include_committers Whether to include Plugin Committers in the list. Default false.
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return array Array of \WP_User's who are subscribed.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function get_plugin_subscribers( $plugin_slug, $include_committers = false ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -467,7 +470,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">                // Plugin Committers are always subscrived to plugin commits.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $committers  = self::get_plugin_committers( $plugin_slug );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $committers = self::get_plugin_committers( $plugin_slug );
</ins><span class="cx" style="display: block; padding: 0 10px">                 foreach ( $committers as $committer ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $committer && $user = get_user_by( 'login', $committer ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $users[] = $user;
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorycliclassimportphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/class-import.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/class-import.php    2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/class-import.php      2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -61,10 +61,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $data = $this->export_and_parse_plugin( $plugin_slug );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $readme = $data['readme'];
-               $assets = $data['assets'];
-               $headers = $data['plugin_headers'];
-               $stable_tag = $data['stable_tag'];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $readme          = $data['readme'];
+               $assets          = $data['assets'];
+               $headers         = $data['plugin_headers'];
+               $stable_tag      = $data['stable_tag'];
</ins><span class="cx" style="display: block; padding: 0 10px">                 $tagged_versions = $data['tagged_versions'];
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $content = '';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -88,7 +88,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 * - A tag (or trunk) commit is made to the current stable. The build has changed, even if not new version.
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><span class="cx" style="display: block; padding: 0 10px">                if (
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        ( !isset( $headers->Version ) || $headers->Version != get_post_meta( $plugin->ID, 'version', true ) ) ||
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 ( ! isset( $headers->Version ) || $headers->Version != get_post_meta( $plugin->ID, 'version', true ) ) ||
</ins><span class="cx" style="display: block; padding: 0 10px">                         $plugin->post_modified == '0000-00-00 00:00:00' ||
</span><span class="cx" style="display: block; padding: 0 10px">                        ( $svn_changed_tags && in_array( ( $stable_tag ?: 'trunk' ), $svn_changed_tags, true ) )
</span><span class="cx" style="display: block; padding: 0 10px">                ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -149,13 +149,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        update_post_meta( $plugin->ID, $meta_field, ( isset( $headers->$plugin_header ) ? wp_slash( $headers->$plugin_header ) : '' ) );
</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">-                update_post_meta( $plugin->ID, 'tagged_versions',    wp_slash( $tagged_versions ) );
-               update_post_meta( $plugin->ID, 'sections',           wp_slash( array_keys( $readme->sections ) ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         update_post_meta( $plugin->ID, 'tagged_versions', wp_slash( $tagged_versions ) );
+               update_post_meta( $plugin->ID, 'sections', wp_slash( array_keys( $readme->sections ) ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 update_post_meta( $plugin->ID, 'assets_screenshots', wp_slash( $assets['screenshot'] ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                update_post_meta( $plugin->ID, 'assets_icons',       wp_slash( $assets['icon'] ) );
-               update_post_meta( $plugin->ID, 'assets_banners',     wp_slash( $assets['banner'] ) );
-               update_post_meta( $plugin->ID, 'last_updated',       wp_slash( $plugin->post_modified_gmt ) );
-               update_post_meta( $plugin->ID, 'plugin_status',      wp_slash( $plugin->post_status ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         update_post_meta( $plugin->ID, 'assets_icons', wp_slash( $assets['icon'] ) );
+               update_post_meta( $plugin->ID, 'assets_banners', wp_slash( $assets['banner'] ) );
+               update_post_meta( $plugin->ID, 'last_updated', wp_slash( $plugin->post_modified_gmt ) );
+               update_post_meta( $plugin->ID, 'plugin_status', wp_slash( $plugin->post_status ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Calculate the 'plugin color' from the average color of the banner if provided. This is used for fallback icons.
</span><span class="cx" style="display: block; padding: 0 10px">                $banner_average_color = '';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -171,7 +171,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Finally, set the new version live.
</span><span class="cx" style="display: block; padding: 0 10px">                update_post_meta( $plugin->ID, 'stable_tag', wp_slash( $stable_tag ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                update_post_meta( $plugin->ID, 'version',    wp_slash( $headers->Version ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         update_post_meta( $plugin->ID, 'version', wp_slash( $headers->Version ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Ensure that the API gets the updated data
</span><span class="cx" style="display: block; padding: 0 10px">                API_Update_Updater::update_single_plugin( $plugin->post_name );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -207,10 +207,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                array_unique( $versions_to_build ),
</span><span class="cx" style="display: block; padding: 0 10px">                                $svn_revision_triggered ?
</span><span class="cx" style="display: block; padding: 0 10px">                                        "{$plugin_slug}: ZIP build triggered by https://plugins.trac.wordpress.org/changeset/{$svn_revision_triggered}" :
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        "{$plugin_slug}: ZIP build triggered by " . php_uname('n'),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 "{$plugin_slug}: ZIP build triggered by " . php_uname( 'n' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $stable_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">-                } catch( Exception $e ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         } catch ( Exception $e ) {
</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"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -246,6 +246,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $tagged_versions = SVN::ls( "https://plugins.svn.wordpress.org/{$plugin_slug}/tags/" ) ?: array();
</span><span class="cx" style="display: block; padding: 0 10px">                $tagged_versions = array_map( function( $item ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $trimmed_item = rtrim( $item, '/' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                         if ( $trimmed_item == $item ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                // If attempting to trim `/` off didn't do anything, it was a file and we want to discard it.
</span><span class="cx" style="display: block; padding: 0 10px">                                return null;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -287,7 +288,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">                        $trunk_readme_file = self::PLUGIN_SVN_BASE . "/{$plugin_slug}/trunk/{$trunk_readme_file}";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $trunk_readme = new Parser( $trunk_readme_file );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $trunk_readme      = new Parser( $trunk_readme_file );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $stable_tag = $trunk_readme->stable_tag;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -299,18 +300,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $tmp_dir . '/export',
</span><span class="cx" style="display: block; padding: 0 10px">                                array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'ignore-externals',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'depth' => 'files'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'depth' => 'files',
</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">                        // Handle tags which we store as 0.blah but are in /tags/.blah
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( ! $svn_export['result'] && '0.' == substr( $stable_tag, 0, 2 ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $_stable_tag = substr( $stable_tag, 1 );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $svn_export = SVN::export(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $svn_export  = SVN::export(
</ins><span class="cx" style="display: block; padding: 0 10px">                                         self::PLUGIN_SVN_BASE . "/{$plugin_slug}/tags/{$_stable_tag}",
</span><span class="cx" style="display: block; padding: 0 10px">                                        $tmp_dir . '/export',
</span><span class="cx" style="display: block; padding: 0 10px">                                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'ignore-externals',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'depth' => 'files'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'depth' => 'files',
</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,7 +335,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $tmp_dir . '/export',
</span><span class="cx" style="display: block; padding: 0 10px">                                array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'ignore-externals',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'depth' => 'files' // Only export the root files, we don't need the rest to read the plugin headers/screenshots
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'depth' => 'files', // Only export the root files, we don't need the rest to read the plugin headers/screenshots
</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 ( ! $svn_export['result'] || empty( $svn_export['revision'] ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -353,7 +354,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">                // Now we look in the /assets/ folder for banners, screenshots, and icons.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $assets = array( 'screenshot' => array(), 'banner' => array(), 'icon' => array() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $assets            = array(
+                       'screenshot' => array(),
+                       'banner'     => array(),
+                       'icon'       => array(),
+               );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $svn_assets_folder = SVN::ls( self::PLUGIN_SVN_BASE . "/{$plugin_slug}/assets/", true /* verbose */ );
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $svn_assets_folder ) { // /assets/ may not exist.
</span><span class="cx" style="display: block; padding: 0 10px">                        foreach ( $svn_assets_folder as $asset ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -361,31 +366,33 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( ! preg_match( '!^(?P<type>screenshot|banner|icon)(-(?P<resolution>[\dx]+)(-rtl)?\.(png|jpg|jpeg|gif)|\.svg)$!i', $asset['filename'], $m ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        continue;
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $type = $m['type'];
-                               $filename = $asset['filename'];
-                               $revision = $asset['revision'];
-                               $location = 'assets';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                               $type       = $m['type'];
+                               $filename   = $asset['filename'];
+                               $revision   = $asset['revision'];
+                               $location   = 'assets';
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $resolution = isset( $m['resolution'] ) ? $m['resolution'] : false;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $assets[ $type ][ $asset['filename'] ] = compact( 'filename', 'revision', 'resolution', 'location' );
</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><span class="cx" style="display: block; padding: 0 10px">                // Find screenshots in the stable plugin folder (but don't overwrite /assets/)
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( Filesystem::list_files( "$tmp_dir/export/", false /* non-recursive */, '!^screenshot-\d+\.(jpeg|jpg|png|gif)$!' ) as $plugin_screenshot ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $filename = basename( $plugin_screenshot );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $filename      = basename( $plugin_screenshot );
</ins><span class="cx" style="display: block; padding: 0 10px">                         $screenshot_id = substr( $filename, strpos( $filename, '-' ) + 1 );
</span><span class="cx" style="display: block; padding: 0 10px">                        $screenshot_id = substr( $screenshot_id, 0, strpos( $screenshot_id, '.' ) );
</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( $assets['screenshot'][ $filename ]  ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( isset( $assets['screenshot'][ $filename ] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 // Skip it, it exists within /assets/ already
</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><span class="cx" style="display: block; padding: 0 10px">                        $assets['screenshot'][ $filename ] = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'filename' => $filename,
-                               'revision' => $svn_export['revision'],
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'filename'   => $filename,
+                               'revision'   => $svn_export['revision'],
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'resolution' => $screenshot_id,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'location' => 'plugin',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'location'   => 'plugin',
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorycliclasssvnwatcherphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/class-svn-watcher.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/class-svn-watcher.php       2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/class-svn-watcher.php 2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -12,8 +12,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> class SVN_Watcher {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        const SVN_URL      = 'https://plugins.svn.wordpress.org/';
-       const PHP          = '/usr/local/bin/php';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ const SVN_URL = 'https://plugins.svn.wordpress.org/';
+       const PHP     = '/usr/local/bin/php';
</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 method is responsible for running a loop over all SVN revisions to fetch updated details.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -76,7 +76,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                // Check the status of the cronjobs are sane, as the exception will trigger it to be marked as `failed`.
</span><span class="cx" style="display: block; padding: 0 10px">                                wp_schedule_single_event( time() + 30, 'plugin_directory_check_cronjobs' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                throw new Exception( "Could not fetch plugins.svn logs: " . implode( ', ', $logs['errors'] ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         throw new Exception( 'Could not fetch plugins.svn logs: ' . implode( ', ', $logs['errors'] ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                         } else {
</span><span class="cx" style="display: block; padding: 0 10px">                                // If the job fails again within the next minute, throw an exception (as above)
</span><span class="cx" style="display: block; padding: 0 10px">                                // but for now, just silently let it re-try next iteration, hopefully it was a transient failure / network timeout.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -103,11 +103,11 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( ! isset( $plugins[ $plugin_slug ] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $plugins[ $plugin_slug ] = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'tags_touched' => array(), // trunk is a tag too!
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'tags_touched'   => array(), // trunk is a tag too!
</ins><span class="cx" style="display: block; padding: 0 10px">                                         'readme_touched' => false, // minor optimization, only parse readme i18n on readme-related commits
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'code_touched' => false,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'code_touched'   => false,
</ins><span class="cx" style="display: block; padding: 0 10px">                                         'assets_touched' => false,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'revisions' => array(),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'revisions'      => array(),
</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">                        $plugin =& $plugins[ $plugin_slug ];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -115,7 +115,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        // Keep track of the lowest revision number we've seen for this plugin
</span><span class="cx" style="display: block; padding: 0 10px">                        $plugin['revisions'][] = $log['revision'];
</span><span class="cx" style="display: block; padding: 0 10px">                        foreach ( $log['paths'] as $path ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $path_parts = explode('/', trim( $path, '/' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $path_parts = explode( '/', trim( $path, '/' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( ! isset( $path_parts[1] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        continue;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -139,7 +139,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( ! $plugin['code_touched'] && ( '/' == substr( $path, -1 ) || '.php' == substr( $path, -4 ) ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        $plugin['code_touched'] = 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">-
</del><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px">                        $plugin['tags_touched'] = array_unique( $plugin['tags_touched'] );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -167,7 +166,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        // Check the status of the cronjobs are sane, as the exception will trigger it to be marked as `failed`.
</span><span class="cx" style="display: block; padding: 0 10px">                        wp_schedule_single_event( time() + 30, 'plugin_directory_check_cronjobs' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        throw new Exception( "Unable to determine HEAD revision" );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 throw new Exception( 'Unable to determine HEAD revision' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                return array_keys( $log['log'] )[0];
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -181,6 +180,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        protected function get_option( $option_name ) {
</span><span class="cx" style="display: block; padding: 0 10px">                global $wpdb;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 return maybe_unserialize( $wpdb->get_var( $wpdb->prepare(
</span><span class="cx" style="display: block; padding: 0 10px">                        "SELECT option_value FROM $wpdb->options WHERE option_name = %s",
</span><span class="cx" style="display: block; padding: 0 10px">                        $option_name
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclii18nclasscodeimportphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/i18n/class-code-import.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/i18n/class-code-import.php  2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/i18n/class-code-import.php    2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -29,7 +29,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        throw new Exception( "Plugin has no files in {$tag}." );
</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">-                $tmp_directory = Filesystem::temp_directory( $this->plugin . '-code-' . $tag );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $tmp_directory    = Filesystem::temp_directory( $this->plugin . '-code-' . $tag );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $export_directory = $tmp_directory . '/export';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $res = SVN::export( $svn_url, $export_directory, [ 'ignore-externals' ] );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -47,7 +47,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">                $pot_file = "{$tmp_directory}/{$this->plugin}-code.pot";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $makepot  = new \MakePOT;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $makepot  = new \MakePOT();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! $makepot->wp_plugin( $export_directory, $pot_file, $this->plugin ) || ! file_exists( $pot_file ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        throw new Exception( "POT file couldn't be created." );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -80,7 +80,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Whether plugin files should be checked for valid text domains.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( empty( $readme->requires ) || version_compare( $readme->requires, '4.6', '<' ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $error  = new WP_Error();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $error                = new WP_Error();
</ins><span class="cx" style="display: block; padding: 0 10px">                         $esc_export_directory = escapeshellarg( $export_directory );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        // Check for a plugin text domain declaration and loading, grep recursively, not necessarily in plugin.php.
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclii18nclassi18nimportphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/i18n/class-i18n-import.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/i18n/class-i18n-import.php  2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/i18n/class-i18n-import.php    2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -75,7 +75,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $cmd = WPORGTRANSLATE_WPCLI . ' wporg-translate set-plugin-project ' . escapeshellarg( $plugin_slug ) . ' ' . escapeshellarg( $process_type );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $return_code = 0;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $output = [];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $output      = [];
</ins><span class="cx" style="display: block; padding: 0 10px">                 exec( $cmd, $output, $return_code );
</span><span class="cx" style="display: block; padding: 0 10px">                $last_line = array_pop( $output );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -103,7 +103,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                case 5:
</span><span class="cx" style="display: block; padding: 0 10px">                                        $return = new WP_Error( 'create-failure', 'An undefined error occurred while creating the main GlotPress project.' );
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                default :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         default:
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $return = new WP_Error( 'undefined', 'An undefined error occurred while setting the GlotPress projects.' );
</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">@@ -117,7 +117,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @param string $project       GP project slug to import to
</span><span class="cx" style="display: block; padding: 0 10px">         * @param string $branch        GP project branch to import to (dev|stable)
</span><span class="cx" style="display: block; padding: 0 10px">         * @param string $file          Path to POT file
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param array $str_priorities GP string priorities
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param array  $str_priorities GP string priorities
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        public function import_pot_to_glotpress_project( $project, $branch, $file, $str_priorities = array() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                global $wpdb;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -171,60 +171,60 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        // Fix some locales.
</span><span class="cx" style="display: block; padding: 0 10px">                        switch ( $language ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'ga_IR' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'ga_IR':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'ga';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'ca_ES' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'ca_ES':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'ca';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'el_GR' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'el_GR':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'el';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'af_ZA' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'af_ZA':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'af';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'zh_cn' :
-                               case 'zh_ZH' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'zh_cn':
+                               case 'zh_ZH':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'zh_CN';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'uk_UA' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'uk_UA':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'uk';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'sq_AL' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'sq_AL':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'sq';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'ga_IE' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'ga_IE':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'ga';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'gu_IN' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'gu_IN':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'gu';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'hy_AM' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'hy_AM':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'hy';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'eo_EO' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'eo_EO':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'eo';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'ar_AR' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'ar_AR':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'ar';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'hr_HR' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'hr_HR':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'hr';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'cs_CS' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'cs_CS':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'cs_CZ';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'vi_VN' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'vi_VN':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'vi';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'ja_JP' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'ja_JP':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'ja';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'tr' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'tr':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'tr_TR';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'be_BY' :
-                               case 'be' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'be_BY':
+                               case 'be':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $language = 'bel';
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclii18nclassreadmeimportphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/i18n/class-readme-import.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/i18n/class-readme-import.php        2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/i18n/class-readme-import.php  2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -44,13 +44,13 @@
</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">                $readme_file = "{$svn_url}{$readme_file}";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $readme = new Parser( $readme_file );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $readme      = new Parser( $readme_file );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! class_exists( '\PO' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        require_once ABSPATH . '/wp-includes/pomo/po.php';
</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">-                $pot = new PO;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $pot = new PO();
</ins><span class="cx" style="display: block; padding: 0 10px">                 $pot->set_header( 'MIME-Version', '1.0' );
</span><span class="cx" style="display: block; padding: 0 10px">                $pot->set_header( 'Content-Type', 'text/plain; charset=UTF-8' );
</span><span class="cx" style="display: block; padding: 0 10px">                $pot->set_header( 'Content-Transfer-Encoding', '8bit' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -128,7 +128,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">                $tmp_directory = Filesystem::temp_directory( $this->plugin . '-readme-' . $tag );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $pot_file = "{$tmp_directory}/{$this->plugin}-readme.pot";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $pot_file      = "{$tmp_directory}/{$this->plugin}-readme.pot";
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $exported = $pot->export_to_file( $pot_file );
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! $exported ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -147,7 +147,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Handles GlotPress "extracted comments" for translators to get context for each string translations.
</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 array $array Empty or existing arrays of string and comments
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param array  $array Empty or existing arrays of string and comments
</ins><span class="cx" style="display: block; padding: 0 10px">          * @param string $key Unique key
</span><span class="cx" style="display: block; padding: 0 10px">         * @param string $val Comment value
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclientsclassslackphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/clients/class-slack.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/clients/class-slack.php 2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/clients/class-slack.php   2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -35,7 +35,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">        private $success_emoji = [
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                ':green_heart:', ':white_check_mark:', ':smiley:', ':ok: ',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         ':green_heart:',
+               ':white_check_mark:',
+               ':smiley:',
+               ':ok: ',
</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">@@ -44,7 +47,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">        private $failure_emoji = [
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                ':broken_heart:', ':umbrella_with_rain_drops:', ':cry:', ':sos:',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         ':broken_heart:',
+               ':umbrella_with_rain_drops:',
+               ':cry:',
+               ':sos:',
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryjobsclassapiupdateupdaterphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-api-update-updater.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-api-update-updater.php       2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-api-update-updater.php 2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -57,11 +57,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $post = Plugin_Directory::get_plugin_post( $plugin_slug );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! $post || ! in_array( $post->post_status, array( 'publish', 'disabled', 'closed' ) ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $wpdb->delete(  $wpdb->prefix . 'update_source', compact( 'plugin_slug' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $wpdb->delete( $wpdb->prefix . 'update_source', compact( 'plugin_slug' ) );
</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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $data = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $data           = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                         'plugin_id'       => $post->ID,
</span><span class="cx" style="display: block; padding: 0 10px">                        'plugin_slug'     => $post->post_name,
</span><span class="cx" style="display: block; padding: 0 10px">                        'available'       => 'publish' === $post->post_status || 'disabled' === $post->post_status,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -101,7 +101,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $locales = array_filter( array_values( wp_list_pluck( \GP_Locales::locales(), 'wp_locale' ) ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        foreach ( $locales as $locale ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $cache_key = "plugin_information:"
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $cache_key = 'plugin_information:'
</ins><span class="cx" style="display: block; padding: 0 10px">                                         . ( strlen( $plugin_slug ) > 200 ? 'md5:' . md5( $plugin_slug ) : $plugin_slug )
</span><span class="cx" style="display: block; padding: 0 10px">                                        . ":{$locale}";
</span><span class="cx" style="display: block; padding: 0 10px">                                wp_cache_delete( $cache_key, 'plugin_api_info' );
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryjobsclassmanagerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-manager.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-manager.php  2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-manager.php    2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -17,12 +17,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'cron_schedules', array( $this, 'register_schedules' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // The actual cron hooks.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_action( 'plugin_directory_meta_sync',        array( __NAMESPACE__ . '\Meta_Sync', 'cron_trigger' ) );
-               add_action( 'plugin_directory_svn_sync',         array( __NAMESPACE__ . '\SVN_Watcher', 'cron_trigger' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         add_action( 'plugin_directory_meta_sync', array( __NAMESPACE__ . '\Meta_Sync', 'cron_trigger' ) );
+               add_action( 'plugin_directory_svn_sync', array( __NAMESPACE__ . '\SVN_Watcher', 'cron_trigger' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_action( 'plugin_directory_update_api_check', array( __NAMESPACE__ . '\API_Update_Updater', 'cron_trigger' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // A cronjob to check cronjobs
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_action( 'plugin_directory_check_cronjobs',   array( $this, 'register_cron_tasks' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         add_action( 'plugin_directory_check_cronjobs', array( $this, 'register_cron_tasks' ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Register the wildcard cron hook tasks.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( defined( 'DOING_CRON' ) && DOING_CRON ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -35,8 +35,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Register any cron schedules needed.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function register_schedules( $schedules ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $schedules['every_30s'] = array( 'interval' => 30, 'display' => 'Every 30 seconds' );
-               $schedules['every_120s'] = array( 'interval' => 120, 'display' => 'Every 120 seconds' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $schedules['every_30s']  = array(
+                       'interval' => 30,
+                       'display'  => 'Every 30 seconds',
+               );
+               $schedules['every_120s'] = array(
+                       'interval' => 120,
+                       'display'  => 'Every 120 seconds',
+               );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return $schedules;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -120,9 +126,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        if ( ! $next_timestamp || $next_timestamp === $timestamp ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                                $events[] = [
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        'hook'      => $cron_item['_job']->hook,
-                                                       'args'      => $cron_item['_job']->args,
-                                                       'nextrun'   => $timestamp,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 'hook'    => $cron_item['_job']->hook,
+                                                       'args'    => $cron_item['_job']->args,
+                                                       'nextrun' => $timestamp,
</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">@@ -163,7 +169,7 @@
</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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $event['_job']->args = $data['args'];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $event['_job']->args    = $data['args'];
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $event['_job']->nextrun = $data['nextrun'];
</span><span class="cx" style="display: block; padding: 0 10px">                                        $event['_job']->save();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -226,16 +232,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * The jobs are queued for 1 minutes time to avoid recurring job failures from repeating too soon.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function register_cron_tasks() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( ! wp_next_scheduled ( 'plugin_directory_meta_sync' ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! wp_next_scheduled( 'plugin_directory_meta_sync' ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         wp_schedule_event( time() + 60, 'hourly', 'plugin_directory_meta_sync' );
</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 ( ! wp_next_scheduled ( 'plugin_directory_svn_sync' ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! wp_next_scheduled( 'plugin_directory_svn_sync' ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         wp_schedule_event( time() + 60, 'every_30s', 'plugin_directory_svn_sync' );
</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 ( ! wp_next_scheduled ( 'plugin_directory_update_api_check' ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! wp_next_scheduled( 'plugin_directory_update_api_check' ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         wp_schedule_event( time() + 60, 'hourly', 'plugin_directory_update_api_check' );
</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 ( ! wp_next_scheduled ( 'plugin_directory_check_cronjobs' ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! wp_next_scheduled( 'plugin_directory_check_cronjobs' ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         wp_schedule_event( time() + 60, 'every_120s', 'plugin_directory_check_cronjobs' );
</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,20 +262,23 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'import_plugin_i18n' => array( __NAMESPACE__ . '\Plugin_i18n_Import', 'cron_trigger' ),
</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">-                foreach ( $cron_array as $timestamp => $handlers ) {
-                       if ( ! is_numeric( $timestamp ) ) {
-                               continue;
-                       }
-                       foreach ( $handlers as $hook => $jobs ) {
-                               $pos = strpos( $hook, ':' );
-                               if ( ! $pos ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( is_array( $cron_array ) ) {
+                       foreach ( $cron_array as $timestamp => $handlers ) {
+                               if ( ! is_numeric( $timestamp ) ) {
</ins><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">-                                $partial_hook = substr( $hook, 0, $pos );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         foreach ( $handlers as $hook => $jobs ) {
+                                       $pos = strpos( $hook, ':' );
+                                       if ( ! $pos ) {
+                                               continue;
+                                       }
</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 ( isset( $wildcard_cron_tasks[ $partial_hook ] ) ) {
-                                       add_action( $hook, $wildcard_cron_tasks[ $partial_hook ], 10, PHP_INT_MAX );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $partial_hook = substr( $hook, 0, $pos );
+
+                                       if ( isset( $wildcard_cron_tasks[ $partial_hook ] ) ) {
+                                               add_action( $hook, $wildcard_cron_tasks[ $partial_hook ], 10, PHP_INT_MAX );
+                                       }
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryjobsclassmetasyncphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-meta-sync.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-meta-sync.php        2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-meta-sync.php  2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14,7 +14,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * A static method for the cron trigger to fire.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function cron_trigger() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $class = new Meta_Sync;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $class = new Meta_Sync();
</ins><span class="cx" style="display: block; padding: 0 10px">                 $class->sync();
</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">@@ -61,15 +61,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">                // Sync new (and updated) ratings to postmeta
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $last_review_time = get_option( 'plugin_last_review_sync' );
-               $current_review_time = $wpdb->get_var( "SELECT MAX(`date`) FROM `ratings`" );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $last_review_time    = get_option( 'plugin_last_review_sync' );
+               $current_review_time = $wpdb->get_var( 'SELECT MAX(`date`) FROM `ratings`' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( strtotime( $last_review_time ) >= strtotime( $current_review_time ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        return;
</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 plugin slugs for whom extra reviews have been made, or ratings changed.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $slugs = $wpdb->get_col( $sql = $wpdb->prepare(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $slugs = $wpdb->get_col( $wpdb->prepare(
</ins><span class="cx" style="display: block; padding: 0 10px">                         "SELECT distinct object_slug FROM `ratings` WHERE object_type = 'plugin' AND `date` >= %s AND `date` < %s",
</span><span class="cx" style="display: block; padding: 0 10px">                        $last_review_time,
</span><span class="cx" style="display: block; padding: 0 10px">                        $current_review_time
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -106,7 +106,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        return;
</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">-                $equivs = wporg_get_version_equivalents();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $equivs     = wporg_get_version_equivalents();
</ins><span class="cx" style="display: block; padding: 0 10px">                 $equivs_key = md5( serialize( $equivs ) );
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $equivs_key === get_option( 'plugin_last_tested_sync' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        return;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -120,7 +120,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">                $tested_meta_value_esc_sql = '"' . implode( '", "', array_map( 'esc_sql', array_keys( $latest_equiv ) ) ) . '"';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $tested_values = $wpdb->get_results( "SELECT post_id, meta_value FROM {$wpdb->postmeta} WHERE meta_key = 'tested' AND meta_value IN( {$tested_meta_value_esc_sql} )" );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $tested_values             = $wpdb->get_results( "SELECT post_id, meta_value FROM {$wpdb->postmeta} WHERE meta_key = 'tested' AND meta_value IN( {$tested_meta_value_esc_sql} )" );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $tested_values as $row ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        update_post_meta(
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryjobsclassplugini18nimportphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-plugin-i18n-import.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-plugin-i18n-import.php       2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-plugin-i18n-import.php 2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16,12 +16,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Queue the job
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function queue( $plugin_slug, $plugin_data ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $when_to_run = time() + 15 * MINUTE_IN_SECONDS;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $when_to_run    = time() + 15 * MINUTE_IN_SECONDS;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $next_scheduled = Manager::get_scheduled_time( "import_plugin_i18n:{$plugin_slug}", 'last' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Update a scheduled event if it doesn't run in the next minute.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $next_scheduled && $next_scheduled > time() + 1 * MINUTE_IN_SECONDS ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $next_scheduled_events = Manager::get_scheduled_events( "import_plugin_i18n:{$plugin_slug}",$next_scheduled );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $next_scheduled_events = Manager::get_scheduled_events( "import_plugin_i18n:{$plugin_slug}", $next_scheduled );
</ins><span class="cx" style="display: block; padding: 0 10px">                         if ( $next_scheduled_events ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $next_scheduled_event = array_shift( $next_scheduled_events );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -58,7 +58,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $when_to_run,
</span><span class="cx" style="display: block; padding: 0 10px">                        "import_plugin_i18n:{$plugin_slug}",
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                array_merge( array( 'plugin' => $plugin_slug ), $plugin_data )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         array_merge( array( 'plugin' => $plugin_slug ), $plugin_data ),
</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">@@ -98,7 +98,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Processes i18n import tasks.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @param string $plugin_slug
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @param array $i18n_processes
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @param array  $i18n_processes
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function process_i18n_for_plugin( $plugin_slug, $i18n_processes ) {
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $i18n_processes as $process ) {
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryjobsclasspluginimportphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-plugin-import.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-plugin-import.php    2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-plugin-import.php      2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22,7 +22,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $when_to_run,
</span><span class="cx" style="display: block; padding: 0 10px">                        "import_plugin:{$plugin_slug}",
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                array_merge( array( 'plugin' => $plugin_slug ), $plugin_data )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         array_merge( array( 'plugin' => $plugin_slug ), $plugin_data ),
</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">@@ -34,12 +34,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $plugin_slug  = $plugin_data['plugin'];
</span><span class="cx" style="display: block; padding: 0 10px">                $changed_tags = isset( $plugin_data['tags_touched'] ) ? $plugin_data['tags_touched'] : array( 'trunk' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $revision = isset( $plugin_data['revisions'] ) ? max( (array)$plugin_data['revisions'] ) : false;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $revision = isset( $plugin_data['revisions'] ) ? max( (array) $plugin_data['revisions'] ) : false;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                try {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $importer = new CLI\Import;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $importer = new CLI\Import();
</ins><span class="cx" style="display: block; padding: 0 10px">                         $importer->import_from_svn( $plugin_slug, $changed_tags, $revision );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                } catch( Exception $e ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         } catch ( Exception $e ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         fwrite( STDERR, "[{$plugin_slug}] Plugin Import Failed: " . $e->getMessage() . "\n" );
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorylibssitesearchclassjetpacksearchresultpostsiteratorphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/libs/site-search/class.jetpack-searchresult-posts-iterator.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/libs/site-search/class.jetpack-searchresult-posts-iterator.php  2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/libs/site-search/class.jetpack-searchresult-posts-iterator.php    2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7,7 +7,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">- * Provide a custom Iterator for seamlessly switching to the appropriate blog and inflating posts for 
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Provide a custom Iterator for seamlessly switching to the appropriate blog and inflating posts for
</ins><span class="cx" style="display: block; padding: 0 10px">  * search results that may or many not live on other sites.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * Provides lazy loading of posts (by id) and transparent blog context switching for iterating an ES result set
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -18,28 +18,28 @@
</span><span class="cx" style="display: block; padding: 0 10px"> class Jetpack_SearchResult_Posts_Iterator implements SeekableIterator, Countable, ArrayAccess {
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="cx" style="display: block; padding: 0 10px">         * The ES search result to retrieve posts for
</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">+  *
</ins><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 $search_result;
</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">         * An array of inflated posts represented in the $search_result
</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">+  *
</ins><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 $posts;
</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">         * The current offset
</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">+  *
</ins><span class="cx" style="display: block; padding: 0 10px">          * @var int
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        protected $pointer = 0;
</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">         * Retrieve the ES search result
</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">+  *
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return array The ES search result
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function get_search_result() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -48,7 +48,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">         * Set the ES search result
</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">+  *
</ins><span class="cx" style="display: block; padding: 0 10px">          * @param array $search_result The ES search result to associate with this iterator
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function set_search_result( array $search_result ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -59,34 +59,31 @@
</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">         * Retrieve a post from the database by id, and conditionally switch to the appropriate blog, if needed
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * 
-        * @param  array        $es_result The individual hit in an ES search result to inflate a post for
-        * @return WP_Post      The inflated WP_Post object, or null if not found
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  *
+        * @param  array $es_result The individual hit in an ES search result to inflate a post for
+        * @return WP_Post  The inflated WP_Post object, or null if not found
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        protected function inflate_post( $es_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">-                #$post = get_blog_post( $es_result['fields']['blog_id'], $es_result['fields']['post_id'] );
-
-               //TODO: is this a good thing to kill?
-               //if ( isset( $es_result['fields']['blog_id'] ) && get_current_blog_id() !== $es_result['fields']['blog_id'] )
-               //      switch_to_blog( $es_result['fields']['blog_id'] );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // $post = get_blog_post( $es_result['fields']['blog_id'], $es_result['fields']['post_id'] );
+               // TODO: is this a good thing to kill?
+               // if ( isset( $es_result['fields']['blog_id'] ) && get_current_blog_id() !== $es_result['fields']['blog_id'] )
+               // switch_to_blog( $es_result['fields']['blog_id'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $post = get_post( $es_result['fields']['post_id'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return $post;
</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">        // Implement SeekableIterator
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        
</del><span class="cx" style="display: block; padding: 0 10px">         public function seek( $position ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $this->pointer = $position;
</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 current () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function current() {
</ins><span class="cx" style="display: block; padding: 0 10px">                 return $this->pointer;
</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 key () {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function key() {
</ins><span class="cx" style="display: block; padding: 0 10px">                 return $this->pointer;
</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">@@ -103,24 +100,24 @@
</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">        // Implement Countable
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        
</del><span class="cx" style="display: block; padding: 0 10px">         public function count() {
</span><span class="cx" style="display: block; padding: 0 10px">                return count( $this->search_result['results']['hits'] );
</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">        // Implement ArrayAccess
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        
</del><span class="cx" style="display: block; padding: 0 10px">         public function offsetExists( $index ) {
</span><span class="cx" style="display: block; padding: 0 10px">                return isset( $this->search_result['results']['hits'][ $index ] );
</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">        public function offsetGet( $index ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( ! $this->offsetExists( $index ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! $this->offsetExists( $index ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return null;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Lazy load the post
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( ! isset( $this->posts[ $index ] ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! isset( $this->posts[ $index ] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $this->posts[ $index ] = $this->inflate_post( $this->search_result['results']['hits'][ $index ] );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return $this->posts[ $index ];
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorylibssitesearchjetpacksearchdebugphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/libs/site-search/jetpack-search-debug.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/libs/site-search/jetpack-search-debug.php       2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/libs/site-search/jetpack-search-debug.php 2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,9 +1,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?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">-add_filter('debug_bar_panels', function($panels) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+add_filter( 'debug_bar_panels', function( $panels ) {
</ins><span class="cx" style="display: block; padding: 0 10px">         class Debug_Bar_Search extends Debug_Bar_Panel {
</span><span class="cx" style="display: block; padding: 0 10px">                function init() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $this->title( __('Search', 'debug-bar') );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $this->title( __( 'Search', 'debug-bar' ) );
</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">                function prerender() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -11,12 +11,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">                function render() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                         $search = Jetpack_Search::instance();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        echo "<div id='debug-bar-jetpack-search'>";
</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">                         echo '<h3>', __( 'Elasticsearch Query:', 'debug-bar' ), '</h3>';
</span><span class="cx" style="display: block; padding: 0 10px">                        echo '<pre>' . esc_html( json_encode( $search->get_search_query(), JSON_PRETTY_PRINT ) ) . '</pre>';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -29,4 +27,4 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        $panels[] = new Debug_Bar_Search();
</span><span class="cx" style="display: block; padding: 0 10px">        return $panels;
</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">+} );
</ins></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorylibssitesearchjetpacksearchphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/libs/site-search/jetpack-search.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/libs/site-search/jetpack-search.php     2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/libs/site-search/jetpack-search.php       2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -49,7 +49,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">-require_once( __DIR__ . '/class.jetpack-searchresult-posts-iterator.php' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+require_once __DIR__ . '/class.jetpack-searchresult-posts-iterator.php';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> class Jetpack_Search {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -66,35 +66,36 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        protected static $instance;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        //Languages with custom analyzers, other languages are supported,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ // Languages with custom analyzers, other languages are supported,
</ins><span class="cx" style="display: block; padding: 0 10px">         // but are analyzed with the default analyzer.
</span><span class="cx" style="display: block; padding: 0 10px">        public static $analyzed_langs = array( 'ar', 'bg', 'ca', 'cs', 'da', 'de', 'el', 'en', 'es', 'eu', 'fa', 'fi', 'fr', 'he', 'hi', 'hu', 'hy', 'id', 'it', 'ja', 'ko', 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        const CACHE_GROUP = 'jetpack-search';
-       const CACHE_EXPIRY = 300;
-       const ERROR_COUNT_KEY = 'error-count-';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ const CACHE_GROUP        = 'jetpack-search';
+       const CACHE_EXPIRY       = 300;
+       const ERROR_COUNT_KEY    = 'error-count-';
</ins><span class="cx" style="display: block; padding: 0 10px">         const ERROR_COUNT_WINDOW = 60; // seconds
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        protected function __construct() {
</span><span class="cx" style="display: block; padding: 0 10px">                /* Don't do anything, needs to be initialized via instance() method */
</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 __clone() { wp_die( "Please don't __clone WPCOM_elasticsearch" ); }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function __clone() {
+               wp_die( "Please don't __clone WPCOM_elasticsearch" ); }
</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 __wakeup() { wp_die( "Please don't __wakeup WPCOM_elasticsearch" ); }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function __wakeup() {
+               wp_die( "Please don't __wakeup WPCOM_elasticsearch" ); }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public static function instance() {
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! isset( self::$instance ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        self::$instance = new Jetpack_Search;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 self::$instance = new Jetpack_Search();
</ins><span class="cx" style="display: block; padding: 0 10px">                         self::$instance->setup();
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">                return self::$instance;
</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">        public function setup() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                //TODO: only enable if this site is public (otherwise we don't have content)
-               //TODO: check that the module is activated
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // TODO: only enable if this site is public (otherwise we don't have content)
+               // TODO: check that the module is activated
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->jetpack_blog_id = Jetpack::get_option( 'id' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! is_admin() ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -104,22 +105,20 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public function set_lang( $lang = false ) {
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! $lang ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        //TODO: don't think this works for Jetpack
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // TODO: don't think this works for Jetpack
</ins><span class="cx" style="display: block; padding: 0 10px">                         $blog = get_blog_details( $blog_id );
</span><span class="cx" style="display: block; padding: 0 10px">                        $lang = get_lang_code_by_id( $blog->lang_id );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">                $this->blog_lang = $lang;
</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><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ //
</ins><span class="cx" style="display: block; padding: 0 10px">         // Lots of hooks
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">         public function init_hooks() {
</span><span class="cx" style="display: block; padding: 0 10px">                // Checks to see if we need to worry about found_posts
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'post_limits_request', array( $this, 'filter__post_limits_request' ), 999, 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">-                # Note: Advanced Post Cache hooks in at 10 so it's important to hook in before that
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Note: Advanced Post Cache hooks in at 10 so it's important to hook in before that
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Force $q['cache_results'] = false; this prevents the un-inflated WP_Post objects from being stored in cache
</span><span class="cx" style="display: block; padding: 0 10px">                add_action( 'pre_get_posts', array( $this, 'action__pre_get_posts' ), 5 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -141,8 +140,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'jetpack_search_es_wp_query_args', array( $this, 'filter__add_date_filter_to_query' ), 10, 2 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Debug
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( file_exists( __DIR__ . '/jetpack-search-debug.php' ) )
-                       include_once( __DIR__ . '/jetpack-search-debug.php' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( file_exists( __DIR__ . '/jetpack-search-debug.php' ) ) {
+                       include_once __DIR__ . '/jetpack-search-debug.php';
+               }
</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">@@ -151,8 +151,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Handles inflating the post, switching to the appropriate blog context, and setting up post data
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function register_loop_hooks() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                add_action( 'loop_start',       array( $this, 'action__loop_start' ) );
-               add_action( 'loop_end',         array( $this, 'action__loop_end' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         add_action( 'loop_start', array( $this, 'action__loop_start' ) );
+               add_action( 'loop_end', array( $this, 'action__loop_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">@@ -161,31 +161,30 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Needs to be called when the search Loop is complete, so later queries are not affected
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function unregister_loop_hooks() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                remove_action( 'the_post',              array( $this, 'action__the_post' ) );
-               remove_action( 'loop_end',              array( $this, 'action__loop_end' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         remove_action( 'the_post', array( $this, 'action__the_post' ) );
+               remove_action( 'loop_end', array( $this, 'action__loop_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><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">+ //
</ins><span class="cx" style="display: block; padding: 0 10px">         // Raw Search Query
</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">+ /*
</ins><span class="cx" style="display: block; padding: 0 10px">          * Return a count of the number of search API errors within the last ERROR_COUNT_WINDOW seconds
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        protected function get_error_volume() {
</span><span class="cx" style="display: block; padding: 0 10px">                // Use a dual-tick window like nonces
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $tick = ceil( time() / (self::ERROR_COUNT_WINDOW/2) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $tick = ceil( time() / ( self::ERROR_COUNT_WINDOW / 2 ) );
</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 intval( wp_cache_get( self::ERROR_COUNT_KEY . $tick, self::CACHE_GROUP ) ) 
-                        + intval( wp_cache_get( self::ERROR_COUNT_KEY . ($tick -1), self::CACHE_GROUP ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return intval( wp_cache_get( self::ERROR_COUNT_KEY . $tick, self::CACHE_GROUP ) )
+                        + intval( wp_cache_get( self::ERROR_COUNT_KEY . ( $tick - 1 ), self::CACHE_GROUP ) );
</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><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ /*
</ins><span class="cx" style="display: block; padding: 0 10px">          *      Increment the recent error volume by $count.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        protected function increment_error_volume( $count = 1 ) {
</span><span class="cx" style="display: block; padding: 0 10px">                // wp_cache_incr() bails if the key does not exist
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $tick = ceil( time() / (self::ERROR_COUNT_WINDOW/2) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $tick = ceil( time() / ( self::ERROR_COUNT_WINDOW / 2 ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 wp_cache_add( self::ERROR_COUNT_KEY . $tick, 0, self::CACHE_GROUP, self::ERROR_COUNT_WINDOW );
</span><span class="cx" style="display: block; padding: 0 10px">                return wp_cache_incr( self::ERROR_COUNT_KEY . $tick, $count, self::CACHE_GROUP );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -203,7 +202,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // For 10-15 errors, an 80-90% chance
</span><span class="cx" style="display: block; padding: 0 10px">                // For 20 errors, a 50% chance
</span><span class="cx" style="display: block; padding: 0 10px">                // For 40+ errors, a 0% chance
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $threshold = ceil( 10 / ( 1 + pow( $error_volume / 20, 4 ) ) );
</span><span class="cx" style="display: block; padding: 0 10px">                return mt_rand( 1, 10 ) <= $threshold;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -212,7 +210,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Trigger a search error message and increment the recent error volume.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        protected function search_error( $reason ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                trigger_error( 'Plugin directory search: '.$reason, E_USER_WARNING );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         trigger_error( 'Plugin directory search: ' . $reason, E_USER_WARNING );
</ins><span class="cx" style="display: block; padding: 0 10px">                 return $this->increment_error_volume();
</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">@@ -223,11 +221,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return object : the response from the public api (could be a WP_Error)
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function search( $es_args ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $service_url = 'https://public-api.wordpress.com/rest/v1/sites/' . $this->jetpack_blog_id . '/search';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $service_url  = 'https://public-api.wordpress.com/rest/v1/sites/' . $this->jetpack_blog_id . '/search';
</ins><span class="cx" style="display: block; padding: 0 10px">                 $json_es_args = json_encode( $es_args );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $cache_key = md5( $json_es_args );
-               $lock_key = 'lock-'.$cache_key;
-               
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $cache_key    = md5( $json_es_args );
+               $lock_key     = 'lock-' . $cache_key;
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = wp_cache_get( $cache_key, self::CACHE_GROUP );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Use a temporary lock to prevent cache stampedes. This ensures only one process (per search term per memcache instance) will run the remote post.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -237,12 +235,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        // If the error volume is high, there's a proportionally lower chance that we'll actually attempt to hit the API.
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $this->error_volume_is_low() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $request = wp_remote_post( $service_url, array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'headers' => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'headers'    => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 'Content-Type' => 'application/json',
</span><span class="cx" style="display: block; padding: 0 10px">                                        ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'timeout' => 10,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'timeout'    => 10,
</ins><span class="cx" style="display: block; padding: 0 10px">                                         'user-agent' => 'WordPress.org/jetpack_search',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'body' => $json_es_args,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'body'       => $json_es_args,
</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">                                trigger_error( 'Plugin directory search: skipping search due to high error volume', E_USER_WARNING );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -257,31 +255,35 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                // Lock further requests for the same search for 3-7 seconds. We probably don't need anything more complex like exponential backoff here because this is per search.
</span><span class="cx" style="display: block; padding: 0 10px">                                wp_cache_set( $lock_key, 1, self::CACHE_GROUP, mt_rand( 3, 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">-                                if ( is_wp_error( $request ) )
-                                       $this->search_error( 'http error '.$request->get_error_message(), E_USER_WARNING );
-                               else
-                                       $this->search_error( 'http status '.wp_remote_retrieve_response_code( $request ), E_USER_WARNING );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ( is_wp_error( $request ) ) {
+                                       $this->search_error( 'http error ' . $request->get_error_message(), E_USER_WARNING );
+                               } else {
+                                       $this->search_error( 'http status ' . wp_remote_retrieve_response_code( $request ), E_USER_WARNING );
+                               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                // If we have a stale cached response, return that. Otherwise, return the error object.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if ( $response )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ( $response ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                         return $response; // Stale cached response.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                }
</ins><span class="cx" style="display: block; padding: 0 10px">                                 return $request; // Fresh error object.
</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">                        $fresh_response = json_decode( wp_remote_retrieve_body( $request ), 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">-                        if ( !$fresh_response || isset( $fresh_response['error'] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! $fresh_response || isset( $fresh_response['error'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 // As above, lock further requests for the same search for a few seconds
</span><span class="cx" style="display: block; padding: 0 10px">                                wp_cache_set( $lock_key, 1, self::CACHE_GROUP, mt_rand( 3, 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">-                                if ( isset( $fresh_response['error'] ) )
-                                       $this->search_error( 'remote error '.$fresh_response['error'], E_USER_WARNING );
-                               else
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ( isset( $fresh_response['error'] ) ) {
+                                       $this->search_error( 'remote error ' . $fresh_response['error'], E_USER_WARNING );
+                               } else {
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $this->search_error( 'invalid json response', E_USER_WARNING );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                // Return a stale response if we have one
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if ( $response )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ( $response ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                         return $response;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                }
</ins><span class="cx" style="display: block; padding: 0 10px">                                 return $fresh_response; // Fresh error object as a last resort
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -293,22 +295,22 @@
</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">                        // Stampede protection has kicked in, AND we have no stale cached value to display. That's bad - possibly indicates cache exhaustion
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( false === $response )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( false === $response ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 trigger_error( 'Plugin directory search: no cached results available during stampede.', E_USER_WARNING );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        }
</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 $response;
</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">-        //TODO: add secured search for posts/comments
-
-       /////////////////////////////////////////////////////////
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ // TODO: add secured search for posts/comments
+       //
</ins><span class="cx" style="display: block; padding: 0 10px">         // Insert the ES results into the Loop when searching
</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">         public function filter__post_limits_request( $limits, $query ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( ! $query->is_search() )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! $query->is_search() ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return $limits;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( empty( $limits ) || $query->get( 'no_found_rows' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->do_found_posts = false;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -320,8 +322,9 @@
</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">        public function filter__the_posts( $posts, $query ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( ! $query->is_main_query() || ! $query->is_search() )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! $query->is_main_query() || ! $query->is_search() ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return $posts;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! is_array( $this->search_result ) || ! isset( $this->search_result['results'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        return $posts;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -339,14 +342,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        // Create an empty WP_Post object that will be inflated later
</span><span class="cx" style="display: block; padding: 0 10px">                        $post = new stdClass();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $post->ID            = $result['fields']['post_id'];
-                       $post->blog_id       = $result['fields']['blog_id'];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $post->ID      = $result['fields']['post_id'];
+                       $post->blog_id = $result['fields']['blog_id'];
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        // Run through get_post() to add all expected properties (even if they're empty)
</span><span class="cx" style="display: block; padding: 0 10px">                        $post = get_post( $post );
</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 ( $post )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( $post ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $posts[] = $post;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        }
</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">                // Listen for the start/end of The Loop, to add some action handlers for transparently loading the post
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -358,22 +362,24 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function filter__posts_request( $sql, $query ) {
</span><span class="cx" style="display: block; padding: 0 10px">                global $wpdb;
</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 ( ! $query->is_main_query() || ! $query->is_search() )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! $query->is_main_query() || ! $query->is_search() ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return $sql;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $page = ( $query->get( 'paged' ) ) ? absint( $query->get( 'paged' ) ) : 1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $page           = ( $query->get( 'paged' ) ) ? absint( $query->get( 'paged' ) ) : 1;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $posts_per_page = $query->get( 'posts_per_page' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // ES API does not allow more than 15 results at a time
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $posts_per_page > 200 )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( $posts_per_page > 200 ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $posts_per_page = 200;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // ES API does not allow fetching past the 10,000th post
</span><span class="cx" style="display: block; padding: 0 10px">                $page = min( $page, floor( 9999 / $posts_per_page ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $date_cutoff = strftime( '%Y-%m-%d', strtotime( '-8 years' ) );
-               $date_today = strftime( '%Y-%m-%d' );
-               $version_cutoff = ( defined('WP_CORE_STABLE_BRANCH') ? sprintf( '%0.1f', WP_CORE_STABLE_BRANCH - 0.5) : '4.0' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $date_cutoff    = strftime( '%Y-%m-%d', strtotime( '-8 years' ) );
+               $date_today     = strftime( '%Y-%m-%d' );
+               $version_cutoff = ( defined( 'WP_CORE_STABLE_BRANCH' ) ? sprintf( '%0.1f', WP_CORE_STABLE_BRANCH - 0.5 ) : '4.0' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Start building the WP-style search query args
</span><span class="cx" style="display: block; padding: 0 10px">                // They'll be translated to ES format args later
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -384,9 +390,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'orderby'        => $query->get( 'orderby' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'order'          => $query->get( 'order' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        // plugin directory specific:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        #'date_range'    =>  array( 'field' => 'modified', 'gte' => $date_cutoff ),
-                       #'tested_range'  =>  array( 'field' => 'tested', 'gte' => $version_cutoff ),
-                       'filters'                => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // 'date_range'    =>  array( 'field' => 'modified', 'gte' => $date_cutoff ),
+                       // 'tested_range'  =>  array( 'field' => 'tested', 'gte' => $version_cutoff ),
+                       'filters'        => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 array( 'term' => array( 'disabled' => array( 'value' => 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">@@ -399,7 +405,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">                $es_wp_query_args['locale'] = get_locale();
</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">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // You can use this filter to modify the search query parameters, such as controlling the post_type.
</span><span class="cx" style="display: block; padding: 0 10px">                // These arguments are in the format for convert_wp_es_to_es_args(), i.e. WP-style.
</span><span class="cx" style="display: block; padding: 0 10px">                $es_wp_query_args = apply_filters( 'jetpack_search_es_wp_query_args', $es_wp_query_args, $query );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -407,7 +413,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Convert the WP-style args into ES args
</span><span class="cx" style="display: block; padding: 0 10px">                $es_query_args = $this->convert_wp_es_to_es_args( $es_wp_query_args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                //Only trust ES to give us IDs, not the content since it is a mirror
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Only trust ES to give us IDs, not the content since it is a mirror
</ins><span class="cx" style="display: block; padding: 0 10px">                 $es_query_args['fields'] = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'slug',
</span><span class="cx" style="display: block; padding: 0 10px">                        'support_threads_resolved',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -421,11 +427,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'rating',
</span><span class="cx" style="display: block; padding: 0 10px">                        'plugin_modified',
</span><span class="cx" style="display: block; padding: 0 10px">                        'post_id',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'blog_id'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'blog_id',
</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 filter is harder to use if you're unfamiliar with ES but it allows complete control over the query
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $es_query_args = apply_filters( 'jetpack_search_es_query_args', $es_query_args, $query );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $es_query_args      = apply_filters( 'jetpack_search_es_query_args', $es_query_args, $query );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->search_query = $es_query_args;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Do the actual search query!
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -446,26 +452,30 @@
</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">        public function filter__found_posts_query( $sql, $query ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( ! $query->is_main_query() || ! $query->is_search() )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! $query->is_main_query() || ! $query->is_search() ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return $sql;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return '';
</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">        public function filter__found_posts( $found_posts, $query ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( ! $query->is_main_query() || ! $query->is_search() )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! $query->is_main_query() || ! $query->is_search() ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return $found_posts;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return $this->found_posts;
</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">        public function action__pre_get_posts( $query ) {
</span><span class="cx" style="display: block; padding: 0 10px">                // Treat an API request for the recommended tab as a search, even though there is no search string in the query
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( defined( 'WPORG_IS_API' ) && WPORG_IS_API && isset( $query->query['browse'] ) && $query->query['browse'] === 'recommended' )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( defined( 'WPORG_IS_API' ) && WPORG_IS_API && isset( $query->query['browse'] ) && $query->query['browse'] === 'recommended' ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $query->is_search = true;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</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 ( ! $query->is_main_query() || ! $query->is_search() )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! $query->is_main_query() || ! $query->is_search() ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $query->set( 'cache_results', false );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -489,8 +499,9 @@
</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">                // Restore the original blog, if we're not on it
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( get_current_blog_id() !== $this->original_blog_id )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( get_current_blog_id() !== $this->original_blog_id ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         switch_to_blog( $this->original_blog_id );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</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 action__the_post( &$post ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -498,37 +509,43 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post = $this->get_post_by_index( $wp_query->current_post );
</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 ( ! $post )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! $post ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Do some additional setup that normally happens in setup_postdata(), but gets skipped
</span><span class="cx" style="display: block; padding: 0 10px">                // in this plugin because the posts hadn't yet been inflated.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $authordata     = get_userdata( $post->post_author );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $authordata = get_userdata( $post->post_author );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $currentday     = mysql2date('d.m.y', $post->post_date, false);
-               $currentmonth   = mysql2date('m', $post->post_date, false);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $currentday   = mysql2date( 'd.m.y', $post->post_date, false );
+               $currentmonth = mysql2date( 'm', $post->post_date, 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">-                $numpages = 1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $numpages  = 1;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $multipage = 0;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $page = get_query_var('page');
-               if ( ! $page )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $page      = get_query_var( 'page' );
+               if ( ! $page ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $page = 1;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( is_single() || is_page() || is_feed() )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         }
+               if ( is_single() || is_page() || is_feed() ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $more = 1;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px">                 $content = $post->post_content;
</span><span class="cx" style="display: block; padding: 0 10px">                if ( false !== strpos( $content, '<!--nextpage-->' ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( $page > 1 )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( $page > 1 ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $more = 1;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        }
</ins><span class="cx" style="display: block; padding: 0 10px">                         $content = str_replace( "\n<!--nextpage-->\n", '<!--nextpage-->', $content );
</span><span class="cx" style="display: block; padding: 0 10px">                        $content = str_replace( "\n<!--nextpage-->", '<!--nextpage-->', $content );
</span><span class="cx" style="display: block; padding: 0 10px">                        $content = str_replace( "<!--nextpage-->\n", '<!--nextpage-->', $content );
</span><span class="cx" style="display: block; padding: 0 10px">                        // Ignore nextpage at the beginning of the content.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( 0 === strpos( $content, '<!--nextpage-->' ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( 0 === strpos( $content, '<!--nextpage-->' ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $content = substr( $content, 15 );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $pages = explode('<!--nextpage-->', $content);
-                       $numpages = count($pages);
-                       if ( $numpages > 1 )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 }
+                       $pages    = explode( '<!--nextpage-->', $content );
+                       $numpages = count( $pages );
+                       if ( $numpages > 1 ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $multipage = 1;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        }
</ins><span class="cx" style="display: block; padding: 0 10px">                 } else {
</span><span class="cx" style="display: block; padding: 0 10px">                        $pages = array( $post->post_content );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -542,8 +559,9 @@
</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">        public function get_search_result( $raw = false ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $raw )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( $raw ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return $this->search_result;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return ( ! empty( $this->search_result ) && ! is_wp_error( $this->search_result ) && is_array( $this->search_result ) && ! empty( $this->search_result['results'] ) ) ? $this->search_result['results'] : false;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -552,10 +570,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                return $this->search_query;
</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><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ //
</ins><span class="cx" style="display: block; padding: 0 10px">         // Standard Filters Applied to the search query
</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">         public function filter__add_date_filter_to_query( $es_wp_query_args, $query ) {
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $query->get( 'year' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $query->get( 'monthnum' ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -579,18 +596,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $date_end   = $query->get( 'year' ) . '-12-31 23:59:59';
</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">-                        $es_wp_query_args['date_range'] = array( 'field' => 'date', 'gte' => $date_start, 'lte' => $date_end );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $es_wp_query_args['date_range'] = array(
+                               'field' => 'date',
+                               'gte'   => $date_start,
+                               'lte'   => $date_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">                return $es_wp_query_args;
</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><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ //
</ins><span class="cx" style="display: block; padding: 0 10px">         // Helpers for manipulating queries
</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">         // Someday: Should we just use ES_WP_Query???
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">         // Converts WP-style args to ES args
</span><span class="cx" style="display: block; padding: 0 10px">        function convert_wp_es_to_es_args( $args ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $defaults = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -607,8 +626,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'author_name'    => array(), // string or an array
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        'date_range'     => null,    // array( 'field' => 'date', 'gt' => 'YYYY-MM-dd', 'lte' => 'YYYY-MM-dd' ); date formats: 'YYYY-MM-dd' or 'YYYY-MM-dd HH:MM:SS'
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'tested_range'   => null,
-                       'filters'                => array(),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'tested_range'   => null,
+                       'filters'        => array(),
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        'orderby'        => null,    // Defaults to 'relevance' if query is set, otherwise 'date'. Pass an array for multiple orders.
</span><span class="cx" style="display: block; padding: 0 10px">                        'order'          => 'DESC',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -636,8 +655,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'size'    => absint( $args['posts_per_page'] ),
</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">-                //TODO: limit size to 15
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // TODO: limit size to 15
</ins><span class="cx" style="display: block; padding: 0 10px">                 // ES "from" arg (offset)
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $args['offset'] ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $es_query_args['from'] = absint( $args['offset'] );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -645,14 +663,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $es_query_args['from'] = max( 0, ( absint( $args['paged'] ) - 1 ) * $es_query_args['size'] );
</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 ( !is_array( $args['author_name'] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! is_array( $args['author_name'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $args['author_name'] = array( $args['author_name'] );
</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">                // ES stores usernames, not IDs, so transform
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! empty( $args['author'] ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( !is_array( $args['author'] ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! is_array( $args['author'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $args['author'] = array( $args['author'] );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        }
</ins><span class="cx" style="display: block; padding: 0 10px">                         foreach ( $args['author'] as $author ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $user = get_user_by( 'id', $author );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -662,7 +681,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">-                //////////////////////////////////////////////////
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         //
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Build the filters from the query elements.
</span><span class="cx" style="display: block; padding: 0 10px">                // Filters rock because they are cached from one query to the next
</span><span class="cx" style="display: block; padding: 0 10px">                // but they are cached as individual filters, rather than all combined together.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -670,8 +689,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $filters = array();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $args['post_type'] ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( !is_array( $args['post_type'] ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! is_array( $args['post_type'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $args['post_type'] = array( $args['post_type'] );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        }
</ins><span class="cx" style="display: block; padding: 0 10px">                         $filters[] = array( 'terms' => array( 'post_type' => $args['post_type'] ) );
</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">@@ -679,13 +699,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $filters[] = array( 'terms' => array( 'author_login' => $args['author_name'] ) );
</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( $args['date_range'] ) && isset( $args['date_range']['field'] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! empty( $args['date_range'] ) && isset( $args['date_range']['field'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $field = $args['date_range']['field'];
</span><span class="cx" style="display: block; padding: 0 10px">                        unset( $args['date_range']['field'] );
</span><span class="cx" style="display: block; padding: 0 10px">                        $filters[] = array( 'range' => array( $field => $args['date_range'] ) );
</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( $args['tested_range'] ) && isset( $args['tested_range']['field'] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! empty( $args['tested_range'] ) && isset( $args['tested_range']['field'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $field = $args['tested_range']['field'];
</span><span class="cx" style="display: block; padding: 0 10px">                        unset( $args['tested_range']['field'] );
</span><span class="cx" style="display: block; padding: 0 10px">                        $filters[] = array( 'range' => array( $field => $args['tested_range'] ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -720,7 +740,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $args['locale'] && $args['locale'] !== 'en' && substr( $args['locale'], 0, 3 ) !== 'en_' ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $locale = $args['locale'];
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        //Because most plugins don't have any translations we need to
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Because most plugins don't have any translations we need to
</ins><span class="cx" style="display: block; padding: 0 10px">                         // correct for the very low scores that locale-specific fields.
</span><span class="cx" style="display: block; padding: 0 10px">                        // end up getting. This is caused by the average field length being
</span><span class="cx" style="display: block; padding: 0 10px">                        // very close to zero and thus the BM25 alg discounts fields that are
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -728,12 +748,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        //
</span><span class="cx" style="display: block; padding: 0 10px">                        // As of 2017-01-23 it looked like we were off by about 10,000x,
</span><span class="cx" style="display: block; padding: 0 10px">                        // so rather than 0.1 we use a much smaller multiplier of en content
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $en_boost = 0.00001;
-                       $matching_fields = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $en_boost             = 0.00001;
+                       $matching_fields      = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'all_content_' . $locale,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'all_content_en^' . $en_boost
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'all_content_en^' . $en_boost,
</ins><span class="cx" style="display: block; padding: 0 10px">                         );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $boost_phrase_fields = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $boost_phrase_fields  = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'title_' . $locale,
</span><span class="cx" style="display: block; padding: 0 10px">                                'excerpt_' . $locale,
</span><span class="cx" style="display: block; padding: 0 10px">                                'description_' . $locale,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -742,11 +762,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'description_en^' . $en_boost,
</span><span class="cx" style="display: block; padding: 0 10px">                                'taxonomy.plugin_tags.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">-                        $boost_ngram_fields = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $boost_ngram_fields   = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'title_' . $locale . '.ngram',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'title_en.ngram^' . $en_boost
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'title_en.ngram^' . $en_boost,
</ins><span class="cx" style="display: block; padding: 0 10px">                         );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $boost_title_fields = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $boost_title_fields   = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'title_' . $locale,
</span><span class="cx" style="display: block; padding: 0 10px">                                'title_en^' . $en_boost,
</span><span class="cx" style="display: block; padding: 0 10px">                                'slug_text',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -759,19 +779,19 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'taxonomy.plugin_tags.name',
</span><span class="cx" style="display: block; padding: 0 10px">                        );
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $matching_fields = array(
-                               'all_content_en'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $matching_fields      = array(
+                               'all_content_en',
</ins><span class="cx" style="display: block; padding: 0 10px">                         );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $boost_phrase_fields = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $boost_phrase_fields  = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'title_en',
</span><span class="cx" style="display: block; padding: 0 10px">                                'excerpt_en',
</span><span class="cx" style="display: block; padding: 0 10px">                                'description_en',
</span><span class="cx" style="display: block; padding: 0 10px">                                'taxonomy.plugin_tags.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">-                        $boost_ngram_fields = array(
-                               'title_en.ngram'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $boost_ngram_fields   = array(
+                               'title_en.ngram',
</ins><span class="cx" style="display: block; padding: 0 10px">                         );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $boost_title_fields = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $boost_title_fields   = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'title_en',
</span><span class="cx" style="display: block; padding: 0 10px">                                'slug_text',
</span><span class="cx" style="display: block; padding: 0 10px">                        );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -781,21 +801,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'taxonomy.plugin_tags.name',
</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><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               //
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Build the query - potentially extracting more filters
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                //  TODO: add auto phrase searching
-               //  TODO: add fuzzy searching to correct for spelling mistakes
-               //  TODO: boost title, tag, and category matches
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // TODO: add auto phrase searching
+               // TODO: add fuzzy searching to correct for spelling mistakes
+               // TODO: boost title, tag, and category matches
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( $args['query'] ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $analyzer = Jetpack_Search::get_analyzer_name( $this->blog_lang );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $query = array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $query    = array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'bool' => array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'must' => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'must'   => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 'multi_match' => array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        'query'  => $args['query'],
-                                                       'fields' => $matching_fields,
-                                                       'boost'  => 0.1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 'query'    => $args['query'],
+                                                       'fields'   => $matching_fields,
+                                                       'boost'    => 0.1,
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         'operator' => 'and',
</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">@@ -804,32 +824,32 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                        'multi_match' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                                'query'  => $args['query'],
</span><span class="cx" style="display: block; padding: 0 10px">                                                                'fields' => $boost_phrase_fields,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                'type'  => 'phrase',
-                                                               'boost' => 2
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         'type'   => 'phrase',
+                                                               'boost'  => 2,
</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">                                                array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                        'multi_match' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                                'query'  => $args['query'],
</span><span class="cx" style="display: block; padding: 0 10px">                                                                'fields' => $boost_ngram_fields,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                'type'  => 'phrase',
-                                                               'boost' => 0.2
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         'type'   => 'phrase',
+                                                               'boost'  => 0.2,
</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">                                                array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                        'multi_match' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                                'query'  => $args['query'],
</span><span class="cx" style="display: block; padding: 0 10px">                                                                'fields' => $boost_title_fields,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                'type'  => 'best_fields',
-                                                               'boost' => 2
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         'type'   => 'best_fields',
+                                                               'boost'  => 2,
</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">                                                array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                        'multi_match' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                                'query'  => $args['query'],
</span><span class="cx" style="display: block; padding: 0 10px">                                                                'fields' => $boost_content_fields,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                'type'  => 'best_fields',
-                                                               'boost' => 2
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         'type'   => 'best_fields',
+                                                               'boost'  => 2,
</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">                                                array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -839,8 +859,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                                        'author',
</span><span class="cx" style="display: block; padding: 0 10px">                                                                        '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">-                                                                'type'  => 'best_fields',
-                                                               'boost' => 2
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         'type'   => 'best_fields',
+                                                               'boost'  => 2,
</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">@@ -853,7 +873,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $args['orderby'] = array( 'relevance' );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $query = array( 'match_all' => array() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $query                  = array( 'match_all' => array() );
</ins><span class="cx" style="display: block; padding: 0 10px">                         $es_query_args['query'] = Jetpack_Search::score_query_by_recency( $query );
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( ! $args['orderby'] ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $args['orderby'] = array( 'date' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -876,25 +896,25 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        // Translate orderby from WP field to ES field
</span><span class="cx" style="display: block; padding: 0 10px">                        // todo: add support for sorting by title, num likes, num comments, num views, etc
</span><span class="cx" style="display: block; padding: 0 10px">                        switch ( $orderby ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'relevance' :
-                                       //never order by score ascending
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'relevance':
+                                       // never order by score ascending
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $es_query_args['sort'][] = array( '_score' => array( 'order' => 'desc' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'date' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'date':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $es_query_args['sort'][] = array( 'date' => array( 'order' => $args['order'] ) );
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'ID' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'ID':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $es_query_args['sort'][] = array( 'id' => array( 'order' => $args['order'] ) );
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                case 'author' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         case 'author':
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $es_query_args['sort'][] = array( 'author.raw' => array( 'order' => $args['order'] ) );
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</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( $es_query_args['sort'] ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( empty( $es_query_args['sort'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         unset( $es_query_args['sort'] );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><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">                 if ( ! empty( $filters ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $es_query_args['filter'] = array( 'and' => $filters );
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -910,23 +930,24 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $analyzer = $lang_code . '_analyzer';
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><span class="cx" style="display: block; padding: 0 10px">                        $split_lang = explode( '-', $lang_code );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( in_array( $split_lang[0], Jetpack_Search::$analyzed_langs ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( in_array( $split_lang[0], Jetpack_Search::$analyzed_langs ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $analyzer = $split_lang[0] . '_analyzer';
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        }
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                return $analyzer;
</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><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ //
</ins><span class="cx" style="display: block; padding: 0 10px">         // ES Filter Manipulation
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">         /*
</span><span class="cx" style="display: block; padding: 0 10px">         * And an existing filter object with a list of additional filters.
</span><span class="cx" style="display: block; padding: 0 10px">         *   Attempts to optimize the filters somewhat.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static function and_es_filters( $curr_filter, $filters ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( !is_array( $curr_filter ) || isset( $curr_filter['match_all'] ) ) {
-                       if ( 1 == count( $filters ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! is_array( $curr_filter ) || isset( $curr_filter['match_all'] ) ) {
+                       if ( 1 == count( $filters ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 return $filters[0];
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        return array( 'and' => $filters );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -934,88 +955,89 @@
</span><span class="cx" style="display: block; padding: 0 10px">                return array( 'and' => array_merge( array( $curr_filter ), $filters ) );
</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><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ //
</ins><span class="cx" style="display: block; padding: 0 10px">         // ES Query Manipulation
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">         public static function score_query_by_recency( $query ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                //Newer content gets weighted slightly higher
-               $date_scale = '360d';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Newer content gets weighted slightly higher
+               $date_scale  = '360d';
</ins><span class="cx" style="display: block; padding: 0 10px">                 $date_offset = '180d';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $date_decay = 0.5;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $date_decay  = 0.5;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $date_origin = date( 'Y-m-d' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'filtered' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'query' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'function_score' => array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'query' => $query,
-                                               'functions' => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'query'      => $query,
+                                               'functions'  => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                'exp'=> array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         'exp' => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                         'plugin_modified' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                                                'origin' => $date_origin,
</span><span class="cx" style="display: block; padding: 0 10px">                                                                                'offset' => $date_offset,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                                'scale' => $date_scale,
-                                                                               'decay' => $date_decay,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                         'scale'  => $date_scale,
+                                                                               'decay'  => $date_decay,
</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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        array( 
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                 'exp' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                                        'tested' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                                                'origin' => sprintf( '%0.1f', WP_CORE_STABLE_BRANCH ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                                                'offset' => 0.1,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                                'scale' => 0.4,
-                                                                               'decay' => 0.6,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                         'scale'  => 0.4,
+                                                                               'decay'  => 0.6,
</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">                                                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                                'field_value_factor' => array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                        'field' => 'active_installs',
-                                                                       'factor' => 0.375,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 'field'    => 'active_installs',
+                                                                       'factor'   => 0.375,
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                         'modifier' => 'log2p',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                        'missing' => 1,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 'missing'  => 1,
</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">                                                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                //there aren't that many plugins with more than 1 million (6 total)
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         // there aren't that many plugins with more than 1 million (6 total)
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                 // we don't need to differentiate them as much
</span><span class="cx" style="display: block; padding: 0 10px">                                                                'filter' => array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                        'range' => array( 'active_installs' => array(
-                                                                               'lte' => 1000000
-                                                                       ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 'range' => array(
+                                                                               'active_installs' => array(
+                                                                                       'lte' => 1000000,
+                                                                               ),
+                                                                       ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                 ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                'exp' => array(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         'exp'    => array(
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                         'active_installs' => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                                                'origin' => 1000000,
</span><span class="cx" style="display: block; padding: 0 10px">                                                                                'offset' => 0,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                                'scale' => 900000,
-                                                                               'decay' => 0.75,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                         'scale'  => 900000,
+                                                                               'decay'  => 0.75,
</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">                                                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                                'field_value_factor' => array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                        'field' => 'support_threads_resolved',
-                                                                       'factor' => 0.25,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 'field'    => 'support_threads_resolved',
+                                                                       'factor'   => 0.25,
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                         'modifier' => 'log2p',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                        'missing' => 0.5,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 'missing'  => 0.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">                                                        array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                                'field_value_factor' => array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                        'field' => 'rating',
-                                                                       'factor' => 0.25,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 'field'    => 'rating',
+                                                                       'factor'   => 0.25,
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                         'modifier' => 'sqrt',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                        'missing' => 2.5,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 'missing'  => 2.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">                                                ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                'boost_mode' => 'multiply',
</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">+                                 ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 ),
</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">+                 ),
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryphpcsxmldist"></a>
<div class="addfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Added: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/phpcs.xml.dist</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/phpcs.xml.dist                          (rev 0)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/phpcs.xml.dist    2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -0,0 +1,24 @@
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+<?xml version="1.0"?>
+<ruleset name="Plugin Directory">
+       <file>.</file>
+
+       <!-- Exclude external libraries -->
+       <exclude-pattern>/libs/geopattern-1.1.0/*</exclude-pattern>
+       <exclude-pattern>/libs/i18n-tools/*</exclude-pattern>
+       <exclude-pattern>/libs/michelf-php-markdown-1.6.0/*</exclude-pattern>
+
+       <!-- Exclude JS/CSS files. -->
+       <exclude-pattern>*.js[x]?</exclude-pattern>
+       <exclude-pattern>*.[s]?css</exclude-pattern>
+
+       <!-- Show sniff codes -->
+       <arg value="s"/>
+
+       <rule ref="WordPress">
+               <exclude name="WordPress.VIP.SlowDBQuery.slow_db_query_meta_key" />
+               <exclude name="WordPress.VIP.FileSystemWritesDisallow" />
+               <exclude name="WordPress.PHP.DiscouragedPHPFunctions.system_calls_exec" />
+               <exclude name="WordPress.PHP.DiscouragedPHPFunctions.system_calls_shell_exec" />
+       </rule>
+       <rule ref="WordPress-Docs" />
+</ruleset>
</ins></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryplugindirectoryphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/plugin-directory.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/plugin-directory.php    2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/plugin-directory.php      2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -21,7 +21,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> define( __NAMESPACE__ . '\PLUGIN_FILE', __FILE__ );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> // Register an Autoloader for all files
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-include __DIR__ . '/class-autoloader.php';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+require __DIR__ . '/class-autoloader.php';
</ins><span class="cx" style="display: block; padding: 0 10px"> Autoloader\register_class_path( __NAMESPACE__, __DIR__ );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> // Instantiate the Plugin Directory
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryreadmeclassparserphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/readme/class-parser.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/readme/class-parser.php 2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/readme/class-parser.php   2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Readme;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Markdown;
</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">@@ -158,10 +159,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        protected function parse_readme( $file ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $contents = file_get_contents( $file );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( preg_match( '!!u', $contents ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( preg_match( '!!u', $contents ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $contents = preg_split( '!\R!u', $contents );
</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 {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $contents = preg_split( '!\R!', $contents ); // regex failed due to invalid UTF8 in $contents, see #2298
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px">                 $contents = array_map( array( $this, 'strip_newlines' ), $contents );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Strip UTF8 BOM if present.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -211,9 +213,9 @@
</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">-                        $bits = explode( ':', trim( $line ), 2 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $bits                = explode( ':', trim( $line ), 2 );
</ins><span class="cx" style="display: block; padding: 0 10px">                         list( $key, $value ) = $bits;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $key = strtolower( trim( $key, " \t*-\r\n" ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $key                 = strtolower( trim( $key, " \t*-\r\n" ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                         if ( isset( $this->valid_headers[ $key ] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $headers[ $this->valid_headers[ $key ] ] = trim( $value );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -251,7 +253,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        // Handle the many cases of "License: GPLv2 - http://..."
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( empty( $headers['license_uri'] ) && preg_match( '!(https?://\S+)!i', $headers['license'], $url ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $headers['license_uri'] = $url[1];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $headers['license'] = trim( str_replace( $url[1], '', $headers['license'] ), " -*\t\n\r\n" );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $headers['license']     = trim( str_replace( $url[1], '', $headers['license'] ), " -*\t\n\r\n" );
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->license = $headers['license'];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -267,7 +269,7 @@
</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">                        if ( ( '=' === $trimmed[0] && isset( $trimmed[1] ) && '=' === $trimmed[1] ) ||
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                             ( '#' === $trimmed[0] && isset( $trimmed[1] ) && '#' === $trimmed[1] )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                          ( '#' === $trimmed[0] && isset( $trimmed[1] ) && '#' === $trimmed[1] )
</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">                                // Stop after any Markdown heading.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -294,7 +296,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        // Stop only after a ## Markdown header, not a ###.
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( ( '=' === $trimmed[0] && isset( $trimmed[1] ) && '=' === $trimmed[1] ) ||
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                             ( '#' === $trimmed[0] && isset( $trimmed[1] ) && '#' === $trimmed[1] && isset( $trimmed[2] ) && '#' !== $trimmed[2] )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                          ( '#' === $trimmed[0] && isset( $trimmed[1] ) && '#' === $trimmed[1] && isset( $trimmed[2] ) && '#' !== $trimmed[2] )
</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( $section_name ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -311,7 +313,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                // If we encounter an unknown section header, include the provided Title, we'll filter it to other_notes later.
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( ! in_array( $section_name, $this->expected_sections ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $current .= '<h3>' . $section_title . '</h3>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $current     .= '<h3>' . $section_title . '</h3>';
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $section_name = 'other_notes';
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="cx" style="display: block; padding: 0 10px">                                continue;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -333,7 +335,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">                // Suffix the Other Notes section to the description.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( !empty( $this->sections['other_notes'] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! empty( $this->sections['other_notes'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $this->sections['description'] .= "\n" . $this->sections['other_notes'];
</span><span class="cx" style="display: block; padding: 0 10px">                        unset( $this->sections['other_notes'] );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -347,7 +349,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Display FAQs as a definition list.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( isset( $this->sections['faq'] ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $this->faq = $this->parse_section( $this->sections['faq'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $this->faq             = $this->parse_section( $this->sections['faq'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                         $this->sections['faq'] = '';
</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,11 +357,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $this->has_unique_installation_instructions() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->faq = array_merge(
</span><span class="cx" style="display: block; padding: 0 10px">                                array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        __( 'Installation Instructions', 'wporg-plugins' ) => $this->sections['installation']
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 __( 'Installation Instructions', 'wporg-plugins' ) => $this->sections['installation'],
</ins><span class="cx" style="display: block; padding: 0 10px">                                 ),
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->faq
</span><span class="cx" style="display: block; padding: 0 10px">                        );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        //unset( $this->sections['installation'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // unset( $this->sections['installation'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                         $this->sections['faq'] = ''; // Ensure it's set as per faq section above.
</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,7 +402,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $this->faq ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->sections['faq'] .= "\n<dl>\n";
</span><span class="cx" style="display: block; padding: 0 10px">                                foreach ( $this->faq as $question => $answer ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $question_slug = sanitize_title_with_dashes( $question );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $question_slug          = sanitize_title_with_dashes( $question );
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $this->sections['faq'] .= "<dt id='{$question_slug}'>{$question}</dt>\n<dd>{$answer}</dd>\n";
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->sections['faq'] .= "\n</dl>\n";
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -496,14 +498,12 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $text = force_balance_tags( $text );
</span><span class="cx" style="display: block; padding: 0 10px">                // TODO: make_clickable() will act inside shortcodes.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                //$text = make_clickable( $text );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // $text = make_clickable( $text );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $text = wp_kses( $text, $allowed );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // wpautop() will eventually replace all \n's with <br>s, and that isn't what we want (The text may be line-wrapped in the readme, we don't want that, we want paragraph-wrapped text)
</span><span class="cx" style="display: block; padding: 0 10px">                // TODO: This incorrectly also applies within `<code>` tags which we don't want either.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                //$text = preg_replace( "/(?<![> ])\n/", ' ', $text );
-
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // $text = preg_replace( "/(?<![> ])\n/", ' ', $text );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $text = trim( $text );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return $text;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -515,7 +515,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @param string $text
</span><span class="cx" style="display: block; padding: 0 10px">         * @return string
</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 sanitize_text( $text ) { // not fancy
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ protected function sanitize_text( $text ) {
+               // not fancy
</ins><span class="cx" style="display: block; padding: 0 10px">                 $text = strip_tags( $text );
</span><span class="cx" style="display: block; padding: 0 10px">                $text = esc_html( $text );
</span><span class="cx" style="display: block; padding: 0 10px">                $text = trim( $text );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -582,7 +583,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return array
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        protected function parse_section( $lines ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $key = $value = '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $key    = $value = '';
</ins><span class="cx" style="display: block; padding: 0 10px">                 $return = array();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! is_array( $lines ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -605,7 +606,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $line_count = count( $lines );
</span><span class="cx" style="display: block; padding: 0 10px">                for ( $i = 0; $i < $line_count; $i++ ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $line = &$lines[ $i ];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $line    = &$lines[ $i ];
</ins><span class="cx" style="display: block; padding: 0 10px">                         $trimmed = &$trimmed_lines[ $i ];
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( ! $trimmed ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $value .= "\n";
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -626,7 +627,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                $value = '';
</span><span class="cx" style="display: block; padding: 0 10px">                                // Trim off the first character of the line, as we know that's the heading style we're expecting to remove.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $key   = trim( $line, $trimmed[0] . " \t" );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $key = trim( $line, $trimmed[0] . " \t" );
</ins><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></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryreadmeclassvalidatorphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/readme/class-validator.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/readme/class-validator.php      2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/readme/class-validator.php        2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Readme;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools\Filesystem;
</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">@@ -33,7 +34,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        /* Translators: File name; */
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = sprintf( __( 'URL must end in %s!', 'wporg-plugins' ), '<code>readme.txt</code>' );
</span><span class="cx" style="display: block; padding: 0 10px">                        return array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'errors' => array( $error )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'errors' => array( $error ),
</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">@@ -41,7 +42,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! $readme_text = wp_remote_retrieve_body( $readme ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Invalid readme.txt URL.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px">                        return array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'errors' => array( $error )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'errors' => array( $error ),
</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">@@ -63,7 +64,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Fatal errors.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( empty( $readme->name ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        /* Translators: Plugin header tag; */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $errors[] = sprintf( __( "No plugin name detected. Plugin names look like: %s", 'wporg-plugins' ), '<code>=== Plugin Name ===</code>' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $errors[] = sprintf( __( 'No plugin name detected. Plugin names look like: %s', 'wporg-plugins' ), '<code>=== Plugin Name ===</code>' );
</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">                // Warnings.
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryshortcodesclassdevelopersphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-developers.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-developers.php 2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-developers.php   2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Shortcodes;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Plugin_I18n;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14,9 +15,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return string
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        static function display() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $post   = get_post();
-               $slug   = $post->post_name;
-               $title  = get_the_title( $post );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $post  = get_post();
+               $slug  = $post->post_name;
+               $title = get_the_title( $post );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $output = '<div class="plugin-contributors">';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -43,7 +44,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! empty( $locales ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $output .= '<p>';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $wp_locales = wp_list_pluck( $locales,'wp_locale' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $wp_locales    = wp_list_pluck( $locales, 'wp_locale' );
</ins><span class="cx" style="display: block; padding: 0 10px">                         $locales_count = get_sites( [
</span><span class="cx" style="display: block; padding: 0 10px">                                'network_id' => WPORG_GLOBAL_NETWORK_ID,
</span><span class="cx" style="display: block; padding: 0 10px">                                'public'     => 1,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -75,7 +76,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">-                $output .= '<p>' . sprintf( '<a href="%1$s">%2$s</a>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $output .= '<p>' . sprintf(
+                       '<a href="%1$s">%2$s</a>',
</ins><span class="cx" style="display: block; padding: 0 10px">                         esc_url( 'https://translate.wordpress.org/projects/wp-plugins/' . $slug ),
</span><span class="cx" style="display: block; padding: 0 10px">                        sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                /* translators: %s: plugin name */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -84,7 +86,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="cx" style="display: block; padding: 0 10px">                ) . '</p>';
</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">                 $output .= '<h3>' . __( 'Interested in development?', 'wporg-plugins' ) . '</h3>';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( is_user_logged_in() ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -114,6 +115,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        ) . '</p>';
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">                $output .= '</div>';
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 return $output;
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryshortcodesclassreadmevalidatorphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-readme-validator.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-readme-validator.php   2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-readme-validator.php     2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Shortcodes;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Readme\Validator;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> class Readme_Validator {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20,19 +21,27 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        <form method="post" action="">
</span><span class="cx" style="display: block; padding: 0 10px">                                <p>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <input type="text" name="readme_url" size="70" placeholder="https://" value="<?php if ( isset( $_POST['readme_url'] ) ) { echo esc_attr( $_POST['readme_url'] ); } ?>" />
-                                       <input type="submit" value="<?php esc_attr_e( 'Validate!', 'wporg-plugins' ); ?>" />
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <input type="text" name="readme_url" size="70" placeholder="https://" value="
+                                       <?php
+                                       if ( isset( $_POST['readme_url'] ) ) {
+                                               echo esc_attr( $_POST['readme_url'] );
+                                       }
+                                       ?>
+                                       " />
+                                       <input type="submit" class="button button-secondary" value="<?php esc_attr_e( 'Validate!', 'wporg-plugins' ); ?>" />
</ins><span class="cx" style="display: block; padding: 0 10px">                                 </p>
</span><span class="cx" style="display: block; padding: 0 10px">                        </form>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        <p><?php _e( '... or paste your <code>readme.txt</code> here:', 'wporg-plugins' ); ?></p>
</span><span class="cx" style="display: block; padding: 0 10px">                        <form method="post" action="">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                <textarea rows="20" cols="100" name="readme_contents" placeholder="=== Plugin Name ==="><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <textarea rows="20" cols="100" name="readme_contents" placeholder="=== Plugin Name ===">
+                                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                         if ( isset( $_POST['readme_contents'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                                echo esc_textarea( wp_unslash( $_POST['readme_contents'] ) );
</span><span class="cx" style="display: block; padding: 0 10px">                                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                ?></textarea>
-                               <p><input type="submit" value="<?php esc_attr_e( 'Validate!', 'wporg-plugins' ); ?>" /></p>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 ?>
+                               </textarea>
+                               <p><input type="submit" class="button button-secondary" value="<?php esc_attr_e( 'Validate!', 'wporg-plugins' ); ?>" /></p>
</ins><span class="cx" style="display: block; padding: 0 10px">                         </form>
</span><span class="cx" style="display: block; padding: 0 10px">                </div>
</span><span class="cx" style="display: block; padding: 0 10px">                <?php
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -42,10 +51,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Validates readme.txt contents and adds feedback.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        protected static function validate_readme() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if (  !empty( $_POST['readme_url'] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! empty( $_POST['readme_url'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $errors = Validator::instance()->validate_url( wp_unslash( $_POST['readme_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">-                } elseif ( !empty( $_POST['readme_contents'] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         } elseif ( ! empty( $_POST['readme_contents'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $errors = Validator::instance()->validate_content( wp_unslash( $_REQUEST['readme_contents'] ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -57,10 +66,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $error_types = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'errors'   => __( 'Fatal Errors:', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'warnings' => __( 'Warnings:', 'wporg-plugins' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'notes'    => __( 'Notes:', 'wporg-plugins' )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'notes'    => __( 'Notes:', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                 );
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $error_types as $field => $warning_label ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( !empty( $errors[ $field ] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! empty( $errors[ $field ] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $output .= "{$warning_label}\n<ul class='{$field} error'>\n";
</span><span class="cx" style="display: block; padding: 0 10px">                                foreach ( $errors[ $field ] as $notice ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        $output .= "<li>{$notice}</li>\n";
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -71,7 +80,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( empty( $output ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $output .= '<div class="notice notice-success notice-alt">';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $output .= '<p>' . __( 'Congratulations! No errors found.', 'wporg-plugins' ) .'</p>' ;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $output .= '<p>' . __( 'Congratulations! No errors found.', 'wporg-plugins' ) . '</p>';
</ins><span class="cx" style="display: block; padding: 0 10px">                         $output .= '</div>';
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryshortcodesclassreviewsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-reviews.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-reviews.php    2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-reviews.php      2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Shortcodes;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Template;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14,8 +15,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return string
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        static function display() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $reviews = Tools::get_plugin_reviews( get_post()->post_name );
-               $ratings = get_post_meta( get_the_ID(), 'ratings', true ) ?: array();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $reviews      = Tools::get_plugin_reviews( get_post()->post_name );
+               $ratings      = get_post_meta( get_the_ID(), 'ratings', true ) ?: array();
</ins><span class="cx" style="display: block; padding: 0 10px">                 $review_count = array_sum( $ratings );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( empty( $reviews ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -37,7 +38,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                <header>
</span><span class="cx" style="display: block; padding: 0 10px">                                                        <?php if ( ! empty( $review->ID ) ) : ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                                                <h3 class="review-title"><a class="url" href="<?php echo esc_url( add_query_arg( array( 'p' => $review->ID ), 'https://wordpress.org/support/plugin/' ) ); ?>"><?php echo get_the_title( $review ); ?></a></h3>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        <?php else: ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 <?php else : ?>
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                 <h3 class="review-title"><?php echo get_the_title( $review ); ?></h3>
</span><span class="cx" style="display: block; padding: 0 10px">                                                        <?php endif; ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                                        <?php echo Template::dashicons_stars( $review->post_rating ); ?>
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryshortcodesclassscreenshotsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-screenshots.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-screenshots.php        2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-screenshots.php  2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Shortcodes;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Template;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Plugin_i18n;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -19,7 +20,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // All indexed from 1.
</span><span class="cx" style="display: block; padding: 0 10px">                $descriptions = get_post_meta( $plugin->ID, 'screenshots', true ) ?: array();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $screen_shots = get_post_meta( $plugin->ID, 'assets_screenshots', true ) ?: array();;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $screen_shots = get_post_meta( $plugin->ID, 'assets_screenshots', true ) ?: array();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( empty( $screen_shots ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        return '';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -32,7 +33,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                 * The image numbers are stored within the 'resolution' key.
</span><span class="cx" style="display: block; padding: 0 10px">                 */
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $screen_shots as $image ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $screen_shot = sprintf( '<a href="%1$s" rel="nofollow"><img class="screenshot" src="%1$s" alt="" /></a>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $screen_shot = sprintf(
+                               '<a href="%1$s" rel="nofollow"><img class="screenshot" src="%1$s" alt="" /></a>',
</ins><span class="cx" style="display: block; padding: 0 10px">                                 esc_url( Template::get_asset_url( $plugin, $image ) )
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryshortcodesclassuploadhandlerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload-handler.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload-handler.php     2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload-handler.php       2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Shortcodes;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Readme\Parser;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Plugin_Directory;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools\Filesystem;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -43,10 +44,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Get set up to run tests on the uploaded plugin.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function __construct() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
-               require_once( ABSPATH . 'wp-admin/includes/image.php' );
-               require_once( ABSPATH . 'wp-admin/includes/file.php' );
-               require_once( ABSPATH . 'wp-admin/includes/media.php' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         require_once ABSPATH . 'wp-admin/includes/plugin.php';
+               require_once ABSPATH . 'wp-admin/includes/image.php';
+               require_once ABSPATH . 'wp-admin/includes/file.php';
+               require_once ABSPATH . 'wp-admin/includes/media.php';
</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">@@ -57,14 +58,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return string|WP_Error Confirmation message on success, WP_Error object on failure.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function process_upload() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $zip_file = $_FILES['zip_file']['tmp_name'];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $zip_file         = $_FILES['zip_file']['tmp_name'];
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->plugin_dir = Filesystem::unzip( $zip_file );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $plugin_files = Filesystem::list_files( $this->plugin_dir, true /* Recursive */, '!\.php$!i', 1 /* Depth */ );
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $plugin_files as $plugin_file ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $plugin_data = get_plugin_data( $plugin_file, false, false ); // No markup/translation needed.
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( ! empty( $plugin_data['Name'] ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $this->plugin = $plugin_data;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $this->plugin      = $plugin_data;
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $this->plugin_root = dirname( $plugin_file );
</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">@@ -103,7 +104,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Make sure it doesn't use a slug deemed not to be used by the public.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $this->has_reserved_slug() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: The plugin has a reserved name.', 'wporg-plugins' );
</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">+
</ins><span class="cx" style="display: block; padding: 0 10px">                         return new \WP_Error( 'reserved_name', $error . ' ' . sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                /* translators: 1: plugin slug, 2: 'Plugin Name:' */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'Your chosen plugin name - %1$s - has been reserved for use by WordPress. Please change the %2$s line in your main plugin file and upload it again.', 'wporg-plugins' ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -117,7 +118,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Is there already a plugin with the same slug by a different author?
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $plugin_post && $plugin_post->post_author != get_current_user_id() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: The plugin already exists.', 'wporg-plugins' );
</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">+
</ins><span class="cx" style="display: block; padding: 0 10px">                         return new \WP_Error( 'already_exists', $error . ' ' . sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                /* translators: 1: plugin slug, 2: 'Plugin Name:' */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'There is already a plugin called %1$s by a different author. Please change the %2$s line in your main plugin file and upload it again.', 'wporg-plugins' ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -129,7 +130,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Is there already a plugin with the same slug by the same author?
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $plugin_post ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: The plugin has already been submitted.', 'wporg-plugins' );
</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">+
</ins><span class="cx" style="display: block; padding: 0 10px">                         return new \WP_Error( 'already_submitted', $error . ' ' . sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                /* translators: 1: plugin slug, 2: plugins@wordpress.org */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'You have already submitted a plugin called %1$s. Please be patient and wait for a review. If you have made a mistake, please email <a href="mailto:%2$s">%2$s</a> and let us know.', 'wporg-plugins' ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -162,7 +163,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( preg_match( '|[^\d\.]|', $this->plugin['Version'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: Plugin versions are expected to be numbers.', 'wporg-plugins' );
</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">+
</ins><span class="cx" style="display: block; padding: 0 10px">                         return new \WP_Error( 'invalid_version', $error . ' ' . sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                /* translators: %s: 'Version:' */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'Version strings can only contain numeric and period characters (like 1.2). Please fix the %s line in your main plugin file and upload the plugin again.', 'wporg-plugins' ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -173,8 +174,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Prevent duplicate URLs.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! empty( $this->plugin['PluginURI'] ) && ! empty( $this->plugin['AuthorURI'] ) && $this->plugin['PluginURI'] == $this->plugin['AuthorURI'] ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: Your plugin and author URIs are the same.', 'wporg-plugins' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        
-                       return new \WP_Error( 'plugin_author_uri', $error . ' ' .
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                       return new \WP_Error(
+                               'plugin_author_uri', $error . ' ' .
</ins><span class="cx" style="display: block; padding: 0 10px">                                 __( 'A plugin URL is a page/site that provides details about this specific plugin. An author URL is a page/site that provides information about the author of the plugin. You are not required to provide both, so pick the one that best applies to your URL.', 'wporg-plugins' )
</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">@@ -182,7 +184,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $readme = $this->find_readme_file();
</span><span class="cx" style="display: block; padding: 0 10px">                if ( empty( $readme ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: The plugin has no readme.', 'wporg-plugins' );
</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">+
</ins><span class="cx" style="display: block; padding: 0 10px">                         return new \WP_Error( 'no_readme', $error . ' ' . sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                /* translators: 1: readme.txt, 2: readme.md */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'The zip file must include a file named %1$s or %2$s. We recommend using %1$s as it will allow you to fully utilize our directory.', 'wporg-plugins' ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -198,7 +200,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! $result ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: The plugin has failed the automated checks.', 'wporg-plugins' );
</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">+
</ins><span class="cx" style="display: block; padding: 0 10px">                         return new \WP_Error( 'failed_checks', $error . ' ' . sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                /* translators: 1: Plugin Check Plugin URL, 2: make.wordpress.org/plugins */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'Please correct the problems with the plugin and upload it again. You can also use the <a href="%1$s">Plugin Check Plugin</a> to test your plugin before uploading. If you have any questions about this please post them to %2$s.', 'wporg-plugins' ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -209,7 +211,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Passed all tests!
</span><span class="cx" style="display: block; padding: 0 10px">                // Let's save everything and get things wrapped up.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 // Create a new post on first-time submissions.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! $plugin_post ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $content = '';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -224,7 +225,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_status'  => 'new',
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_content' => $content,
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_excerpt' => $this->plugin['Description'],
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        //      'tax_input'    => wp_unslash( $_POST['tax_input'] ), // for category selection
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // 'tax_input'    => wp_unslash( $_POST['tax_input'] ), // for category selection
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'meta_input'   => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                        'tested'                   => $readme->tested,
</span><span class="cx" style="display: block; padding: 0 10px">                                        'requires'                 => $readme->requires,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -276,13 +277,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                do_action( 'plugin_upload', $this->plugin, $plugin_post );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                /* translators: 1: plugin name, 2: plugin slug, 3: plugins@wordpress.org */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $message = sprintf( __( 'Thank you for uploading %1$s to the WordPress Plugin Directory. It has been given the initial plugin slug of %2$s, however that is subject to change based on the results of your code review.' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $message = sprintf(
+                       __( 'Thank you for uploading %1$s to the WordPress Plugin Directory. It has been given the initial plugin slug of %2$s, however that is subject to change based on the results of your code review.' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         esc_html( $this->plugin['Name'] ),
</span><span class="cx" style="display: block; padding: 0 10px">                        '<code>' . $this->plugin_slug . '</code>'
</span><span class="cx" style="display: block; padding: 0 10px">                ) . '</p><p>';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                /* translators: 1: plugins@wordpress.org */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $message .= sprintf( __( 'We&rsquo;ve sent you an email verifying this submission. Please make sure to whitelist our email address - <a href="mailto:%1$s">%1$s</a> - to ensure you receive all our communications.' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $message .= sprintf(
+                       __( 'We&rsquo;ve sent you an email verifying this submission. Please make sure to whitelist our email address - <a href="mailto:%1$s">%1$s</a> - to ensure you receive all our communications.' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         'plugins@wordpress.org'
</span><span class="cx" style="display: block; padding: 0 10px">                ) . '</p><p>';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -393,12 +396,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function send_email_notification() {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                /* translators: %s: plugin name */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $email_subject = sprintf( __( '[WordPress Plugin Directory] New Plugin - %s', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $email_subject = sprintf(
+                       __( '[WordPress Plugin Directory] New Plugin - %s', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         $this->plugin['Name']
</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">                /* translators: 1: plugin name, 2: plugin slug */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $email_content = sprintf( __( 'Thank you for uploading %1$s to the WordPress Plugin Directory. We will review your submission as soon as possible and send you a follow up email with the results.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $email_content = sprintf(
+                       __(
+'Thank you for uploading %1$s to the WordPress Plugin Directory. We will review your submission as soon as possible and send you a follow up email with the results.
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> Your plugin has been given the initial slug of %2$s, however this is subject to change based on the results of your review.
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -410,7 +416,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"> The WordPress Plugin Directory Team
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-https://make.wordpress.org/plugins', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+https://make.wordpress.org/plugins', 'wporg-plugins'
+                       ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         $this->plugin['Name'],
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->plugin_slug
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -421,7 +428,6 @@
</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">        // Helper
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">         /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Whitelist zip files to be allowed to be uploaded to the media library.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryshortcodesclassuploadphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php     2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php       2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -54,7 +54,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                && ! $submitted_counts->total
</span><span class="cx" style="display: block; padding: 0 10px">                        ) :
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( UPLOAD_ERR_OK === $_FILES['zip_file']['error'] ) :
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $uploader      = new Upload_Handler;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $uploader      = new Upload_Handler();
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $upload_result = $uploader->process_upload();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        if ( is_wp_error( $upload_result ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -75,56 +75,65 @@
</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">                                <div class="plugin-queue-message notice notice-info notice-alt">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <p><?php
-                                               if ( 1 === ( $plugins->new + $plugins->pending ) ) {
-                                                        _e( 'Currently there is 1 plugin in the review queue.', 'wporg-plugins' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <p>
+                                       <?php
+                                       if ( 1 === ( $plugins->new + $plugins->pending ) ) {
+                                                _e( 'Currently there is 1 plugin in the review queue.', 'wporg-plugins' );
+                                       } else {
+                                               printf(
+                                                       _n(
+                                                               'Currently there are %1$s plugins in the review queue, %2$s of which is awaiting its initial review.',
+                                                               'Currently there are %1$s plugins in the review queue, %2$s of which are awaiting their initial review.',
+                                                               $plugins->new,
+                                                               'wporg-plugins'
+                                                       ),
+                                                       '<strong>' . ( $plugins->new + $plugins->pending ) . '</strong>',
+                                                       '<strong>' . $plugins->new . '</strong>'
+                                               );
+                                       }
+                                       ?>
+                                       </p>
+                               </div>
+
+                               <?php if ( $submitted_counts->total ) : ?>
+
+                                       <div class="plugin-queue-message notice notice-warning notice-alt">
+                                               <p>
+                                               <?php
+                                               if ( 1 === $submitted_counts->total ) {
+                                                       _e( 'You already have a plugin in the review queue. Please wait for it to be approved before submitting any more.', 'wporg-plugins' );
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 } else {
</span><span class="cx" style="display: block; padding: 0 10px">                                                        printf(
</span><span class="cx" style="display: block; padding: 0 10px">                                                                _n(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                        'Currently there are %1$s plugins in the review queue, %2$s of which is awaiting its initial review.',
-                                                                       'Currently there are %1$s plugins in the review queue, %2$s of which are awaiting their initial review.',
-                                                                       $plugins->new,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                                 'You have %1$s plugins in the review queue, %2$s is being actively reviewed. Please wait for them to be approved before submitting any more.',
+                                                                       'You have %1$s plugins in the review queue, %2$s are being actively reviewed. Please wait for them to be approved before submitting any more.',
+                                                                       $submitted_counts->pending,
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                         'wporg-plugins'
</span><span class="cx" style="display: block; padding: 0 10px">                                                                ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                '<strong>' . ( $plugins->new + $plugins->pending ) . '</strong>',
-                                                               '<strong>' . $plugins->new . '</strong>'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         '<strong>' . $submitted_counts->total . '</strong>',
+                                                               '<strong>' . $submitted_counts->pending . '</strong>'
</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">-                                        ?></p>
-                               </div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         ?>
+                                               </p>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                <?php if ( $submitted_counts->total ) : ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <ul>
+                                               <?php
+                                               foreach ( $submitted_plugins as $plugin ) {
+                                                       echo '<li>' . esc_html( $plugin->post_title ) . ' &#8212; ' . $plugin->status . "</li>\n";
+                                               }
+                                               ?>
+                                               </ul>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <div class="plugin-queue-message notice notice-warning notice-alt">
-                                               <p><?php
-                                                       if ( 1 === $submitted_counts->total ) {
-                                                               _e( 'You already have a plugin in the review queue. Please wait for it to be approved before submitting any more.', 'wporg-plugins' );
-                                                       } else {
-                                                               printf(
-                                                                       _n(
-                                                                               'You have %1$s plugins in the review queue, %2$s is being actively reviewed. Please wait for them to be approved before submitting any more.',
-                                                                               'You have %1$s plugins in the review queue, %2$s are being actively reviewed. Please wait for them to be approved before submitting any more.',
-                                                                               $submitted_counts->pending,
-                                                                               'wporg-plugins'
-                                                                       ),
-                                                                       '<strong>' . $submitted_counts->total . '</strong>',
-                                                                       '<strong>' . $submitted_counts->pending . '</strong>'
-                                                               );
-                                                       }
-                                               ?></p>
-
-                                               <ul><?php
-                                                       foreach ( $submitted_plugins as $plugin ) {
-                                                               echo '<li>' . esc_html( $plugin->post_title ) . ' &#8212; ' . $plugin->status . "</li>\n";
-                                                       }
-                                               ?></ul>
-
-                                               <p><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         <p>
+                                               <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         /* translators: %s: plugins@wordpress.org */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        printf( __( 'Please wait at least 7 business days before asking for an update status from <a href="mailto:%1$s">%1$s</a>.', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 printf(
+                                                               __( 'Please wait at least 7 business days before asking for an update status from <a href="mailto:%1$s">%1$s</a>.', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                 'plugins@wordpress.org'
</span><span class="cx" style="display: block; padding: 0 10px">                                                        );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                ?></p>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         ?>
+                                               </p>
</ins><span class="cx" style="display: block; padding: 0 10px">                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                <?php endif; // $submitted_counts->total ?>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -136,12 +145,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                <form id="upload_form" class="plugin-upload-form" enctype="multipart/form-data" method="POST" action="">
</span><span class="cx" style="display: block; padding: 0 10px">                                        <?php wp_nonce_field( 'wporg-plugins-upload' ); ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                        <input type="hidden" name="action" value="upload"/>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        <?php /* <fieldset>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 <?php
+                                       /*
+                                       <fieldset>
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 <legend><?php _e( 'Select categories (up to 3)', 'wporg-plugins' ); ?></legend>
</span><span class="cx" style="display: block; padding: 0 10px">                                                <ul class="category-checklist">
</span><span class="cx" style="display: block; padding: 0 10px">                                                        <?php wp_terms_checklist( 0, array( 'taxonomy' => 'plugin_category' ) ); ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                                </ul>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        </fieldset> */ ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 </fieldset> */
+?>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        <input type="file" id="zip_file" class="plugin-file" name="zip_file" size="25" accept=".zip"/>
</span><span class="cx" style="display: block; padding: 0 10px">                                        <label class="button button-secondary" for="zip_file"><?php _e( 'Select File', 'wporg-plugins' ); ?></label>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -174,7 +186,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        <p><?php printf( __( 'Before you can upload a new plugin, <a href="%s">please log in</a>.', 'wporg-plugins' ), esc_url( wp_login_url() ) ); ?></p>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <?php endif; // is_user_logged_in()
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         <?php
+               endif; // is_user_logged_in()
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return ob_get_clean();
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorystandaloneclasspluginsinfoapirequestphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/standalone/class-plugins-info-api-request.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/standalone/class-plugins-info-api-request.php   2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/standalone/class-plugins-info-api-request.php     2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,8 +5,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * Holds the information about the request payload, and massages it into a format we can use.
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> class Plugins_Info_API_Request {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public $locale = 'en_US';
-       protected $args = array();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public $locale              = 'en_US';
+       protected $args             = array();
</ins><span class="cx" style="display: block; padding: 0 10px">         protected $requested_fields = array();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        static $fields = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -35,21 +35,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">        static $plugins_info_fields_defaults = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'added'             => true,
-               'compatibility'     => true,
-               'contributors'      => true,
-               'downloaded'        => true,
-               'downloadlink'      => true,
-               'donate_link'       => true,
-               'homepage'          => true,
-               'last_updated'      => true,
-               'rating'            => true,
-               'ratings'           => true,
-               'requires'          => true,                         
-               'requires_php'      => true,
-               'sections'          => true,
-               'tags'              => true,
-               'tested'            => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'added'         => true,
+               'compatibility' => true,
+               'contributors'  => true,
+               'downloaded'    => true,
+               'downloadlink'  => true,
+               'donate_link'   => true,
+               'homepage'      => true,
+               'last_updated'  => true,
+               'rating'        => true,
+               'ratings'       => true,
+               'requires'      => true,
+               'requires_php'  => true,
+               'sections'      => true,
+               'tags'          => true,
+               'tested'        => 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">        static $query_plugins_fields_defaults = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -63,7 +63,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                'last_updated'      => true,
</span><span class="cx" style="display: block; padding: 0 10px">                'rating'            => true,
</span><span class="cx" style="display: block; padding: 0 10px">                'ratings'           => true,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'requires'          => true,                         
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'requires'          => true,
</ins><span class="cx" style="display: block; padding: 0 10px">                 'requires_php'      => true,
</span><span class="cx" style="display: block; padding: 0 10px">                'sections'          => true,
</span><span class="cx" style="display: block; padding: 0 10px">                'short_description' => true,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -74,10 +74,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function __construct( $args ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $args = (object) $args;
</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( $args->locale ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! empty( $args->locale ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $this->locale = $args->locale; // TODO: sanitize?
</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( $args->fields ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! empty( $args->fields ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $this->requested_fields = $this->parse_requested_fields( $args->fields );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">                unset( $args->locale, $args->fields );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -111,7 +111,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">                // In WordPress x.y we start sending 'contributors' which means respond with a more detailed list of contributors.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( !isset( $this->requested_fields['contributors'] ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! isset( $this->requested_fields['contributors'] ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $fields['bare_contributors'] = 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">@@ -121,19 +121,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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * Sanitizes/parses the given fields parameter into a standard format. 
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * Sanitizes/parses the given fields parameter into a standard format.
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        protected function parse_requested_fields( $fields ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $fields = is_string( $fields ) ? explode( ',', $fields ) : (array)$fields;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $fields = is_string( $fields ) ? explode( ',', $fields ) : (array) $fields;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $requested_fields = array();
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $fields as $field => $include ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( is_int( $field ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $field = $include;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $field   = $include;
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $include = true;
</span><span class="cx" style="display: block; padding: 0 10px">                                if ( '-' == substr( $field, 0, 1 ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        $include = false;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $field = substr( $field, 1 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $field   = substr( $field, 1 );
</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 ( isset( self::$fields[ $field ] ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -150,17 +150,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">        public function query_plugins_params_for_query() {
</span><span class="cx" style="display: block; padding: 0 10px">                $query = array();
</span><span class="cx" style="display: block; padding: 0 10px">                // Paging
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $query['paged']          = isset( $this->args->page )     ? $this->args->page     : 1;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $query['paged']          = isset( $this->args->page ) ? $this->args->page : 1;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $query['posts_per_page'] = isset( $this->args->per_page ) ? $this->args->per_page : 24;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Views
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! empty( $this->args->browse ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $query['browse'] = $this->args->browse;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( !empty( $this->args->installed_plugins ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! empty( $this->args->installed_plugins ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $query['installed_plugins'] = is_array( $this->args->installed_plugins ) ? $this->args->installed_plugins : array();
</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">+                 }
</ins><span class="cx" style="display: block; padding: 0 10px">                 } elseif ( ! empty( $this->args->user ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $query['browse'] = 'favorites';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $query['browse']         = 'favorites';
</ins><span class="cx" style="display: block; padding: 0 10px">                         $query['favorites_user'] = $this->args->user;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -179,7 +179,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( ! empty( $this->args->author ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $query['author_name'] = $this->args->author;
</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">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return $query;
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorystandaloneclasspluginsinfoapiphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/standalone/class-plugins-info-api.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/standalone/class-plugins-info-api.php   2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/standalone/class-plugins-info-api.php     2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2,14 +2,14 @@
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Standalone;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> // The API caches here expire every 24~25hours, avoids cache races when multiple change at the same time.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-define( 'API_CACHE_EXPIRY', 24*60*60 + rand( 0, 60*60 ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+define( 'API_CACHE_EXPIRY', 24 * 60 * 60 + rand( 0, 60 * 60 ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> class Plugins_Info_API {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        const CACHE_GROUP  = 'plugin_api_info';
</span><span class="cx" style="display: block; padding: 0 10px">        const CACHE_EXPIRY = API_CACHE_EXPIRY;
</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 $format = 'json';
-       protected $jsonp  = false;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ protected $format  = 'json';
+       protected $jsonp   = false;
</ins><span class="cx" style="display: block; padding: 0 10px">         protected $formats = array(
</span><span class="cx" style="display: block; padding: 0 10px">                'jsonp' => 'application/javascript',
</span><span class="cx" style="display: block; padding: 0 10px">                'json'  => 'application/json',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20,7 +20,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        function __construct( $format = 'json' ) {
</span><span class="cx" style="display: block; padding: 0 10px">                if ( is_array( $format ) && 'jsonp' == $format[0] ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->jsonp = preg_replace( '/[^a-zA-Z0-9_]/', '', $format[1] );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $format = 'jsonp';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $format      = 'jsonp';
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                $this->format = $format;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -52,7 +52,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        die( '<p>Action not implemented. <a href="http://codex.wordpress.org/WordPress.org_API">API Docs</a>.</p>' );
</span><span class="cx" style="display: block; padding: 0 10px">                                } else {
</span><span class="cx" style="display: block; padding: 0 10px">                                        $this->output( (object) array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                'error' => 'Action not implemented'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         'error' => 'Action not implemented',
</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">                                break;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -71,7 +71,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( 200 != $response->status ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $response = array( 'error' => 'Plugin not found.' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                wp_cache_set( $cache_key, $response, self::CACHE_GROUP, 15*60 ); // shorter TTL for missing/erroring plugins.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         wp_cache_set( $cache_key, $response, self::CACHE_GROUP, 15 * 60 ); // shorter TTL for missing/erroring plugins.
</ins><span class="cx" style="display: block; padding: 0 10px">                         } else {
</span><span class="cx" style="display: block; padding: 0 10px">                                $response = $response->data;
</span><span class="cx" style="display: block; padding: 0 10px">                                wp_cache_set( $cache_key, $response, self::CACHE_GROUP, self::CACHE_EXPIRY );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -88,7 +88,6 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        return;
</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 class="cx" style="display: block; padding: 0 10px">                 // Only include the fields requested.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! isset( $response['error'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $response = $this->remove_unexpected_fields( $response, $request, 'plugin_information' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -128,8 +127,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Back-compatible routines.
</span><span class="cx" style="display: block; padding: 0 10px">                // WordPress 4.x and older need a "bare" contributor map
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( !empty( $fields['bare_contributors'] ) ) {
-                       $contribs = $response['contributors'];
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! empty( $fields['bare_contributors'] ) ) {
+                       $contribs                 = $response['contributors'];
</ins><span class="cx" style="display: block; padding: 0 10px">                         $response['contributors'] = array();
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $contribs ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                foreach ( $contribs as $user => $data ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -146,12 +145,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public function query_plugins( $request ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $response = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'info' => array(
-                               'page' => 0,
-                               'pages' => 0,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'info'    => array(
+                               'page'    => 0,
+                               'pages'   => 0,
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'results' => 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">-                        'plugins' => array()
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'plugins' => array(),
</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">                $cache_key = $this->query_plugins_cache_key( $request );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -174,7 +173,14 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Fill in the plugin details
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $response['plugins'] as $i => $plugin_slug ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $plugin = $this->plugin_information( new Plugins_Info_API_Request( array( 'slug' => $plugin_slug, 'locale' => $request->locale ) ), true );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $plugin = $this->plugin_information(
+                               new Plugins_Info_API_Request(
+                                       array(
+                                               'slug'   => $plugin_slug,
+                                               'locale' => $request->locale,
+                                       )
+                               ), true
+                       );
</ins><span class="cx" style="display: block; padding: 0 10px">                         if ( isset( $plugin['error'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                unset( $response['plugins'][ $i ] );
</span><span class="cx" style="display: block; padding: 0 10px">                                continue;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -185,7 +191,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Trim fields and cast to object
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $response['plugins'] as $i => $plugin_data ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $response['plugins'][$i] = (object) $this->remove_unexpected_fields( $plugin_data, $request, 'query_plugins' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $response['plugins'][ $i ] = (object) $this->remove_unexpected_fields( $plugin_data, $request, 'query_plugins' );
</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->output( $response );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -215,7 +221,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">                $number_items_requested = 100;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( !empty( $request->number ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! empty( $request->number ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $number_items_requested = $request->number;
</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">@@ -241,8 +247,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                switch ( $this->format ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        default:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        case 'json' :
-                       case 'jsonp' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 case 'json':
+                       case 'jsonp':
</ins><span class="cx" style="display: block; padding: 0 10px">                                 if ( ! function_exists( 'wp_json_encode' ) && defined( 'WPORGAPIPATH' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        require WPORGAPIPATH . '/includes/wp-json-encode.php';
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -253,12 +259,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        echo $json;
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="cx" style="display: block; padding: 0 10px">                                break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        
-                       case 'php' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                       case 'php':
</ins><span class="cx" style="display: block; padding: 0 10px">                                 echo serialize( $response ? (object) $response : $response );
</span><span class="cx" style="display: block; padding: 0 10px">                                break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        
-                       case 'xml' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                       case 'xml':
</ins><span class="cx" style="display: block; padding: 0 10px">                                 echo '<' . '?xml version="1.0" encoding="utf-8"?' . ">\n";
</span><span class="cx" style="display: block; padding: 0 10px">                                echo "<plugin>\n";
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->php_to_xml( $response );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -280,14 +286,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                global $wpdb;
</span><span class="cx" style="display: block; padding: 0 10px">                define( 'REST_REQUEST', 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">-                $host = $_SERVER['HTTP_HOST'];
-               $request_uri = $_SERVER['REQUEST_URI'];
-               $_SERVER['HTTP_HOST'] = 'wordpress.org';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $host                   = $_SERVER['HTTP_HOST'];
+               $request_uri            = $_SERVER['REQUEST_URI'];
+               $_SERVER['HTTP_HOST']   = 'wordpress.org';
</ins><span class="cx" style="display: block; padding: 0 10px">                 $_SERVER['REQUEST_URI'] = '/plugins/';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                require_once WPORGPATH . '/wp-load.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">-                $_SERVER['HTTP_HOST'] = $host;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $_SERVER['HTTP_HOST']   = $host;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $_SERVER['REQUEST_URI'] = $request_uri;
</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="lines" style="display: block; padding: 0 10px; color: #888">@@ -321,7 +327,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( is_null( $xml_tag ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $xml_tag = function( $tag, $type, $empty = false ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                static $NameStartChar = ':A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\x{2FF}\x{370}-\x{37D}\x{37F}-\x{1FFF}\x{200C}-\x{200D}\x{2070}-\x{218F}\x{2C00}-\x{2FEF}\x{3001}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFFD}\x{10000}-\x{EFFFF}';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                static $NameChar = '.0-9\xB7\x{0300}-\x{036F}\x{203F}-\x{2040}-';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         static $NameChar      = '.0-9\xB7\x{0300}-\x{036F}\x{203F}-\x{2040}-';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                $start_right = $empty ? ' />' : '>';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -339,20 +345,20 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                echo str_repeat( "\t", $tabs );
</span><span class="cx" style="display: block; padding: 0 10px">                switch ( $type = gettype( $data ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        case 'string' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 case 'string':
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $data = '<![CDATA[' . str_replace( ']]>', ']]]]><![CDATA[>', $data ) . ']]>';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        case 'boolean' :
-                       case 'integer' :
-                       case 'double' :
-                       case 'float' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 case 'boolean':
+                       case 'integer':
+                       case 'double':
+                       case 'float':
</ins><span class="cx" style="display: block; padding: 0 10px">                                 list( $start, $close ) = $xml_tag( $key, $type, false );
</span><span class="cx" style="display: block; padding: 0 10px">                                echo "$start$data$close";
</span><span class="cx" style="display: block; padding: 0 10px">                                break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        case 'NULL' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 case 'NULL':
</ins><span class="cx" style="display: block; padding: 0 10px">                                 list( $start, $close ) = $xml_tag( $key, $type, true );
</span><span class="cx" style="display: block; padding: 0 10px">                                echo $start;
</span><span class="cx" style="display: block; padding: 0 10px">                                break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        case 'array' :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 case 'array':
</ins><span class="cx" style="display: block; padding: 0 10px">                                 if ( empty( $data ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        list( $start, $close ) = $xml_tag( $key, $type, true );
</span><span class="cx" style="display: block; padding: 0 10px">                                        echo $start;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -367,13 +373,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                echo str_repeat( "\t", $tabs );
</span><span class="cx" style="display: block; padding: 0 10px">                                echo $close;
</span><span class="cx" style="display: block; padding: 0 10px">                                break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        case 'object' :
-                               if ( !$array = get_object_vars( $data ) ) {
-                                       if ( !$tabs ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 case 'object':
+                               if ( ! $array = get_object_vars( $data ) ) {
+                                       if ( ! $tabs ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 break;
</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">-                                        list( $start, $close ) = $xml_tag( $key, $type, true);
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 list( $start, $close ) = $xml_tag( $key, $type, true );
</ins><span class="cx" style="display: block; padding: 0 10px">                                         echo $start;
</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">@@ -390,9 +396,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        echo $close;
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><span class="cx" style="display: block; padding: 0 10px">                                break;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        case 'resource' :
-                       case 'unknown type' :
-                       default :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 case 'resource':
+                       case 'unknown type':
+                       default:
</ins><span class="cx" style="display: block; padding: 0 10px">                                 break;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $tabs ) {
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorystandalonedownloadsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/standalone/downloads.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/standalone/downloads.php        2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/standalone/downloads.php  2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4,13 +4,13 @@
</span><span class="cx" style="display: block; padding: 0 10px"> /*
</span><span class="cx" style="display: block; padding: 0 10px">  * This is a stand alone script, it operates with the expectation that the
</span><span class="cx" style="display: block; padding: 0 10px">  * global `$wpdb` is available and the object cache is configured.
</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">+ *
</ins><span class="cx" style="display: block; padding: 0 10px">  * Examples of URLs which are accepted:
</span><span class="cx" style="display: block; padding: 0 10px">  * - downloads.wordpress.org/plugin/hello-dolly.zip (trunk)
</span><span class="cx" style="display: block; padding: 0 10px">  * - downloads.wordpress.org/plugin/hello-dolly.latest-stable.zip
</span><span class="cx" style="display: block; padding: 0 10px">  * - downloads.wordpress.org/plugin/hello-dolly.3.2.1.zip
</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">-include dirname( __DIR__ ) . '/class-autoloader.php';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+require dirname( __DIR__ ) . '/class-autoloader.php';
</ins><span class="cx" style="display: block; padding: 0 10px"> Autoloader\register_class_path( __NAMESPACE__, dirname( __DIR__ ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-$serve = new Zip\Serve();
</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">+$serve = new Zip\Serve();
</ins></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorystandalonepluginsinfoapiphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/standalone/plugins-info-api.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/standalone/plugins-info-api.php 2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/standalone/plugins-info-api.php   2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</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">@@ -11,11 +12,11 @@
</span><span class="cx" style="display: block; padding: 0 10px"> define( 'WPORGPATH', dirname( dirname( dirname( dirname( __DIR__ ) ) ) ) . '/' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> $_REQUEST = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        'method' => 'plugin_information',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ 'method'  => 'plugin_information',
</ins><span class="cx" style="display: block; padding: 0 10px">         'request' => array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'slug' => 'hello-dolly',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'slug'   => 'hello-dolly',
</ins><span class="cx" style="display: block; padding: 0 10px">                 'fields' => 'active_installs',
</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">+ ),
</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"> $format  = 'json'; // json, jsonp, xml, or php
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorytestsbootstrapphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/bootstrap.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/bootstrap.php     2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/bootstrap.php       2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5,13 +5,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">        $_tests_dir = '/tmp/wordpress-tests-lib';
</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">-require_once( $_tests_dir . '/includes/functions.php' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+require_once $_tests_dir . '/includes/functions.php';
</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">  * Load the plugin.
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> function _manually_load_plugin_directory_plugin() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        require_once( dirname( __FILE__ ) . '/../plugin-directory.php' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ require_once dirname( __FILE__ ) . '/../plugin-directory.php';
</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"> tests_add_filter( 'muplugins_loaded', '_manually_load_plugin_directory_plugin' );
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorytestsphpunittestsapisvnaccessphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/phpunit/tests/api/svn-access.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/phpunit/tests/api/svn-access.php  2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/phpunit/tests/api/svn-access.php    2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8,7 +8,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        function test_permission_denied() {
</span><span class="cx" style="display: block; padding: 0 10px">                $response = wp_remote_get( 'https://wordpress.org/plugins/wp-json/plugins/v1/svn-access' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $data = json_decode( wp_remote_retrieve_body( $response ), true );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $data     = json_decode( wp_remote_retrieve_body( $response ), true );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'not_authorized', $data['code'] );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -16,10 +16,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">        function test_permission_denied_with_bad_authorization() {
</span><span class="cx" style="display: block; padding: 0 10px">                $response = wp_remote_get( 'https://wordpress.org/plugins/wp-json/plugins/v1/svn-access', array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'headers' => array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'Authorization' => 'lol like this would be a real auth key'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'Authorization' => 'lol like this would be a real auth key',
</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">-                $data = json_decode( wp_remote_retrieve_body( $response ), true );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $data     = json_decode( wp_remote_retrieve_body( $response ), true );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertEquals( 'not_authorized', $data['code'] );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorytestsphpunittestswporgpluginapiperformancephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/phpunit/tests/wporg-plugin-api-performance.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/phpunit/tests/wporg-plugin-api-performance.php    2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/phpunit/tests/wporg-plugin-api-performance.php      2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9,13 +9,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> class Tests_Plugins_API_Performance extends WP_UnitTestCase {
</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 $api_endpoint_1_0 = 'http://api.wordpress.org/plugins/info/1.0/';
-       public $api_endpoint_1_1 = 'http://api.wordpress.org/plugins/info/1.1/';
-       public $api_endpoint_plugin_php = 'http://api.wordpress.org/plugins/info/1.0/jetpack.php';
-       public $api_endpoint_plugin_xml = 'http://api.wordpress.org/plugins/info/1.0/jetpack.xml';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public $api_endpoint_1_0         = 'http://api.wordpress.org/plugins/info/1.0/';
+       public $api_endpoint_1_1         = 'http://api.wordpress.org/plugins/info/1.1/';
+       public $api_endpoint_plugin_php  = 'http://api.wordpress.org/plugins/info/1.0/jetpack.php';
+       public $api_endpoint_plugin_xml  = 'http://api.wordpress.org/plugins/info/1.0/jetpack.xml';
</ins><span class="cx" style="display: block; padding: 0 10px">         public $api_endpoint_plugin_json = 'http://api.wordpress.org/plugins/info/1.0/jetpack.json';
</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 $user_agent = 'WordPress/4.8'; // Tell the API to use the v3 back-end
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public $user_agent      = 'WordPress/4.8'; // Tell the API to use the v3 back-end
</ins><span class="cx" style="display: block; padding: 0 10px">         public $timeout_seconds = 5.0;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public $fields = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -60,14 +60,14 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $median = $values[ floor( count( $values ) / 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">-                return "mean ". number_format( $mean, $decimals ) . ", median " . number_format( $median, $decimals );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         return 'mean ' . number_format( $mean, $decimals ) . ', median ' . number_format( $median, $decimals );
</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">        static function tearDownAfterClass() {
</span><span class="cx" style="display: block; padding: 0 10px">                global $wporg_plugin_api_performance;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                echo "Performance summary for ". get_called_class() . ":\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         echo 'Performance summary for ' . get_called_class() . ":\n";
</ins><span class="cx" style="display: block; padding: 0 10px">                 foreach ( $wporg_plugin_api_performance[ get_called_class() ] as $type => $deltas ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        echo "$type: " . self::averages( $deltas ) . "\n";
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -99,36 +99,86 @@
</span><span class="cx" style="display: block; padding: 0 10px">        function performanceTestProvider() {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // The 50 most common plugin tags
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $common_terms = explode( ' ', 'widget post admin woocommerce posts comments shortcode twitter google images facebook sidebar image seo page gallery social email links login ecommerce widgets video rss buddypress pages jquery spam content security ajax media slider feed category search analytics menu embed javascript e-commerce link css form comment share youtube custom categories theme');
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $common_terms = explode( ' ', 'widget post admin woocommerce posts comments shortcode twitter google images facebook sidebar image seo page gallery social email links login ecommerce widgets video rss buddypress pages jquery spam content security ajax media slider feed category search analytics menu embed javascript e-commerce link css form comment share youtube custom categories theme' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Each item represents the function arguments to a plugins_api() call.
</span><span class="cx" style="display: block; padding: 0 10px">                $r = array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        array( 'plugin_information', array( 'slug' => 'jetpack', 'fields' => $this->fields ) ),
-                       array( 'query_plugins', array( 'browse' => 'updated', 'per_page' => 24, 'page'=> 103, 'fields' => $this->fields )),
-                       array( 'query_plugins', array( 'user' => 'dd32', 'fields' => $this->fields )),
-                       array( 'query_plugins', array( 'browse' => 'popular', 'per_page' => 20, 'fields' => $this->fields ) ),
-                       array( 'query_plugins', array( 'browse' => 'recommended', 'installed_plugins' => array( 'akismet', 'jetpack' ), 'fields' => $this->fields ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 array(
+                               'plugin_information',
+                               array(
+                                       'slug'   => 'jetpack',
+                                       'fields' => $this->fields,
+                               ),
+                       ),
+                       array(
+                               'query_plugins',
+                               array(
+                                       'browse'   => 'updated',
+                                       'per_page' => 24,
+                                       'page'     => 103,
+                                       'fields'   => $this->fields,
+                               ),
+                       ),
+                       array(
+                               'query_plugins',
+                               array(
+                                       'user'   => 'dd32',
+                                       'fields' => $this->fields,
+                               ),
+                       ),
+                       array(
+                               'query_plugins',
+                               array(
+                                       'browse'   => 'popular',
+                                       'per_page' => 20,
+                                       'fields'   => $this->fields,
+                               ),
+                       ),
+                       array(
+                               'query_plugins',
+                               array(
+                                       'browse'            => 'recommended',
+                                       'installed_plugins' => array( 'akismet', 'jetpack' ),
+                                       'fields'            => $this->fields,
+                               ),
+                       ),
</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">                // 20 random searches
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                for ( $i=0; $i < 20; $i++ ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         for ( $i = 0; $i < 20; $i++ ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $random_search = join( ' ', array_rand( array_flip( $common_terms ), 3 ) ); // 3 random terms
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $r[] = array( 'query_plugins', array( 'search'   => $random_search, 'per_page' => 15, 'page' => 3, 'fields' => $this->fields ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $r[]           = array(
+                               'query_plugins',
+                               array(
+                                       'search'   => $random_search,
+                                       'per_page' => 15,
+                                       'page'     => 3,
+                                       'fields'   => $this->fields,
+                               ),
+                       );
</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">                // 100 recently updated plugins
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $recently_updated_plugins = plugins_api( 'query_plugins',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $recently_updated_plugins = plugins_api( 'query_plugins', array(
+                       'browse'   => 'updated',
+                       'fields'   => array(
+                               'description'       => false,
+                               'short_description' => false,
+                       ),
+                       'per_page' => 100,
+                       'page'     => rand( 0, 400 ),
+               ) );
+               $this->assertFalse( is_wp_error( $recently_updated_plugins ) );
+               $this->assertEquals( 100, count( $recently_updated_plugins->plugins ) );
+               foreach ( $recently_updated_plugins->plugins as $plugin ) {
+                       $r[] = array(
+                               'plugin_information',
</ins><span class="cx" style="display: block; padding: 0 10px">                                 array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'browse' => 'updated',
-                                       'fields' => array( 'description' => false, 'short_description' => false ),
-                                       'per_page' => 100,
-                                       'page' => rand(0 , 400),
-                                       )
-                               );
-               $this->assertFalse( is_wp_error( $recently_updated_plugins ) );
-               $this->assertEquals( 100, count( $recently_updated_plugins->plugins ));
-               foreach ( $recently_updated_plugins->plugins as $plugin )
-                       $r[] = array( 'plugin_information', array( 'slug' => $plugin->slug, 'fields' => $this->fields ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'slug'   => $plugin->slug,
+                                       'fields' => $this->fields,
+                               ),
+                       );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return $r;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -138,15 +188,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @dataProvider performanceTestProvider
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         function test_api_performance( $action, $args ) {
-               global $wporg_plugin_api_performance;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ function test_api_performance( $action, $args ) {
+               global $wporg_plugin_api_performance;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $start = microtime( true );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $start    = microtime( true );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = plugins_api( $action, $args );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $delta = microtime( true ) - $start;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $delta    = microtime( true ) - $start;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                #error_log( get_class( $this ) . ": $action ". array_keys($args)[0]." ".array_values($args)[0]." took $delta" );
-               $wporg_plugin_api_performance[ get_class( $this ) ][ $action . ' ' . array_keys($args)[0] ][] = $delta;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // error_log( get_class( $this ) . ": $action ". array_keys($args)[0]." ".array_values($args)[0]." took $delta" );
+               $wporg_plugin_api_performance[ get_class( $this ) ][ $action . ' ' . array_keys( $args )[0] ][] = $delta;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertLessThan( $this->timeout_seconds, $delta, "API call $action took $delta seconds" );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorytestsphpunittestswporgpluginapiphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/phpunit/tests/wporg-plugin-api.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/phpunit/tests/wporg-plugin-api.php        2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/phpunit/tests/wporg-plugin-api.php  2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8,13 +8,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> class Tests_Plugins_API extends WP_UnitTestCase {
</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 $api_endpoint_1_0 = 'http://api.wordpress.org/plugins/info/1.0/';
-       public $api_endpoint_1_1 = 'http://api.wordpress.org/plugins/info/1.1/';
-       public $api_endpoint_plugin_php = 'http://api.wordpress.org/plugins/info/1.0/jetpack.php';
-       public $api_endpoint_plugin_xml = 'http://api.wordpress.org/plugins/info/1.0/jetpack.xml';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public $api_endpoint_1_0         = 'http://api.wordpress.org/plugins/info/1.0/';
+       public $api_endpoint_1_1         = 'http://api.wordpress.org/plugins/info/1.1/';
+       public $api_endpoint_plugin_php  = 'http://api.wordpress.org/plugins/info/1.0/jetpack.php';
+       public $api_endpoint_plugin_xml  = 'http://api.wordpress.org/plugins/info/1.0/jetpack.xml';
</ins><span class="cx" style="display: block; padding: 0 10px">         public $api_endpoint_plugin_json = 'http://api.wordpress.org/plugins/info/1.0/jetpack.json';
</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 $user_agent = 'WordPress/4.8'; // Tell the API to use the v3 back-end
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public $user_agent           = 'WordPress/4.8'; // Tell the API to use the v3 back-end
</ins><span class="cx" style="display: block; padding: 0 10px">         public $require_tested_value = true;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        public $fields = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -41,7 +41,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                'icons'             => true,
</span><span class="cx" style="display: block; padding: 0 10px">                'active_installs'   => true,
</span><span class="cx" style="display: block; padding: 0 10px">                'contributors'      => true,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'donate_link'           => true,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'donate_link'       => 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">        function setUp() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -78,14 +78,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">        function test_wporg_plugin_api_serialize_php() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $response = $this->api_remote_post( $this->api_endpoint_1_0, 'plugin_information', array( 'slug' => 'jetpack', 'fields' => $this->fields ) );
-               $plugins = maybe_unserialize( wp_remote_retrieve_body( $response ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $response = $this->api_remote_post( $this->api_endpoint_1_0, 'plugin_information', array(
+                       'slug'   => 'jetpack',
+                       'fields' => $this->fields,
+               ) );
+               $plugins  = maybe_unserialize( wp_remote_retrieve_body( $response ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $this->_check_response_attributes( $plugins );
</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">        function test_wporg_plugin_api_serialize_php_get() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $url      = add_query_arg( 'fields', implode( ',' , array_keys( $this->fields ) ), $this->api_endpoint_plugin_php );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $url      = add_query_arg( 'fields', implode( ',', array_keys( $this->fields ) ), $this->api_endpoint_plugin_php );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = $this->api_remote_get( $url );
</span><span class="cx" style="display: block; padding: 0 10px">                $plugins  = maybe_unserialize( wp_remote_retrieve_body( $response ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -93,7 +96,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">        function test_wporg_plugin_api_xml() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $url      = add_query_arg( 'fields', implode( ',' , array_keys( $this->fields ) ), $this->api_endpoint_plugin_xml );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $url      = add_query_arg( 'fields', implode( ',', array_keys( $this->fields ) ), $this->api_endpoint_plugin_xml );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = $this->api_remote_get( $url );
</span><span class="cx" style="display: block; padding: 0 10px">                $plugins  = wp_remote_retrieve_body( $response );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -103,7 +106,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">        function test_wporg_plugin_api_json() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $url      = add_query_arg( 'fields', implode( ',' , array_keys( $this->fields ) ), $this->api_endpoint_plugin_json );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $url      = add_query_arg( 'fields', implode( ',', array_keys( $this->fields ) ), $this->api_endpoint_plugin_json );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $response = $this->api_remote_get( $url );
</span><span class="cx" style="display: block; padding: 0 10px">                $plugins  = (object) json_decode( wp_remote_retrieve_body( $response ), true );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -115,10 +118,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'timeout' => 15,
</span><span class="cx" style="display: block; padding: 0 10px">                        'body'    => array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'action'  => 'plugin_information',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'request' => (object) array( 'slug' => 'jetpack', 'fields' => $this->fields ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'request' => (object) array(
+                                       'slug'   => 'jetpack',
+                                       'fields' => $this->fields,
+                               ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'headers' => array( 'Host', 'api.wordpress.org' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><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">                $plugins = (object) json_decode( wp_remote_retrieve_body( $response ), true );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -126,7 +131,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">        function test_plugins_api_function_action_plugin_information() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $plugins = plugins_api( 'plugin_information', array( 'slug' => 'jetpack', 'fields' => $this->fields ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $plugins = plugins_api( 'plugin_information', array(
+                       'slug'   => 'jetpack',
+                       'fields' => $this->fields,
+               ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->_check_response_attributes( $plugins );
</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">@@ -144,14 +152,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $this->_check_response_plugin_query( $plugins, $per_page, $page );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // If search term exactly matches a slug, it should be returned first.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $plugins  = plugins_api( 'query_plugins', array( 'search' => $slug ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $plugins = plugins_api( 'query_plugins', array( 'search' => $slug ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->assertEquals( $plugins->plugins[0]->slug, $slug );
</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">        // Plugins with a specific tag.
</span><span class="cx" style="display: block; padding: 0 10px">        function test_plugins_api_function_action_query_plugins_tag() {
</span><span class="cx" style="display: block; padding: 0 10px">                $tag     = 'widget';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $plugins = plugins_api( 'query_plugins', array( 'tag' => $tag, 'fields' => $this->fields ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $plugins = plugins_api( 'query_plugins', array(
+                       'tag'    => $tag,
+                       'fields' => $this->fields,
+               ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $plugins->plugins as $plugin ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->assertArrayHasKey( $tag, $plugin->tags, "Contains tag $tag" );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -162,7 +173,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">        // Plugins written by a specific author.
</span><span class="cx" style="display: block; padding: 0 10px">        function test_plugins_api_function_action_query_plugins_author() {
</span><span class="cx" style="display: block; padding: 0 10px">                $author  = 'wordpressdotorg';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $plugins = plugins_api( 'query_plugins', array( 'author' => $author, 'fields' => $this->fields ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $plugins = plugins_api( 'query_plugins', array(
+                       'author' => $author,
+                       'fields' => $this->fields,
+               ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $plugins->plugins as $plugin ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->assertArrayHasKey( $author, $plugin->contributors, "Contains author $author" );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -172,23 +186,36 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // Favorites.
</span><span class="cx" style="display: block; padding: 0 10px">        function test_plugins_api_function_action_query_plugins_user() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $plugins = plugins_api( 'query_plugins', array( 'user' => 'markjaquith', 'fields' => $this->fields ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $plugins = plugins_api( 'query_plugins', array(
+                       'user'   => 'markjaquith',
+                       'fields' => $this->fields,
+               ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->_check_response_plugin_query( $plugins, 1 );
</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">        function test_plugins_api_function_action_query_plugins_browse() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $plugins = plugins_api( 'query_plugins', array( 'browse' => 'popular', 'fields' => $this->fields ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $plugins = plugins_api( 'query_plugins', array(
+                       'browse' => 'popular',
+                       'fields' => $this->fields,
+               ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->_check_response_plugin_query( $plugins );
</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">        function test_plugins_api_function_action_query_plugins_installed_plugins() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $plugins = plugins_api( 'query_plugins', array( 'browse' => 'recommended', 'installed_plugins' => array( 'jetpack' ), 'fields' => $this->fields ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $plugins = plugins_api( 'query_plugins', array(
+                       'browse'            => 'recommended',
+                       'installed_plugins' => array( 'jetpack' ),
+                       'fields'            => $this->fields,
+               ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->_check_response_plugin_query( $plugins, 1 );
</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">        function test_plugins_api_function_action_query_plugins_local() {
</span><span class="cx" style="display: block; padding: 0 10px">                // Not yet implemented. Shouldn't change the structure of the response though.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $plugins = plugins_api( 'query_plugins', array( 'local' => 'hello', 'fields' => $this->fields ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $plugins = plugins_api( 'query_plugins', array(
+                       'local'  => 'hello',
+                       'fields' => $this->fields,
+               ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $this->_check_response_plugin_query( $plugins, 1 );
</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">@@ -320,7 +347,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> class Tests_Plugins_API_Old extends Tests_Plugins_API {
</span><span class="cx" style="display: block; padding: 0 10px">        public $user_agent = 'WordPress/4.7'; // Tell the API to use the old back-end
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">         public $require_tested_value = false; // Old API omits 'tested' if its value is empty
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorytestsphpunittestswporgurlschemesphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/phpunit/tests/wporg-url-schemes.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/phpunit/tests/wporg-url-schemes.php       2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tests/phpunit/tests/wporg-url-schemes.php 2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4,15 +4,15 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        function http_get( $uri ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $base_url = 'https://wordpress.org';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $url = $base_url . $uri;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $url      = $base_url . $uri;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $http_args = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'timeout' => 15,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        #'body' => array(
-                       #       'action' => $action,
-                       #       'request' => serialize( $args )
-                       #),
-                       #'user-agent' => $user_agent,
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // 'body' => array(
+                       // 'action' => $action,
+                       // 'request' => serialize( $args )
+                       // ),
+                       // 'user-agent' => $user_agent,
</ins><span class="cx" style="display: block; padding: 0 10px">                 );
</span><span class="cx" style="display: block; padding: 0 10px">                $request = wp_remote_get( $url, $http_args );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22,7 +22,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        function urlProvider() {
</span><span class="cx" style="display: block; padding: 0 10px">                return [
</span><span class="cx" style="display: block; padding: 0 10px">                        [ '/plugins/add/' ],
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        [ '/plugins/about/'],
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 [ '/plugins/about/' ],
</ins><span class="cx" style="display: block; padding: 0 10px">                         [ '/plugins/about/guidelines/' ],
</span><span class="cx" style="display: block; padding: 0 10px">                        [ '/plugins/about/svn/' ],
</span><span class="cx" style="display: block; padding: 0 10px">                        [ '/plugins/about/faq/' ],
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -60,7 +60,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">         * @dataProvider urlProvider
</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">+  */
</ins><span class="cx" style="display: block; padding: 0 10px">         function test_url( $url ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $response = $this->http_get( $url );
</span><span class="cx" style="display: block; padding: 0 10px">                $this->assertFalse( is_wp_error( $response ), ( is_wp_error( $response ) ? $response->get_error_message() : '' ) );
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorywidgetsclasscommittersphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-committers.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-committers.php    2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-committers.php      2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Widgets;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Template;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorywidgetsclasscontributorsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-contributors.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-contributors.php  2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-contributors.php    2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Widgets;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Template;
</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">@@ -29,10 +30,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $post = get_post();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $contributors = get_terms( array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'taxonomy' => 'plugin_contributors',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'taxonomy'   => 'plugin_contributors',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'object_ids' => array( $post->ID ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'orderby' => 'term_order',
-                       'fields' => 'names',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'orderby'    => 'term_order',
+                       'fields'     => 'names',
</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 ( is_wp_error( $contributors ) ) {
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorywidgetsclassmetaphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-meta.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-meta.php  2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-meta.php    2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Widgets;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Plugin_I18n;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Template;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -42,7 +43,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        <li><?php printf( __( 'Version: %s', 'wporg-plugins' ), '<strong>' . get_post_meta( $post->ID, 'version', true ) . '</strong>' ); ?></li>
</span><span class="cx" style="display: block; padding: 0 10px">                        <li>
</span><span class="cx" style="display: block; padding: 0 10px">                                <?php
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                printf( __( 'Last updated: %s', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         printf(
+                                       __( 'Last updated: %s', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         /* Translators: Plugin modified time. */
</span><span class="cx" style="display: block; padding: 0 10px">                                        '<strong>' . sprintf( __( '%s ago', 'wporg-plugins' ), '<span>' . human_time_diff( get_post_modified_time() ) . '</span>' ) . '</strong>'
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -51,10 +53,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        <li><?php printf( __( 'Active installations: %s', 'wporg-plugins' ), '<strong>' . Template::active_installs( false ) . '</strong>' ); ?></li>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php if ( $requires = (string) get_post_meta( $post->ID, 'requires', true ) ) : ?>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <li>
+                               <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                 _e( 'Requires WordPress Version:', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px">                                echo '<strong>' . esc_html( $requires ) . '</strong>';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                ?></li>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         ?>
+                               </li>
</ins><span class="cx" style="display: block; padding: 0 10px">                         <?php endif; ?>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php if ( $tested_up_to = (string) get_post_meta( $post->ID, 'tested', true ) ) : ?>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -62,10 +66,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php endif; ?>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php if ( $requires_php = (string) get_post_meta( $post->ID, 'requires_php', true ) ) : ?>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                <li><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <li>
+                               <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                 _e( 'Requires PHP Version:', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px">                                echo '<strong>' . esc_html( $requires_php ) . '</strong>';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                ?></li>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         ?>
+                               </li>
</ins><span class="cx" style="display: block; padding: 0 10px">                         <?php endif; ?>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -75,11 +81,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                <li>
</span><span class="cx" style="display: block; padding: 0 10px">                                        <?php
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        if ( 1 === $available_languages_count ) {
-                                               _e( 'Language:', 'wporg-plugins' );
-                                       } else {
-                                               _e( 'Languages:', 'wporg-plugins' );
-                                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 echo esc_html( _n( 'Language:', 'Languages:', 'wporg-plugins', $available_languages_count ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                        echo '<div class="languages">';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -103,12 +105,15 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                                        <div class="popover-inner">
</span><span class="cx" style="display: block; padding: 0 10px">                                                                <p><?php echo wp_sprintf( '%l.', $available_languages ); ?></p>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                <p><?php
-                                                                       printf( '<a href="%s">%s</a>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         <p>
+                                                               <?php
+                                                                       printf(
+                                                                               '<a href="%s">%s</a>',
</ins><span class="cx" style="display: block; padding: 0 10px">                                                                                 esc_url( 'https://translate.wordpress.org/projects/wp-plugins/' . $post->post_name ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                                                __( 'Translate into your language', 'wporg-plugins' )
</span><span class="cx" style="display: block; padding: 0 10px">                                                                        );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                                ?></p>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                         ?>
+                                                               </p>
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                                </div>
</span><span class="cx" style="display: block; padding: 0 10px">                                                <?php
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -124,22 +129,23 @@
</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">                        <?php if ( $tags = get_the_term_list( $post->ID, 'plugin_tags', '<div class="tags">', '', '</div>' ) ) : ?>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                <li class="clear"><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <li class="clear">
+                                       <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $terms = get_the_terms( $post, 'plugin_tags' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        if ( 1 == count( $terms ) ) {
-                                               /* translators: %s: tag list */
-                                               printf( __( 'Tag: %s', 'wporg-plugins' ), $tags );
-                                       } else {
-                                               /* translators: %s: tag list */
-                                               printf( __( 'Tags: %s', 'wporg-plugins' ), $tags );
-                                       }
-                               ?></li>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 /* translators: %s: tag list */
+                                       printf( _n( 'Tag: %s', 'Tags: %s', count( $terms ), 'wporg-plugins' ), $tags );
+                                       ?>
+                               </li>
</ins><span class="cx" style="display: block; padding: 0 10px">                         <?php endif; ?>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php if ( ! get_query_var( 'plugin_advanced' ) ) : ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                <li class="hide-if-no-js">
</span><span class="cx" style="display: block; padding: 0 10px">                                        <?php
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                printf( '<strong><a class="plugin-admin" href="%s">%s</a></strong>', esc_url( get_permalink() . 'advanced/' ), __( 'Advanced View', 'wporg-plugins' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 printf(
+                                               '<strong><a class="plugin-admin" href="%s">%s</a></strong>',
+                                               esc_url( get_permalink() . 'advanced/' ),
+                                               __( 'Advanced View', 'wporg-plugins' )
+                                       );
</ins><span class="cx" style="display: block; padding: 0 10px">                                         ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                </li>
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php endif; ?>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -155,14 +161,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return array List of available languages.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        private function available_languages() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $post    = get_post();
-               $slug    = $post->post_name;
-               $locales = Plugin_I18n::instance()->get_translations( $slug );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $post      = get_post();
+               $slug      = $post->post_name;
+               $locales   = Plugin_I18n::instance()->get_translations( $slug );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $languages = [];
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! empty( $locales ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $locale_names = wp_list_pluck( $locales, 'name', 'wp_locale' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $wp_locales = wp_list_pluck( $locales,'wp_locale' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $wp_locales   = wp_list_pluck( $locales, 'wp_locale' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $sites = get_sites( [
</span><span class="cx" style="display: block; padding: 0 10px">                                'network_id' => WPORG_GLOBAL_NETWORK_ID,
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorywidgetsclassratingsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-ratings.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-ratings.php       2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-ratings.php 2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Widgets;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Template;
</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">@@ -35,9 +36,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                echo $args['before_widget'];
</span><span class="cx" style="display: block; padding: 0 10px">                echo $args['before_title'] . $title . $args['after_title'];
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               if ( $rating ) :
</ins><span class="cx" style="display: block; padding: 0 10px">                 ?>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
-               <?php if ( $rating ) : ?>
</del><span class="cx" style="display: block; padding: 0 10px">                         <a class="reviews-link" href="<?php echo esc_url( 'https://wordpress.org/support/plugin/' . $post->post_name . '/reviews/' ); ?>"><?php _ex( 'See all', 'reviews', 'wporg-plugins' ); ?></a>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        <div class="rating">
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -45,7 +46,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        <ul class="ratings-list">
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                <?php foreach ( range( 5, 1 ) as $stars ) :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <?php
+                               foreach ( range( 5, 1 ) as $stars ) :
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $rating_bar_width = $num_ratings ? 100 * $ratings[ $stars ] / $num_ratings : 0;
</span><span class="cx" style="display: block; padding: 0 10px">                                        ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                        <li class="counter-container">
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -66,13 +68,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                <p><?php _e( 'This plugin has not been rated yet.', 'wporg-plugins' ); ?></p>
</span><span class="cx" style="display: block; padding: 0 10px">                        </div>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <?php endif; // $rating
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         <?php endif; // $rating ?>
</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 ( is_user_logged_in() ) : ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         <?php if ( is_user_logged_in() ) : ?>
</ins><span class="cx" style="display: block; padding: 0 10px">                         <div class="user-rating">
</span><span class="cx" style="display: block; padding: 0 10px">                                <a class="button button-secondary" href="<?php echo esc_url( 'https://wordpress.org/support/plugin/' . $post->post_name . '/reviews/#new-post' ); ?>"><?php _e( 'Add my review', 'wporg-plugins' ); ?></a>
</span><span class="cx" style="display: block; padding: 0 10px">                        </div>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         <?php
</ins><span class="cx" style="display: block; padding: 0 10px">                 endif;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                echo $args['after_widget'];
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorywidgetsclasssupportrepsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-support-reps.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-support-reps.php  2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-support-reps.php    2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Widgets;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Template;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -9,6 +10,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * @package WordPressdotorg\Plugin_Directory\Widgets
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> class Support_Reps extends \WP_Widget {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">         /**
</span><span class="cx" style="display: block; padding: 0 10px">         * Support Reps constructor.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectorywidgetsclasssupportphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-support.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-support.php       2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/widgets/class-support.php 2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,7 +1,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Widgets;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-use WordPressdotorg\Plugin_Directory\Template; 
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+use WordPressdotorg\Plugin_Directory\Template;
+
</ins><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="cx" style="display: block; padding: 0 10px">  * A Widget to display support information about a plugin.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -34,15 +35,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $resolutions = (bool) $threads;
</span><span class="cx" style="display: block; padding: 0 10px">                $support_url = Template::get_support_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">-                if ( false === strpos( $support_url, 'https://wordpress.org' ) ) { 
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( false === strpos( $support_url, 'https://wordpress.org' ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $resolutions = false;
</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">+         }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                echo $args['before_widget'];
</span><span class="cx" style="display: block; padding: 0 10px">                echo $args['before_title'] . $title . $args['after_title'];
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $resolutions ) :
</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">+         ?>
</ins><span class="cx" style="display: block; padding: 0 10px">                         <p class="aside"><?php _e( 'Issues resolved in last two months:', 'wporg-plugins' ); ?></p>
</span><span class="cx" style="display: block; padding: 0 10px">                        <p class="counter-container">
</span><span class="cx" style="display: block; padding: 0 10px">                                <span class="counter-back">
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -56,7 +57,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                </span>
</span><span class="cx" style="display: block; padding: 0 10px">                        </p>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <?php else: ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         <?php else : ?>
</ins><span class="cx" style="display: block; padding: 0 10px">                         <p><?php _e( 'Got something to say? Need help?', 'wporg-plugins' ); ?></p>
</span><span class="cx" style="display: block; padding: 0 10px">                <?php endif; ?>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryzipclassbuilderphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/zip/class-builder.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/zip/class-builder.php   2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/zip/class-builder.php     2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Zip;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Tools\SVN;
</span><span class="cx" style="display: block; padding: 0 10px"> use Exception;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -10,8 +11,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> class Builder {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        const TMP_DIR = '/tmp/plugin-zip-builder';
-       const SVN_URL = 'https://plugins.svn.wordpress.org';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ const TMP_DIR     = '/tmp/plugin-zip-builder';
+       const SVN_URL     = 'https://plugins.svn.wordpress.org';
</ins><span class="cx" style="display: block; padding: 0 10px">         const ZIP_SVN_URL = PLUGIN_ZIP_SVN_URL;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        protected $zip_file      = '';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -59,7 +60,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        self::ZIP_SVN_URL,
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->tmp_dir,
</span><span class="cx" style="display: block; padding: 0 10px">                        array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'depth' => 'empty',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'depth'    => 'empty',
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'username' => PLUGIN_ZIP_SVN_USER,
</span><span class="cx" style="display: block; padding: 0 10px">                                'password' => PLUGIN_ZIP_SVN_PASS,
</span><span class="cx" style="display: block; padding: 0 10px">                        )
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -69,10 +70,11 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        // Ensure the plugins folder exists within svn
</span><span class="cx" style="display: block; padding: 0 10px">                        $plugin_folder = "{$this->tmp_dir}/{$this->slug}/";
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                         $res = SVN::up(
</span><span class="cx" style="display: block; padding: 0 10px">                                $plugin_folder,
</span><span class="cx" style="display: block; padding: 0 10px">                                array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        'depth' => 'empty'
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 'depth' => 'empty',
</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 ( ! is_dir( $plugin_folder ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -104,10 +106,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        SVN::up( $this->zip_file );
</span><span class="cx" style="display: block; padding: 0 10px">                        // This is done within the checksum generation function due to us not knowing the checksum filename until export_plugin().
</span><span class="cx" style="display: block; padding: 0 10px">                        // SVN::up( $this->checksum_file );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><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">-                                $this->tmp_build_dir  = $this->zip_file . '-files';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         $this->tmp_build_dir = $this->zip_file . '-files';
</ins><span class="cx" style="display: block; padding: 0 10px">                                 mkdir( $this->tmp_build_dir, 0777, true );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->export_plugin();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -119,7 +120,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->cleanup_plugin_tmp();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        } catch( Exception $e ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 } catch ( Exception $e ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 // In event of error, skip this file this time.
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->cleanup_plugin_tmp();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -202,8 +203,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $existing_json_checksum_file = file_exists( $this->checksum_file );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $skip_bad_files = array();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $checksums = array();
-               foreach ( array( 'md5' => 'md5sum', 'sha256' => 'sha256sum' ) as $checksum_type => $checksum_bin ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $checksums      = array();
+               foreach ( array(
+                       'md5'    => 'md5sum',
+                       'sha256' => 'sha256sum',
+               ) as $checksum_type => $checksum_bin ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $checksum_output = array();
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->exec( sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                'cd %s && find . -type f -print0 | sort -z | xargs -0 ' . $checksum_bin . ' 2>&1',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -211,13 +215,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        ), $checksum_output, $return_value );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $return_value ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        //      throw new Exception( __METHOD__ . ': Checksum generation failed, return code: ' . $return_value, 503 );
-                       // TODO For now, just silently keep going.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         // throw new Exception( __METHOD__ . ': Checksum generation failed, return code: ' . $return_value, 503 );
+                               // TODO For now, just silently keep going.
</ins><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><span class="cx" style="display: block; padding: 0 10px">                        foreach ( $checksum_output as $line ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                list( $checksum, $filename ) = preg_split( '!\s+!', $line, 2 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $filename = trim( preg_replace( '!^./!', '', $filename ) );
</span><span class="cx" style="display: block; padding: 0 10px">                                $checksum = trim( $checksum );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -227,7 +232,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">                                if ( ! isset( $checksums[ $filename ] ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $checksums[ $filename ] = array( 'md5' => array(), 'sha256' => array() );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 $checksums[ $filename ] = array(
+                                               'md5'    => array(),
+                                               'sha256' => array(),
+                                       );
</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">                                $checksums[ $filename ][ $checksum_type ] = $checksum;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -248,12 +256,12 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        // Sometimes plugin versions exist in multiple tags/zips, include all the SVN urls & ZIP urls
</span><span class="cx" style="display: block; padding: 0 10px">                        foreach ( array( 'source', 'zip' ) as $maybe_different ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if ( !empty( $existing_json_checksum_file->{$maybe_different} ) &&
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ( ! empty( $existing_json_checksum_file->{$maybe_different} ) &&
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $existing_json_checksum_file->{$maybe_different} != $json_checksum_file->{$maybe_different}
</span><span class="cx" style="display: block; padding: 0 10px">                                ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                        $json_checksum_file->{$maybe_different} = array_unique( array_merge(
</span><span class="cx" style="display: block; padding: 0 10px">                                                (array) $existing_json_checksum_file->{$maybe_different},
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                (array) $json_checksum_file->{$maybe_different}
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         (array) $json_checksum_file->{$maybe_different}
</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">                                        // Reduce single arrays back to a string when possible.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -281,8 +289,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        foreach ( array( 'md5', 'sha256' ) as $checksum_type ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                                $json_checksum_file->files[ $file ][ $checksum_type ] = array_unique( array_merge(
</span><span class="cx" style="display: block; padding: 0 10px">                                                        (array) $checksums->{$checksum_type}, // May already be an array
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                        (array) $json_checksum_file->files[ $file ][ $checksum_type ]
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                                 (array) $json_checksum_file->files[ $file ][ $checksum_type ]
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                                                 // Reduce single arrays back to a string when possible.
</span><span class="cx" style="display: block; padding: 0 10px">                                                if ( 1 == count( $json_checksum_file->files[ $file ][ $checksum_type ] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                                        $json_checksum_file->files[ $file ][ $checksum_type ] = array_shift( $json_checksum_file->files[ $file ][ $checksum_type ] );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -290,7 +299,6 @@
</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 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">                ksort( $json_checksum_file->files );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -316,9 +324,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">        protected function generate_temporary_directory( $dir, $prefix, $suffix = '' ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $i = 0;
</span><span class="cx" style="display: block; padding: 0 10px">                do {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $rand = uniqid();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $rand     = uniqid();
</ins><span class="cx" style="display: block; padding: 0 10px">                         $filename = "{$dir}/{$prefix}-{$rand}{$i}{$suffix}";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                } while ( false === ($fp = @fopen( $filename, 'x' ) ) && $i++ < 50 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         } while ( false === ( $fp = @fopen( $filename, 'x' ) ) && $i++ < 50 );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $i >= 50 ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        throw new Exception( __METHOD__ . ': Could not find unique filename.' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -357,9 +365,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $res = SVN::export( $this->plugin_version_svn_url, $build_dir, $svn_params );
</span><span class="cx" style="display: block; padding: 0 10px">                // Handle tags which we store as 0.blah but are in /tags/.blah
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! $res['result'] && '0.' == substr( $this->version, 0, 2 ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $_version = substr( $this->version, 1 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $_version                     = substr( $this->version, 1 );
</ins><span class="cx" style="display: block; padding: 0 10px">                         $this->plugin_version_svn_url = self::SVN_URL . "/{$this->slug}/tags/{$_version}/";
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $res = SVN::export( $this->plugin_version_svn_url, $build_dir, $svn_params );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $res                          = SVN::export( $this->plugin_version_svn_url, $build_dir, $svn_params );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! $res['result'] ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        throw new Exception( __METHOD__ . ': ' . $res['errors'][0]['error_message'], 404 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -448,12 +456,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        foreach ( $plugins_downloads_load_balancer /* TODO */ as $lb ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $url = 'http://' . $lb . PLUGIN_ZIP_X_ACCEL_REDIRECT_LOCATION . $zip;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                wp_remote_request(
-                                       $url,
-                                       array(
-                                               'method' => 'PURGE',
-                                       )
-                               );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                               wp_remote_request( $url, array(
+                                       'method' => 'PURGE',
+                               ) );
</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="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryzipclassservephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/zip/class-serve.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/zip/class-serve.php     2017-12-18 18:54:10 UTC (rev 6286)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/zip/class-serve.php       2017-12-19 16:22:37 UTC (rev 6287)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,5 +1,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Zip;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px"> use Exception;
</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">@@ -21,8 +22,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $request['args']['stats'] ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $this->record_stats( $request );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
-               } catch ( Exception $e )  {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         } catch ( Exception $e ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $this->error();
</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">@@ -37,14 +37,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $path = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH );
</span><span class="cx" style="display: block; padding: 0 10px">                $zip  = basename( $path );
</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( "!^(?P<slug>[a-z0-9-_]+)(\.(?P<version>.+?))?\.zip$!i", $zip, $m ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( preg_match( '!^(?P<slug>[a-z0-9-_]+)(\.(?P<version>.+?))?\.zip$!i', $zip, $m ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         // ZIP
</span><span class="cx" style="display: block; padding: 0 10px">                        $checksum_request = false;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                } elseif ( preg_match( "!^/plugin-checksums/(?P<slug>[a-z0-9-_]+)/(?P<version>.+?)(\.json)?$!i", $path, $m ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         } elseif ( preg_match( '!^/plugin-checksums/(?P<slug>[a-z0-9-_]+)/(?P<version>.+?)(\.json)?$!i', $path, $m ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         // Checksums
</span><span class="cx" style="display: block; padding: 0 10px">                        $checksum_request = true;
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        throw new Exception( __METHOD__ . ": Invalid URL." );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 throw new Exception( __METHOD__ . ': Invalid 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">                $slug = strtolower( $m['slug'] );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -59,7 +59,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Checksum requests for 'trunk' are not possible.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $checksum_request && 'trunk' == $version ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        throw new Exception( __METHOD__ . ": Checksum requests must include a version." );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 throw new Exception( __METHOD__ . ': Checksum requests must include a version.' );
</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">                $args = array(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -73,7 +73,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $args['stats'] = (bool) $_GET['stats'];
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                } elseif ( isset( $_GET['nostats'] ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $args['stats'] = !empty( $_GET['nostats'] );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $args['stats'] = ! empty( $_GET['nostats'] );
</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 compact( 'zip', 'slug', 'version', 'args', 'checksum_request' );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -92,6 +92,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Determine the stable_tag
</span><span class="cx" style="display: block; padding: 0 10px">                $meta = wp_cache_get( $post_id, 'post_meta' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $version = false;
</span><span class="cx" style="display: block; padding: 0 10px">                if ( isset( $meta['stable_tag'][0] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $version = $meta['stable_tag'][0];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -190,8 +191,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">        protected function record_stats( $request ) {
</span><span class="cx" style="display: block; padding: 0 10px">                global $wpdb;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $stats_dedup_log_table = PLUGINS_TABLE_PREFIX . 'downloads';
-               $stats_download_table = PLUGINS_TABLE_PREFIX . 'download_counts';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $stats_dedup_log_table      = PLUGINS_TABLE_PREFIX . 'downloads';
+               $stats_download_table       = PLUGINS_TABLE_PREFIX . 'download_counts';
</ins><span class="cx" style="display: block; padding: 0 10px">                 $stats_download_daily_table = PLUGINS_TABLE_PREFIX . 'stats';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Very basic de-duplication for downloads.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -200,9 +201,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        FROM {$stats_dedup_log_table}
</span><span class="cx" style="display: block; padding: 0 10px">                        WHERE
</span><span class="cx" style="display: block; padding: 0 10px">                                plugin_slug = %s AND
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                client_ip = %s AND
-                               user_agent = %s AND
-                               stamp BETWEEN %s AND %s
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         client_ip = %s AND
+                               user_agent = %s AND
+                               stamp BETWEEN %s AND %s
</ins><span class="cx" style="display: block; padding: 0 10px">                         LIMIT 1",
</span><span class="cx" style="display: block; padding: 0 10px">                        $request['slug'],
</span><span class="cx" style="display: block; padding: 0 10px">                        $_SERVER['REMOTE_ADDR'],
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -230,16 +231,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'plugin_slug' => $request['slug'],
</span><span class="cx" style="display: block; padding: 0 10px">                        'client_ip'   => $_SERVER['REMOTE_ADDR'],
</span><span class="cx" style="display: block; padding: 0 10px">                        'user_agent'  => $_SERVER['HTTP_USER_AGENT'],
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'stamp'       => gmdate( 'Y-m-d H:i:s' )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'stamp'       => gmdate( 'Y-m-d H:i:s' ),
</ins><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">         }
</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">         * Bail with a 404.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        protected function error() {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $protocol = isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.1';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $protocol  = isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.1';
</ins><span class="cx" style="display: block; padding: 0 10px">                 $protocol .= ' ';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                header( $protocol . '404 File not found' );
</span></span></pre>
</div>
</div>

</body>
</html>