<!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>[11348] sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload-handler.php: Update the various checkers for restricted terms in plugins</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/11348">11348</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/11348","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>Ipstenu</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2021-11-30 22:27:12 +0000 (Tue, 30 Nov 2021)</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'>Update the various checkers for restricted terms in plugins

Explain why terms are blocked in a less trademarky fashion

Attempting to block 'woopress' submissions

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

<h3>Modified Paths</h3>
<ul>
<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_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     2021-11-29 19:02:55 UTC (rev 11347)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload-handler.php       2021-11-30 22:27:12 UTC (rev 11348)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -115,13 +115,13 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Make sure it doesn't use a TRADEMARK protected slug.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( false !== $this->has_trademarked_slug() ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $error = __( 'Error: The plugin includes a trademarked name.', 'wporg-plugins' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $error = __( 'Error: The plugin name includes a restricted term.', 'wporg-plugins' );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $this->has_trademarked_slug() === trim( $this->has_trademarked_slug(), '-' ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                // Trademarks that do NOT end in "-" indicate slug cannot contain term at all.
</span><span class="cx" style="display: block; padding: 0 10px">                                $message = sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                        /* translators: 1: plugin slug, 2: trademarked term, 3: 'Plugin Name:', 4: plugin email address */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        __( 'Your chosen plugin name - %1$s - contains the restricted term "%2$s" and cannot be used at all in your plugin permalink nor the display name. To proceed with this submission you must remove "%2$s" from the %3$s line in both your main plugin file and readme entirely. Once you\'ve finished, you may upload the plugin again. Do not attempt to work around this by removing letters (i.e. WordPess) or using numbers (4 instead of A). Those are seen as intentional actions to avoid trademark laws, and are not permitted. If you feel this is in error, such as you legally own the trademarked term, please email us at %4$s and explain why.', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 __( 'Your chosen plugin name - %1$s - contains the restricted term "%2$s" and cannot be used at all in your plugin permalink nor the display name. To proceed with this submission you must remove "%2$s" from the %3$s line in both your main plugin file and readme entirely. Once you\'ve finished, you may upload the plugin again. Do not attempt to work around this by removing letters (i.e. WordPess) or using numbers (4 instead of A). Those are seen as intentional actions to avoid our restrictions, and are not permitted. If you feel this is in error, such as you legally own the trademark for a term, please email us at %4$s and explain your situation.', '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">                                        trim( $this->has_trademarked_slug(), '-' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                        '<code>Plugin Name:</code>',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -131,7 +131,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                // Trademarks ending in "-" indicate slug cannot BEGIN with that term.
</span><span class="cx" style="display: block; padding: 0 10px">                                $message = sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                        /* translators: 1: plugin slug, 2: trademarked term, 3: 'Plugin Name:', 4: plugin email address */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        __( 'Your chosen plugin name - %1$s - contains the restricted term "%2$s" and cannot be used to begin your permalink or display name. Per the requirements of trademark owners and law, we disallow the use of certain terms in ways that are infringing and/or misleading. In order to proceed with this submission, you must change the %3$s line in your main plugin file and readme to end with  "-%2$s" instead. Once you\'ve finished, you may upload the plugin again. If you feel this is in error, such as you legally own the trademarked term, please email us at %4$s and explain why.', 'wporg-plugins' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 __( 'Your chosen plugin name - %1$s - contains the restricted term "%2$s" and cannot be used to begin your permalink or display name. We disallow the use of certain terms in ways that are abused, or potentially infringe on and/or are misleading with regards to trademarks. In order to proceed with this submission, you must change the %3$s line in your main plugin file and readme to end with  "-%2$s" instead. Once you\'ve finished, you may upload the plugin again. If you feel this is in error, such as you legally own the trademark for the term, please email us at %4$s and explain your situation.', '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">                                        trim( $this->has_trademarked_slug(), '-' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                        '<code>Plugin Name:</code>',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -365,7 +365,7 @@
</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">-                $message .= __( 'If there are any errors in your submission, please email us as soon as possible. We can correct many issues before approval.', 'wporg-plugins' ) . '</p><p>';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $message .= __( 'If there are any errors in your submission, such as having submitted via the wrong account, please don\'t resubmit! Instead, email us as soon as possible (you can reply to the automated email we sent you). We can correct most issues before approval.', 'wporg-plugins' ) . '</p><p>';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $message .= sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                        /* translators: 1: URL to guidelines; 2: URL to FAQs; */
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -376,6 +376,8 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $message .= __( 'Note: Reviews are currently in English only. We apologize for the inconvenience.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $message .= '</p>';
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Success!
</span><span class="cx" style="display: block; padding: 0 10px">                return $message;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -444,12 +446,16 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'android-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'apple-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'applenews-',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'applepay-',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'aws-',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'azon-',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'bbpress-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'bing-',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'booking-com',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'bootstrap-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'buddypress-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'contact-form-7-',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'cloudflare-',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'cpanel-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'disqus-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'divi-',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -463,6 +469,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'fb-messenger',
</span><span class="cx" style="display: block; padding: 0 10px">                        'fedex-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'feedburner',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'firefox-',
+                       'fontawesome-',
+                       'font-awesome-',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'ganalytics-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'gberg',
</span><span class="cx" style="display: block; padding: 0 10px">                        'github-',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -472,6 +481,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'googles-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'gravity-form-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'gravity-forms-',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'gravityforms-',
+                       'gtmetrix-',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'gutenberg',
</span><span class="cx" style="display: block; padding: 0 10px">                        'guten-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'hubspot-',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -479,8 +490,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'insta-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'instagram',
</span><span class="cx" style="display: block; padding: 0 10px">                        'internet-explorer-',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'ios-',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'jetpack-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'macintosh-',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'macos-',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'mailchimp-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'microsoft-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'ninja-forms-',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -487,12 +500,17 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'oculus',
</span><span class="cx" style="display: block; padding: 0 10px">                        'onlyfans-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'only-fans-',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'opera-',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'paddle-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'paypal-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'pinterest-',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'plugin',
+                       'skype-',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'stripe-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'tiktok-',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'tik-tok-',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'trustpilot',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'twitch-',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'twitter-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'tweet',
</span><span class="cx" style="display: block; padding: 0 10px">                        'ups-',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -502,6 +520,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'vva-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'vvoo',
</span><span class="cx" style="display: block; padding: 0 10px">                        'wa-',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'webpush-vn',
</ins><span class="cx" style="display: block; padding: 0 10px">                         'wh4tsapps',
</span><span class="cx" style="display: block; padding: 0 10px">                        'whatsapp',
</span><span class="cx" style="display: block; padding: 0 10px">                        'whats-app',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -523,6 +542,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'yahoo-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'yoast',
</span><span class="cx" style="display: block; padding: 0 10px">                        'youtube-',
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'you-tube-',
</ins><span class="cx" style="display: block; padding: 0 10px">                 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Domains from which exceptions would be accepted.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -534,6 +554,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'trustpilot.com'        => array( 'trustpilot' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'microsoft.com'         => array( 'bing-', 'microsoft-' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'yandex-team.ru'        => array( 'yandex' ),
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        'opera.com'             => array( 'opera-' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Trademarks that are allowed as 'for-whatever' ONLY.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -541,6 +562,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'woocommerce',
</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">+                // Commonly used 'combo' names (to prevent things like 'woopress').
+               $portmanteaus = array(
+                       'woo',
+               );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $has_trademarked_slug = false;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $trademarked_slugs as $trademark ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -567,6 +593,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"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // Check portmanteaus.
+               foreach ( $portmanteaus as $portmanteau ) {
+                       if ( 0 === strpos( $this->plugin_slug, $portmanteau ) ) {
+                               $has_trademarked_slug = $portmanteau;
+                               break;
+                       }
+               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Get the user email domain.
</span><span class="cx" style="display: block; padding: 0 10px">                list( ,$user_email_domain ) = explode( '@', wp_get_current_user()->user_email, 2 );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre>
</div>
</div>

</body>
</html>