bp_core_activate_signup( string $key )
Activate a signup, as identified by an activation key.
Description
Parameters
- $key
-
(Required) Activation key.
Return
(int|bool) User ID on success, false on failure.
Source
File: bp-members/bp-members-functions.php
function bp_core_activate_signup( $key ) { global $wpdb; $user = false; // Multisite installs have their own activation routine. if ( is_multisite() ) { $user = wpmu_activate_signup( $key ); // If there were errors, add a message and redirect. if ( ! empty( $user->errors ) ) { return $user; } $user_id = $user['user_id']; } else { $signups = BP_Signup::get( array( 'activation_key' => $key, ) ); if ( empty( $signups['signups'] ) ) { return new WP_Error( 'invalid_key', __( 'Invalid activation key.', 'buddyboss' ) ); } $signup = $signups['signups'][0]; if ( $signup->active ) { if ( empty( $signup->domain ) ) { return new WP_Error( 'already_active', __( 'The user is already active.', 'buddyboss' ), $signup ); } else { return new WP_Error( 'already_active', __( 'The site is already active.', 'buddyboss' ), $signup ); } } // Password is hashed again in wp_insert_user. $password = wp_generate_password( 12, false ); $user_id = username_exists( $signup->user_login ); // Create the user. This should only be necessary if BP_SIGNUPS_SKIP_USER_CREATION is true. if ( ! $user_id ) { $user_id = wp_create_user( $signup->user_login, $password, $signup->user_email ); // Otherwise, update the existing user's status. } elseif ( $key === bp_get_user_meta( $user_id, 'activation_key', true ) || $key === wp_hash( $user_id ) ) { // Change the user's status so they become active. if ( ! $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->users} SET user_status = 0 WHERE ID = %d", $user_id ) ) ) { return new WP_Error( 'invalid_key', __( 'Invalid activation key.', 'buddyboss' ) ); } bp_delete_user_meta( $user_id, 'activation_key' ); $user_already_created = true; } else { $user_already_exists = true; } if ( ! $user_id ) { return new WP_Error( 'create_user', __( 'Could not create user', 'buddyboss' ), $signup ); } // Fetch the signup so we have the data later on. $signups = BP_Signup::get( array( 'activation_key' => $key, ) ); $signup = isset( $signups['signups'] ) && ! empty( $signups['signups'][0] ) ? $signups['signups'][0] : false; // Activate the signup. BP_Signup::validate( $key ); if ( isset( $user_already_exists ) ) { return new WP_Error( 'user_already_exists', __( 'That username is already activated.', 'buddyboss' ), $signup ); } // Set up data to pass to the legacy filter. $user = array( 'user_id' => $user_id, 'password' => $signup->meta['password'], 'meta' => $signup->meta, ); /** * Maybe notify the site admin of a new user registration. * * @since BuddyPress 1.2.2 * * @param bool $notification Whether to send the notification or not. */ if ( apply_filters( 'bp_core_send_user_registration_admin_notification', true ) ) { wp_new_user_notification( $user_id ); } if ( isset( $user_already_created ) ) { /** * Fires if the user has already been created. * * @since BuddyPress 1.2.2 * * @param int $user_id ID of the user being checked. * @param string $key Activation key. * @param array $user Array of user data. */ do_action( 'bp_core_activated_user', $user_id, $key, $user ); return $user_id; } } // Set any profile data. if ( bp_is_active( 'xprofile' ) ) { if ( ! empty( $user['meta']['profile_field_ids'] ) ) { $profile_field_ids = explode( ',', $user['meta']['profile_field_ids'] ); foreach( (array) $profile_field_ids as $field_id ) { $current_field = isset( $user['meta']["field_{$field_id}"] ) ? $user['meta']["field_{$field_id}"] : false; if ( !empty( $current_field ) ) { xprofile_set_field_data( $field_id, $user_id, $current_field ); } /* * Save the visibility level. * * Use the field's default visibility if not present, and 'public' if a * default visibility is not defined. */ $key = "field_{$field_id}_visibility"; if ( isset( $user['meta'][ $key ] ) ) { $visibility_level = $user['meta'][ $key ]; } else { $vfield = xprofile_get_field( $field_id ); $visibility_level = isset( $vfield->default_visibility ) ? $vfield->default_visibility : 'public'; } xprofile_set_field_visibility_level( $field_id, $user_id, $visibility_level ); } } } // Replace the password automatically generated by WordPress by the one the user chose. if ( ! empty( $user['meta']['password'] ) ) { $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->users} SET user_pass = %s WHERE ID = %d", $user['meta']['password'], $user_id ) ); /** * Make sure to clean the user's cache as we've * directly edited the password without using * wp_update_user(). * * If we can't use wp_update_user() that's because * we already hashed the password at the signup step. */ $uc = wp_cache_get( $user_id, 'users' ); if ( ! empty( $uc->ID ) ) { clean_user_cache( $uc->ID ); } } /** * Fires at the end of the user activation process. * * @since BuddyPress 1.2.2 * * @param int $user_id ID of the user being checked. * @param string $key Activation key. * @param array $user Array of user data. */ do_action( 'bp_core_activated_user', $user_id, $key, $user ); return $user_id; }
Changelog
Version | Description |
---|---|
BuddyPress 1.2.2 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.