Пример #1
0
 /**
  * @group add
  */
 public function test_add()
 {
     $time = bp_core_current_time();
     $args = array('domain' => 'foo', 'path' => 'bar', 'title' => 'Foo bar', 'user_login' => 'user1', 'user_email' => '*****@*****.**', 'registered' => $time, 'activation_key' => '12345', 'meta' => array('field_1' => 'Foo Bar', 'meta1' => 'meta2'));
     $signup = BP_Signup::add($args);
     $this->assertNotEmpty($signup);
     $s = new BP_Signup($signup);
     // spot check
     $this->assertSame($signup, $s->id);
     $this->assertSame('user1', $s->user_login);
     $this->assertSame('12345', $s->activation_key);
 }
/**
 * Migrate signups from pre-2.0 configuration to wp_signups.
 *
 * @since 2.0.1
 */
function bp_members_migrate_signups()
{
    global $wpdb;
    $status_2_ids = $wpdb->get_col("SELECT ID FROM {$wpdb->users} WHERE user_status = '2'");
    if (!empty($status_2_ids)) {
        $signups = get_users(array('fields' => array('ID', 'user_login', 'user_pass', 'user_registered', 'user_email', 'display_name'), 'include' => $status_2_ids));
        // Fetch activation keys separately, to avoid the all_with_meta
        // overhead.
        $status_2_ids_sql = implode(',', $status_2_ids);
        $ak_data = $wpdb->get_results("SELECT user_id, meta_value FROM {$wpdb->usermeta} WHERE meta_key = 'activation_key' AND user_id IN ({$status_2_ids_sql})");
        // Rekey.
        $activation_keys = array();
        foreach ($ak_data as $ak_datum) {
            $activation_keys[intval($ak_datum->user_id)] = $ak_datum->meta_value;
        }
        unset($status_2_ids_sql, $status_2_ids, $ak_data);
        // Merge.
        foreach ($signups as &$signup) {
            if (isset($activation_keys[$signup->ID])) {
                $signup->activation_key = $activation_keys[$signup->ID];
            }
        }
        // Reset the signup var as we're using it to process the migration.
        unset($signup);
    } else {
        return;
    }
    foreach ($signups as $signup) {
        $meta = array();
        // Rebuild the activation key, if missing.
        if (empty($signup->activation_key)) {
            $signup->activation_key = wp_generate_password(32, false);
        }
        if (bp_is_active('xprofile')) {
            $meta['field_1'] = $signup->display_name;
        }
        $meta['password'] = $signup->user_pass;
        $user_login = preg_replace('/\\s+/', '', sanitize_user($signup->user_login, true));
        $user_email = sanitize_email($signup->user_email);
        BP_Signup::add(array('user_login' => $user_login, 'user_email' => $user_email, 'registered' => $signup->user_registered, 'activation_key' => $signup->activation_key, 'meta' => $meta));
        // Deleting these options will remove signups from users count.
        delete_user_option($signup->ID, 'capabilities');
        delete_user_option($signup->ID, 'user_level');
    }
}
Пример #3
0
 public function create_object($args)
 {
     return BP_Signup::add($args);
 }