WordPress 2.5+ ONLY. Enhance your Registration Page. Add Custom Logo, Password Field, Invitation Codes, Disclaimer, Captcha Validation, Email Validation, User Moderation, Profile Fields and more. Author: Skullbit Version: 3.5 Author URI: http://www.skullbit.com LOCALIZATION Place your language file within this plugin directory and name it "regplus-{language}.mo" replace {language} with your language value from wp-config.php CHANGELOG See readme.txt */ $rp = get_option( 'register_plus' ); //load options if( $rp['dash_widget'] ) //if dashboard widget is enabled include_once('dash_widget.php'); //add the dashboard widget if( !class_exists('RegisterPlusPlugin') ){ class RegisterPlusPlugin{ function RegisterPlusPlugin() { //constructor global $wp_version; //ACTIONS #Add Settings Panel add_action( 'admin_menu', array($this, 'AddPanel') ); #Update Settings on Save if( $_POST['action'] == 'reg_plus_update' ) add_action( 'init', array($this,'SaveSettings') ); #Enable jQuery on Settings panel if( $_GET['page'] == 'register-plus' ){ wp_enqueue_script('jquery'); add_action( 'admin_head', array($this, 'SettingsHead') ); } #Add Register Form Fields add_action( 'register_form', array($this, 'RegForm') ); #Add Register Page Javascript & CSS if($_GET['action'] == 'register') add_action( 'login_head', array($this, 'PassHead') ); #Add Custom Logo CSS to Login Page add_action( 'login_head', array($this, 'LogoHead') ); #Hide initial login fields when email verification is enabled add_action( 'login_head', array($this, 'HideLogin') ); #Save Default Settings add_action( 'init', array($this, 'DefaultSettings') ); #Profile add_action( 'show_user_profile', array($this, 'Add2Profile') ); add_action( 'edit_user_profile', array($this, 'Add2Profile') ); add_action( 'profile_update', array($this, 'SaveProfile') ); #Validate User add_action( 'login_form', array($this, 'ValidateUser') ); #Delete Invalid Users add_action( 'init', array($this, 'DeleteInvalidUsers') ); #Unverified Users Head Scripts add_action( 'admin_head', array($this, 'UnverifiedHead') ); #Admin Validate Users if( $_POST['verifyit'] ) add_action( 'init', array($this, 'AdminValidate') ); #Admin Resend VerificatioN Email if( $_POST['emailverifyit'] ) add_action( 'init', array($this, 'AdminEmailValidate') ); #Admin Delete Unverified User if( $_POST['vdeleteit'] ) add_action( 'init', array($this, 'AdminDeleteUnvalidated') ); //FILTERS #Check Register Form for Errors add_filter( 'registration_errors', array($this, 'RegErrors') ); //LOCALIZATION #Place your language file in the plugin folder and name it "regplus-{language}.mo" #replace {language} with your language value from wp-config.php load_plugin_textdomain( 'regplus', '/wp-content/plugins/register-plus' ); //VERSION CONTROL if( $wp_version < 2.5 ) add_action('admin_notices', array($this, 'version_warning')); } function version_warning(){ //Show warning if plugin is installed on a WordPress lower than 2.5 global $wp_version; echo "
".__('Register Plus is only compatible with WordPress v2.5 and up. You are currently using WordPress v.', 'regplus').$wp_version."
' . $_POST['notice'] . '.
' . $_POST['notice'] . '.
'; if( !is_array($regplus['profile_req']) ) $regplus['profile_req'] = array(); if( is_array($regplus['codepass']) ){ foreach( $regplus['codepass'] as $code ){ $codes .= ''; } } $types = ''; $extras = ''; if( is_array($regplus_custom) ){ foreach( $regplus_custom as $k => $v ) { $types = ''; } ?>
/>
/>
/>
' . __('Your account will be reviewed by an administrator and you will be notified when it is activated.', 'regplus') . '
'; }else if( $regplus['email_verify'] && isset( $_GET['checkemail'] ) ){ echo '' . __('Please activate your account using the verification link sent to your email address.', 'regplus') . '
'; } if( $regplus['email_verify'] && isset( $_GET['regplus_verification'] ) ){ $regplus = get_option( 'register_plus' ); $verify_key = $_GET['regplus_verification']; $user_id = $wpdb->get_var( "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'email_verify' AND meta_value='$verify_key'"); if ( $user_id ) { $login = get_usermeta($user_id, 'email_verify_user'); $wpdb->query( "UPDATE $wpdb->users SET user_login = '$login' WHERE ID = '$user_id'" ); delete_usermeta($user_id, 'email_verify_user'); delete_usermeta($user_id, 'email_verify'); delete_usermeta($user_id, 'email_verify_date'); $msg = '' . sprintf(__('Thank you %s, your account has been verified, please login.', 'regplus'), $login ) . '
'; echo $msg; } } } function adminfrom(){ $regplus = get_option( 'register_plus' ); return $regplus['adminfrom']; } function userfrom(){ $regplus = get_option( 'register_plus' ); return $regplus['from']; } function adminfromname(){ $regplus = get_option( 'register_plus' ); return $regplus['adminfromname']; } function userfromname(){ $regplus = get_option( 'register_plus' ); return $regplus['fromname']; } function DeleteInvalidUsers(){ global $wpdb; $regplus = get_option( 'register_plus' ); $grace = $regplus['email_delete_grace']; $unverified = $wpdb->get_results( "SELECT user_id, meta_value FROM $wpdb->usermeta WHERE meta_key='email_verify_date'" ); $grace_date = date('Ymd', strtotime("-7 days")); if( $unverified ){ foreach( $unverified as $bad ){ if( $grace_date > $bad->meta_value ){ include_once( ABSPATH . 'wp-admin/includes/user.php' ); wp_delete_user($bad->user_id); } } } } function override_warning(){ if( current_user_can(10) && $_GET['page'] == 'register-plus' ) echo "".__('You have another plugin installed that is conflicting with Register Plus. This other plugin is overriding the user notification emails. Please see Register Plus Conflicts for more information.', 'regplus') . "
' . __('If you find this plugin useful, please consider ', 'regplus') . '' . __('donating', 'regplus') . '
'; } } }# END Class RegisterPlusPlugin # Run The Plugin! if( class_exists('RegisterPlusPlugin') ){ $register_plus = new RegisterPlusPlugin(); } if ( function_exists('wp_new_user_notification') ) add_action('admin_notices', array($register_plus, 'override_warning')); # Override set user password and send email to User # if ( !function_exists('wp_new_user_notification') ) : function wp_new_user_notification($user_id, $plaintext_pass = '') { $user = new WP_User($user_id); #-- REGPLUS --# global $wpdb, $register_plus; $regplus = get_option( 'register_plus' ); $regplus_custom = get_option( 'register_plus_custom' ); $ref = explode( '?', $_SERVER['HTTP_REFERER']); $ref = $ref[0]; $admin = trailingslashit( get_option('siteurl') ) . 'wp-admin/users.php'; if( !is_array( $regplus_custom ) ) $regplus_custom = array(); if( $regplus['password'] && $_POST['user_pw'] ) $plaintext_pass = $wpdb->prepare($_POST['user_pw']); else if( $ref == $admin && $_POST['pass1'] == $_POST['pass2'] ) $plaintext_pass = $wpdb->prepare($_POST['pass1']); else $plaintext_pass = $register_plus->RanPass(6); if( $regplus['firstname'] && $_POST['firstname'] ) update_usermeta( $user_id, 'first_name', $wpdb->prepare($_POST['firstname'])); if( $regplus['lastname'] && $_POST['lastname'] ) update_usermeta( $user_id, 'last_name', $wpdb->prepare($_POST['lastname'])); if( $regplus['website'] && $_POST['website'] ) update_usermeta( $user_id, 'user_url', $wpdb->prepare($_POST['website'])); if( $regplus['aim'] && $_POST['aim'] ) update_usermeta( $user_id, 'aim', $wpdb->prepare($_POST['aim'])); if( $regplus['yahoo'] && $_POST['yahoo'] ) update_usermeta( $user_id, 'yim', $wpdb->prepare($_POST['yahoo'])); if( $regplus['jabber'] && $_POST['jabber'] ) update_usermeta( $user_id, 'jabber', $wpdb->prepare($_POST['jabber'])); if( $regplus['about'] && $_POST['about'] ) update_usermeta( $user_id, 'description', $wpdb->prepare($_POST['about'])); if( $regplus['code'] && $_POST['regcode'] ) update_usermeta( $user_id, 'invite_code', $wpdb->prepare($_POST['regcode'])); if( $ref != $admin && $regplus['admin_verify'] ){ update_usermeta( $user_id, 'admin_verify_user', $user->user_login ); $temp_id = 'unverified__' . $register_plus->RanPass(7); $notice = __('Your account requires activation by an administrator before you will be able to login.', 'regplus') . "\r\n"; }else if( $ref != $admin && $regplus['email_verify'] ){ $code = $register_plus->RanPass(25); update_usermeta( $user_id, 'email_verify', $code ); update_usermeta( $user_id, 'email_verify_date', date('Ymd') ); update_usermeta( $user_id, 'email_verify_user', $user->user_login ); $email_code = '?regplus_verification=' . $code; $prelink = __('Verification URL: ', 'regplus'); $notice = __('Please use the link above to verify and activate your account', 'regplus') . "\r\n"; $temp_id = 'unverified__' . $register_plus->RanPass(7); } if (!empty($regplus_custom)) { foreach( $regplus_custom as $k=>$v ){ $id = $register_plus->Label_ID($v['label']); if( $v['reg'] && $_POST[$id] ){ if( is_array( $_POST[$id] ) ) $_POST[$id] = implode(', ', $_POST[$id]); update_usermeta( $user_id, $id, $wpdb->prepare($_POST[$id])); } } } #-- END REGPLUS --# wp_set_password($plaintext_pass, $user_id); $user_login = stripslashes($user->user_login); $user_email = stripslashes($user->user_email); #-- REGPLUS --# if( !$regplus['custom_adminmsg'] && !$regplus['disable_admin'] ){ #-- END REGPLUS --# $message = sprintf(__('New user Register on your blog %s:', 'regplus'), get_option('blogname')) . "\r\n\r\n"; $message .= sprintf(__('Username: %s', 'regplus'), $user_login) . "\r\n\r\n"; $message .= sprintf(__('E-mail: %s', 'regplus'), $user_email) . "\r\n"; @wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Register', 'regplus'), get_option('blogname')), $message); #-- REGPLUS --# }else if( !$regplus['disable_admin'] ){ if( $regplus['adminhtml'] ){ $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; } //$headers .= 'From: ' . $regplus['adminfrom'] . "\r\n" . 'Reply-To: ' . $regplus['adminfrom'] . "\r\n"; add_filter('wp_mail_from', array($register_plus, 'adminfrom')); add_filter('wp_mail_from_name', array($register_plus, 'adminfromname')); $subject = $regplus['adminsubject']; $message = str_replace('%user_login%', $user_login, $regplus['adminmsg']); $message = str_replace('%user_email%', $user_email, $message); $message = str_replace('%blogname%', get_option('blogname'), $message); $message = str_replace('%user_ip%', $_SERVER['REMOTE_ADDR'], $message); $message = str_replace('%user_host%', gethostbyaddr($_SERVER['REMOTE_ADDR']), $message); $message = str_replace('%user_ref%', $_SERVER['HTTP_REFERER'], $message); $message = str_replace('%user_agent%', $_SERVER['HTTP_USER_AGENT'], $message); if( $regplus['firstname'] ) $message = str_replace('%firstname%', $_POST['firstname'], $message); if( $regplus['lastname'] ) $message = str_replace('%lastname%', $_POST['lastname'], $message); if( $regplus['website'] ) $message = str_replace('%website%', $_POST['website'], $message); if( $regplus['aim'] ) $message = str_replace('%aim%', $_POST['aim'], $message); if( $regplus['yahoo'] ) $message = str_replace('%yahoo%', $_POST['yahoo'], $message); if( $regplus['jabber'] ) $message = str_replace('%jabber%', $_POST['jabber'], $message); if( $regplus['about'] ) $message = str_replace('%about%', $_POST['about'], $message); if( $regplus['code'] ) $message = str_replace('%invitecode%', $_POST['code'], $message); if( !is_array( $regplus_custom ) ) $regplus_custom = array(); if (!empty($regplus_custom)) { foreach( $regplus_custom as $k=>$v ){ $meta = $register_plus->Label_ID($v['label']); $value = get_usermeta( $user_id, $meta ); $message = str_replace('%'.$meta.'%', $value, $message); } } $siteurl = get_option('siteurl'); $message = str_replace('%siteurl%', $siteurl, $message); if( $regplus['adminhtml'] && $regplus['admin_nl2br'] ) $message = nl2br($message); wp_mail(get_option('admin_email'), $subject, $message, $headers); } #-- END REGPLUS --# if ( empty($plaintext_pass) ) return; #-- REGPLUS --# if( !$regplus['custom_msg'] ){ #-- END REGPLUS --# $message = sprintf(__('Username: %s', 'regplus'), $user_login) . "\r\n"; $message .= sprintf(__('Password: %s', 'regplus'), $plaintext_pass) . "\r\n"; //$message .= get_option('siteurl') . "/wp-login.php"; #-- REGPLUS --# $message .= $prelink . get_option('siteurl') . "/wp-login.php" . $email_code . "\r\n"; $message .= $notice; #-- END REGPLUS --# wp_mail($user_email, sprintf(__('[%s] Your username and password', 'regplus'), get_option('blogname')), $message); #-- REGPLUS --# }else{ if( $regplus['html'] ){ $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; } //$headers .= 'From: ' . $regplus['from'] . "\r\n" . 'Reply-To: ' . $regplus['from'] . "\r\n"; add_filter('wp_mail_from', array($register_plus, 'userfrom')); add_filter('wp_mail_from_name', array($register_plus, 'userfromname')); $subject = $regplus['subject']; $message = str_replace('%user_pass%', $plaintext_pass, $regplus['msg']); $message = str_replace('%user_login%', $user_login, $message); $message = str_replace('%user_email%', $user_email, $message); $message = str_replace('%blogname%', get_option('blogname'), $message); $message = str_replace('%user_ip%', $_SERVER['REMOTE_ADDR'], $message); $message = str_replace('%user_host%', gethostbyaddr($_SERVER['REMOTE_ADDR']), $message); $message = str_replace('%user_ref%', $_SERVER['HTTP_REFERER'], $message); $message = str_replace('%user_agent%', $_SERVER['HTTP_USER_AGENT'], $message); if( $regplus['firstname'] ) $message = str_replace('%firstname%', $_POST['firstname'], $message); if( $regplus['lastname'] ) $message = str_replace('%lastname%', $_POST['lastname'], $message); if( $regplus['website'] ) $message = str_replace('%website%', $_POST['website'], $message); if( $regplus['aim'] ) $message = str_replace('%aim%', $_POST['aim'], $message); if( $regplus['yahoo'] ) $message = str_replace('%yahoo%', $_POST['yahoo'], $message); if( $regplus['jabber'] ) $message = str_replace('%jabber%', $_POST['jabber'], $message); if( $regplus['about'] ) $message = str_replace('%about%', $_POST['about'], $message); if( $regplus['code'] ) $message = str_replace('%invitecode%', $_POST['code'], $message); if( !is_array( $regplus_custom ) ) $regplus_custom = array(); if (!empty($regplus_custom)) { foreach( $regplus_custom as $k=>$v ){ $meta = $register_plus->Label_ID($v['label']); $value = get_usermeta( $user_id, $meta ); $message = str_replace('%'.$meta.'%', $value, $message); } } $redirect = 'redirect_to=' . $regplus['login_redirect']; if( $regplus['email_verify'] ) $siteurl = get_option('siteurl') . "/wp-login.php" . $email_code . '&' . $redirect; else $siteurl = get_option('siteurl') . "/wp-login.php?" . $redirect; $message = str_replace('%siteurl%', $siteurl, $message); if( $regplus['html'] && $regplus['user_nl2br'] ) $message = nl2br($message); wp_mail($user_email, $subject, $message, $headers); } if( $ref != $admin && ( $regplus['email_verify'] || $regplus['admin_verify'] ) ) $temp_user = $wpdb->query( "UPDATE $wpdb->users SET user_login = '$temp_id' WHERE ID = '$user_id'" ); #-- END REGPLUS --# } endif; ?>