Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Nicscott01/ac1d50ec61c4e8d538e365edc6224fbc to your computer and use it in GitHub Desktop.
Save Nicscott01/ac1d50ec61c4e8d538e365edc6224fbc to your computer and use it in GitHub Desktop.
wih_member_registration_gists
* 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