Root Zanli
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
o5t6x7pgljbm
/
public_html
/
wp-content
/
plugins
/
buddypress
/
cli
/
src
/
Filename :
signup.php
back
Copy
<?php namespace Buddypress\CLI\Command; use WP_CLI; /** * Manage BuddyPress Signups. * * ## EXAMPLES * * # Add a signup. * $ wp bp signup create --user-login=test_user --user-email=teste@site.com * Success: Successfully added new user signup (ID #345). * * # Activate a signup. * $ wp bp signup activate ee48ec319fef3nn4 * Success: Signup activated, new user (ID #545). * * @since 1.5.0 */ class Signup extends BuddyPressCommand { /** * Signup object fields. * * @var array */ protected $obj_fields = [ 'id', 'user_name', 'user_login', 'user_email', 'registered', 'meta', 'activation_key', 'count_sent', ]; /** * Dependency check for this CLI command. */ public static function check_dependencies() { parent::check_dependencies(); if ( ! bp_get_signup_allowed() ) { WP_CLI::error( 'The BuddyPress signup feature needs to be allowed.' ); } // Fixes a bug in case the signups tables were not properly created. require_once buddypress()->plugin_dir . 'bp-core/admin/bp-core-admin-schema.php'; require_once buddypress()->plugin_dir . 'bp-core/bp-core-update.php'; bp_core_maybe_install_signups(); } /** * Add a signup. * * ## OPTIONS * * [--user-login=<user-login>] * : User login for the signup. * * [--user-email=<user-email>] * : User email for the signup. * * [--activation-key=<activation-key>] * : Activation key for the signup. If none is provided, a random one will be used. * * [--silent] * : Whether to silent the signup creation. * * [--porcelain] * : Output only the new signup id. * * ## EXAMPLES * * # Add a signup. * $ wp bp signup create --user-login=test_user --user-email=teste@site.com * Success: Successfully added new user signup (ID #345). * * @alias add */ public function create( $args, $assoc_args ) { $r = wp_parse_args( $assoc_args, [ 'user-login' => '', 'user-email' => '', 'activation-key' => wp_generate_password( 32, false ), ] ); $signup_args = [ 'meta' => [] ]; $user_login = $r['user-login']; if ( ! empty( $user_login ) ) { $user_login = preg_replace( '/\s+/', '', sanitize_user( $user_login, true ) ); } $user_email = $r['user-email']; if ( ! empty( $user_email ) ) { $user_email = sanitize_email( $user_email ); } $signup_args['user_login'] = $user_login; $signup_args['user_email'] = $user_email; $signup_args['activation_key'] = $r['activation-key']; $signup_id = \BP_Signup::add( $signup_args ); // Silent it. if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'silent' ) ) { return; } if ( ! $signup_id ) { WP_CLI::error( 'Could not add user signup.' ); } if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { WP_CLI::log( $signup_id ); } else { WP_CLI::success( sprintf( 'Successfully added new user signup (ID #%d).', $signup_id ) ); } } /** * Get a signup. * * ## OPTIONS * * <signup-id> * : Identifier for the signup. Can be a signup ID, an email address, or a user_login. * * [--match-field=<match-field>] * : Field to match the signup-id to. Use if there is ambiguity between, eg, signup ID and user_login. * --- * options: * - signup_id * - user_email * - user_login * --- * * [--fields=<fields>] * : Limit the output to specific signup fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - json * - csv * - yaml * --- * * ## EXAMPLES * * # Get a signup. * $ wp bp signup get 35 --fields=id,user_login,user_name,count_sent * +------------+------------+ * | Field | Value | * +------------+------------+ * | id | 35 | * | user_login | user897616 | * | user_name | Test user | * | count_sent | 4 | * +------------+------------+ */ public function get( $args, $assoc_args ) { $signup = $this->get_signup_by_identifier( $args[0], $assoc_args ); $this->get_formatter( $assoc_args )->display_item( $signup ); } /** * Delete a signup. * * ## OPTIONS * * <signup-id>... * : ID or IDs of signup to delete. * * [--yes] * : Answer yes to the confirmation message. * * ## EXAMPLES * * # Delete a signup. * $ wp bp signup delete 520 --yes * Success: Signup deleted 54565. * * # Delete multiple signups. * $ wp bp signup delete 55654 54565 --yes * Success: Signup deleted 55654. * Success: Signup deleted 54565. * * @alias remove * @alias trash */ public function delete( $args, $assoc_args ) { $signup_ids = wp_parse_id_list( $args ); if ( count( $signup_ids ) > 1 ) { WP_CLI::confirm( 'Are you sure you want to delete these signups?', $assoc_args ); } else { WP_CLI::confirm( 'Are you sure you want to delete this signup?', $assoc_args ); } parent::_delete( $signup_ids, $assoc_args, function ( $signup_id ) { if ( \BP_Signup::delete( [ $signup_id ] ) ) { return [ 'success', sprintf( 'Signup deleted %d.', $signup_id ) ]; } return [ 'error', sprintf( 'Could not delete signup %d.', $signup_id ) ]; } ); } /** * Activate a signup. * * ## OPTIONS * * <signup-id> * : Identifier for the signup. Can be a signup ID, an email address, or a user_login. * * ## EXAMPLES * * # Activate a signup. * $ wp bp signup activate ee48ec319fef3nn4 * Success: Signup activated, new user (ID #545). */ public function activate( $args, $assoc_args ) { $signup = $this->get_signup_by_identifier( $args[0], $assoc_args ); $user_id = bp_core_activate_signup( $signup->activation_key ); if ( $user_id ) { WP_CLI::success( sprintf( 'Signup activated, new user (ID #%d).', $user_id ) ); } else { WP_CLI::error( 'Signup not activated.' ); } } /** * Generate random signups. * * ## OPTIONS * * [--count=<number>] * : How many signups to generate. * --- * default: 100 * --- * * [--format=<format>] * : Render output in a particular format. * --- * default: progress * options: * - progress * - ids * --- * * ## EXAMPLES * * # Generate 50 random signups. * $ wp bp signup generate --count=50 * Generating signups 100% [======================] 0:00 / 0:00 * * # Generate 5 random signups and return their IDs. * $ wp bp signup generate --count=5 --format=ids * 70 71 72 73 74 */ public function generate( $args, $assoc_args ) { // Use the email API to get a valid "from" domain. $email_domain = new \BP_Email( '' ); $email_domain = $email_domain->get_from()->get_address(); $random_login = wp_generate_password( 12, false ); // Generate random user login. $this->generate_callback( 'Generating signups', $assoc_args, function ( $assoc_args, $format ) use ( $random_login, $email_domain ) { $params = [ 'user-login' => $random_login, 'user-email' => $random_login . substr( $email_domain, strpos( $email_domain, '@' ) ), ]; if ( 'ids' === $format ) { $params['porcelain'] = true; } else { $params['silent'] = true; } return $this->create( [], $params ); } ); } /** * Resend activation e-mail to a newly registered user. * * ## OPTIONS * * <signup-id> * : Identifier for the signup. Can be a signup ID, an email address, or a user_login. * * ## EXAMPLES * * # Resend activation e-mail to a newly registered user. * $ wp bp signup resend test@example.com * Success: Email sent successfully. * * @alias send */ public function resend( $args, $assoc_args ) { $signup = $this->get_signup_by_identifier( $args[0], $assoc_args ); $send = \BP_Signup::resend( [ $signup->signup_id ] ); // Add feedback message. if ( empty( $send['errors'] ) ) { WP_CLI::success( 'Email sent successfully.' ); } else { WP_CLI::error( 'This account is already activated.' ); } } /** * Get a list of signups. * * ## OPTIONS * * [--<field>=<value>] * : One or more parameters to pass. See \BP_Signup::get() * * [--fields=<fields>] * : Fields to display. * * [--count=<number>] * : How many signups to list. * --- * default: 50 * --- * * [--format=<value>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - ids * - json * - count * - yaml * --- * * ## EXAMPLES * * # List signups and get the IDs. * $ wp bp signup list --format=ids * 70 71 72 73 74 * * # List 100 signups and return the count. * $ wp bp signup list --count=100 --format=count * 100 * * # List active signups. * $ wp bp signup list --active=1 --count=10 * 50 * * @subcommand list */ public function list_( $args, $assoc_args ) { $formatter = $this->get_formatter( $assoc_args ); $assoc_args['number'] = $assoc_args['count']; if ( in_array( $formatter->format, [ 'ids', 'count' ], true ) ) { $assoc_args['fields'] = 'ids'; } $signups = \BP_Signup::get( $assoc_args ); if ( empty( $signups['signups'] ) ) { WP_CLI::error( 'No signups found.' ); } $formatter->display_items( $signups['signups'] ); } /** * Look up a signup by the provided identifier. * * @since 1.5.0 * * @return mixed */ protected function get_signup_by_identifier( $identifier, $assoc_args ) { if ( isset( $assoc_args['match-field'] ) ) { switch ( $assoc_args['match-field'] ) { case 'signup_id': $signup_args['include'] = [ $identifier ]; break; case 'user_login': $signup_args['user_login'] = $identifier; break; case 'user_email': default: $signup_args['usersearch'] = $identifier; break; } } elseif ( is_numeric( $identifier ) ) { $signup_args['include'] = [ intval( $identifier ) ]; } elseif ( is_email( $identifier ) ) { $signup_args['usersearch'] = $identifier; } else { $signup_args['user_login'] = $identifier; } $signups = \BP_Signup::get( $signup_args ); $signup = null; if ( ! empty( $signups['signups'] ) ) { $signup = reset( $signups['signups'] ); } if ( ! $signup ) { WP_CLI::error( 'No signup found by that identifier.' ); } return $signup; } }