Changeset 13460
- Timestamp:
- 04/05/2024 03:44:27 AM (15 months ago)
- Location:
- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-upload.php
r13109 r13460 143 143 // Duplicated from Upload handler. 144 144 // Make sure it doesn't use a TRADEMARK protected slug. 145 if ( false !== $upload_handler->has_trademarked_slug() ) { 145 $has_trademarked_slug = Trademarks::check_slug( $slug, wp_get_current_user() ); 146 if ( $has_trademarked_slug ) { 146 147 $error = __( 'That plugin slug includes a restricted term.', 'wporg-plugins' ); 147 148 148 if ( $ upload_handler->has_trademarked_slug() === trim( $upload_handler->has_trademarked_slug(), '-' ) ) {149 if ( $has_trademarked_slug === trim( $has_trademarked_slug, '-' ) ) { 149 150 // Trademarks that do NOT end in "-" indicate slug cannot contain term at all. 150 151 $message = sprintf( … … 152 153 __( 'Your chosen plugin slug - %1$s - contains the restricted term "%2$s", which cannot be used at all in your plugin permalink nor the display name.', 'wporg-plugins' ), 153 154 '<code>' . $slug . '</code>', 154 trim( $upload_handler->has_trademarked_slug(), '-' )155 '<code>' . trim( $has_trademarked_slug, '-' ) . '</code>' 155 156 ); 156 157 } else { … … 160 161 __( 'Your chosen plugin slug - %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.', 'wporg-plugins' ), 161 162 '<code>' . $slug . '</code>', 162 trim( $upload_handler->has_trademarked_slug(), '-' )163 '<code>' . trim( $has_trademarked_slug, '-' ) . '</code>' 163 164 ); 164 165 } -
sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/readme/class-validator.php
r13443 r13460 3 3 4 4 use WordPressdotorg\Plugin_Directory\Tools\Filesystem; 5 use WordPressdotorg\Plugin_Directory\Trademarks; 5 6 6 7 /** … … 94 95 if ( isset( $readme->warnings['invalid_plugin_name_header'] ) ) { 95 96 $errors['invalid_plugin_name_header'] = $readme->warnings['invalid_plugin_name_header']; 96 } elseif ( 97 } elseif ( empty( $readme->name ) ) { 97 98 $errors['invalid_plugin_name_header'] = true; 99 } 100 101 if ( 102 empty( $errors['invalid_plugin_name_header'] ) && 103 ( $trademark_check = Trademarks::check( $readme->name, wp_get_current_user() ) ) 104 ) { 105 $errors['trademarked_name'] = [ 106 'trademark' => $trademark_check, 107 'context' => $readme->name, 108 'where' => 'readme', 109 ]; 98 110 } 99 111 … … 383 395 ); 384 396 397 case 'trademarked_name': 398 $trademark = $data['trademark']; 399 $context = $data['context']; 400 401 if ( str_ends_with( $trademark, '-' ) ) { 402 // Trademarks ending in "-" indicate slug cannot BEGIN with that term. 403 return sprintf( 404 /* translators: 1: plugin name/slug, 2: trademarked term, 3: plugin email address */ 405 __( 'The plugin name includes a restricted term. Your chosen plugin name - %1$s - contains the restricted term "%2$s" and cannot be used to begin your slug, permalink, display name, or plugin 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. 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' ), 406 '<code>' . esc_html( $context ) . '</code>', 407 '<code>' . esc_html( trim( $trademark, '-' ) ) . '</code>', 408 '<code>plugins@wordpress.org</code>' 409 ); 410 } else { 411 // Trademarks that do NOT end in "-" indicate slug cannot contain term at all. 412 return sprintf( 413 /* translators: 1: plugin name/slug, 2: trademarked term, 3: plugin email address */ 414 __( 'The plugin name includes a restricted term. 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. If you feel this is in error, such as you legally own the trademark for a term, please email us at %3$s and explain your situation.', 'wporg-plugins' ), 415 '<code>' . esc_html( $context ) . '</code>', 416 '<code>' . esc_html( trim( $trademark, '-' ) ) . '</code>', 417 '<code>plugins@wordpress.org</code>' 418 ); 419 } 420 385 421 /* The are not generated by the Readme Parser, but rather the import parser. */ 386 422 case 'invalid_update_uri': -
sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload-handler.php
r13308 r13460 8 8 use WordPressdotorg\Plugin_Directory\Tools; 9 9 use WordPressdotorg\Plugin_Directory\Tools\Filesystem; 10 use WordPressdotorg\Plugin_Directory\Trademarks; 10 11 use WordPressdotorg\Plugin_Directory\Admin\Tools\Upload_Token; 11 12 use WordPressdotorg\Plugin_Directory\Clients\HelpScout; … … 169 170 // Make sure it doesn't use a TRADEMARK protected slug. 170 171 if ( ! $updating_existing ) { 171 $has_trademarked_slug = $this->has_trademarked_slug( $this->plugin_slug);172 $has_trademarked_slug = Trademarks::check_slug( $this->plugin_slug, wp_get_current_user() ); 172 173 } else { 173 174 // If we're updating an existing plugin, we need to check the new name, but the slug may be different. 174 $has_trademarked_slug = $this->has_trademarked_slug( 175 $this->generate_plugin_slug( $this->plugin['Name'] ) 176 ); 177 } 175 $has_trademarked_slug = Trademarks::check( $this->plugin['Name'], wp_get_current_user() ); 176 } 177 178 178 if ( false !== $has_trademarked_slug && ! $has_upload_token ) { 179 179 $error = __( 'Error: The plugin name includes a restricted term.', 'wporg-plugins' ); … … 618 618 619 619 /** 620 * Whether the uploaded plugin uses a trademark in the slug.621 *622 * @return string|false The trademarked slug if found, false otherwise.623 */624 public function has_trademarked_slug( $plugin_slug = false ) {625 $plugin_slug = $plugin_slug ?: $this->plugin_slug;626 627 $trademarked_slugs = array(628 'adobe-',629 'adsense-',630 'advanced-custom-fields-',631 'adwords-',632 'akismet-',633 'all-in-one-wp-migration',634 'amazon-',635 'android-',636 'apple-',637 'applenews-',638 'applepay-',639 'aws-',640 'azon-',641 'bbpress-',642 'bing-',643 'booking-com',644 'bootstrap-',645 'buddypress-',646 'chatgpt-',647 'chat-gpt-',648 'cloudflare-',649 'contact-form-7-',650 'cpanel-',651 'disqus-',652 'divi-',653 'dropbox-',654 'easy-digital-downloads-',655 'elementor-',656 'envato-',657 'fbook',658 'facebook',659 'fb-',660 'fb-messenger',661 'fedex-',662 'feedburner',663 'firefox-',664 'fontawesome-',665 'font-awesome-',666 'ganalytics-',667 'gberg',668 'github-',669 'givewp-',670 'google-',671 'googlebot-',672 'googles-',673 'gravity-form-',674 'gravity-forms-',675 'gravityforms-',676 'gtmetrix-',677 'gutenberg',678 'guten-',679 'hubspot-',680 'ig-',681 'insta-',682 'instagram',683 'internet-explorer-',684 'ios-',685 'jetpack-',686 'macintosh-',687 'macos-',688 'mailchimp-',689 'microsoft-',690 'ninja-forms-',691 'oculus',692 'onlyfans-',693 'only-fans-',694 'opera-',695 'paddle-',696 'paypal-',697 'pinterest-',698 'plugin',699 'skype-',700 'stripe-',701 'tiktok-',702 'tik-tok-',703 'trustpilot',704 'twitch-',705 'twitter-',706 'tweet',707 'ups-',708 'usps-',709 'vvhatsapp',710 'vvcommerce',711 'vva-',712 'vvoo',713 'wa-',714 'webpush-vn',715 'wh4tsapps',716 'whatsapp',717 'whats-app',718 'watson',719 'windows-',720 'wocommerce',721 'woocom-',722 'woocommerce', // technically ending with '-for-woocommerce' is allowed.723 'woocomerce',724 'woo-commerce',725 'woo-',726 'wo-',727 'wordpress',728 'wordpess',729 'wpress',730 'wp-',731 'wp-mail-smtp-',732 'yandex-',733 'yahoo-',734 'yoast',735 'youtube-',736 'you-tube-',737 );738 739 // Domains from which exceptions would be accepted.740 $trademark_exceptions = array(741 'adobe.com' => array( 'adobe' ),742 'automattic.com' => array( 'akismet', 'akismet-', 'jetpack', 'jetpack-', 'wordpress', 'wp-', 'woo', 'woo-', 'woocommerce', 'woocommerce-' ),743 'facebook.com' => array( 'facebook', 'instagram', 'oculus', 'whatsapp' ),744 'support.microsoft.com' => array( 'bing-', 'microsoft-' ),745 'trustpilot.com' => array( 'trustpilot' ),746 'microsoft.com' => array( 'bing-', 'microsoft-' ),747 'yandex-team.ru' => array( 'yandex' ),748 'yoast.com' => array( 'yoast' ),749 'opera.com' => array( 'opera-' ),750 'adobe.com' => array( 'adobe-' ),751 );752 753 // Trademarks that are allowed as 'for-whatever' ONLY.754 $for_use_exceptions = array(755 'woocommerce',756 );757 758 // Commonly used 'combo' names (to prevent things like 'woopress').759 $portmanteaus = array(760 'woo',761 );762 763 $has_trademarked_slug = false;764 765 foreach ( $trademarked_slugs as $trademark ) {766 if ( '-' === $trademark[-1] ) {767 // Trademarks ending in "-" indicate slug cannot begin with that term.768 if ( 0 === strpos( $plugin_slug, $trademark ) ) {769 $has_trademarked_slug = $trademark;770 break;771 }772 } elseif ( false !== strpos( $plugin_slug, $trademark ) ) {773 // Otherwise, the term cannot appear anywhere in slug.774 $has_trademarked_slug = $trademark;775 break;776 }777 }778 779 // check for 'for-TRADEMARK' exceptions.780 if ( $has_trademarked_slug && in_array( $has_trademarked_slug, $for_use_exceptions ) ) {781 $for_trademark = '-for-' . $has_trademarked_slug;782 // At this point we might be okay, but there's one more check.783 if ( $for_trademark === substr( $plugin_slug, -1 * strlen( $for_trademark ) ) ) {784 // Yes the slug ENDS with 'for-TRADEMARK'.785 $has_trademarked_slug = false;786 }787 }788 789 // Check portmanteaus.790 foreach ( $portmanteaus as $portmanteau ) {791 if ( 0 === strpos( $plugin_slug, $portmanteau ) ) {792 $has_trademarked_slug = $portmanteau;793 break;794 }795 }796 797 // Get the user email domain.798 list( ,$user_email_domain ) = explode( '@', wp_get_current_user()->user_email, 2 );799 800 // If email domain is on our list of possible exceptions, we have an extra check.801 if ( $has_trademarked_slug && array_key_exists( $user_email_domain, $trademark_exceptions ) ) {802 // If $has_trademarked_slug is in the array for that domain, they can use the term.803 if ( in_array( $has_trademarked_slug, $trademark_exceptions[ $user_email_domain ] ) ) {804 $has_trademarked_slug = false;805 }806 }807 808 return $has_trademarked_slug;809 }810 811 /**812 620 * Sends a plugin through Plugin Check. 813 621 *
Note: See TracChangeset
for help on using the changeset viewer.