WordPress.org

Make WordPress Core

Ticket #35427: 35427.patch

File 35427.patch, 4.1 KB (added by pbearne, 4 years ago)

patch with both filters

  • wp-admin/user-new.php

     
    144144                                add_filter( 'wpmu_signup_user_notification', '__return_false' ); // Disable confirmation email
    145145                                add_filter( 'wpmu_welcome_user_notification', '__return_false' ); // Disable welcome email
    146146                        }
    147                         wpmu_signup_user( $new_user_login, $new_user_email, array( 'add_to_blog' => $wpdb->blogid, 'new_role' => $_REQUEST['role'] ) );
     147
     148                        /** This filter is documented in wp-signup.php */
     149                        wpmu_signup_user( $new_user_login, $new_user_email, apply_filters( 'add_signup_meta', array( 'add_to_blog' => $wpdb->blogid, 'new_role' => $_REQUEST['role'] ) ) );
    148150                        if ( isset( $_POST[ 'noconfirmation' ] ) && current_user_can( 'manage_network_users' ) ) {
    149151                                $key = $wpdb->get_var( $wpdb->prepare( "SELECT activation_key FROM {$wpdb->signups} WHERE user_login = %s AND user_email = %s", $new_user_login, $new_user_email ) );
    150152                                wpmu_activate_signup( $key );
  • wp-includes/ms-functions.php

     
    717717        $user = preg_replace( '/\s+/', '', sanitize_user( $user, true ) );
    718718        $user_email = sanitize_email( $user_email );
    719719        $key = substr( md5( time() . rand() . $user_email ), 0, 16 );
    720         $meta = serialize($meta);
    721720
     721        /**
     722         * Filter meta variables used for user signup for future activation.
     723         *
     724         * @since 4.5.0
     725         *
     726         * @param array $meta {
     727         *     An array of default site meta variables.
     728         * }
     729         */
     730        $meta = serialize( apply_filters( 'wpmu_signup_user_meta', $meta, $user, $user_email ) );
     731
    722732        $wpdb->insert( $wpdb->signups, array(
    723733                'domain' => '',
    724734                'path' => '',
     
    952962function wpmu_activate_signup($key) {
    953963        global $wpdb;
    954964
    955         $signup = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->signups WHERE activation_key = %s", $key) );
     965        $signup = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->signups WHERE activation_key = %s", $key ) );
    956966
    957         if ( empty( $signup ) )
     967        if ( empty( $signup ) ) {
    958968                return new WP_Error( 'invalid_key', __( 'Invalid activation key.' ) );
     969        }
    959970
    960971        if ( $signup->active ) {
    961                 if ( empty( $signup->domain ) )
     972                if ( empty( $signup->domain ) ) {
    962973                        return new WP_Error( 'already_active', __( 'The user is already active.' ), $signup );
    963                 else
     974                } else {
    964975                        return new WP_Error( 'already_active', __( 'The site is already active.' ), $signup );
     976                }
    965977        }
    966978
    967         $meta = maybe_unserialize($signup->meta);
     979        $meta     = maybe_unserialize( $signup->meta );
    968980        $password = wp_generate_password( 12, false );
    969981
    970         $user_id = username_exists($signup->user_login);
     982        $user_id = username_exists( $signup->user_login );
    971983
     984        if ( ! $user_id ) {
     985                $user_id = wpmu_create_user( $signup->user_login, $password, $signup->user_email );
     986        } else {
     987                $wpdb->update( $wpdb->signups, array( 'active' => 1, 'activated' => $now ), array( 'activation_key' => $key ) );
     988        }
     989                /**
     990                 * allow the suppression of errors if user already exists.
     991                 *
     992                 * @since 4.5
     993                 *
     994                 * @param WP_Error
     995                 */
     996                $user_already_exists = apply_filters('_wpmu_activate_existing_error_', true, $signup  );
     997        }
    972998        if ( ! $user_id )
    973                 $user_id = wpmu_create_user($signup->user_login, $password, $signup->user_email);
    974         else
    975                 $user_already_exists = true;
    976 
    977         if ( ! $user_id )
    978999                return new WP_Error('create_user', __('Could not create user'), $signup);
    9791000
    9801001        $now = current_time('mysql', true);
     
    9821003        if ( empty($signup->domain) ) {
    9831004                $wpdb->update( $wpdb->signups, array('active' => 1, 'activated' => $now), array('activation_key' => $key) );
    9841005
    985                 if ( isset( $user_already_exists ) )
    986                         return new WP_Error( 'user_already_exists', __( 'That username is already activated.' ), $signup);
     1006                if ( isset( $user_already_exists ) ){
     1007                        return new WP_Error( 'user_already_exists', __( 'That username is already activated.' ), $signup, get_defined_vars() );
     1008                }
    9871009
    9881010                /**
    9891011                 * Fires immediately after a new user is activated.