Skip to:
Content

BuddyPress.org

Changeset 5700


Ignore:
Timestamp:
02/11/2012 02:29:55 AM (15 years ago)
Author:
johnjamesjacoby
Message:

Remove unneeded globals and clean up some code in Members component. Remove signup file and move its code into screens and functions. See #3989.

Location:
trunk/bp-members
Files:
1 deleted
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-members/bp-members-actions.php

    r5410 r5700  
    11<?php
    2 /*******************************************************************************
    3  * Action Functions
     2
     3/**
     4 * BuddyPress Members Actions
    45 *
    56 * Action functions are exactly the same as screen functions, however they do not
    67 * have a template screen associated with them. Usually they will send the user
    78 * back to the default screen after execution.
     9 *
     10 * @package BuddyPress
     11 * @subpackage MembersActions
    812 */
    913
     
    154158 */
    155159function bp_core_get_random_member() {
    156         global $bp;
     160        if ( ! isset( $_GET['random-member'] ) )
     161                return;
    157162
    158         if ( isset( $_GET['random-member'] ) ) {
    159                 $user = bp_core_get_users( array( 'type' => 'random', 'per_page' => 1 ) );
    160                 bp_core_redirect( bp_core_get_user_domain( $user['users'][0]->id ) );
    161         }
     163        $user = bp_core_get_users( array( 'type' => 'random', 'per_page' => 1 ) );
     164        bp_core_redirect( bp_core_get_user_domain( $user['users'][0]->id ) );
    162165}
    163166add_action( 'bp_actions', 'bp_core_get_random_member' );
     167
    164168?>
  • trunk/bp-members/bp-members-adminbar.php

    r5680 r5700  
    11<?php
     2
    23/**
    34 * BuddyPress Members Admin Bar
     
    67 *
    78 * @package BuddyPress
    8  * @subpackage Core
     9 * @subpackage MembersAdminBar
    910 */
    1011
  • trunk/bp-members/bp-members-buddybar.php

    r5466 r5700  
    11<?php
     2
     3/**
     4 * BuddyPress Members BuddyBar
     5 *
     6 * Handles the member functions related to the BuddyBar
     7 *
     8 * @package BuddyPress
     9 * @subpackage MembersBuddyBar
     10 */
     11
    212// Exit if accessed directly
    313if ( !defined( 'ABSPATH' ) ) exit;
     
    4252add_action( 'bp_adminbar_menus', 'bp_adminbar_notifications_menu', 8 );
    4353
    44 // **** "Blog Authors" Menu (visible when not logged in) ********
     54/**
     55 * Blog Authors Menu (visible when not logged in)
     56 */
    4557function bp_adminbar_authors_menu() {
    46         global $bp, $wpdb;
     58        global $wpdb;
    4759
    4860        // Only for multisite
  • trunk/bp-members/bp-members-filters.php

    r5289 r5700  
    11<?php
     2
    23/**
    34 * BuddyPress Members Filters
     
    67 *
    78 * @package BuddyPress
    8  * @subpackage Member Core
     9 * @subpackage MembersFilters
    910 */
    1011
  • trunk/bp-members/bp-members-functions.php

    r5476 r5700  
    11<?php
     2
    23/**
    34 * BuddyPress Member Functions
     
    67 *
    78 * @package BuddyPress
    8  * @subpackage Members
     9 * @subpackage MembersFunctions
    910 */
    1011
     
    7475 */
    7576function bp_core_get_users( $args = '' ) {
    76         global $bp;
    7777
    7878        $defaults = array(
     
    104104 */
    105105function bp_core_get_user_domain( $user_id, $user_nicename = false, $user_login = false ) {
    106         global $bp;
    107106
    108107        if ( empty( $user_id ) )
     
    208207
    209208        if ( !$username = wp_cache_get( 'bp_user_username_' . $user_id, 'bp' ) ) {
     209
    210210                // Cache not found so prepare to update it
    211211                $update_cache = true;
     
    333333 */
    334334function bp_core_get_user_email( $uid ) {
     335
    335336        if ( !$email = wp_cache_get( 'bp_user_email_' . $uid, 'bp' ) ) {
    336337                // User exists
     
    477478 */
    478479function bp_core_get_total_member_count() {
    479         global $wpdb, $bp;
     480        global $wpdb;
    480481
    481482        if ( !$count = wp_cache_get( 'bp_total_member_count', 'bp' ) ) {
     
    496497 */
    497498function bp_is_user_spammer( $user_id = 0 ) {
    498         global $wpdb;
    499499
    500500        // No user to check
     
    534534 */
    535535function bp_is_user_deleted( $user_id = 0 ) {
    536         global $wpdb;
    537536
    538537        // No user to check
     
    630629 *
    631630 * @package BuddyPress Core
    632  * @global object $bp Global BuddyPress settings object
    633631 * @global $wpdb WordPress user data for the current logged in user.
    634632 * @return array of post ids.
    635633 */
    636634function bp_core_get_all_posts_for_user( $user_id = 0 ) {
    637         global $bp, $wpdb;
     635        global $wpdb;
    638636
    639637        if ( empty( $user_id ) )
     
    725723 */
    726724function bp_core_boot_spammer( $auth_obj, $username ) {
    727         global $bp;
    728725
    729726        if ( !$user = get_user_by( 'login', $username ) )
     
    745742 */
    746743function bp_core_remove_data( $user_id ) {
     744
    747745        // Remove usermeta
    748746        bp_delete_user_meta( $user_id, 'last_activity' );
     
    765763}
    766764
     765/** Sign-up *******************************************************************/
     766
     767/**
     768 * Flush illegal names by getting and setting 'illegal_names' site option
     769 */
     770function bp_core_flush_illegal_names() {
     771        $illegal_names = get_site_option( 'illegal_names' );
     772        update_site_option( 'illegal_names', $illegal_names );
     773}
     774
     775/**
     776 * Filter the illegal_names site option and make sure it includes a few
     777 * specific BuddyPress and Multi-site slugs
     778 *
     779 * @param array|string $value Illegal names from field
     780 * @param array|string $oldvalue The value as it is currently
     781 * @return array Merged and unique array of illegal names
     782 */
     783function bp_core_get_illegal_names( $value = '', $oldvalue = '' ) {
     784
     785        // Make sure $value is array
     786        if ( empty( $value ) )
     787                $db_illegal_names = array();
     788        if ( is_array( $value ) )
     789                $db_illegal_names = $value;
     790        elseif ( is_string( $value ) )
     791                $db_illegal_names = explode( ' ', $value );
     792
     793        // Add the core components' slugs to the banned list even if their components aren't active.
     794        $bp_component_slugs = array(
     795                'groups',
     796                'members',
     797                'forums',
     798                'blogs',
     799                'activity',
     800                'profile',
     801                'friends',
     802                'search',
     803                'settings',
     804                'register',
     805                'activate'
     806        );
     807
     808        // Core constants
     809        $slug_constants = array(
     810                'BP_GROUPS_SLUG',
     811                'BP_MEMBERS_SLUG',
     812                'BP_FORUMS_SLUG',
     813                'BP_BLOGS_SLUG',
     814                'BP_ACTIVITY_SLUG',
     815                'BP_XPROFILE_SLUG',
     816                'BP_FRIENDS_SLUG',
     817                'BP_SEARCH_SLUG',
     818                'BP_SETTINGS_SLUG',
     819                'BP_REGISTER_SLUG',
     820                'BP_ACTIVATION_SLUG',
     821        );
     822        foreach( $slug_constants as $constant )
     823                if ( defined( $constant ) )
     824                        $bp_component_slugs[] = constant( $constant );
     825
     826        // Add our slugs to the array and allow them to be filtered
     827        $filtered_illegal_names = apply_filters( 'bp_core_illegal_usernames', array_merge( array( 'www', 'web', 'root', 'admin', 'main', 'invite', 'administrator' ), $bp_component_slugs ) );
     828
     829        // Merge the arrays together
     830        $merged_names           = array_merge( (array)$filtered_illegal_names, (array)$db_illegal_names );
     831
     832        // Remove duplicates
     833        $illegal_names          = array_unique( (array)$merged_names );
     834
     835        return apply_filters( 'bp_core_illegal_names', $illegal_names );
     836}
     837add_filter( 'pre_update_site_option_illegal_names', 'bp_core_get_illegal_names', 10, 2 );
     838
     839/**
     840 * Validate a user name and email address when creating a new user.
     841 *
     842 * @param string $user_name Username to validate
     843 * @param string $user_email Email address to validate
     844 * @return array Results of user validation including errors, if any
     845 */
     846function bp_core_validate_user_signup( $user_name, $user_email ) {
     847
     848        $errors = new WP_Error();
     849        $user_email = sanitize_email( $user_email );
     850
     851        if ( empty( $user_name ) )
     852                $errors->add( 'user_name', __( 'Please enter a username', 'buddypress' ) );
     853
     854        // Make sure illegal names include BuddyPress slugs and values
     855        bp_core_flush_illegal_names();
     856
     857        $illegal_names = get_site_option( 'illegal_names' );
     858
     859        if ( !validate_username( $user_name ) || in_array( $user_name, (array)$illegal_names ) )
     860                $errors->add( 'user_name', __( 'Only lowercase letters and numbers allowed', 'buddypress' ) );
     861
     862        if( strlen( $user_name ) < 4 )
     863                $errors->add( 'user_name',  __( 'Username must be at least 4 characters', 'buddypress' ) );
     864
     865        if ( strpos( ' ' . $user_name, '_' ) != false )
     866                $errors->add( 'user_name', __( 'Sorry, usernames may not contain the character "_"!', 'buddypress' ) );
     867
     868        // Is the user_name all numeric?
     869        $match = array();
     870        preg_match( '/[0-9]*/', $user_name, $match );
     871
     872        if ( $match[0] == $user_name )
     873                $errors->add( 'user_name', __( 'Sorry, usernames must have letters too!', 'buddypress' ) );
     874
     875        if ( !is_email( $user_email ) )
     876                $errors->add( 'user_email', __( 'Please check your email address.', 'buddypress' ) );
     877
     878        if ( function_exists( 'is_email_address_unsafe' ) && is_email_address_unsafe( $user_email ) )
     879                $errors->add( 'user_email',  __( 'Sorry, that email address is not allowed!', 'buddypress' ) );
     880
     881        $limited_email_domains = get_site_option( 'limited_email_domains', 'buddypress' );
     882
     883        if ( is_array( $limited_email_domains ) && empty( $limited_email_domains ) == false ) {
     884                $emaildomain = substr( $user_email, 1 + strpos( $user_email, '@' ) );
     885
     886                if ( in_array( $emaildomain, (array)$limited_email_domains ) == false )
     887                        $errors->add( 'user_email', __( 'Sorry, that email address is not allowed!', 'buddypress' ) );
     888        }
     889
     890        // Check if the username has been used already.
     891        if ( username_exists( $user_name ) )
     892                $errors->add( 'user_name', __( 'Sorry, that username already exists!', 'buddypress' ) );
     893
     894        // Check if the email address has been used already.
     895        if ( email_exists( $user_email ) )
     896                $errors->add( 'user_email', __( 'Sorry, that email address is already used!', 'buddypress' ) );
     897
     898        $result = array( 'user_name' => $user_name, 'user_email' => $user_email, 'errors' => $errors );
     899
     900        // Apply WPMU legacy filter
     901        $result = apply_filters( 'wpmu_validate_user_signup', $result );
     902
     903        return apply_filters( 'bp_core_validate_user_signup', $result );
     904}
     905
     906function bp_core_validate_blog_signup( $blog_url, $blog_title ) {
     907        if ( !is_multisite() || !function_exists( 'wpmu_validate_blog_signup' ) )
     908                return false;
     909
     910        return apply_filters( 'bp_core_validate_blog_signup', wpmu_validate_blog_signup( $blog_url, $blog_title ) );
     911}
     912
     913function bp_core_signup_user( $user_login, $user_password, $user_email, $usermeta ) {
     914        global $bp, $wpdb;
     915
     916        // Multisite installs have their own install procedure
     917        if ( is_multisite() ) {
     918                wpmu_signup_user( $user_login, $user_email, $usermeta );
     919
     920                // On multisite, the user id is not created until the user activates the account
     921                // but we need to cast $user_id to pass to the filters
     922                $user_id = false;
     923
     924        } else {
     925                $errors = new WP_Error();
     926
     927                $user_id = wp_insert_user( array(
     928                        'user_login' => $user_login,
     929                        'user_pass' => $user_password,
     930                        'display_name' => sanitize_title( $user_login ),
     931                        'user_email' => $user_email
     932                ) );
     933
     934                if ( empty( $user_id ) ) {
     935                        $errors->add( 'registerfail', sprintf( __('<strong>ERROR</strong>: Couldn&#8217;t register you... please contact the <a href="mailto:%s">webmaster</a> !', 'buddypress' ), get_option( 'admin_email' ) ) );
     936                        return $errors;
     937                }
     938
     939                // Update the user status to '2' which we will use as 'not activated' (0 = active, 1 = spam, 2 = not active)
     940                $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->users SET user_status = 2 WHERE ID = %d", $user_id ) );
     941
     942                // Set any profile data
     943                if ( bp_is_active( 'xprofile' ) ) {
     944                        if ( !empty( $usermeta['profile_field_ids'] ) ) {
     945                                $profile_field_ids = explode( ',', $usermeta['profile_field_ids'] );
     946
     947                                foreach( (array)$profile_field_ids as $field_id ) {
     948                                        if ( empty( $usermeta["field_{$field_id}"] ) )
     949                                                continue;
     950
     951                                        $current_field = $usermeta["field_{$field_id}"];
     952                                        xprofile_set_field_data( $field_id, $user_id, $current_field );
     953                                }
     954                        }
     955                }
     956        }
     957        $bp->signup->username = $user_login;
     958
     959        /***
     960         * Now generate an activation key and send an email to the user so they can activate their account
     961         * and validate their email address. Multisite installs send their own email, so this is only for single blog installs.
     962         *
     963         * To disable sending activation emails you can user the filter 'bp_core_signup_send_activation_key' and return false.
     964         */
     965        if ( apply_filters( 'bp_core_signup_send_activation_key', true ) ) {
     966                if ( !is_multisite() ) {
     967                        $activation_key = wp_hash( $user_id );
     968                        update_user_meta( $user_id, 'activation_key', $activation_key );
     969                        bp_core_signup_send_validation_email( $user_id, $user_email, $activation_key );
     970                }
     971        }
     972
     973        do_action( 'bp_core_signup_user', $user_id, $user_login, $user_password, $user_email, $usermeta );
     974
     975        return $user_id;
     976}
     977
     978function bp_core_signup_blog( $blog_domain, $blog_path, $blog_title, $user_name, $user_email, $usermeta ) {
     979        if ( !is_multisite() || !function_exists( 'wpmu_signup_blog' ) )
     980                return false;
     981
     982        return apply_filters( 'bp_core_signup_blog', wpmu_signup_blog( $blog_domain, $blog_path, $blog_title, $user_name, $user_email, $usermeta ) );
     983}
     984
     985function bp_core_activate_signup( $key ) {
     986        global $wpdb;
     987
     988        $user = false;
     989
     990        // Multisite installs have their own activation routine
     991        if ( is_multisite() ) {
     992                $user = wpmu_activate_signup( $key );
     993
     994                // If there were errors, add a message and redirect
     995                if ( !empty( $user->errors ) ) {
     996                        return $user;
     997                }
     998
     999                $user_id = $user['user_id'];
     1000
     1001                // Set any profile data
     1002                if ( bp_is_active( 'xprofile' ) ) {
     1003                        if ( !empty( $user['meta']['profile_field_ids'] ) ) {
     1004                                $profile_field_ids = explode( ',', $user['meta']['profile_field_ids'] );
     1005
     1006                                foreach( (array)$profile_field_ids as $field_id ) {
     1007                                        $current_field = isset( $user['meta']["field_{$field_id}"] ) ? $user['meta']["field_{$field_id}"] : false;
     1008
     1009                                        if ( !empty( $current_field ) )
     1010                                                xprofile_set_field_data( $field_id, $user_id, $current_field );
     1011                                }
     1012                        }
     1013                }
     1014        } else {
     1015
     1016                // Get the user_id based on the $key
     1017                $user_id = $wpdb->get_var( $wpdb->prepare( "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'activation_key' AND meta_value = %s", $key ) );
     1018
     1019                if ( empty( $user_id ) )
     1020                        return new WP_Error( 'invalid_key', __( 'Invalid activation key', 'buddypress' ) );
     1021
     1022                // Change the user's status so they become active
     1023                if ( !$wpdb->query( $wpdb->prepare( "UPDATE $wpdb->users SET user_status = 0 WHERE ID = %d", $user_id ) ) )
     1024                        return new WP_Error( 'invalid_key', __( 'Invalid activation key', 'buddypress' ) );
     1025
     1026                // Notify the site admin of a new user registration
     1027                wp_new_user_notification( $user_id );
     1028
     1029                // Remove the activation key meta
     1030                delete_user_meta( $user_id, 'activation_key' );
     1031        }
     1032
     1033        // Update the display_name
     1034        wp_update_user( array( 'ID' => $user_id, 'display_name' => bp_core_get_user_displayname( $user_id ) ) );
     1035
     1036        // Set the password on multisite installs
     1037        if ( is_multisite() && !empty( $user['meta']['password'] ) )
     1038                $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->users SET user_pass = %s WHERE ID = %d", $user['meta']['password'], $user_id ) );
     1039
     1040        // Delete the total member cache
     1041        wp_cache_delete( 'bp_total_member_count', 'bp' );
     1042
     1043        do_action( 'bp_core_activated_user', $user_id, $key, $user );
     1044
     1045        return $user_id;
     1046}
     1047
     1048function bp_core_new_user_activity( $user ) {
     1049        if ( empty( $user ) || !bp_is_active( 'activity' ) )
     1050                return false;
     1051
     1052        if ( is_array( $user ) )
     1053                $user_id = $user['user_id'];
     1054        else
     1055                $user_id = $user;
     1056
     1057        if ( empty( $user_id ) )
     1058                return false;
     1059
     1060        $userlink = bp_core_get_userlink( $user_id );
     1061
     1062        bp_activity_add( array(
     1063                'user_id'   => $user_id,
     1064                'action'    => apply_filters( 'bp_core_activity_registered_member_action', sprintf( __( '%s became a registered member', 'buddypress' ), $userlink ), $user_id ),
     1065                'component' => 'xprofile',
     1066                'type'      => 'new_member'
     1067        ) );
     1068}
     1069add_action( 'bp_core_activated_user', 'bp_core_new_user_activity' );
     1070
     1071function bp_core_map_user_registration( $user_id ) {
     1072
     1073        // Only map data when the site admin is adding users, not on registration.
     1074        if ( !is_admin() )
     1075                return false;
     1076
     1077        // Add the user's fullname to Xprofile
     1078        if ( bp_is_active( 'xprofile' ) ) {
     1079                $firstname = get_user_meta( $user_id, 'first_name', true );
     1080                $lastname = ' ' . get_user_meta( $user_id, 'last_name', true );
     1081                $name = $firstname . $lastname;
     1082
     1083                if ( empty( $name ) || ' ' == $name )
     1084                        $name = get_user_meta( $user_id, 'nickname', true );
     1085
     1086                xprofile_set_field_data( 1, $user_id, $name );
     1087        }
     1088}
     1089add_action( 'user_register', 'bp_core_map_user_registration' );
     1090
     1091function bp_core_signup_avatar_upload_dir() {
     1092        global $bp;
     1093
     1094        if ( !$bp->signup->avatar_dir )
     1095                return false;
     1096
     1097        $path  = bp_core_avatar_upload_path() . '/avatars/signups/' . $bp->signup->avatar_dir;
     1098        $newbdir = $path;
     1099
     1100        if ( !file_exists( $path ) )
     1101                @wp_mkdir_p( $path );
     1102
     1103        $newurl = bp_core_avatar_url() . '/avatars/signups/' . $bp->signup->avatar_dir;
     1104        $newburl = $newurl;
     1105        $newsubdir = '/avatars/signups/' . $bp->signup->avatar_dir;
     1106
     1107        return apply_filters( 'bp_core_signup_avatar_upload_dir', array( 'path' => $path, 'url' => $newurl, 'subdir' => $newsubdir, 'basedir' => $newbdir, 'baseurl' => $newburl, 'error' => false ) );
     1108}
     1109
     1110function bp_core_signup_send_validation_email( $user_id, $user_email, $key ) {
     1111        $activate_url = bp_get_activation_page() ."?key=$key";
     1112        $activate_url = esc_url( $activate_url );
     1113
     1114        $from_name = ( '' == get_option( 'blogname' ) ) ? __( 'BuddyPress', 'buddypress' ) : esc_html( get_option( 'blogname' ) );
     1115
     1116        $message = sprintf( __( "Thanks for registering! To complete the activation of your account please click the following link:\n\n%1\$s\n\n", 'buddypress' ), $activate_url );
     1117        $subject = '[' . $from_name . '] ' . __( 'Activate Your Account', 'buddypress' );
     1118
     1119        // Send the message
     1120        $to      = apply_filters( 'bp_core_signup_send_validation_email_to',     $user_email, $user_id                );
     1121        $subject = apply_filters( 'bp_core_signup_send_validation_email_subject', $subject,    $user_id                );
     1122        $message = apply_filters( 'bp_core_signup_send_validation_email_message', $message,    $user_id, $activate_url );
     1123
     1124        wp_mail( $to, $subject, $message );
     1125
     1126        do_action( 'bp_core_sent_user_validation_email', $subject, $message, $user_id, $user_email, $key );
     1127}
     1128
     1129// Stop user accounts logging in that have not been activated (user_status = 2)
     1130function bp_core_signup_disable_inactive( $auth_obj, $username ) {
     1131        global $wpdb;
     1132
     1133        if ( !$user_id = bp_core_get_userid( $username ) )
     1134                return $auth_obj;
     1135
     1136        $user_status = (int) $wpdb->get_var( $wpdb->prepare( "SELECT user_status FROM $wpdb->users WHERE ID = %d", $user_id ) );
     1137
     1138        if ( 2 == $user_status )
     1139                return new WP_Error( 'bp_account_not_activated', __( '<strong>ERROR</strong>: Your account has not been activated. Check your email for the activation link.', 'buddypress' ) );
     1140        else
     1141                return $auth_obj;
     1142}
     1143add_filter( 'authenticate', 'bp_core_signup_disable_inactive', 30, 2 );
     1144
     1145// Kill the wp-signup.php if custom registration signup templates are present
     1146function bp_core_wpsignup_redirect() {
     1147        $action = !empty( $_GET['action'] ) ? $_GET['action'] : '';
     1148
     1149        if ( is_admin() || is_network_admin() )
     1150                return;
     1151       
     1152        // Not at the WP core signup page and action is not register
     1153        if ( false === strpos( $_SERVER['SCRIPT_NAME'], 'wp-signup.php' ) && ( 'register' != $action ) )
     1154                return;
     1155
     1156        // Redirect to sign-up page
     1157        if ( locate_template( array( 'registration/register.php' ), false ) || locate_template( array( 'register.php' ), false ) )
     1158                bp_core_redirect( bp_get_signup_page() );
     1159}
     1160add_action( 'bp_init', 'bp_core_wpsignup_redirect' );
     1161
    7671162?>
  • trunk/bp-members/bp-members-loader.php

    r5474 r5700  
    3434        function includes() {
    3535                $includes = array(
    36                         'signup',
    3736                        'actions',
    3837                        'filters',
     
    5756         */
    5857        function setup_globals() {
    59                 global $bp, $current_user, $displayed_user_id;
     58                global $bp;
    6059
    6160                // Define a slug, if necessary
     
    133132                // Add 'Profile' to the main navigation
    134133                if ( !bp_is_active( 'xprofile' ) ) {
     134
    135135                        // Don't set up navigation if there's no user
    136136                        if ( !is_user_logged_in() && !bp_is_user() )
    137137                                return;
    138138
     139                        $sub_nav  = array();
    139140                        $main_nav = array(
    140141                                'name'                => __( 'Profile', 'buddypress' ),
     
    148149                        // User links
    149150                        $user_domain   = ( isset( $bp->displayed_user->domain ) )               ? $bp->displayed_user->domain               : $bp->loggedin_user->domain;
    150                         $user_login    = ( isset( $bp->displayed_user->userdata->user_login ) ) ? $bp->displayed_user->userdata->user_login : $bp->loggedin_user->userdata->user_login;
    151151                        $profile_link  = trailingslashit( $user_domain . $bp->profile->slug );
    152152
  • trunk/bp-members/bp-members-notifications.php

    r5682 r5700  
    11<?php
     2
    23/**
    34 * BuddyPress Member Notifications
     
    67 *
    78 * @package BuddyPress
    8  * @subpackage Members
     9 * @subpackage MembersNotifications
    910 */
    1011
  • trunk/bp-members/bp-members-screens.php

    r5072 r5700  
    11<?php
     2
    23/**
    34 * BuddyPress Member Screens
     
    67 *
    78 * @package BuddyPress
    8  * @subpackage Members
     9 * @subpackage MembersScreens
    910 */
    1011
     
    4647
    4748
     49function bp_core_screen_signup() {
     50        global $bp;
     51
     52        if ( !bp_is_current_component( 'register' ) )
     53                return;
     54
     55        // Not a directory
     56        bp_update_is_directory( false, 'register' );
     57
     58        // If the user is logged in, redirect away from here
     59        if ( is_user_logged_in() ) {
     60                if ( bp_is_component_front_page( 'register' ) )
     61                        $redirect_to = trailingslashit( bp_get_root_domain() . '/' . bp_get_members_root_slug() );
     62                else
     63                        $redirect_to = bp_get_root_domain();
     64
     65                bp_core_redirect( apply_filters( 'bp_loggedin_register_page_redirect_to', $redirect_to ) );
     66
     67                return;
     68        }
     69
     70        $bp->signup->step = 'request-details';
     71
     72        if ( !bp_get_signup_allowed() ) {
     73                $bp->signup->step = 'registration-disabled';
     74        }
     75
     76        // If the signup page is submitted, validate and save
     77        elseif ( isset( $_POST['signup_submit'] ) ) {
     78
     79                // Check the nonce
     80                check_admin_referer( 'bp_new_signup' );
     81
     82                // Check the base account details for problems
     83                $account_details = bp_core_validate_user_signup( $_POST['signup_username'], $_POST['signup_email'] );
     84
     85                // If there are errors with account details, set them for display
     86                if ( !empty( $account_details['errors']->errors['user_name'] ) )
     87                        $bp->signup->errors['signup_username'] = $account_details['errors']->errors['user_name'][0];
     88
     89                if ( !empty( $account_details['errors']->errors['user_email'] ) )
     90                        $bp->signup->errors['signup_email'] = $account_details['errors']->errors['user_email'][0];
     91
     92                // Check that both password fields are filled in
     93                if ( empty( $_POST['signup_password'] ) || empty( $_POST['signup_password_confirm'] ) )
     94                        $bp->signup->errors['signup_password'] = __( 'Please make sure you enter your password twice', 'buddypress' );
     95
     96                // Check that the passwords match
     97                if ( ( !empty( $_POST['signup_password'] ) && !empty( $_POST['signup_password_confirm'] ) ) && $_POST['signup_password'] != $_POST['signup_password_confirm'] )
     98                        $bp->signup->errors['signup_password'] = __( 'The passwords you entered do not match.', 'buddypress' );
     99
     100                $bp->signup->username = $_POST['signup_username'];
     101                $bp->signup->email = $_POST['signup_email'];
     102
     103                // Now we've checked account details, we can check profile information
     104                if ( bp_is_active( 'xprofile' ) ) {
     105
     106                        // Make sure hidden field is passed and populated
     107                        if ( isset( $_POST['signup_profile_field_ids'] ) && !empty( $_POST['signup_profile_field_ids'] ) ) {
     108
     109                                // Let's compact any profile field info into an array
     110                                $profile_field_ids = explode( ',', $_POST['signup_profile_field_ids'] );
     111
     112                                // Loop through the posted fields formatting any datebox values then validate the field
     113                                foreach ( (array) $profile_field_ids as $field_id ) {
     114                                        if ( !isset( $_POST['field_' . $field_id] ) ) {
     115                                                if ( !empty( $_POST['field_' . $field_id . '_day'] ) && !empty( $_POST['field_' . $field_id . '_month'] ) && !empty( $_POST['field_' . $field_id . '_year'] ) )
     116                                                        $_POST['field_' . $field_id] = date( 'Y-m-d H:i:s', strtotime( $_POST['field_' . $field_id . '_day'] . $_POST['field_' . $field_id . '_month'] . $_POST['field_' . $field_id . '_year'] ) );
     117                                        }
     118
     119                                        // Create errors for required fields without values
     120                                        if ( xprofile_check_is_required_field( $field_id ) && empty( $_POST['field_' . $field_id] ) )
     121                                                $bp->signup->errors['field_' . $field_id] = __( 'This is a required field', 'buddypress' );
     122                                }
     123
     124                        // This situation doesn't naturally occur so bounce to website root
     125                        } else {
     126                                bp_core_redirect( bp_get_root_domain() );
     127                        }
     128                }
     129
     130                // Finally, let's check the blog details, if the user wants a blog and blog creation is enabled
     131                if ( isset( $_POST['signup_with_blog'] ) ) {
     132                        $active_signup = $bp->site_options['registration'];
     133
     134                        if ( 'blog' == $active_signup || 'all' == $active_signup ) {
     135                                $blog_details = bp_core_validate_blog_signup( $_POST['signup_blog_url'], $_POST['signup_blog_title'] );
     136
     137                                // If there are errors with blog details, set them for display
     138                                if ( !empty( $blog_details['errors']->errors['blogname'] ) )
     139                                        $bp->signup->errors['signup_blog_url'] = $blog_details['errors']->errors['blogname'][0];
     140
     141                                if ( !empty( $blog_details['errors']->errors['blog_title'] ) )
     142                                        $bp->signup->errors['signup_blog_title'] = $blog_details['errors']->errors['blog_title'][0];
     143                        }
     144                }
     145
     146                do_action( 'bp_signup_validate' );
     147
     148                // Add any errors to the action for the field in the template for display.
     149                if ( !empty( $bp->signup->errors ) ) {
     150                        foreach ( (array)$bp->signup->errors as $fieldname => $error_message )
     151                                add_action( 'bp_' . $fieldname . '_errors', create_function( '', 'echo apply_filters(\'bp_members_signup_error_message\', "<div class=\"error\">' . $error_message . '</div>" );' ) );
     152                } else {
     153                        $bp->signup->step = 'save-details';
     154
     155                        // No errors! Let's register those deets.
     156                        $active_signup = !empty( $bp->site_options['registration'] ) ? $bp->site_options['registration'] : '';
     157
     158                        if ( 'none' != $active_signup ) {
     159
     160                                // Let's compact any profile field info into usermeta
     161                                $profile_field_ids = explode( ',', $_POST['signup_profile_field_ids'] );
     162
     163                                // Loop through the posted fields formatting any datebox values then add to usermeta
     164                                foreach ( (array) $profile_field_ids as $field_id ) {
     165                                        if ( !isset( $_POST['field_' . $field_id] ) ) {
     166                                                if ( isset( $_POST['field_' . $field_id . '_day'] ) )
     167                                                        $_POST['field_' . $field_id] = date( 'Y-m-d H:i:s', strtotime( $_POST['field_' . $field_id . '_day'] . $_POST['field_' . $field_id . '_month'] . $_POST['field_' . $field_id . '_year'] ) );
     168                                        }
     169
     170                                        if ( !empty( $_POST['field_' . $field_id] ) )
     171                                                $usermeta['field_' . $field_id] = $_POST['field_' . $field_id];
     172                                }
     173
     174                                // Store the profile field ID's in usermeta
     175                                $usermeta['profile_field_ids'] = $_POST['signup_profile_field_ids'];
     176
     177                                // Hash and store the password
     178                                $usermeta['password'] = wp_hash_password( $_POST['signup_password'] );
     179
     180                                // If the user decided to create a blog, save those details to usermeta
     181                                if ( 'blog' == $active_signup || 'all' == $active_signup )
     182                                        $usermeta['public'] = ( isset( $_POST['signup_blog_privacy'] ) && 'public' == $_POST['signup_blog_privacy'] ) ? true : false;
     183
     184                                $usermeta = apply_filters( 'bp_signup_usermeta', $usermeta );
     185
     186                                // Finally, sign up the user and/or blog
     187                                if ( isset( $_POST['signup_with_blog'] ) && is_multisite() )
     188                                        bp_core_signup_blog( $blog_details['domain'], $blog_details['path'], $blog_details['blog_title'], $_POST['signup_username'], $_POST['signup_email'], $usermeta );
     189                                else
     190                                        bp_core_signup_user( $_POST['signup_username'], $_POST['signup_password'], $_POST['signup_email'], $usermeta );
     191
     192                                $bp->signup->step = 'completed-confirmation';
     193                        }
     194
     195                        do_action( 'bp_complete_signup' );
     196                }
     197
     198        }
     199
     200        do_action( 'bp_core_screen_signup' );
     201        bp_core_load_template( apply_filters( 'bp_core_template_register', 'registration/register' ) );
     202}
     203add_action( 'bp_screens', 'bp_core_screen_signup' );
     204
     205function bp_core_screen_activation() {
     206        global $bp;
     207
     208        if ( !bp_is_current_component( 'activate' ) )
     209                return false;
     210
     211        // Check if an activation key has been passed
     212        if ( isset( $_GET['key'] ) ) {
     213
     214                // Activate the signup
     215                $user = apply_filters( 'bp_core_activate_account', bp_core_activate_signup( $_GET['key'] ) );
     216
     217                // If there were errors, add a message and redirect
     218                if ( !empty( $user->errors ) ) {
     219                        bp_core_add_message( $user->get_error_message(), 'error' );
     220                        bp_core_redirect( trailingslashit( bp_get_root_domain() . '/' . $bp->pages->activate->slug ) );
     221                }
     222
     223                // Check for an uploaded avatar and move that to the correct user folder
     224                if ( is_multisite() )
     225                        $hashed_key = wp_hash( $_GET['key'] );
     226                else
     227                        $hashed_key = wp_hash( $user );
     228
     229                // Check if the avatar folder exists. If it does, move rename it, move
     230                // it and delete the signup avatar dir
     231                if ( file_exists( bp_core_avatar_upload_path() . '/avatars/signups/' . $hashed_key ) )
     232                        @rename( bp_core_avatar_upload_path() . '/avatars/signups/' . $hashed_key, bp_core_avatar_upload_path() . '/avatars/' . $user );
     233
     234                bp_core_add_message( __( 'Your account is now active!', 'buddypress' ) );
     235
     236                $bp->activation_complete = true;
     237        }
     238
     239        if ( '' != locate_template( array( 'registration/activate' ), false ) )
     240                bp_core_load_template( apply_filters( 'bp_core_template_activate', 'activate' ) );
     241        else
     242                bp_core_load_template( apply_filters( 'bp_core_template_activate', 'registration/activate' ) );
     243}
     244add_action( 'bp_screens', 'bp_core_screen_activation' );
     245
    48246?>
  • trunk/bp-members/bp-members-template.php

    r5646 r5700  
    11<?php
     2
    23/**
    34 * BuddyPress Member Template Tags
     
    169170        var $total_member_count;
    170171
    171         function bp_core_members_template( $type, $page_number, $per_page, $max, $user_id, $search_terms, $include, $populate_extras, $exclude, $meta_key, $meta_value ) {
    172                 $this->__construct( $type, $page_number, $per_page, $max, $user_id, $search_terms, $include, $populate_extras, $exclude, $meta_key, $meta_value );
    173         }
    174 
    175172        function __construct( $type, $page_number, $per_page, $max, $user_id, $search_terms, $include, $populate_extras, $exclude, $meta_key, $meta_value ) {
    176                 global $bp;
    177 
    178                 $this->pag_page  = !empty( $_REQUEST['upage'] ) ? intval( $_REQUEST['upage'] ) : (int)$page_number;
    179                 $this->pag_num   = !empty( $_REQUEST['num'] )   ? intval( $_REQUEST['num'] )   : (int)$per_page;
    180                 $this->type      = $type;
     173
     174                $this->pag_page = !empty( $_REQUEST['upage'] ) ? intval( $_REQUEST['upage'] ) : (int)$page_number;
     175                $this->pag_num  = !empty( $_REQUEST['num'] )   ? intval( $_REQUEST['num'] )   : (int)$per_page;
     176                $this->type     = $type;
    181177
    182178                if ( isset( $_REQUEST['letter'] ) && '' != $_REQUEST['letter'] )
     
    250246
    251247        function the_member() {
    252                 global $member, $bp;
    253248
    254249                $this->in_the_loop = true;
    255                 $this->member = $this->next_member();
    256 
    257                 if ( 0 == $this->current_member ) // loop has just started
    258                         do_action('member_loop_start');
     250                $this->member      = $this->next_member();
     251
     252                // loop has just started
     253                if ( 0 == $this->current_member )
     254                        do_action( 'member_loop_start' );
    259255        }
    260256}
     
    267263
    268264function bp_has_members( $args = '' ) {
    269         global $bp, $members_template;
     265        global $members_template;
    270266
    271267        /***
     
    339335}
    340336        function bp_get_members_pagination_count() {
    341                 global $bp, $members_template;
     337                global $members_template;
    342338
    343339                if ( empty( $members_template->type ) )
     
    464460
    465461function bp_member_is_loggedin_user() {
    466         global $bp, $members_template;
     462        global $members_template;
    467463        return apply_filters( 'bp_member_is_loggedin_user', bp_loggedin_user_id() == $members_template->member->id ? true : false );
    468464}
     
    472468}
    473469        function bp_get_member_avatar( $args = '' ) {
    474                 global $bp, $members_template;
     470                global $members_template;
    475471
    476472                $fullname = !empty( $members_template->member->fullname ) ? $members_template->member->fullname : $members_template->member->display_name;
    477473
    478474                $defaults = array(
    479                         'type' => 'thumb',
    480                         'width' => false,
     475                        'type'   => 'thumb',
     476                        'width'  => false,
    481477                        'height' => false,
    482                         'class' => 'avatar',
    483                         'id' => false,
    484                         'alt' => sprintf( __( 'Profile picture of %s', 'buddypress' ), $fullname )
     478                        'class'  => 'avatar',
     479                        'id'     => false,
     480                        'alt'    => sprintf( __( 'Profile picture of %s', 'buddypress' ), $fullname )
    485481                );
    486482
     
    568564}
    569565        function bp_get_member_latest_update( $args = '' ) {
    570                 global $bp, $members_template;
     566                global $members_template;
    571567
    572568                $defaults = array(
     
    598594}
    599595        function bp_get_member_profile_data( $args = '' ) {
    600                 global $bp, $members_template;
     596                global $members_template;
    601597
    602598                if ( !bp_is_active( 'xprofile' ) )
     
    665661
    666662function bp_directory_members_search_form() {
    667         global $bp;
    668663
    669664        $default_search_value = bp_get_search_default_text( 'members' );
     
    707702        // Loop through each navigation item
    708703        foreach( (array) $bp->bp_nav as $nav_item ) {
     704
     705                $selected = '';
     706
    709707                // If the current component matches the nav item id, then add a highlight CSS class.
    710                 if ( !bp_is_directory() && $bp->active_components[$bp->current_component] == $nav_item['css_id'] )
     708                if ( !bp_is_directory() && $bp->active_components[$bp->current_component] == $nav_item['css_id'] ) {
    711709                        $selected = ' class="current selected"';
    712                 else
    713                         $selected = '';
    714 
    715                 /* If we are viewing another person (current_userid does not equal loggedin_user->id)
    716                    then check to see if the two users are friends. if they are, add a highlight CSS class
    717                    to the friends nav item if it exists. */
     710                }
     711
     712                // If we are viewing another person (current_userid does not equal
     713                // loggedin_user->id then check to see if the two users are friends.
     714                // if they are, add a highlight CSS class to the friends nav item
     715                // if it exists.
    718716                if ( !bp_is_my_profile() && bp_displayed_user_id() ) {
    719717                        $selected = '';
     
    721719                        if ( bp_is_active( 'friends' ) ) {
    722720                                if ( $nav_item['css_id'] == $bp->friends->id ) {
    723                                         if ( friends_check_friendship( bp_loggedin_user_id(), bp_displayed_user_id() ) )
     721                                        if ( friends_check_friendship( bp_loggedin_user_id(), bp_displayed_user_id() ) ) {
    724722                                                $selected = ' class="current selected"';
     723                                        }
    725724                                }
    726725                        }
     
    751750                        continue;
    752751
    753                 if ( $bp->current_component == $user_nav_item['slug'] )
     752                $selected = '';
     753                if ( $bp->current_component == $user_nav_item['slug'] ) {
    754754                        $selected = ' class="current selected"';
    755                 else
    756                         $selected = '';
    757 
    758                 if ( $bp->loggedin_user->domain )
     755                }
     756
     757                if ( $bp->loggedin_user->domain ) {
    759758                        $link = str_replace( $bp->loggedin_user->domain, $bp->displayed_user->domain, $user_nav_item['link'] );
    760                 else
     759                } else {
    761760                        $link = trailingslashit( $bp->displayed_user->domain . $user_nav_item['link'] );
     761                }
    762762
    763763                echo apply_filters_ref_array( 'bp_get_displayed_user_nav_' . $user_nav_item['css_id'], array( '<li id="' . $user_nav_item['css_id'] . '-personal-li" ' . $selected . '><a id="user-' . $user_nav_item['css_id'] . '" href="' . $link . '">' . $user_nav_item['name'] . '</a></li>', &$user_nav_item ) );
     
    771771}
    772772        function bp_get_loggedin_user_avatar( $args = '' ) {
    773                 global $bp;
    774773
    775774                $defaults = array(
     
    791790}
    792791        function bp_get_displayed_user_avatar( $args = '' ) {
    793                 global $bp;
    794792
    795793                $defaults = array(
     
    826824}
    827825        function bp_get_last_activity( $user_id = 0 ) {
    828                 global $bp;
    829826
    830827                if ( empty( $user_id ) )
     
    967964}
    968965        function bp_get_signup_page() {
    969                 global $bp;
    970966
    971967                if ( bp_has_custom_signup_page() ) {
Note: See TracChangeset for help on using the changeset viewer.