query($wpdb->prepare('DELETE from '.$wpdb->prefix.'usermeta where user_id = %d and (meta_key = %s or meta_key = %s or meta_key = %s or meta_key = %s)',$id,$metakey1,$metakey2,$metakey3,$metakey4));
update_user_meta($id,'mo_openid_data_deleted','1');
exit;
}
function mo_openid_process_account_linking($username, $user_email, $first_name, $last_name, $user_full_name, $user_url, $user_picture, $decrypted_app_name, $decrypted_user_id){
mo_openid_start_session();
if(get_option('mo_openid_auto_register_enable')) {
$random_password = wp_generate_password( 10, false );
global $wpdb;
$db_prefix = $wpdb->prefix;
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM " .$db_prefix."users where user_login = %s", $username));
if( !empty($username_user_id) ){
$email_explode = explode('@',$user_email );
$user_new_name = $email_explode[0];
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM " .$db_prefix."users where user_login = %s", $user_new_name));
$i = 1;
$uname='';
while(!empty($username_user_id) ){
$uname=$user_new_name .'_'.$i;
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM " .$db_prefix."users where user_login = %s", $uname));
$i++;
if(empty($username_user_id)){
$user_new_name=$uname;
}
}
if( !empty($username_user_id) ){
wp_die("Error Code 1: ".get_option('mo_existing_username_error_message'));
}
$username = $user_new_name;
}
$meta_user_url = $user_url;
if(isset($decrypted_app_name) && !empty($decrypted_app_name) && $decrypted_app_name =='facebook'){
$user_url = '';
}
// Checking if username already exist
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
if( isset($username_user_id) ){
$email_array = explode('@', $user_email);
$username = $email_array[0];
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
$i = 1;
while(!empty($username_user_id) ){
$uname=$username.'_' . $i;
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM " .$db_prefix."users where user_login = %s", $uname));
$i++;
if(empty($username_user_id)){
$username= $uname;
}
}
if( isset($username_user_id) ){
echo '
'."Error Code 1: ".get_option('mo_existing_username_error_message');
exit();
}
}
//to check for customisation fields
if(get_option('mo_openid_customised_field_enable') == 1 ) {
$set_cust_field = get_option('mo_openid_custom_field_mapping');
if ($set_cust_field) {
foreach ($set_cust_field as $x) {
foreach ($x as $xx => $x_value) {
if (isset($xx)) {
?>
$username,
'user_email' => $user_email,
'user_pass' => $random_password,
'display_name' => $user_full_name,
'first_name' => $first_name,
'last_name' => $last_name,
'user_url' => $user_url,
);
$userdetails = array(
'user_login' => $username,
'user_email' => $user_email,
'user_pass' => $random_password,
'display_name' => $user_full_name,
'first_name' => $first_name,
'last_name' => $last_name,
'user_url' => $user_url,
'user_profile_url' => $user_url,
'user_picture' => $user_picture,
'decrypted_app_name' => $decrypted_app_name,
'decrypted_user_id' => $decrypted_user_id,
'call' => "1"
);
do_action("mo_before_insert_user",$userdetails,"");
$user_id = wp_insert_user( $userdata);
if(is_wp_error( $user_id )) {
print_r($user_id);
wp_die("Error Code 1: ".get_option('mo_registration_error_message'));
}
update_option('mo_openid_user_count',get_option('mo_openid_user_count')+1);
$user = get_user_by('id', $user_id );
if(get_option('moopenid_social_login_avatar') && isset($user_picture)){
update_user_meta($user_id, 'moopenid_user_avatar',$user_picture);
}
mo_openid_start_session();
$_SESSION['mo_login'] = true;
$_SESSION['registered_user'] = '1';
do_action( 'mo_user_register', $user_id,$meta_user_url);
do_action( 'miniorange_collect_attributes_for_authenticated_user', $user, mo_openid_get_redirect_url());
do_action( 'wp_login', $user->user_login, $user );
wp_set_auth_cookie( $user_id, true );
}
//end of create account block
$redirect_url = mo_openid_get_redirect_url();
wp_redirect($redirect_url);
exit;
}
function mo_openid_initialize_social_login(){
$client_name = "wordpress";
$timestamp = round( microtime(true) * 1000 );
$api_key = get_option('mo_openid_admin_api_key');
$token = $client_name . ':' . number_format($timestamp, 0, '', ''). ':' . $api_key;
$customer_token = get_option('mo_openid_customer_token');
$encrypted_token = encrypt_data($token,$customer_token);
$encoded_token = urlencode( $encrypted_token );
$userdata = get_option('moopenid_user_attributes')?'true':'false';
$http = isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? "https://" : "http://";
$parts = parse_url($http . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
parse_str($parts['query'], $query);
$post = isset( $query['p'] ) ? '?p=' . $query['p'] : '';
$base_return_url = $http . $_SERVER["HTTP_HOST"] . strtok($_SERVER["REQUEST_URI"],'?') . $post;
$return_url = strpos($base_return_url, '?') !== false ? urlencode( $base_return_url . '&option=moopenid' ): urlencode( $base_return_url . '?option=moopenid' );
$url = 'https://login.xecurify.com/moas/openid-connect/client-app/authenticate?token=' . $encoded_token . '&userdata=' . $userdata. '&id=' . get_option('mo_openid_admin_customer_key') . '&encrypted=true&app=' . $_REQUEST['app_name'] . '_oauth_xecurify&returnurl=' . $return_url . '&encrypt_response=true';
wp_redirect($url);
exit;
}
function mo_openid_save_profile_completion_form($username, $user_email, $first_name, $last_name, $user_full_name, $user_url, $user_picture, $decrypted_app_name, $decrypted_user_id){
if(!isset($_POST['otp_field'])) {
$user_email = sanitize_email($user_email);
$username = preg_replace('/[\x00-\x1F][\x7F][\x81][\x8D][\x8F][\x90][\x9D][\xA0][\xAD]/', '', $username);
global $wpdb;
if(empty($user_email)){
$email_user_id = NULL;
}
else {
$email_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_email = %s", $user_email));
}
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
//if email exists, dont check if username is in db or not, send otp and get it over wordpress
if( isset($email_user_id)){
$send_content = send_otp_token($user_email);
if($send_content['status']=='FAILURE'){
$message ="Error Code 1: ".get_option('mo_email_failure_message');
wp_die($message);
}
$transaction_id = $send_content['tId'];
echo mo_openid_validate_otp_form($username, $user_email, $transaction_id, $user_picture, $user_url,$last_name, $user_full_name,$first_name, $decrypted_app_name, $decrypted_user_id);
exit;
}
//email doesnt exist, check if username is in db or not, acc show form and proceed further
else {
if( isset($username_user_id) ){
echo mo_openid_profile_completion_form($last_name, $first_name, $user_full_name, $user_url, $user_picture, $username, $user_email, $decrypted_app_name, $decrypted_user_id,'0');
exit;
}
else {
$send_content = send_otp_token($user_email);
if($send_content['status']=='FAILURE'){
$message ="Error Code 2: ".get_option('mo_email_failure_message');
wp_die($message);
}
$transaction_id = $send_content['tId'];
echo mo_openid_validate_otp_form($username, $user_email, $transaction_id, $user_picture, $user_url, $last_name, $user_full_name,$first_name, $decrypted_app_name, $decrypted_user_id);
exit;
}
}
}
}
function mo_openid_social_login_validate_otp($username, $user_email, $first_name, $last_name, $user_full_name, $user_url, $user_picture, $decrypted_app_name, $decrypted_user_id, $otp_token, $transaction_id){
$validate_content = validate_otp_token($transaction_id, $otp_token);
$status = $validate_content['status'];
//if invalid OTP
if($status == 'FAILURE'){
$message = 'You have entered an invalid verification code. Enter a valid code.';
echo mo_openid_validate_otp_form($username, $user_email, $transaction_id, $user_picture, $user_url, $last_name, $user_full_name,$first_name, $decrypted_app_name, $decrypted_user_id,$message);
exit;
}
//if OTP is Valid
else{
global $wpdb;
$db_prefix = $wpdb->prefix;
$email_user_id = $wpdb->get_var($wpdb->prepare("SELECT user_id FROM ".$db_prefix."mo_openid_linked_user where linked_email = %s",$user_email));
if(empty($user_email)){
$existing_email_user_id = NULL;
}
else {
$existing_email_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_email = \"%s\"", $user_email));
}
// if linked user exists log him in
mo_openid_start_session();
if(isset($email_user_id) || isset($existing_email_user_id) )
{
$email_user_id = isset($email_user_id)? $email_user_id:$existing_email_user_id;
mo_openid_start_session();
$_SESSION['username'] = $username;
$_SESSION['user_email'] = $user_email;
$_SESSION['user_full_name'] = $user_full_name;
$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;
$_SESSION['user_url'] = $user_url;
$_SESSION['user_picture'] = $user_picture;
$_SESSION['social_app_name'] = $decrypted_app_name;
$_SESSION['social_user_id'] = $decrypted_user_id;
if(get_option('moopenid_social_login_avatar') && isset($user_picture))
update_user_meta($email_user_id, 'moopenid_user_avatar', $user_picture);
$_SESSION['mo_login'] = true;
$user = get_user_by('id', $email_user_id );
do_action( 'miniorange_collect_attributes_for_authenticated_user', $user, mo_openid_get_redirect_url());
do_action( 'wp_login', $user->user_login, $user );
wp_set_auth_cookie( $email_user_id, true );
}
// if account linking is enable and email is set
else if ( get_option('mo_openid_account_linking_enable') && (!mo_openid_restrict_user())){
mo_openid_start_session();
$_SESSION['username'] = $username;
$_SESSION['user_email'] = $user_email;
$_SESSION['user_full_name'] = $user_full_name;
$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;
$_SESSION['user_url'] = $user_url;
$_SESSION['user_picture'] = $user_picture;
$_SESSION['social_app_name'] = $decrypted_app_name;
$_SESSION['social_user_id'] = $decrypted_user_id;
echo mo_openid_account_linking_form($username,$user_email,$first_name,$last_name,$user_full_name,$user_url,$user_picture,$decrypted_app_name,$decrypted_user_id);
exit;
}
// else register
else{
//check if auto-registration is enabled
if(get_option('mo_openid_auto_register_enable')) {
$random_password = wp_generate_password( 10, false );
$user_profile_url = $user_url;
if(isset($decrypted_app_name) && !empty($decrypted_app_name) && $decrypted_app_name=='facebook'){
$user_url = '';
}
// Checking if username already exist
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
if( isset($username_user_id) ){
$email_array = explode('@', $user_email);
$username = $email_array[0];
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
$i = 1;
while(!empty($username_user_id) ){
$uname=$username.'_' . $i;
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM " .$db_prefix."users where user_login = %s", $uname));
$i++;
if(empty($username_user_id)){
$username= $uname;
}
}
if( isset($username_user_id) ){
echo '
'."Error Code 2: ".get_option('mo_existing_username_error_message');
exit();
}
}
//to check for customisation fields
if(get_option('mo_openid_customised_field_enable') == 1 ) {
$set_cust_field = get_option('mo_openid_custom_field_mapping');
if ($set_cust_field) {
foreach ($set_cust_field as $x) {
foreach ($x as $xx => $x_value) {
if (isset($xx)) {
?>
$username,
'user_email' => $user_email,
'user_pass' => $random_password,
'display_name' => $user_full_name,
'first_name' => $first_name,
'last_name' => $last_name,
'user_url' => $user_url,
);
$userdetails = array(
'user_login' => $username,
'user_email' => $user_email,
'user_pass' => $random_password,
'display_name' => $user_full_name,
'first_name' => $first_name,
'last_name' => $last_name,
'user_url' => $user_url,
'user_profile_url' => $user_profile_url,
'user_picture' => $user_picture,
'decrypted_app_name' => $decrypted_app_name,
'decrypted_user_id' => $decrypted_user_id,
'call' => "2"
);
do_action("mo_before_insert_user",$userdetails,"");
$user_id = wp_insert_user( $userdata);
if(is_wp_error( $user_id )) {
print_r($user_id);
wp_die("Error Code 2: ".get_option('mo_registration_error_message'));
}
$_SESSION['social_app_name'] = $decrypted_app_name;
$_SESSION['user_email'] = $user_email;
$_SESSION['social_user_id'] = $decrypted_user_id;
$_SESSION['registered_user'] = '1';
$user = get_user_by('email', $user_email );
if(get_option('moopenid_social_login_avatar') && isset($user_picture)){
update_user_meta($user_id, 'moopenid_user_avatar', $user_picture);
}
$_SESSION['mo_login'] = true;
do_action( 'mo_user_register', $user_id, $user_profile_url);
do_action( 'miniorange_collect_attributes_for_authenticated_user', $user, mo_openid_get_redirect_url());
do_action( 'wp_login', $user->user_login, $user );
wp_set_auth_cookie( $user_id, true );
}
$redirect_url = mo_openid_get_redirect_url();
wp_redirect($redirect_url);
exit;
}
}
}
function mo_openid_process_social_login(){
if( is_user_logged_in()){
return;
}
//Decrypt all entries
$decrypted_email = isset($_POST['email']) ? mo_openid_decrypt_sanitize($_POST['email']): '';
$decrypted_user_name = isset($_POST['username']) ? mo_openid_decrypt_sanitize($_POST['username']): '';
$decrypted_user_picture = isset($_POST['profilePic']) ? mo_openid_decrypt_sanitize($_POST['profilePic']): '';
$decrypted_user_url = isset($_POST['profileUrl']) ? mo_openid_decrypt_sanitize($_POST['profileUrl']): '';
$decrypted_first_name = isset($_POST['firstName']) ? mo_openid_decrypt_sanitize($_POST['firstName']): '';
$decrypted_last_name = isset($_POST['lastName']) ? mo_openid_decrypt_sanitize($_POST['lastName']): '';
$decrypted_app_name = isset($_POST['appName']) ? mo_openid_decrypt_sanitize($_POST['appName']): '';
$decrypted_user_id = isset($_POST['userid']) ? mo_openid_decrypt_sanitize($_POST['userid']): '';
$decrypted_user_name = str_replace(' ', '-', $decrypted_user_name);
$decrypted_user_name = sanitize_user($decrypted_user_name, true);
if($decrypted_user_name == '-' || $decrypted_user_name == ''){
$splitemail = explode('@', $decrypted_email);
$decrypted_user_name = $splitemail[0];
}
$decrypted_app_name = mo_openid_filter_app_name($decrypted_app_name);
if(isset( $decrypted_first_name ) && isset( $decrypted_last_name )){
if(strcmp($decrypted_first_name, $decrypted_last_name)!=0)
$user_full_name = $decrypted_first_name.' '.$decrypted_last_name;
else
$user_full_name = $decrypted_first_name;
$first_name = $decrypted_first_name;
$last_name = $decrypted_last_name;
}
else{
$user_full_name = $decrypted_user_name;
$first_name = isset( $decrypted_first_name )? $decrypted_first_name :'';
$last_name = isset( $decrypted_last_name )? $decrypted_last_name: '' ;
}
//Set Display Picture
$user_picture = $decrypted_user_picture;
//Set User URL
$user_url = $decrypted_user_url;
//if email or username not returned from app
if ( empty($decrypted_email) || empty($decrypted_user_name) ){
//check if provider + identifier group exists
global $wpdb;
$db_prefix = $wpdb->prefix;
$id_returning_user = $wpdb->get_var($wpdb->prepare("SELECT user_id FROM ".$db_prefix."mo_openid_linked_user where linked_social_app = \"%s\" AND identifier = %s",$decrypted_app_name,$decrypted_user_id));
if(empty($decrypted_email)){
$email_user_id = NULL;
}
else {
$email_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_email = \"%s\"", $decrypted_email));
}
mo_openid_start_session();
// if returning user whose appname + identifier exists, log him in
if((isset($id_returning_user)) || (isset($email_user_id)) ){
if ((!isset($id_returning_user)) && (isset($email_user_id)) ){
$id_returning_user = $email_user_id;
mo_openid_insert_query($decrypted_app_name,$decrypted_email,$id_returning_user,$decrypted_user_id);
}
$user = get_user_by('id', $id_returning_user );
if(get_option('moopenid_social_login_avatar') && isset($user_picture))
update_user_meta($id_returning_user, 'moopenid_user_avatar', $user_picture);
$_SESSION['mo_login'] = true;
$_SESSION['social_app_name'] = $decrypted_app_name;
$_SESSION['user_email'] = $decrypted_email;
$_SESSION['social_user_id'] = $decrypted_user_id;
do_action( 'miniorange_collect_attributes_for_authenticated_user', $user, mo_openid_get_redirect_url());
do_action( 'wp_login', $user->user_login, $user );
wp_set_auth_cookie( $id_returning_user, true );
}
// if new user and profile completion is enabled
elseif (get_option('mo_openid_enable_profile_completion')){
echo mo_openid_profile_completion_form($last_name, $first_name, $user_full_name, $user_url, $user_picture, $decrypted_user_name, $decrypted_email, $decrypted_app_name, $decrypted_user_id);
exit;
}
// if new user and profile completion and account linking is disabled, auto create dummy data and register user
else{
// auto registration is enabled
if(get_option('mo_openid_auto_register_enable')) {
if(!empty($decrypted_email))
{
$split_email = explode('@',$decrypted_email);
$username = $split_email[0];
$user_email = $decrypted_email;
}
else if(!empty($decrypted_user_name))
{
$split_app_name = explode('_',$decrypted_app_name);
$username = $decrypted_user_name;
$user_email = $decrypted_user_name.'@'.$split_app_name[0].'.com';
}
else
{
$split_app_name = explode('_',$decrypted_app_name);
$username = 'user_'.get_option('mo_openid_user_count');
$user_email = 'user_'.get_option('mo_openid_user_count').'@'.$split_app_name[0].'.com';
}
// remove white space from email
$user_email = str_replace(' ', '', $user_email);
//account linking
if ( get_option('mo_openid_account_linking_enable') && (!mo_openid_restrict_user())){
mo_openid_start_session();
$_SESSION['username'] = $decrypted_user_name;
$_SESSION['user_email'] = $user_email;
$_SESSION['user_full_name'] = $user_full_name;
$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;
$_SESSION['user_url'] = $user_url;
$_SESSION['user_picture'] = $user_picture;
$_SESSION['social_app_name'] = $decrypted_app_name;
$_SESSION['social_user_id'] = $decrypted_user_id;
echo mo_openid_account_linking_form($decrypted_user_name,$user_email,$first_name,$last_name,$user_full_name,$user_url,$user_picture,$decrypted_app_name,$decrypted_user_id);
exit;
}
$random_password = wp_generate_password( 10, false );
$user_profile_url = $user_url;
if(isset($decrypted_app_name) && !empty($decrypted_app_name) && $decrypted_app_name=='facebook'){
$user_url = '';
}
// Checking if username already exist
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
if( isset($username_user_id) ){
$email_array = explode('@', $user_email);
$username = $email_array[0];
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
$i = 1;
while(!empty($username_user_id) ){
$uname=$username.'_' . $i;
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM " .$db_prefix."users where user_login = %s", $uname));
$i++;
if(empty($username_user_id)){
$username= $uname;
}
}
if( isset($username_user_id) ){
echo '
'."Error Code 3: ".get_option('mo_existing_username_error_message');
exit();
}
}
//to check for customisation fields
if(get_option('mo_openid_customised_field_enable') == 1 ) {
$set_cust_field = get_option('mo_openid_custom_field_mapping');
if ($set_cust_field) {
foreach ($set_cust_field as $x) {
foreach ($x as $xx => $x_value) {
if (isset($xx)) {
?>
$username,
'user_email' => $user_email,
'user_pass' => $random_password,
'display_name' => $user_full_name,
'first_name' => $first_name,
'last_name' => $last_name,
'user_url' => $user_url,
);
$userdetails = array(
'user_login' => $username,
'user_email' => $user_email,
'user_pass' => $random_password,
'display_name' => $user_full_name,
'first_name' => $first_name,
'last_name' => $last_name,
'user_url' => $user_url,
'user_profile_url' => $user_profile_url,
'user_picture' => $user_picture,
'decrypted_app_name' => $decrypted_app_name,
'decrypted_user_id' => $decrypted_user_id,
'call' => "3"
);
do_action("mo_before_insert_user",$userdetails,"");
$user_id = wp_insert_user( $userdata);
if(is_wp_error( $user_id )) {
print_r($user_id);
wp_die("Error Code 3: ".get_option('mo_registration_error_message'));
}
update_option('mo_openid_user_count',get_option('mo_openid_user_count')+1);
$_SESSION['social_app_name'] = $decrypted_app_name;
$_SESSION['user_email'] = $user_email;
$_SESSION['social_user_id'] = $decrypted_user_id;
$_SESSION['registered_user'] = '1';
$user = get_user_by('id', $user_id );
if(get_option('moopenid_social_login_avatar') && isset($user_picture)){
update_user_meta($user_id, 'moopenid_user_avatar', $user_picture);
}
$_SESSION['mo_login'] = true;
//registration hook
do_action( 'mo_user_register', $user_id, $user_profile_url);
do_action( 'miniorange_collect_attributes_for_authenticated_user', $user, mo_openid_get_redirect_url());
//login hook
do_action( 'wp_login', $user->user_login, $user );
wp_set_auth_cookie( $user_id, true );
}
$redirect_url = mo_openid_get_redirect_url();
wp_redirect($redirect_url);
exit;
}
}
//email and username are both returned..dont show profile completion
else{
global $wpdb;
$user_email = sanitize_email($decrypted_email);
$username = $decrypted_user_name;
//Checking if email or username already exist
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
$db_prefix = $wpdb->prefix;
$linked_email_id = $wpdb->get_var($wpdb->prepare("SELECT user_id FROM ".$db_prefix."mo_openid_linked_user where linked_social_app = \"%s\" AND identifier = %s",$decrypted_app_name,$decrypted_user_id));
$email_user_id = $wpdb->get_var($wpdb->prepare("SELECT user_id FROM ".$db_prefix."mo_openid_linked_user where linked_email = \"%s\"",$decrypted_email));
if(empty($decrypted_email)){
$existing_email_user_id = NULL;
}
else {
$existing_email_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_email = \"%s\"", $decrypted_email));
}
mo_openid_start_session();
if((isset($linked_email_id)) || (isset($email_user_id)) || isset($existing_email_user_id)) { // user is a member
if ((!isset($linked_email_id)) && (isset($email_user_id)) ){
$linked_email_id = $email_user_id;
mo_openid_insert_query($decrypted_app_name,$user_email,$linked_email_id,$decrypted_user_id);
}
if(isset($linked_email_id)){
$user = get_user_by('id', $linked_email_id );
$user_id = $user->ID;
}
else if(isset($email_user_id)){
$user = get_user_by('id', $email_user_id );
$user_id = $user->ID;
}
else{
$user = get_user_by('id', $existing_email_user_id );
$user_id = $user->ID;
}
if(get_option('moopenid_social_login_avatar') && isset($user_picture))
update_user_meta($user_id, 'moopenid_user_avatar', $user_picture);
$_SESSION['mo_login'] = true;
$_SESSION['social_app_name'] = $decrypted_app_name;
$_SESSION['social_user_id'] = $decrypted_user_id;
$_SESSION['user_email'] = $user_email;
do_action( 'miniorange_collect_attributes_for_authenticated_user', $user, mo_openid_get_redirect_url());
do_action( 'wp_login', $user->user_login, $user );
wp_set_auth_cookie( $user_id, true );
}
else if ( get_option('mo_openid_account_linking_enable')&& (!mo_openid_restrict_user())){
mo_openid_start_session();
$_SESSION['username'] = $decrypted_user_name;
$_SESSION['user_email'] = $user_email;
$_SESSION['user_full_name'] = $user_full_name;
$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;
$_SESSION['user_url'] = $user_url;
$_SESSION['user_picture'] = $user_picture;
$_SESSION['social_app_name'] = $decrypted_app_name;
$_SESSION['social_user_id'] = $decrypted_user_id;
echo mo_openid_account_linking_form($decrypted_user_name,$user_email,$first_name,$last_name,$user_full_name,$user_url,$user_picture,$decrypted_app_name,$decrypted_user_id);
exit;
}
else {
// this user is a guest
// auto registration is enabled
if(get_option('mo_openid_auto_register_enable')) {
$random_password = wp_generate_password( 10, false );
if( isset($username_user_id) ){
$email = explode('@', $user_email);
$username = $email[0];
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
$i = 1;
while(!empty($username_user_id) ){
$uname=$username.'_' . $i;
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM " .$db_prefix."users where user_login = %s", $uname));
$i++;
if(empty($username_user_id)){
$username= $uname;
}
}
if( isset($username_user_id) ){
echo '
'."Error Code 2: ".get_option('mo_existing_username_error_message');
exit();
}
}
$user_profile_url = $user_url;
if(isset($decrypted_app_name) && !empty($decrypted_app_name) && $decrypted_app_name=='facebook'){
$user_url = '';
}
// Checking if username already exist
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
if( isset($username_user_id) ){
$email_array = explode('@', $user_email);
$username = $email_array[0];
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
$i = 1;
while(!empty($username_user_id) ){
$uname=$username.'_' . $i;
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM " .$db_prefix."users where user_login = %s", $uname));
$i++;
if(empty($username_user_id)){
$username= $uname;
}
}
if( isset($username_user_id) ){
echo '
'."Error Code 4: ".get_option('mo_existing_username_error_message');
exit();
}
}
//to check for customisation fields
if(get_option('mo_openid_customised_field_enable') == 1 ) {
$set_cust_field = get_option('mo_openid_custom_field_mapping');
if ($set_cust_field) {
foreach ($set_cust_field as $x) {
foreach ($x as $xx => $x_value) {
if (isset($xx)) {
?>
$username,
'user_email' => $user_email,
'user_pass' => $random_password,
'display_name' => $user_full_name,
'first_name' => $first_name,
'last_name' => $last_name,
'user_url' => $user_url
);
$userdetails = array(
'user_login' => $username,
'user_email' => $user_email,
'user_pass' => $random_password,
'display_name' => $user_full_name,
'first_name' => $first_name,
'last_name' => $last_name,
'user_url' => $user_url,
'user_profile_url' => $user_profile_url,
'user_picture' => $user_picture,
'decrypted_app_name' => $decrypted_app_name,
'decrypted_user_id' => $decrypted_user_id,
'call' => "4"
);
do_action("mo_before_insert_user",$userdetails,"");
$user_id = wp_insert_user( $userdata);
if(is_wp_error( $user_id )) {
print_r($user_id);
wp_die("Error Code 4: ".get_option('mo_registration_error_message'));
}
$_SESSION['social_app_name'] = $decrypted_app_name;
$_SESSION['user_email'] = $user_email;
$_SESSION['social_user_id'] = $decrypted_user_id;
$_SESSION['registered_user'] = '1';
$user = get_user_by('email', $user_email );
if(get_option('moopenid_social_login_avatar') && isset($user_picture)){
update_user_meta($user_id, 'moopenid_user_avatar', $user_picture);
}
$_SESSION['mo_login'] = true;
//registration hook
do_action( 'mo_user_register', $user_id,$user_profile_url);
do_action( 'miniorange_collect_attributes_for_authenticated_user', $user, mo_openid_get_redirect_url());
//login hook
do_action( 'wp_login', $user->user_login, $user );
wp_set_auth_cookie( $user_id, true );
}
$redirect_url = mo_openid_get_redirect_url();
wp_redirect($redirect_url);
exit;
}
}
}
function mo_openid_custom_app_oauth_redirect($appname){
if(isset($_REQUEST['test']))
setcookie("mo_oauth_test", true);
else
setcookie("mo_oauth_test", false);
// NEW
if(get_option('mo_openid_apps_list')) {
$appslist = maybe_unserialize(get_option('mo_openid_apps_list'));
}
else {
$appslist = array();
}
if(get_option('mo_openid_malform_error')){
if(get_option( 'permalink_structure' )) {
$social_app_redirect_uri = site_url() .'/openidcallback/'.$appname;
}
else {
$social_app_redirect_uri = site_url() . '/?openidcallback='.$appname;
}
}
else {
if(get_option( 'permalink_structure' )) {
$social_app_redirect_uri = site_url() . '/openidcallback';
}
else{
$social_app_redirect_uri = site_url() .'/?openidcallback';
}
}
mo_openid_start_session();
foreach($appslist as $key=>$currentapp){
if($key == "facebook" && $appname == "facebook"){
$_SESSION["appname"] = "facebook";
$client_id = $currentapp['clientid'];
$scope = $currentapp['scope'];
$login_dialog_url = "https://www.facebook.com/v2.11/dialog/oauth?client_id=".$client_id. '&redirect_uri='. $social_app_redirect_uri .'&response_type=code&scope='.$scope;
break;
}
else if($key == "google" && $appname == "google"){
$_SESSION["appname"] = "google";
$client_id = $currentapp['clientid'];
$scope = $currentapp['scope'];
$login_dialog_url = 'https://accounts.google.com/o/oauth2/auth?redirect_uri=' .$social_app_redirect_uri .'&response_type=code&client_id=' .$client_id .'&scope='.$scope.'&access_type=offline';
break;
}
else if($key == "twitter" && $appname == "twitter")
{ $_SESSION['appname'] = "twitter";
$client_id = $currentapp['clientid'];
$client_secret = $currentapp['clientsecret'];
$twiter_getrequest_object = new Mo_Openid_Twitter_OAuth($client_id,$client_secret); //creating the object of Mo_Openid_Twitter_OAuth class
$oauth_token = $twiter_getrequest_object->mo_twitter_get_request_token(); //function call
$login_dialog_url = "https://api.twitter.com/oauth/authenticate?oauth_token=" . $oauth_token;
break;
}
}
header('Location:'. $login_dialog_url);
exit;
}
function mo_openid_process_custom_app_callback(){
if( is_user_logged_in() && get_option('mo_openid_test_configuration') != 1){
return;
}
$code = $profile_url = $client_id = $current_url = $client_secret = $access_token_uri = $postData = $oauth_token = $user_url = $username = $email = '';
$oauth_access_token = $redirect_url = $option = $oauth_token_secret = $screen_name = $profile_json_output = $oauth_verifier = $twitter_oauth_token = $access_token_json_output =[];
mo_openid_start_session();
if(strpos( $_SERVER['REQUEST_URI'], "oauth_verifier") !== false) {
$_SESSION['appname'] = "twitter";
}
if($_SESSION['appname']) {
$appname = sanitize_text_field($_SESSION['appname']);
}else {
if ((strpos($_SERVER['REQUEST_URI'], "openidcallback/google") !== false ) || (strpos($_SERVER['REQUEST_URI'], "openidcallback=google") !== false )) {
$appname = "google";
}
if ((strpos($_SERVER['REQUEST_URI'], "openidcallback/facebook") !== false) || (strpos($_SERVER['REQUEST_URI'], "openidcallback=facebook") !== false )) {
$appname = "facebook";
}
}
if($appname == "twitter"){
$dirs = explode('&', $_SERVER['REQUEST_URI']);
$oauth_verifier = explode('=', $dirs[1]);
$twitter_oauth_token = explode('=', $dirs[0]);
}
else{
if(isset($_REQUEST['code'] )){
$code = sanitize_text_field($_REQUEST['code']);
}
else if(isset( $_REQUEST['error_reason'] )){
echo sanitize_text_field($_REQUEST['error_description']) . "
";
wp_die("Allow access to your profile to get logged in. Click here to go back to the website.");
}
}
if(get_option('mo_openid_apps_list')){
$appslist = maybe_unserialize(get_option('mo_openid_apps_list'));
}
else{
$appslist = array();
}
if(get_option('mo_openid_malform_error')){
if(get_option( 'permalink_structure' )) {
$social_app_redirect_uri = site_url() .'/openidcallback/'.$appname;
}
else{
$social_app_redirect_uri = site_url() . '/?openidcallback='.$appname;
}
}
else{
if(get_option( 'permalink_structure' )) {
$social_app_redirect_uri = site_url() . '/openidcallback';
}
else{
$social_app_redirect_uri = site_url() .'/?openidcallback';
}
}
foreach($appslist as $key=>$currentapp){
if($key == "facebook" && $appname == "facebook"){
$client_id = $currentapp['clientid'];
$client_secret = $currentapp['clientsecret'];
$access_token_uri = 'https://graph.facebook.com/v2.11/oauth/access_token';
$postData = 'client_id=' .$client_id .'&redirect_uri=' . $social_app_redirect_uri . '&client_secret=' . $client_secret . '&code=' .$code;
break;
}
else if($key == "google" && $appname == "google"){
$client_id = $currentapp['clientid'];
$client_secret = $currentapp['clientsecret'];
$access_token_uri = 'https://accounts.google.com/o/oauth2/token';
$postData = 'code=' .$code .'&client_id=' .$client_id .'&client_secret=' . $client_secret . '&redirect_uri=' . $social_app_redirect_uri . '&grant_type=authorization_code';
break;
}
else if($key == "twitter" && $appname == "twitter")
{
$client_id = $currentapp['clientid'];
$client_secret = $currentapp['clientsecret'];
$twitter_getaccesstoken_object = new Mo_Openid_Twitter_OAuth($client_id,$client_secret);
$oauth_token = $twitter_getaccesstoken_object->mo_twitter_get_access_token($oauth_verifier[1],$twitter_oauth_token[1]);
break;
}
}
if($appname != "twitter"){
$headers='';
if($appname == "google")
{
$headers = array("Content-Type"=>"application/x-www-form-urlencoded");
}
$args = array(
'method' => 'POST',
'body' => $postData,
'timeout' => '5',
'redirection' => '5',
'httpversion' => '1.0',
'blocking' => true,
'headers' => $headers
);
$result = wp_remote_post($access_token_uri,$args);
if(is_wp_error($result)){
update_option( 'mo_openid_test_configuration', 0);
echo $result['body'];
exit();
}
$access_token_json_output = json_decode($result['body'], true);
// this handles incorrect client secret for all apps.
if ((array_key_exists('error', $access_token_json_output)) || array_key_exists('error_message', $access_token_json_output)){
if( is_user_logged_in() && get_option('mo_openid_test_configuration') == 1 ) {
update_option('mo_openid_test_configuration', 0);
//Test configuration failed window.
echo 'TEST FAILED
WARNING: Client secret is incorrect for this app. Please check the client secret and try again.
';
print_r($access_token_json_output);
echo '
';
exit;
}
}
}
else{
$oauth_token_array = explode('&', $oauth_token);
$oauth_access_token = isset($oauth_token_array[0]) ? $oauth_token_array[0] : null;
$oauth_access_token = explode('=', $oauth_access_token);
$oauth_token_secret = isset($oauth_token_array[1]) ? $oauth_token_array[1] : null;
$oauth_token_secret = explode('=', $oauth_token_secret);
$screen_name = isset($oauth_token_array[3]) ? $oauth_token_array[3] : null;
$screen_name = explode('=', $screen_name);
}
mo_openid_start_session();
foreach($appslist as $key=>$currentapp){
if($key == "facebook" && $appname == "facebook"){
$profile_url ='https://graph.facebook.com/me/?fields=id,name,email,picture.height(961),age_range,first_name,gender,last_name,link&access_token=' .$access_token_json_output['access_token'];
break;
}
else if($key == "google" && $appname == "google"){
$profile_url = 'https://www.googleapis.com/oauth2/v1/userinfo?access_token=' .$access_token_json_output['access_token'];
break;
}
else if($key == "twitter" && $appname == "twitter"){
$twitter_getprofile_signature_object = new Mo_Openid_Twitter_OAuth($client_id,$client_secret);
$oauth_access_token1 = isset($oauth_access_token[1]) ? $oauth_access_token[1] : '';
$oauth_token_secret1 = isset($oauth_token_secret[1]) ? $oauth_token_secret[1] : '';
$screen_name1 = isset($screen_name[1]) ? $screen_name[1] : '';
$profile_json_output = $twitter_getprofile_signature_object->mo_twitter_get_profile_signature($oauth_access_token1,$oauth_token_secret1,$screen_name1);
break;
}
}
if($appname != "twitter"){
$access_token_header = "application/x-www-form-urlencoded" . $access_token_json_output['access_token'];
$headers = array("Authorization"=>$access_token_header);
$args = array();
$result = wp_remote_get($profile_url,$args);
if(is_wp_error($result)){
update_option( 'mo_openid_test_configuration', 0);
echo $result['body'];
exit();
}
$profile_json_output = json_decode($result['body'], true);
}
//Test Configuration
if( is_user_logged_in() && get_option('mo_openid_test_configuration') == 1 ){
update_option( 'mo_openid_test_configuration', 0);
$print = 'TEST SUCCESSFUL
';
$print .= mo_openid_json_to_htmltable($profile_json_output);
echo $print;
exit;
}
$social_app_name = $appname;
$first_name = $last_name = $email = $user_name = $user_url = $user_picture = $social_user_id = '';
if ($appname == "facebook"){
$first_name = isset( $profile_json_output['first_name']) ? $profile_json_output['first_name'] : '';
$last_name = isset( $profile_json_output['last_name']) ? $profile_json_output['last_name'] : '';
$email = isset( $profile_json_output['email']) ? $profile_json_output['email'] : '';
$user_name = isset( $profile_json_output['name']) ? $profile_json_output['name'] : '';
$user_url = isset( $profile_json_output['link']) ? $profile_json_output['link'] : '';
$user_picture = isset( $profile_json_output['picture']['data']['url']) ? $profile_json_output['picture']['data']['url'] : '';
$social_user_id = isset( $profile_json_output['id']) ? $profile_json_output['id'] : '';
}
else if ($appname == "google"){
$first_name = isset( $profile_json_output['given_name']) ? $profile_json_output['given_name'] : '';
$user_name = isset( $profile_json_output['name']) ? $profile_json_output['name'] : '';
$last_name = isset( $profile_json_output['family_name']) ? $profile_json_output['family_name'] : '';
$email = isset( $profile_json_output['email']) ? $profile_json_output['email'] : '';
$user_url = isset( $profile_json_output['link']) ? $profile_json_output['link'] : '';
$user_picture = isset( $profile_json_output['picture']) ? $profile_json_output['picture'] : '';
$social_user_id = isset( $profile_json_output['id']) ? $profile_json_output['id'] : '';
}
else if($appname == "twitter") {
if (isset($profile_json_output['name'])) {
$full_name = explode(" ", $profile_json_output['name']);
$first_name = isset( $full_name[0]) ? $full_name[0] : '';
$last_name = isset( $full_name[1]) ? $full_name[1] : '';
}
$user_name = isset( $profile_json_output['screen_name']) ? $profile_json_output['screen_name'] : '';
$email = isset( $profile_json_output['email']) ? $profile_json_output['email'] : '';
$user_url = isset( $profile_json_output['url']) ? $profile_json_output['url'] : '';
$user_picture = isset( $profile_json_output['profile_image_url']) ? $profile_json_output['profile_image_url'] : '';
$social_user_id = isset( $profile_json_output['id_str']) ? $profile_json_output['id_str'] : '';
}
$user_name = str_replace(' ', '-', $user_name);
$user_name = sanitize_user($user_name, true);
if($user_name == '-' || $user_name == ''){
$splitemail = explode('@', $email);
$user_name = $splitemail[0];
}
//Set User Full Name
if(isset( $first_name ) && isset( $last_name )){
if(strcmp($first_name, $last_name)!=0)
$user_full_name = $first_name.' '.$last_name;
else
$user_full_name = $first_name;
}
else{
$user_full_name = $user_name;
$first_name = '';
$last_name = '';
}
// if email and user name is empty
if ( empty($email) || empty($user_name) ){
global $wpdb;
$db_prefix = $wpdb->prefix;
$id_returning_user = $wpdb->get_var($wpdb->prepare("SELECT user_id FROM ".$db_prefix."mo_openid_linked_user where linked_social_app = \"%s\" AND identifier = %s",$social_app_name,$social_user_id));
if(empty($email)){
$email_user_id = NULL;
}
else {
$email_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_email = \"%s\"", $email));
}
mo_openid_start_session();
// if returning user whose appname + identifier exists, log him in
if((isset($id_returning_user)) || (isset($email_user_id))){
if ((!isset($id_returning_user)) && (isset($email_user_id)) ){
$id_returning_user = $email_user_id;
mo_openid_insert_query($social_app_name,$email,$id_returning_user,$social_user_id);
}
$user = get_user_by('id', $id_returning_user );
if(get_option('moopenid_social_login_avatar') && isset($user_picture))
update_user_meta($id_returning_user, 'moopenid_user_avatar', $user_picture);
$_SESSION['mo_login'] = true;
$_SESSION['social_app_name'] = $social_app_name;
$_SESSION['user_email'] = $email;
$_SESSION['social_user_id'] = $social_user_id;
do_action( 'miniorange_collect_attributes_for_authenticated_user', $user, mo_openid_get_redirect_url());
do_action( 'wp_login', $user->user_login, $user );
wp_set_auth_cookie( $id_returning_user, true );
}
// if new user and profile completion is enabled
elseif (get_option('mo_openid_enable_profile_completion')){
echo mo_openid_profile_completion_form($last_name, $first_name, $user_full_name, $user_url, $user_picture, $user_name, $email, $social_app_name, $social_user_id);
exit;
}
// if new user and profile completion is disabled, auto create dummy data and register user
else{
// auto registration is enabled
if(get_option('mo_openid_auto_register_enable')) {
if(!empty($email))
{
$split_email = explode('@',$email);
$username = $split_email[0];
$user_email = $email;
}
else if(!empty($user_name))
{
$split_app_name = explode('_',$social_app_name);
$username = $user_name;
$user_email = $user_name.'@'.$split_app_name[0].'.com';
}
else
{
$split_app_name = explode('_',$social_app_name);
$username = 'user_'.get_option('mo_openid_user_count');
$user_email = 'user_'.get_option('mo_openid_user_count').'@'.$split_app_name[0].'.com';
}
$user_email = str_replace(' ', '', $user_email);
if ( get_option('mo_openid_account_linking_enable')&& (!mo_openid_restrict_user())){
mo_openid_start_session();
$_SESSION['username'] = $username;
$_SESSION['user_email'] = $user_email;
$_SESSION['user_full_name'] = $user_full_name;
$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;
$_SESSION['user_url'] = $user_url;
$_SESSION['user_picture'] = $user_picture;
$_SESSION['social_app_name'] = $social_app_name;
$_SESSION['social_user_id'] = $social_user_id;
echo mo_openid_account_linking_form($username,$user_email,$first_name,$last_name,$user_full_name,$user_url,$user_picture,$social_app_name,$social_user_id);
exit;
}
$random_password = wp_generate_password( 10, false );
$user_profile_url = $user_url;
if(isset($social_app_name) && !empty($social_app_name) && $social_app_name=='facebook'){
$user_url = '';
}
// Checking if username already exist
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
if( isset($username_user_id) ){
$email_array = explode('@', $user_email);
$username = $email_array[0];
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
$i = 1;
while(!empty($username_user_id) ){
$uname=$username.'_' . $i;
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM " .$db_prefix."users where user_login = %s", $uname));
$i++;
if(empty($username_user_id)){
$username= $uname;
}
}
if( isset($username_user_id) ){
echo '
'."Error Code 5: ".get_option('mo_existing_username_error_message');
exit();
}
}
//to check for customisation fields
if(get_option('mo_openid_customised_field_enable') == 1 ) {
$set_cust_field = get_option('mo_openid_custom_field_mapping');
if ($set_cust_field) {
foreach ($set_cust_field as $x) {
foreach ($x as $xx => $x_value) {
if (isset($xx)) {
?>
$username,
'user_email' => $user_email,
'user_pass' => $random_password,
'display_name' => $user_full_name,
'first_name' => $first_name,
'last_name' => $last_name,
'user_url' => $user_url,
);
$userdetails = array(
'user_login' => $username,
'user_email' => $user_email,
'user_pass' => $random_password,
'display_name' => $user_full_name,
'first_name' => $first_name,
'last_name' => $last_name,
'user_url' => $user_url,
'user_profile_url' => $user_profile_url,
'user_picture' => $user_picture,
'social_app_name' => $social_app_name,
'social_user_id' => $social_user_id,
'call' => "5"
);
do_action("mo_before_insert_user",$userdetails,"");
$user_id = wp_insert_user( $userdata);
if(is_wp_error( $user_id )) {
print_r($user_id);
wp_die("Error Code 5: ".get_option('mo_registration_error_message'));
}
update_option('mo_openid_user_count',get_option('mo_openid_user_count')+1);
$_SESSION['mo_login'] = true;
$_SESSION['social_app_name'] = $social_app_name;
$_SESSION['user_email'] = $user_email;
$_SESSION['social_user_id'] = $social_user_id;
$_SESSION['registered_user'] = '1';
$user = get_user_by('email', $user_email );
if(get_option('moopenid_social_login_avatar') && isset($user_picture)){
update_user_meta($user_id, 'moopenid_user_avatar', $user_picture);
}
//registration hook
do_action( 'mo_user_register', $user_id, $user_profile_url);
do_action( 'miniorange_collect_attributes_for_authenticated_user', $user, mo_openid_get_redirect_url());
//login hook
do_action( 'wp_login', $user->user_login, $user );
wp_set_auth_cookie( $user_id, true );
}
$redirect_url = mo_openid_get_redirect_url();
wp_redirect($redirect_url);
exit;
}
$redirect_url = mo_openid_get_redirect_url();
wp_redirect($redirect_url);
exit;
}
//email and username are both returned..dont show profile completion
else{
global $wpdb;
$user_email = sanitize_email($email);
$username = $user_name;
//Checking if username already exist
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
$db_prefix = $wpdb->prefix;
$linked_email_id = $wpdb->get_var($wpdb->prepare("SELECT user_id FROM ".$db_prefix."mo_openid_linked_user where linked_social_app = \"%s\" AND identifier = %s",$social_app_name,$social_user_id));
$email_user_id = $wpdb->get_var($wpdb->prepare("SELECT user_id FROM ".$db_prefix."mo_openid_linked_user where linked_email = \"%s\"",$user_email));
if(empty($user_email)){
$existing_email_user_id = NULL;
}
else {
$existing_email_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_email = \"%s\"", $user_email));
}
mo_openid_start_session();
if((isset($linked_email_id)) || (isset($email_user_id)) || (isset($existing_email_user_id)) ) { // user is a member
if ((!isset($linked_email_id)) && (isset($email_user_id)) ){
$linked_email_id = $email_user_id;
mo_openid_insert_query($social_app_name,$user_email,$linked_email_id,$social_user_id);
}
if(isset($linked_email_id)){
$user = get_user_by('id', $linked_email_id );
$user_id = $user->ID;
}
else if(isset($email_user_id)){
$user = get_user_by('id', $email_user_id );
$user_id = $user->ID;
}
else{
$user = get_user_by('id', $existing_email_user_id );
$user_id = $user->ID;
}
if(get_option('moopenid_social_login_avatar') && isset($user_picture))
update_user_meta($user_id, 'moopenid_user_avatar', $user_picture);
$_SESSION['mo_login'] = true;
$_SESSION['social_app_name'] = $social_app_name;
$_SESSION['social_user_id'] = $social_user_id;
$_SESSION['user_email'] = $user_email;
do_action( 'miniorange_collect_attributes_for_authenticated_user', $user, mo_openid_get_redirect_url());
do_action( 'wp_login', $user->user_login, $user );
wp_set_auth_cookie( $user_id, true );
}
//if account linking is enable
else if ( get_option('mo_openid_account_linking_enable')&& (!mo_openid_restrict_user())){
mo_openid_start_session();
$_SESSION['username'] = $user_name;
$_SESSION['user_email'] = $user_email;
$_SESSION['user_full_name'] = $user_full_name;
$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;
$_SESSION['user_url'] = $user_url;
$_SESSION['user_picture'] = $user_picture;
$_SESSION['social_app_name'] = $social_app_name;
$_SESSION['social_user_id'] = $social_user_id;
echo mo_openid_account_linking_form($user_name,$user_email,$first_name,$last_name,$user_full_name,$user_url,$user_picture,$social_app_name,$social_user_id);
exit;
}
else {
// this user is a guest
// auto registration is enabled
if(get_option('mo_openid_auto_register_enable')) {
$random_password = wp_generate_password( 10, false );
if( isset($username_user_id) ){
$email_array = explode('@', $user_email);
$username = $email_array[0];
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
$i = 1;
while(!empty($username_user_id) ){
$uname=$username.'_' . $i;
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM " .$db_prefix."users where user_login = %s", $uname));
$i++;
if(empty($username_user_id)){
$username= $uname;
}
}
if( isset($username_user_id) ){
echo '
'."Error Code 3: ".get_option('mo_existing_username_error_message');
exit();
}
}
$user_profile_url = $user_url;
if(isset($social_app_name) && !empty($social_app_name) && $social_app_name=='facebook'){
$user_url = '';
}
// Checking if username already exist
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
if( isset($username_user_id) ){
$email_array = explode('@', $user_email);
$username = $email_array[0];
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->users where user_login = %s", $username));
$i = 1;
while(!empty($username_user_id) ){
$uname=$username.'_' . $i;
$username_user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM " .$db_prefix."users where user_login = %s", $uname));
$i++;
if(empty($username_user_id)){
$username= $uname;
}
}
if( isset($username_user_id) ){
echo '
'."Error Code 6: ".get_option('mo_existing_username_error_message');
exit();
}
}
//to check for customisation fields
if(get_option('mo_openid_customised_field_enable') == 1 ) {
$set_cust_field = get_option('mo_openid_custom_field_mapping');
if ($set_cust_field) {
foreach ($set_cust_field as $x) {
foreach ($x as $xx => $x_value) {
if (isset($xx)) {
?>
$username,
'user_email' => $user_email,
'user_pass' => $random_password,
'display_name' => $user_full_name,
'first_name' => $first_name,
'last_name' => $last_name,
'user_url' => $user_url,
);
$userdetails = array(
'user_login' => $username,
'user_email' => $user_email,
'user_pass' => $random_password,
'display_name' => $user_full_name,
'first_name' => $first_name,
'last_name' => $last_name,
'user_url' => $user_url,
'user_profile_url' => $user_profile_url,
'user_picture' => $user_picture,
'social_app_name' => $social_app_name,
'social_user_id' => $social_user_id,
'call' => "6"
);
do_action("mo_before_insert_user",$userdetails,"");
$user_id = wp_insert_user( $userdata);
if(is_wp_error( $user_id )) {
print_r($user_id);
wp_die("Error Code 6: ".get_option('mo_registration_error_message'));
}
mo_openid_start_session();
$_SESSION['username'] = $user_name;
$_SESSION['user_email'] = $user_email;
$_SESSION['user_full_name'] = $user_full_name;
$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;
$_SESSION['user_url'] = $user_url;
$_SESSION['user_picture'] = $user_picture;
$_SESSION['social_app_name'] = $social_app_name;
$_SESSION['social_user_id'] = $social_user_id;
$user = get_user_by('id', $user_id );
if(get_option('moopenid_social_login_avatar') && isset($user_picture)){
update_user_meta($user_id, 'moopenid_user_avatar', $user_picture);
}
$_SESSION['mo_login'] = true;
$_SESSION['registered_user'] = '1';
//registration hook
do_action( 'mo_user_register', $user_id, $user_profile_url);
do_action( 'miniorange_collect_attributes_for_authenticated_user', $user, mo_openid_get_redirect_url());
//login hook
do_action( 'wp_login', $user->user_login, $user );
wp_set_auth_cookie( $user_id, true );
}
$redirect_url = mo_openid_get_redirect_url();
wp_redirect($redirect_url);
exit;
}
$redirect_url = mo_openid_get_redirect_url();
wp_redirect($redirect_url);
exit;
}
}