public static function login_existing_facebook_user_ajax()
 {
     check_ajax_referer('displet_check_user_nonce');
     if (isset($_POST['action']) && $_POST['action'] == 'displet_user_check_request' && !empty($_POST['email']) && !empty($_POST['token'])) {
         $user_id = DispletRetsIdxUsersModel::get_user_id_by_email($_POST['email']);
         if (!empty($user_id)) {
             $json_array = wp_remote_post('https://graph.facebook.com/oauth/access_token?client_id=' . self::$_options['facebook_app_id'] . '&client_secret=' . self::$_options['facebook_app_secret'] . '&grant_type=client_credentials');
             if (!empty($json_array['body'])) {
                 $response = wp_remote_get('https://graph.facebook.com/debug_token?input_token=' . $_POST['token'] . '&' . $json_array['body']);
                 if (!empty($response['body'])) {
                     $result = json_decode($response['body']);
                     if (!empty($result->data) && !empty($result->data->is_valid) && !empty($result->data->app_id) && $result->data->app_id === self::$_options['facebook_app_id']) {
                         wp_set_auth_cookie($user_id, true);
                         echo 'User Exists and Logged In';
                     }
                 }
             }
         } else {
             echo 'There is no email account associated with this user.';
         }
         die;
     }
     echo 'We\'re sorry, there was an error processing your request. Please try again.';
     die;
 }
 public static function login_register_user()
 {
     if ($_REQUEST['loginGoogle'] == '1') {
         $client = self::get_client();
         session_start();
         $oauth2 = new displetretsidx_Google_Oauth2Service($client);
         if (isset($_GET['code'])) {
             $client->authenticate($_GET['code']);
             $_SESSION['token'] = $client->getAccessToken();
         }
         if (isset($_SESSION['token'])) {
             $client->setAccessToken($_SESSION['token']);
         }
         if ($client->getAccessToken()) {
             $user = $oauth2->userinfo->get();
             // Filtered via PHP sanitize filters
             $email = filter_var($user['email'], FILTER_SANITIZE_EMAIL);
             global $displetretsidx_event_tracking_email;
             $displetretsidx_event_tracking_email = $email;
             $user_id = DispletRetsIdxUsersModel::get_user_id_by_email($email);
             if (!empty($user_id)) {
                 wp_set_auth_cookie($user_id, true);
                 add_action('login_head', array('DispletRetsIdxGoogleLoginController', 'include_login_event_tracking_code'), 999999999999);
             } else {
                 $user_registration_response = DispletRetsIdxLeadsController::create_new_re_search_user(array('email' => $email, 'name' => $user['name'], 'phone' => 'Google', 'url' => $_COOKIE['displet_registration_url'], 'upstream_url' => $_COOKIE['displet_upstream_url'], 'last_hash' => $_COOKIE['displetretsidx_last_viewed_hash']));
                 if (!empty($user_registration_response['success'])) {
                     add_action('login_head', array('DispletRetsIdxGoogleLoginController', 'include_registration_event_tracking_code'), 999999999999);
                 }
             }
         }
     }
 }
 private static function _save_search_registration($args)
 {
     extract(wp_parse_args($args, array('last_hash' => '', 'search_parameters' => array(), 'url' => '', 'upstream_url' => '', 'user_name' => '', 'user_email' => '', 'user_phone' => '')));
     $search_parameters = array_filter($search_parameters, array('DispletRetsIdxUtilities', 'not_empty_excluding_zero'));
     if (!empty($user_email) && !empty($search_parameters)) {
         $response = array();
         $user_id = DispletRetsIdxUsersModel::get_user_id_by_email($user_email);
         if (empty($user_id)) {
             $result = DispletRetsIdxLeadsController::create_new_re_search_user(array('email' => $user_email, 'last_hash' => $last_hash, 'name' => $user_name, 'phone' => $user_phone, 'url' => $url, 'upstream_url' => $upstream_url, 'use_cron' => false));
             if (empty($result['success'])) {
                 return $result;
             }
             $user_id = $result['user_id'];
             $response[] = 'Created User';
         }
         if (!empty($user_id)) {
             $response[] = self::_save_search(array('hash' => DispletRetsIdxResidentialsModel::get_hash_from_search_parameters($search_parameters), 'search_name' => current_time('Y/m/d g:i:s A'), 'user' => get_userdata($user_id)));
             return implode(' & ', $response);
         }
     }
 }
 public static function upgrade_users_to_role_2()
 {
     $leads = DispletRetsIdxLeadsModel::get_users();
     if (!empty($leads)) {
         foreach ($leads as $lead) {
             $name = get_user_meta($lead->ID, 'nickname', true);
             $names = DispletRetsIdxUsersModel::get_first_and_last_name($name);
             if (!empty($names)) {
                 wp_update_user(array('ID' => $lead->ID, 'display_name' => $names['first_name']));
                 update_user_meta($lead->ID, 'first_name', $names['first_name']);
                 update_user_meta($lead->ID, 'last_name', $names['last_name']);
             }
             $api_user_id = get_user_meta($lead->ID, 'displet_api_user_id', true);
             if (empty($api_user_id)) {
                 $api_user_id = DispletRetsIdxUsersApiController::create_user($lead->user_email, $names['first_name'], $names['last_name']);
                 update_user_meta($lead->ID, 'displet_api_user_id', $api_user_id);
             }
             DispletRetsIdxSavedSearchesController::send_users_saved_searches_to_api($lead->ID, $api_user_id);
         }
     }
 }
 public static function create_new_re_search_user($args)
 {
     $args = wp_parse_args($args, array('email' => '', 'name' => '', 'phone' => '', 'realtor' => '', 'url' => '', 'upstream_url' => '', 'last_hash' => '', 'listing_agent_email' => '', 'user_address' => '', 'user_address_time' => '', 'user_registered' => '', 'send_emails' => true, 'login_user' => true, 'use_cron' => true));
     extract($args);
     if (!empty($email)) {
         $password = wp_generate_password(12, false);
         $user_id = wp_insert_user(array('user_login' => $email, 'user_email' => $email, 'user_pass' => $password, 'role' => 'displet_user'));
         if (is_wp_error($user_id)) {
             if (is_multisite() && $user_id->get_error_code() == 'existing_user_login') {
                 $user = get_user_by('email', $email);
                 if (!empty($user)) {
                     $site = get_current_site();
                     $blogs = get_blogs_of_user($user->ID);
                     if (!DispletRetsIdxUtilities::in_array_of_objects($site->id, $blogs, 'userblog_id')) {
                         $success = add_user_to_blog($site->id, $user->ID, 'displet_user');
                         if (!empty($success) && !is_wp_error($success)) {
                             $user_id = $user->ID;
                             $user_info = get_userdata($user_id);
                             if ($login_user) {
                                 wp_set_auth_cookie($user_id);
                             }
                         }
                     }
                 }
             }
             if (is_wp_error($user_id)) {
                 return $user_id->get_error_message();
             }
         } else {
             $user_info = get_userdata($user_id);
             if ($login_user) {
                 $creds = array('user_login' => $user_info->user_login, 'user_password' => $password, 'remember' => true);
                 $user = wp_signon($creds, false);
             }
         }
         $names = DispletRetsIdxUsersModel::get_first_and_last_name($name);
         $update_user_args = array('ID' => $user_id, 'role' => 'displet_user', 'display_name' => ucwords($name));
         if (!empty($user_registered)) {
             $time = strtotime($user_registered);
             if (!empty($time)) {
                 $update_user_args['user_registered'] = get_gmt_from_date(date_i18n('Y-m-d H:i:s', $time));
             }
         }
         wp_update_user($update_user_args);
         $assigned_agent_id = DispletRetsIdxAgentsController::get_new_duty_agent_id($listing_agent_email);
         $assigned_lender_id = DispletRetsIdxLendersController::get_new_duty_lender_id();
         if ($send_emails) {
             DispletRetsIdxEmailController::send_new_user_registration($email, $name, $phone, $realtor, $url, $user_info->user_login, $password, $assigned_agent_id, $assigned_lender_id);
         }
         $user_details = array('assigned_agent_id' => $assigned_agent_id, 'assigned_lender_id' => $assigned_lender_id, 'email' => $email, 'first_name' => $names['first_name'], 'last_hash' => $last_hash, 'last_name' => $names['last_name'], 'name' => $name, 'phone' => $phone, 'realtor' => $realtor, 'upstream_url' => $upstream_url, 'url' => $url, 'user_address' => urldecode($user_address), 'user_address_time' => $user_address_time, 'user_id' => $user_id);
         if ($use_cron) {
             wp_schedule_single_event(time(), 'displetretsidx_new_user_cron_jobs', array($user_details));
         } else {
             DispletRetsIdxLeadsController::new_user_cron_jobs($user_details);
         }
         unset($user_details['user_id']);
         unset($user_details['listing_agent_email']);
         // Specific to RAPB, would confuser users of hook
         unset($user_details['user_address']);
         // Specific to DispletHomeValue themes, avoiding confusion
         unset($user_details['user_address_time']);
         // Specific to DispletHomeValue themes, avoiding confusion
         do_action('displetretsidx_post_registration', $user_id, $user_details);
         return array('success' => true, 'user_id' => $user_id);
     }
 }