<!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>[9096] sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory: Plugin Directory: Adjust review tools and upload process to better address issues with reserved plugin names and trademark protected slugs:</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="http://meta.trac.wordpress.org/changeset/9096">9096</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/9096","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>SergeyBiryukov</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2019-08-08 22:04:27 +0000 (Thu, 08 Aug 2019)</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'>Plugin Directory: Adjust review tools and upload process to better address issues with reserved plugin names and trademark protected slugs:

* Display known problematic IPs more prominently in Author Card.
* Expand the list of reserved slugs and high value slugs.
* Check for trademark protected slugs.
* Block short plugin names (less than 5 characters).
* Clarify that plugin name should be changed in both the main plugin file and readme.

Props Ipstenu.
Fixes <a href="http://meta.trac.wordpress.org/ticket/4664">#4664</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<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_htmlwpcontentpluginsplugindirectoryadminmetaboxclassreviewtoolsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-review-tools.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>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<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     2019-08-08 04:18:01 UTC (rev 9095)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-author-card.php       2019-08-08 22:04:27 UTC (rev 9096)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -13,7 +13,41 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * @package WordPressdotorg\Plugin_Directory\Admin\Metabox
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> class Author_Card {
</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><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * List of known problematic IPs
+        *
+        * @var array
+        */
+       public static $iffy_ips = [
+               '2.240.',
+               '2.241.',
+               '5.102.170.',
+               '5.102.171.',
+               '38.78.',
+               '47.15.',
+               '49.50.124.',
+               '65.33.104.38',
+               '71.41.77.202',
+               '76.73.108.',
+               '80.131.192.168',
+               '87.188.',
+               '91.228.',
+               '91.238.',
+               '94.103.41.',
+               '109.123.',
+               '110.55.1.251',
+               '110.55.4.248',
+               '116.193.162.',
+               '119.235.251.',
+               '159.253.145.183',
+               '173.171.9.190',
+               '173.234.140.18',
+               '188.116.36.',
+               '217.87.',
+       ];
+
+       /**
</ins><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">         * @param int|WP_Post $post_or_user_id The post or the ID of a specific user.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -250,14 +284,32 @@
</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>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               $ip_data = array(
+                       'name'    => $ip,
+                       'tooltip' => '',
+                       'iffy'    => false,
+               );
+
+               foreach ( self::$iffy_ips as $check_ip ) {
+                       if ( false !== strpos( $ip, $check_ip ) ) {
+                               $ip_data['name']   .= '*';
+                               $ip_data['tooltip'] = 'This IP may be problematic and has been used for abuse before.';
+                               $ip_data['iffy']    = true;
+                       }
+               }
+
+               $output_ip = sprintf(
+                       '<a href="%1$s" title="%2$s">%3$s</a>',
</ins><span class="cx" style="display: block; padding: 0 10px">                         esc_url( add_query_arg( array(
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_type' => 'plugin',
</span><span class="cx" style="display: block; padding: 0 10px">                                's'         => $ip,
</span><span class="cx" style="display: block; padding: 0 10px">                        ), admin_url( 'edit.php' ) ) ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $ip
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $ip_data['tooltip'],
+                       $ip_data['name']
</ins><span class="cx" style="display: block; padding: 0 10px">                 );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               return $output_ip;
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span></span></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    2019-08-08 04:18:01 UTC (rev 9095)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-review-tools.php      2019-08-08 22:04:27 UTC (rev 9096)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -32,14 +32,21 @@
</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">        public static $reserved_slugs = [
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'wordpress',
-               'woocommerce',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'apple',
+               'contact-form-7',
+               'facebook',
</ins><span class="cx" style="display: block; padding: 0 10px">                 'google',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'youtube',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'instagram',
+               'ios',
+               'jetpack',
+               'jquery',
+               'microsoft',
+               'paypal',
</ins><span class="cx" style="display: block; padding: 0 10px">                 'twitter',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'facebook',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'woocommerce',
+               'wordpress',
</ins><span class="cx" style="display: block; padding: 0 10px">                 'yoast',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'jetpack',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'youtube',
</ins><span class="cx" style="display: 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 +56,23 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        public static $restricted_slugs = [
</span><span class="cx" style="display: block; padding: 0 10px">                // High-value plugin genres due to their popularity, often abused by spammers.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'booking',
+               'bookmark',
+               'cookie',
</ins><span class="cx" style="display: block; padding: 0 10px">                 'gallery',
</span><span class="cx" style="display: block; padding: 0 10px">                'lightbox',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                'seo',
</ins><span class="cx" style="display: block; padding: 0 10px">                 'sitemap',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'bookmark',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'slide',
</ins><span class="cx" style="display: block; padding: 0 10px">                 'social',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'cookie',
-               'slide',
-               'seo',
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Plugins we generally don't allow.
</span><span class="cx" style="display: block; padding: 0 10px">                'autoblog',
</span><span class="cx" style="display: block; padding: 0 10px">                'auto-blog',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'booking',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         'framework',
+               'library',
</ins><span class="cx" style="display: block; padding: 0 10px">                 'plugin',
</span><span class="cx" style="display: block; padding: 0 10px">                'spinning',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                'framework',
</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">@@ -86,39 +94,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">-         * List of known problematic IPs
-        *
-        * @var array
-        */
-       public static $iffy_ips = [
-               '2.240.',
-               '2.241.',
-               '5.102.170.',
-               '5.102.171.',
-               '38.78.',
-               '47.15.',
-               '49.50.124.',
-               '65.33.104.38',
-               '71.41.77.202',
-               '76.73.108.',
-               '80.131.192.168',
-               '87.188.',
-               '91.228.',
-               '91.238.',
-               '94.103.41.',
-               '109.123.',
-               '110.55.1.251',
-               '110.55.4.248',
-               '116.193.162.',
-               '119.235.251.',
-               '159.253.145.183',
-               '173.171.9.190',
-               '173.234.140.18',
-               '188.116.36.',
-               '217.87.',
-       ];
-
-       /**
</del><span class="cx" style="display: block; padding: 0 10px">          * Displays links to plugin assets and automated flags.
</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></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     2019-08-08 04:18:01 UTC (rev 9095)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload-handler.php       2019-08-08 22:04:27 UTC (rev 9096)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -95,7 +95,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        return new \WP_Error( 'unsupported_name', $error . ' ' . sprintf(
</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">-                                __( 'Plugin names may only contain latin letters (A-z), numbers, spaces, and hyphens. Please change the %s line in your main plugin file and upload it again.', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         __( 'Plugin names may only contain latin letters (A-z), numbers, spaces, and hyphens. Please change the %s line in your main plugin file and readme, then you may upload it again.', 'wporg-plugins' ),
</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>Plugin Name:</code>'
</span><span class="cx" style="display: block; padding: 0 10px">                        ) );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -107,12 +107,25 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><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><del style="background-color: #fdd; text-decoration:none; 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' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         __( 'Your chosen plugin name - %1$s - has been reserved and cannot be used. Please change the %2$s line in your main plugin file and readme, then you may upload it again.', 'wporg-plugins' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                 '<code>' . $this->plugin_slug . '</code>',
</span><span class="cx" style="display: block; padding: 0 10px">                                '<code>Plugin Name:</code>'
</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">+                // Make sure it doesn't use a TRADEMARK protected slug.
+               if ( $this->has_trademarked_slug() ) {
+                       $error = __( 'Error: The plugin has a trademarked name.', 'wporg-plugins' );
+
+                       return new \WP_Error( 'trademarked_name', $error . ' ' . sprintf(
+                               /* translators: 1: plugin slug, 2: 'Plugin Name:', 3: plugin email address. */
+                               __( 'Your chosen plugin name - %1$s - has been flagged as trademark infringement and cannot be used. We have been legally compelled to protect specific trademarks and as such prevent the use of specific terms. Please change the %2$s line in your main plugin file and readme, then you may upload it again. If you feel this is in error, please email us at %3$s and explain why.', 'wporg-plugins' ),
+                               '<code>' . $this->plugin_slug . '</code>',
+                               '<code>Plugin Name:</code>',
+                               '<code>plugins@wordpress.org</code>'
+                       ) );
+               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $plugin_post = Plugin_Directory::get_plugin_post( $this->plugin_slug );
</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 by a different author?
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -140,6 +153,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        ) );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // Prevent short plugin names (they're generally SEO grabs).
+               if ( strlen( $this->plugin_slug ) < 5 ) {
+                       $error = __( 'Error: The plugin slug is too short.', 'wporg-plugins' );
+
+                       return new \WP_Error( 'trademarked_name', $error . ' ' . sprintf(
+                               /* translators: 1: plugin slug, 2: 'Plugin Name:' */
+                               __( 'Your chosen plugin name - %1$s - is not permitted becuase it is too short. Please change the %2$s line in your main plugin file and readme and upload it again.', 'wporg-plugins' ),
+                               '<code>' . $this->plugin_slug . '</code>',
+                               '<code>Plugin Name:</code>'
+                       ) );
+               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( ! $this->plugin['Description'] ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: The plugin has no description.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -290,15 +315,6 @@
</span><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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Warn if the plugin starts with a reserved slug.
-               if ( $this->starts_with_reserved_slug() ) {
-                       $message .= sprintf(
-                               /* translators: %s: plugin name */
-                               __( 'Warning: Your plugin will probably need to be renamed. Your chosen plugin name - %s - starts with a term that may belong to another company. When we review your submission we will either correct this for you or request you approve a new name.' ),
-                               esc_html( $this->plugin['Name'] )
-                       ) . '</p><p>';
-               }
-
</del><span class="cx" style="display: block; padding: 0 10px">                 $message .= __( 'If there is any error in your submission, please email us as soon as possible. We can correct many issues before approval.', 'wporg-plugins' ) . '</p><p>';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $message .= sprintf(
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -334,6 +350,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'admin',
</span><span class="cx" style="display: block; padding: 0 10px">                        'wp-admin',
</span><span class="cx" style="display: block; padding: 0 10px">                        'wordpress',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'jquery',
</ins><span class="cx" style="display: 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 in_array( $this->plugin_slug, $reserved_slugs );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -340,30 +357,40 @@
</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">-         * Whether the uploaded plugin uses a slug commonly abused by non-reps.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * Whether the uploaded plugin uses a trademark in the slug.
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         * @return bool
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function starts_with_reserved_slug() {
-               $abused_slugs = array(
-                       'apple',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function has_trademarked_slug() {
+               $trademarked_slugs = array(
+                       'contact-form-7',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'facebook',
</span><span class="cx" style="display: block; padding: 0 10px">                        'google',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'ios',
-                       'jetpack',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 '-gram',
+                       'gram-',
+                       'instagram',
+                       'insta',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'microsoft',
</span><span class="cx" style="display: block; padding: 0 10px">                        'paypal',
</span><span class="cx" style="display: block; padding: 0 10px">                        'twitter',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'tweet',
+                       'whatsapp',
+                       'whats-app',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'woocommerce',
</span><span class="cx" style="display: block; padding: 0 10px">                        'wordpress',
</span><span class="cx" style="display: block; padding: 0 10px">                        'yoast',
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // Get the slug in an array.
-               $slug = explode( '-', $this->plugin_slug );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $has_trademarked_slug = false;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                // If the slug is the same as the first term, flag for abuse.
-               return in_array( $slug[0], $abused_slugs );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         foreach ( $trademarked_slugs as $trademark ) {
+                       if ( false !== strpos( $this->plugin_slug, $trademark ) ) {
+                               $has_trademarked_slug = true;
+                               break;
+                       }
+               }
+
+               return $has_trademarked_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">@@ -406,7 +433,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">                echo '<h4>' . sprintf( __( 'Results of Automated Plugin Scanning: %s', 'wporg-plugins' ), vsprintf( '<span class="%1$s">%2$s</span>', $verdict ) ) . '</h4>';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                echo '<ul class="tc-result">' . 'Result' . '</ul>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         echo '<ul class="tc-result">' . __( 'Result', 'wporg-plugins' ) . '</ul>';
</ins><span class="cx" style="display: block; padding: 0 10px">                 echo '<div class="notice notice-info"><p>' . __( 'Note: While the automated plugin scan is based on the Plugin Review Guidelines, it is not a complete review. A successful result from the scan does not guarantee that the plugin will pass review. All submitted plugins are reviewed manually before approval.', 'wporg-plugins' ) . '</p></div>';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return $result;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -445,14 +472,17 @@
</span><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><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                /* translators: 1: plugin name, 2: plugin slug */
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         /*
+                       Please leave the blank lines in place.
+               */
</ins><span class="cx" style="display: block; padding: 0 10px">                 $email_content = sprintf(
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        // translators: 1: plugin name, 2: plugin slug.
</ins><span class="cx" style="display: block; padding: 0 10px">                         __(
</span><span class="cx" style="display: block; padding: 0 10px"> '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.
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; 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.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+Your plugin has been given the initial slug of %2$s based on your diplay name of %1$s. This is subject to change based on the results of your review.
</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 there is any problem with this submission, please reply to this email and let us know right away. In most cases, we can correct errors as long as the plugin has not yet been approved. For situations like an incorrect plugin slug, we are unable to change that post approval. If you do not inform us of any requirements now, we will be unable to honor them later.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+If there are any problems with your submission, please REPLY to this email and let us know right away. In most cases, we can correct errors as long as the plugin has not yet been approved. For situations like an incorrect plugin slug, we are unable to change that post approval. If you do not inform us of any requirements now, we will be unable to honor them later.
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> We recommend you review the following links to understand the review process and our expectations:
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -474,7 +504,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                wp_mail( $user_email, $email_subject, $email_content, 'From: plugins@wordpress.org' );
</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">-        // Helper
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ // Helper.
</ins><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>
</div>

</body>
</html>