示例#1
0
 /**
  * Получает 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'] . '&nbsp;</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;
     }
 }
示例#2
0
/**
 * Регистрация на сайте и в таблице 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;
}
示例#3
0
文件: ulogin.php 项目: sanin25/word
/**
 * Возвращает 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;
}