/** * Validate a user name and email address when creating a new user. * * @since 1.2.2 * * @param string $user_name Username to validate. * @param string $user_email Email address to validate. * @return array Results of user validation including errors, if any. */ function bp_core_validate_user_signup($user_name, $user_email) { // Make sure illegal names include BuddyPress slugs and values. bp_core_flush_illegal_names(); // WordPress Multisite has its own validation. Use it, so that we // properly mirror restrictions on username, etc. if (function_exists('wpmu_validate_user_signup')) { $result = wpmu_validate_user_signup($user_name, $user_email); // When not running Multisite, we perform our own validation. What // follows reproduces much of the logic of wpmu_validate_user_signup(), // minus the multisite-specific restrictions on user_login. } else { $errors = new WP_Error(); /** * Filters the username before being validated. * * @since 1.5.5 * * @param string $user_name Username to validate. */ $user_name = apply_filters('pre_user_login', $user_name); // User name can't be empty. if (empty($user_name)) { $errors->add('user_name', __('Please enter a username', 'buddypress')); } // User name can't be on the blacklist. $illegal_names = get_site_option('illegal_names'); if (in_array($user_name, (array) $illegal_names)) { $errors->add('user_name', __('That username is not allowed', 'buddypress')); } // User name must pass WP's validity check. if (!validate_username($user_name)) { $errors->add('user_name', __('Usernames can contain only letters, numbers, ., -, and @', 'buddypress')); } // Minimum of 4 characters. if (strlen($user_name) < 4) { $errors->add('user_name', __('Username must be at least 4 characters', 'buddypress')); } // No underscores. @todo Why not? if (false !== strpos(' ' . $user_name, '_')) { $errors->add('user_name', __('Sorry, usernames may not contain the character "_"!', 'buddypress')); } // No usernames that are all numeric. @todo Why? $match = array(); preg_match('/[0-9]*/', $user_name, $match); if ($match[0] == $user_name) { $errors->add('user_name', __('Sorry, usernames must have letters too!', 'buddypress')); } // Check into signups. $signups = BP_Signup::get(array('user_login' => $user_name)); $signup = isset($signups['signups']) && !empty($signups['signups'][0]) ? $signups['signups'][0] : false; // Check if the username has been used already. if (username_exists($user_name) || !empty($signup)) { $errors->add('user_name', __('Sorry, that username already exists!', 'buddypress')); } // Validate the email address and process the validation results into // error messages. $validate_email = bp_core_validate_email_address($user_email); bp_core_add_validation_error_messages($errors, $validate_email); // Assemble the return array. $result = array('user_name' => $user_name, 'user_email' => $user_email, 'errors' => $errors); // Apply WPMU legacy filter. $result = apply_filters('wpmu_validate_user_signup', $result); } /** * Filters the result of the user signup validation. * * @since 1.2.2 * * @param array $result Results of user validation including errors, if any. */ return apply_filters('bp_core_validate_user_signup', $result); }
/** * Validate a user name and email address when creating a new user. * * @param string $user_name Username to validate * @param string $user_email Email address to validate * @return array Results of user validation including errors, if any */ function bp_core_validate_user_signup($user_name, $user_email) { $errors = new WP_Error(); // Apply any user_login filters added by BP or other plugins before validating $user_name = apply_filters('pre_user_login', $user_name); if (empty($user_name)) { $errors->add('user_name', __('Please enter a username', 'buddypress')); } // Make sure illegal names include BuddyPress slugs and values bp_core_flush_illegal_names(); $illegal_names = get_site_option('illegal_names'); if (in_array($user_name, (array) $illegal_names)) { $errors->add('user_name', __('That username is not allowed', 'buddypress')); } if (!validate_username($user_name)) { $errors->add('user_name', __('Usernames can contain only letters, numbers, ., -, *, and @', 'buddypress')); } if (strlen($user_name) < 4) { $errors->add('user_name', __('Username must be at least 4 characters', 'buddypress')); } if (strpos(' ' . $user_name, '_') != false) { $errors->add('user_name', __('Sorry, usernames may not contain the character "_"!', 'buddypress')); } // Is the user_name all numeric? $match = array(); preg_match('/[0-9]*/', $user_name, $match); if ($match[0] == $user_name) { $errors->add('user_name', __('Sorry, usernames must have letters too!', 'buddypress')); } // Check if the username has been used already. if (username_exists($user_name)) { $errors->add('user_name', __('Sorry, that username already exists!', 'buddypress')); } // Validate the email address and process the validation results into // error messages $validate_email = bp_core_validate_email_address($user_email); bp_core_add_validation_error_messages($errors, $validate_email); // Assemble the return array $result = array('user_name' => $user_name, 'user_email' => $user_email, 'errors' => $errors); // Apply WPMU legacy filter $result = apply_filters('wpmu_validate_user_signup', $result); return apply_filters('bp_core_validate_user_signup', $result); }
/** * Validate a user name and email address when creating a new user. * * @global object $wpdb DB Layer * @param string $user_name Username to validate * @param string $user_email Email address to validate * @return array Results of user validation including errors, if any */ function bp_core_validate_user_signup($user_name, $user_email) { global $wpdb; $errors = new WP_Error(); $user_email = sanitize_email($user_email); if (empty($user_name)) { $errors->add('user_name', __('Please enter a username', 'buddypress')); } $maybe = array(); preg_match("/[a-z0-9]+/", $user_name, $maybe); // Make sure illegal names include BuddyPress slugs and values bp_core_flush_illegal_names(); $illegal_names = get_site_option('illegal_names'); if (!validate_username($user_name) || in_array($user_name, (array) $illegal_names) || !empty($maybe[0]) && $user_name != $maybe[0]) { $errors->add('user_name', __('Only lowercase letters and numbers allowed', 'buddypress')); } if (strlen($user_name) < 4) { $errors->add('user_name', __('Username must be at least 4 characters', 'buddypress')); } if (strpos(' ' . $user_name, '_') != false) { $errors->add('user_name', __('Sorry, usernames may not contain the character "_"!', 'buddypress')); } // Is the user_name all numeric? $match = array(); preg_match('/[0-9]*/', $user_name, $match); if ($match[0] == $user_name) { $errors->add('user_name', __('Sorry, usernames must have letters too!', 'buddypress')); } if (!is_email($user_email)) { $errors->add('user_email', __('Please check your email address.', 'buddypress')); } if (function_exists('is_email_address_unsafe') && is_email_address_unsafe($user_email)) { $errors->add('user_email', __('Sorry, that email address is not allowed!', 'buddypress')); } $limited_email_domains = get_site_option('limited_email_domains', 'buddypress'); if (is_array($limited_email_domains) && empty($limited_email_domains) == false) { $emaildomain = substr($user_email, 1 + strpos($user_email, '@')); if (in_array($emaildomain, (array) $limited_email_domains) == false) { $errors->add('user_email', __('Sorry, that email address is not allowed!', 'buddypress')); } } // Check if the username has been used already. if (username_exists($user_name)) { $errors->add('user_name', __('Sorry, that username already exists!', 'buddypress')); } // Check if the email address has been used already. if (email_exists($user_email)) { $errors->add('user_email', __('Sorry, that email address is already used!', 'buddypress')); } $result = array('user_name' => $user_name, 'user_email' => $user_email, 'errors' => $errors); // Apply WPMU legacy filter $result = apply_filters('wpmu_validate_user_signup', $result); return apply_filters('bp_core_validate_user_signup', $result); }
/** * bp_core_install() * * Installs the core DB tables for BuddyPress. * * @package BuddyPress Core * @global $bp The global BuddyPress settings variable created in bp_core_setup_globals() * @global $wpdb WordPress DB access object. * @uses dbDelta() Performs a table creation, or upgrade based on what already exists in the DB. * @uses bp_core_add_illegal_names() Adds illegal blog names to the WP settings */ function bp_core_install() { global $wpdb, $bp; if ( !empty($wpdb->charset) ) $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; $sql[] = "CREATE TABLE {$bp->core->table_name_notifications} ( id bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY, user_id bigint(20) NOT NULL, item_id bigint(20) NOT NULL, secondary_item_id bigint(20), component_name varchar(75) NOT NULL, component_action varchar(75) NOT NULL, date_notified datetime NOT NULL, is_new bool NOT NULL DEFAULT 0, KEY item_id (item_id), KEY secondary_item_id (secondary_item_id), KEY user_id (user_id), KEY is_new (is_new), KEY component_name (component_name), KEY component_action (component_action), KEY useritem (user_id,is_new) ) {$charset_collate};"; require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); dbDelta( $sql ); // Add names of root components to the banned name list to avoid conflicts bp_core_flush_illegal_names(); update_site_option( 'bp-core-db-version', BP_CORE_DB_VERSION ); }