Last active
August 29, 2018 15:41
-
-
Save bappi-d-great/e128d7978e69d2f4947d653e5a2ceeb9 to your computer and use it in GitHub Desktop.
WPMU DEV Forminator Pro: Use a form as registration form (Beta)
This file contains hidden or 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
<?php | |
if( ! class_exists( 'Forminatio_Registration_Addon' ) ) | |
{ | |
class Forminatio_Registration_Addon | |
{ | |
// Registration Form ID | |
static $Form_ID = '4599'; | |
static $map = array( | |
'user_login' => 'Username', | |
'user_email' => 'Email Address' | |
); | |
protected function __construct() | |
{ | |
//add_action( 'form_data_saved', array( $this, 'register_user' ), 99, 2 ); | |
add_filter( 'forminator_custom_form_submit_errors', array( $this, 'check_form_data' ), 99, 3 ); | |
add_action( 'forminator_custom_form_submit_before_set_fields', array( $this, 'register_user' ), 99, 3 ); | |
} | |
public static function get_instance() | |
{ | |
static $Inst = null; | |
if( null == $Inst ) | |
{ | |
$Inst = new self(); | |
} | |
return $Inst; | |
} | |
public function check_form_data( $submit_errors, $form_id, $field_data_array ) | |
{ | |
if( $form_id != self::$Form_ID ) return; | |
$map = array(); | |
$fields = Forminator_API::get_form_fields( self::$Form_ID ); | |
foreach( $fields as $field ) | |
{ | |
if( $field->raw['field_label'] == self::$map['user_email'] ) | |
{ | |
$map['user_email'] = $field->slug; | |
} | |
if( $field->raw['field_label'] == self::$map['user_login'] ) | |
{ | |
$map['user_login'] = $field->slug; | |
} | |
} | |
//print_r($map); | |
foreach( $field_data_array as $arr ) | |
{ | |
if( $arr['name'] == $map['user_email'] ) | |
{ | |
$email = $arr['value']; | |
} | |
elseif( $arr['name'] == $map['user_login'] ) | |
{ | |
$username = $arr['value']; | |
} | |
} | |
if( ! validate_username( $username ) ) | |
{ | |
$submit_errors[][ $map['user_login'] ] = 'The username is not valid!'; | |
} | |
else if( username_exists( $username ) ) | |
{ | |
$submit_errors[][ $map['user_login'] ] = 'The username is already taken, choose another one!'; | |
} | |
else if( email_exists( $email ) ) | |
{ | |
$submit_errors[][ $map['user_email'] ] = 'The email is already taken, choose another one!'; | |
} | |
if( empty( $submit_errors ) ) | |
{ | |
} | |
return $submit_errors; | |
} | |
public function register_user( $entry, $form_id, $field_data_array ) | |
{ | |
if( $form_id != self::$Form_ID ) return; | |
$map = $userdata = $meta = array(); | |
$submitted_data = array( | |
'user_description', | |
'user_firstname', | |
'user_lastname', | |
'user_login', | |
'user_nicename', | |
'user_email', | |
'user_url' | |
); | |
$fields = Forminator_API::get_form_fields( self::$Form_ID ); | |
foreach( $fields as $field ) | |
{ | |
$field_name = str_replace( ' ', '_', strtolower( $field->raw['field_label'] ) ); | |
if( in_array( $field_name, array( 'email', 'email_address' ) ) ) | |
{ | |
$userdata['user_email'] = $field->slug; | |
} | |
else if( in_array( $field_name, array( 'username', 'login', 'user_login' ) ) ) | |
{ | |
$userdata['user_login'] = $field->slug; | |
} | |
else if( in_array( $field_name, array( 'display_name' ) ) ) | |
{ | |
$userdata['display_name'] = $field->slug; | |
} | |
else if( in_array( $field_name, array( 'name' ) ) ) | |
{ | |
$userdata['first_name'] = $field->slug; | |
} | |
else if( in_array( 'user_' . $field_name, $submitted_data ) ) | |
{ | |
$userdata['user_' . $field_name] = $field->slug; | |
} | |
else | |
{ | |
$meta[$field->slug] = $field_name; | |
} | |
} | |
foreach( $field_data_array as $arr ) | |
{ | |
$key = array_search ( $arr['name'], $userdata ); | |
if( isset( $key ) && $key != '' ) | |
{ | |
$userdata[$key] = $arr['value']; | |
} | |
} | |
$user_id = wp_insert_user( $userdata ); | |
foreach( $field_data_array as $arr ) | |
{ | |
if( ! in_array( $arr['name'], $userdata ) ) | |
{ | |
update_user_meta( $user_id, $meta( $arr['name'] ), $arr['value'] ); | |
} | |
} | |
} | |
} | |
Forminatio_Registration_Addon::get_instance(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment