Created
March 5, 2020 21:57
-
-
Save Nicscott01/ac1d50ec61c4e8d538e365edc6224fbc to your computer and use it in GitHub Desktop.
wih_member_registration_gists
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* Auto-fill email of logged-in user | |
* who is trying to become a member | |
* | |
* @added 3/5/2020 | |
*/ | |
add_filter( 'gform_field_value', 'user_upgrade_fields', 10, 3 ); | |
function user_upgrade_fields( $value, $Field, $name ) { | |
if ( is_user_logged_in() && $Field->formId == 2 ) {//member registration form | |
//Get user | |
$User = wp_get_current_user(); | |
switch( $name ) { | |
case 'email' : | |
$value = $User->user_email; | |
break; | |
case 'fname' : | |
$value = $User->first_name; | |
break; | |
case 'lname' : | |
$value = $User->last_name; | |
break; | |
} | |
} | |
return $value; | |
} | |
/** | |
* Make Email field on Member Registration | |
* disabled for logged in users since we are putting their | |
* email in it | |
* | |
*/ | |
add_filter( 'gform_field_content_2', 'disable_email_field', 10, 5 ); | |
//add_filter( 'gform_field_input_2', 'disable_email_field', 10, 5 ); | |
function disable_email_field( $field_content, $Field, $value, $entry_id, $form_id ) { | |
if ( is_user_logged_in() ) : | |
switch( $Field->id ) { | |
case 8 : | |
$field_content = str_replace( "type='email'", "type='email' disabled", $field_content ); | |
break; | |
} | |
endif; | |
return $field_content; | |
} | |
/** | |
* Don't display User Registration if logged in | |
* user is a member | |
* | |
* | |
*/ | |
add_filter( 'gform_pre_render', 'maybe_hide_member_registration', 10, 3 ); | |
function maybe_hide_member_registration( $Form, $ajax, $field_values ) { | |
if ( $Form['id'] == 2 && is_user_logged_in() && \WIH\Member::is_user_a_member() ) { | |
add_filter( 'wih_disabled_form_message', function( $message ) { | |
$message = 'You are already a member, so you don\'t need this form!'; | |
return $message; | |
}); | |
return false; | |
} | |
return $Form; | |
} | |
/** | |
* Enable account "upgrade" from non-member to member | |
* | |
* Check to see if user account w/ that email already exists. | |
* | |
* If the user exists, but the member does not, return "true" | |
* for disabled so we can continue the member creation | |
* | |
* Skip Registration for Logged In Users | |
* http://gravitywiz.com/2012/04/24/skip-user-registration-for-logged-in-users/ | |
* Works for GF User Registration 3.0 and greater. | |
* | |
* *NOTE: in 2nd function below, we check the $_POST variable for email address. This is dependent on the form not changing! | |
*/ | |
add_filter( 'gform_is_delayed_pre_process_feed', 'wih_maybe_delay_feeds', 10, 4 ); | |
function wih_maybe_delay_feeds( $is_delayed, $form, $entry, $slug ) { | |
if ( is_user_logged_in() && $slug == 'gravityformsuserregistration' ) { | |
return gf_user_registration()->has_feed_type( 'create', $form ); | |
} | |
return $is_delayed; | |
} | |
/** | |
* Skip validating the form if the user is logged in | |
* and the form has a user registration feed | |
* | |
* | |
* | |
*/ | |
add_action( 'gform_pre_process', 'wih_maybe_skip_validation', 20, 1 ); | |
function wih_maybe_skip_validation( $form ) { | |
if ( is_user_logged_in() && function_exists( 'gf_user_registration' ) && gf_user_registration()->has_feed_type( 'create', $form ) ) { | |
remove_filter( 'gform_validation', [ gf_user_registration(), 'validate'] ); | |
//Check some more stuff | |
//Check to see if they are already a member | |
global $MembersArea; | |
$user = wp_get_current_user(); | |
//Check the user role for member and double check the member_id field in the user object | |
//if ( !$MembersArea->is_member( $user ) && ( empty( get_field( 'member_id', 'user_'.$user->ID ) ) ) ) { | |
if ( false ) { | |
//Ok, the user is not a member and has an empty member_id field. We can assume they don't exist in the member database. But we'll double check. | |
//$user_info = get_userdata( $user->ID ); | |
$member = get_member_by( 'email', $user->user_email ); | |
if ( $member == false ) { | |
//we really don't have a member | |
if ( $_POST['input_8'] == $user->user_email ) { | |
remove_filter( 'gform_validation', array( gf_user_registration(), 'validate' ) ); | |
} | |
} | |
} | |
} | |
return $form; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment