/** * Получает div панель */ function get_div_panel($place = 0, $with_label = true, $id = '', $div_only = false) { $ulOptions = self::getOptions(); $default_panel = false; switch ($place) { case 0: $uloginID = $ulOptions['uloginID1']; break; case 1: $uloginID = $ulOptions['uloginID2']; break; case 2: $uloginID = $ulOptions['uloginID3']; if (empty($uloginID)) { $uloginID = $ulOptions['uloginID2']; } break; default: $uloginID = $ulOptions['uloginID1']; break; } if (empty($uloginID)) { if ($ulOptions['label'] != 'Войти с помощью:') { $valid_label = $ulOptions['label']; $ulOptions = self::getOldOptions(); $ulOptions['label'] = $valid_label; } else { $ulOptions = self::getOldOptions(); } $default_panel = true; } $id = 'uLogin' . self::$count . substr(preg_replace('/[^0-9]/', '', md5(wp_generate_password(8))), 0, 7); $panel = $with_label ? '<div class="ulogin_label">' . $ulOptions['label'] . ' </div>' : ''; $currentUrl = ulogin_get_current_page_url(); $str = parse_url($currentUrl, PHP_URL_QUERY); parse_str($str, $output); if (isset($output['redirect_to'])) { $currentUrl = $output['redirect_to']; // Если в запросе к wp-login.php есть адрес "редиректа", то редиректим туда. Верно учитываются запросы вроде "&redirect_to=http://mysite.ru/wp-admin/index.php?page=aktv" } $only_ssl = uLoginPluginSettings::getOptions(); $only_ssl = $only_ssl['only_ssl']; if ($only_ssl) { $scheme = 'https'; } else { //берем протокол текущей страницы и заменяем на него в home_url $scheme = parse_url($currentUrl, PHP_URL_SCHEME); if (empty($scheme)) { $scheme = 'http'; } } $home_url = preg_replace("/^https?/", $scheme, home_url()); $redirect_uri = urlencode($home_url . '/?ulogin=token&backurl=' . urlencode($currentUrl . ($place === 1 ? '#commentform' : ''))); $panel .= '<div id=' . $id . ' class="ulogin_panel"'; if ($default_panel) { $ulOptions['redirect_uri'] = $redirect_uri; unset($ulOptions['label']); $x_ulogin_params = ''; foreach ($ulOptions as $key => $value) { $x_ulogin_params .= $key . '=' . $value . ';'; } if ($ulOptions['display'] != 'window') { $panel .= ' data-ulogin="******"></div>'; } else { $panel .= ' data-ulogin="******" href="#"><img src="https://ulogin.ru/img/button.png" width=187 height=30 alt="МультиВход"/></div>'; } } else { $panel .= ' data-uloginid="' . $uloginID . '" data-ulogin="******"></div>'; } $panel = '<div class="ulogin_block">' . $panel . '<div style="clear:both"></div></div>'; if (!$div_only) { return $this->get_js_str() . $panel . $this->get_custom_init_str($id); } else { return $panel; } }
/** * Регистрация на сайте и в таблице uLogin * @param Array $u_user - данные о пользователе, полученные от uLogin * @param int $in_db - при значении 1 необходимо переписать данные в таблице uLogin * @return bool|int|WP_Error */ function ulogin_registration_user($u_user, $in_db = 0) { global $wpdb; if (!isset($u_user['email'])) { wp_die(__("Через данную форму выполнить вход/регистрацию невозможно. </br>" . "Сообщиете администратору сайта о следующей ошибке: </br></br>" . "Необходимо указать <b>email</b> в возвращаемых полях <b>uLogin</b>"), 'uLogin warning', array('back_link' => true)); return false; } $network = isset($u_user['network']) ? $u_user['network'] : ''; // данные о пользователе есть в ulogin_table, но отсутствуют в WP if ($in_db == 1) { $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->ulogin} where identity = %s", urlencode($u_user['identity']))); } $user_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM {$wpdb->users} where user_email = %s", $u_user['email'])); // $check_m_user == true -> есть пользователь с таким email $check_m_user = $user_id > 0 ? true : false; global $current_user; // $isLoggedIn == true -> ползователь онлайн $isLoggedIn = $current_user->ID > 0 ? true : false; if (!$check_m_user && !$isLoggedIn) { // отсутствует пользователь с таким email в базе WP -> регистрация $user_login = ulogin_generateNickname($u_user['first_name'], $u_user['last_name'], $u_user['nickname'], $u_user['bdate']); $user_pass = wp_generate_password(); $insert_user = array('user_pass' => $user_pass, 'user_login' => $user_login, 'user_email' => $u_user['email'], 'first_name' => $u_user['first_name'], 'last_name' => $u_user['last_name'], 'display_name' => $u_user['first_name'] . ' ' . $u_user['last_name']); $uLoginOptions = uLoginPluginSettings::getOptions(); if ($uLoginOptions['set_url']) { $insert_user['user_url'] = $u_user['profile']; } $user_id = wp_insert_user($insert_user); if (!is_wp_error($user_id) && $user_id > 0 && $uLoginOptions['new_user_notification'] == true) { wp_new_user_notification($user_id, $user_pass); } return ulogin_insert_row($user_id, $u_user['identity'], $network); } else { // существует пользователь с таким email или это текущий пользователь if (!isset($u_user["verified_email"]) || intval($u_user["verified_email"]) != 1) { wp_die('<script src="//ulogin.ru/js/ulogin.js" type="text/javascript"></script><script type="text/javascript">uLogin.mergeAccounts("' . $_POST['token'] . '")</script>' . __("Электронный адрес данного аккаунта совпадает с электронным адресом существующего пользователя. <br>Требуется подтверждение на владение указанным email.</br></br>"), __("Подтверждение аккаунта"), array('back_link' => true)); return false; } if (intval($u_user["verified_email"]) == 1) { $user_id = $isLoggedIn ? $current_user->ID : $user_id; $other_u = $wpdb->get_col($wpdb->prepare("SELECT identity FROM {$wpdb->ulogin} where userid = %d", $user_id)); if ($other_u) { if (!$isLoggedIn && !isset($u_user['merge_account'])) { wp_die('<script src="//ulogin.ru/js/ulogin.js" type="text/javascript"></script><script type="text/javascript">uLogin.mergeAccounts("' . $_POST['token'] . '","' . $other_u[0] . '")</script>' . __("С данным аккаунтом уже связаны данные из другой социальной сети. <br>Требуется привязка новой учётной записи социальной сети к этому аккаунту."), __("Синхронизация аккаунтов"), array('back_link' => true)); return false; } } return ulogin_insert_row($user_id, $u_user['identity'], $network); } } return false; }
/** * Возвращает url аватара пользователя для плагина wp-user-avatar */ function ulogin_get_avatar_wpua($avatar, $id_or_email, $size, $default, $alt) { if ($default != 'wp_user_avatar') { return $avatar; } $soc_avatar = uLoginPluginSettings::getOptions(); $soc_avatar = $soc_avatar['social_avatar']; $user_id = parce_id_or_email($id_or_email); $user_id = $user_id['id']; $default_avatar = get_option('avatar_default'); if ($default == '') { $default = 'gravatar_default'; } if (!in_array($default, array('blank', 'gravatar_default', 'identicon', 'wavatar', 'monsterid', 'retro'))) { $default = 'mm'; } switch ($default_avatar) { case 'mystery': $default_avatar = 'mm'; break; } if ($default != $default_avatar) { return $avatar; } $photo = get_user_meta($user_id, 'ulogin_photo', 1); if ($photo && $soc_avatar) { $avatar = preg_replace('/src=([^\\s]+)/i', 'src="' . $photo . '"', $avatar); $avatar = preg_replace('/srcset=([^\\s]+)/i', 'srcset="' . $photo . '"', $avatar); } return $avatar; }