Changeset 8170
- Timestamp:
- 03/27/2014 01:56:11 AM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/bp-members/bp-members-functions.php
r8145 r8170 1712 1712 1713 1713 /** 1714 * Stop user accounts logging in that have not been activated yet (user_status = 2). 1715 * 1716 * Note: This is only applicable for single site WordPress installs. 1717 * Multisite has their own DB table - 'wp_signups' - dedicated for unactivated users. 1718 * See {@link wpmu_signup_user()} and {@link wpmu_validate_user_signup()}. 1719 * 1720 * @param WP_User|WP_Error $user Either the WP_User object or the WP_Error object 1721 * @return WP_User|WP_Error If the user is not a spammer, return the WP_User object. Otherwise a new WP_Error object. 1714 * Display a "resend email" link when an unregistered user attempts to log in. 1715 * 1716 * @param WP_User|WP_Error $user Either the WP_User or the WP_Error object 1717 * @param string $username The inputted, attempted username. 1718 * @param string $password The inputted, attempted password. 1719 * @return WP_User|WP_Error 1722 1720 * 1723 1721 * @since BuddyPress (1.2.2) 1724 1722 */ 1725 function bp_core_signup_disable_inactive( $user ) {1726 // check to see if the $user has already failed logging in, if so return $user as-is1727 if ( is_wp_error( $user ) || empty( $user ) )1723 function bp_core_signup_disable_inactive( $user = null, $username = '', $password ='' ) { 1724 // login form not used 1725 if ( empty( $username ) && empty( $password ) ) { 1728 1726 return $user; 1729 1730 // the user exists; now do a check to see if the user has activated their account or not 1731 // NOTE: this is only applicable for single site WordPress installs! 1732 // if unactivated, stop the login now! 1733 if ( is_a( $user, 'WP_User' ) && 2 == $user->user_status ) 1734 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' ) ); 1735 1736 // user has activated their account! all clear! 1737 return $user; 1738 } 1739 add_filter( 'authenticate', 'bp_core_signup_disable_inactive', 30 ); 1727 } 1728 1729 // An existing WP_User with a user_status of 2 is either a legacy 1730 // signup, or is a user created for backward compatibility. See 1731 // {@link bp_core_signup_user()} for more details. 1732 if ( is_a( $user, 'WP_User' ) && 2 == $user->user_status ) { 1733 $user_login = $user->user_login; 1734 1735 // If no WP_User is found corresponding to the username, this 1736 // is a potential signup 1737 } elseif ( is_wp_error( $user ) && 'invalid_username' == $user->get_error_code() ) { 1738 $user_login = $username; 1739 1740 // This is an activated user, so bail 1741 } else { 1742 return $user; 1743 } 1744 1745 // Look for the unactivated signup corresponding to the login name 1746 $signup = BP_Signup::get( array( 'user_login' => sanitize_user( $user_login ) ) ); 1747 1748 // No signup or more than one, something is wrong. Let's bail. 1749 if ( empty( $signup['signups'][0] ) || $signup['total'] > 1 ) { 1750 return $user; 1751 } 1752 1753 // Unactivated user account found! 1754 // Set up the feedback message 1755 $signup_id = $signup['signups'][0]->signup_id; 1756 1757 $resend_url_params = array( 1758 'action' => 'bp-resend-activation', 1759 'id' => $signup_id, 1760 ); 1761 1762 $resend_url = wp_nonce_url( 1763 add_query_arg( $resend_url_params, wp_login_url() ), 1764 'bp-resend-activation' 1765 ); 1766 1767 $resend_string = '<br /><br />' . sprintf( __( 'If you have not received an email yet, <a href="%s">click here to resend it</a>.', 'buddypress' ), $resend_url ); 1768 1769 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' ) . $resend_string ); 1770 } 1771 add_filter( 'authenticate', 'bp_core_signup_disable_inactive', 30, 3 ); 1772 1773 /** 1774 * On the login screen, resends the activation email for a user. 1775 * 1776 * @since BuddyPress (2.0.0) 1777 * 1778 * @see bp_core_signup_disable_inactive() 1779 */ 1780 function bp_members_login_resend_activation_email() { 1781 global $error; 1782 1783 if ( empty( $_GET['id'] ) || empty( $_GET['_wpnonce'] ) ) { 1784 return; 1785 } 1786 1787 // verify nonce 1788 if ( ! wp_verify_nonce( $_GET['_wpnonce'], 'bp-resend-activation' ) ) { 1789 die( 'Security check' ); 1790 } 1791 1792 $signup_id = (int) $_GET['id']; 1793 1794 // resend the activation email 1795 // also updates the 'last sent' and '# of emails sent' values 1796 $resend = BP_Signup::resend( array( $signup_id ) ); 1797 1798 // add feedback message 1799 if ( ! empty( $resend['errors'] ) ) { 1800 $error = __( '<strong>ERROR</strong>: Your account has already been activated.', 'buddypress' ); 1801 } else { 1802 $error = __( 'Activation email resent! Please check your inbox or spam folder.', 'buddypress' ); 1803 } 1804 } 1805 add_action( 'login_form_bp-resend-activation', 'bp_members_login_resend_activation_email' ); 1740 1806 1741 1807 /**
Note: See TracChangeset
for help on using the changeset viewer.