function wsl_watchdog_log_to_database($action_name, $action_args = array(), $user_id = 0, $provider = '')
{
    global $wpdb;
    $sql = "CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}wslwatchdog` ( \n\t\t\t  `id` int(11) NOT NULL AUTO_INCREMENT,\n\t\t\t  `session_id` varchar(50) NOT NULL,\n\t\t\t  `user_id` int(11) NOT NULL,\n\t\t\t  `user_ip` varchar(50) NOT NULL,\n\t\t\t  `url` varchar(450) NOT NULL,\n\t\t\t  `provider` varchar(50) NOT NULL,\n\t\t\t  `action_name` varchar(255) NOT NULL,\n\t\t\t  `action_args` text NOT NULL,\n\t\t\t  `is_connected` int(11) NOT NULL,\n\t\t\t  `created_at` varchar(50) NOT NULL,\n\t\t\t  PRIMARY KEY (`id`) \n\t\t\t)";
    $wpdb->query($sql);
    $wpdb->insert("{$wpdb->prefix}wslwatchdog", array("session_id" => session_id(), "user_id" => $user_id, "user_ip" => $_SERVER['REMOTE_ADDR'], "url" => wsl_get_current_url(), "provider" => $provider, "action_name" => $action_name, "action_args" => json_encode($action_args), "is_connected" => get_current_user_id() ? 1 : 0, "created_at" => microtime(true)));
}
Esempio n. 2
0
 static function get_provider_login_url($provider = "Facebook")
 {
     $provider_id = ucfirst($provider);
     $current_page_url = wsl_get_current_url();
     $authenticate_base_url = site_url('wp-login.php', 'login_post') . (strpos(site_url('wp-login.php', 'login_post'), '?') ? '&' : '?') . "action=wordpress_social_authenticate&mode=login&";
     $authenticate_url = $authenticate_base_url . "provider=" . $provider_id . "&redirect_to=" . urlencode($current_page_url);
 }
/**
* Generate the HTML content of WSL Widget
*
* Note:
*   WSL shortcode arguments are still experimental and might change in future versions.
*
*   [wordpress_social_login
*        auth_mode="login"
*        caption="Connect with"
*        enable_providers="facebook|google"
*        restrict_content="wsl_user_logged_in"
*        assets_base_url="http://example.com/wp-content/uploads/2022/01/"
*   ]
*
*   Overall, WSL widget work with these simple rules :
*      1. Shortcode arguments rule over the defaults
*      2. Filters hooks rule over shortcode arguments
*      3. Bouncer rules over everything
*/
function wsl_render_auth_widget($args = array())
{
    $auth_mode = isset($args['mode']) && $args['mode'] ? $args['mode'] : 'login';
    // validate auth-mode
    if (!in_array($auth_mode, array('login', 'link', 'test'))) {
        return;
    }
    // auth-mode eq 'login' => display wsl widget only for NON logged in users
    // > this is the default mode of wsl widget.
    if ($auth_mode == 'login' && is_user_logged_in()) {
        return;
    }
    // auth-mode eq 'link' => display wsl widget only for LOGGED IN users
    // > this will allows users to manually link other social network accounts to their WordPress account
    if ($auth_mode == 'link' && !is_user_logged_in()) {
        return;
    }
    // auth-mode eq 'test' => display wsl widget only for LOGGED IN users only on dashboard
    // > used in Authentication Playground on WSL admin dashboard
    if ($auth_mode == 'test' && !is_user_logged_in() && !is_admin()) {
        return;
    }
    // Bouncer :: Allow authentication?
    if (get_option('wsl_settings_bouncer_authentication_enabled') == 2) {
        return;
    }
    // HOOKABLE: This action runs just before generating the WSL Widget.
    do_action('wsl_render_auth_widget_start');
    global $WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG;
    ob_start();
    // Icon set. If eq 'none', we show text instead
    $social_icon_set = get_option('wsl_settings_social_icon_set');
    // wpzoom icons set, is shown by default
    if (empty($social_icon_set)) {
        $social_icon_set = "wpzoom/";
    }
    $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . 'assets/img/32x32/' . $social_icon_set . '/';
    $assets_base_url = isset($args['assets_base_url']) && $args['assets_base_url'] ? $args['assets_base_url'] : $assets_base_url;
    // HOOKABLE:
    $assets_base_url = apply_filters('wsl_render_auth_widget_alter_assets_base_url', $assets_base_url);
    // get the current page url, which we will use to redirect the user to,
    // unless Widget::Force redirection is set to 'yes', then this will be ignored and Widget::Redirect URL will be used instead
    $redirect_to = wsl_get_current_url();
    // Use the provided redirect_to if it is given and this is the login page.
    if (in_array($GLOBALS["pagenow"], array("wp-login.php", "wp-register.php")) && !empty($_REQUEST["redirect_to"])) {
        $redirect_to = $_REQUEST["redirect_to"];
    }
    // build the authentication url which will call for wsl_process_login() : action=wordpress_social_authenticate
    $authenticate_base_url = site_url('wp-login.php', 'login_post') . (strpos(site_url('wp-login.php', 'login_post'), '?') ? '&' : '?') . "action=wordpress_social_authenticate&mode=login&";
    // if not in mode login, we overwrite the auth base url
    // > admin auth playground
    if ($auth_mode == 'test') {
        $authenticate_base_url = home_url() . "/?action=wordpress_social_authenticate&mode=test&";
    } elseif ($auth_mode == 'link') {
        $authenticate_base_url = home_url() . "/?action=wordpress_social_authenticate&mode=link&";
    }
    // Connect with caption
    $connect_with_label = _wsl__(get_option('wsl_settings_connect_with_label'), 'wordpress-social-login');
    $connect_with_label = isset($args['caption']) ? $args['caption'] : $connect_with_label;
    // HOOKABLE:
    $connect_with_label = apply_filters('wsl_render_auth_widget_alter_connect_with_label', $connect_with_label);
    ?>

<!--
	wsl_render_auth_widget
	WordPress Social Login <?php 
    echo wsl_get_version();
    ?>
.
	http://wordpress.org/plugins/wordpress-social-login/
-->
<?php 
    // Widget::Custom CSS
    $widget_css = get_option('wsl_settings_authentication_widget_css');
    // HOOKABLE:
    $widget_css = apply_filters('wsl_render_auth_widget_alter_widget_css', $widget_css, $redirect_to);
    // show the custom widget css if not empty
    if (!empty($widget_css)) {
        ?>

<style type="text/css">
<?php 
        echo preg_replace(array('%/\\*(?:(?!\\*/).)*\\*/%s', '/\\s{2,}/', "/\\s*([;{}])[\r\n\t\\s]/", '/\\s*;\\s*/', '/\\s*{\\s*/', '/;?\\s*}\\s*/'), array('', ' ', '$1', ';', '{', '}'), $widget_css);
        ?>
</style>
<?php 
    }
    ?>

<div class="wp-social-login-widget">

	<div class="wp-social-login-connect-with"><?php 
    echo $connect_with_label;
    ?>
</div>

	<div class="wp-social-login-provider-list">
<?php 
    // Widget::Authentication display
    $wsl_settings_use_popup = get_option('wsl_settings_use_popup');
    // if a user is visiting using a mobile device, WSL will fall back to more in page
    $wsl_settings_use_popup = function_exists('wp_is_mobile') ? wp_is_mobile() ? 2 : $wsl_settings_use_popup : $wsl_settings_use_popup;
    $no_idp_used = true;
    // display provider icons
    foreach ($WORDPRESS_SOCIAL_LOGIN_PROVIDERS_CONFIG as $item) {
        $provider_id = isset($item["provider_id"]) ? $item["provider_id"] : '';
        $provider_name = isset($item["provider_name"]) ? $item["provider_name"] : '';
        // provider enabled?
        if (get_option('wsl_settings_' . $provider_id . '_enabled')) {
            // restrict the enabled providers list
            if (isset($args['enable_providers'])) {
                $enable_providers = explode('|', $args['enable_providers']);
                // might add a couple of pico seconds
                if (!in_array(strtolower($provider_id), $enable_providers)) {
                    continue;
                }
            }
            // build authentication url
            $authenticate_url = $authenticate_base_url . "provider=" . $provider_id . "&redirect_to=" . urlencode($redirect_to);
            // http://codex.wordpress.org/Function_Reference/esc_url
            $authenticate_url = esc_url($authenticate_url);
            // in case, Widget::Authentication display is set to 'popup', then we overwrite 'authenticate_url'
            // > /assets/js/connect.js will take care of the rest
            if ($wsl_settings_use_popup == 1 && $auth_mode != 'test') {
                $authenticate_url = "javascript:void(0);";
            }
            // HOOKABLE: allow user to rebuilt the auth url
            $authenticate_url = apply_filters('wsl_render_auth_widget_alter_authenticate_url', $authenticate_url, $provider_id, $auth_mode, $redirect_to, $wsl_settings_use_popup);
            // HOOKABLE: allow use of other icon sets
            $provider_icon_markup = apply_filters('wsl_render_auth_widget_alter_provider_icon_markup', $provider_id, $provider_name, $authenticate_url);
            if ($provider_icon_markup != $provider_id) {
                echo $provider_icon_markup;
            } else {
                ?>

		<a rel="nofollow" href="<?php 
                echo $authenticate_url;
                ?>
" title="<?php 
                echo sprintf(_wsl__("%s", 'wordpress-social-login'), $provider_name);
                ?>
" class="wp-social-login-provider wp-social-login-provider-<?php 
                echo strtolower($provider_id);
                ?>
" data-provider="<?php 
                echo $provider_id;
                ?>
">
			<?php 
                if ($social_icon_set == 'none') {
                    echo apply_filters('wsl_render_auth_widget_alter_provider_name', '' . $provider_name);
                } else {
                    ?>
<img alt="<?php 
                    echo $provider_name;
                    ?>
" title="<?php 
                    echo sprintf(_wsl__("%s", 'wordpress-social-login'), $provider_name);
                    ?>
" src="<?php 
                    echo $assets_base_url . strtolower($provider_id) . '.png';
                    ?>
" /><?php 
                }
                ?>
		</a>
<?php 
            }
            $no_idp_used = false;
        }
    }
    ?>
	<?php 
    // no provider enabled?
    if ($no_idp_used) {
        ?>
		<p style="background-color: #FFFFE0;border:1px solid #E6DB55;padding:5px;">
			<?php 
        _wsl_e('<strong>WordPress Social Login is not configured yet</strong>.<br />Please navigate to <strong>Settings &gt; WP Social Login</strong> to configure this plugin.<br />For more information, refer to the <a rel="nofollow" href="http://miled.github.io/wordpress-social-login">online user guide</a>.', 'wordpress-social-login');
        ?>
.
		</p>
		<style>#wp-social-login-connect-with{display:none;}</style>
<?php 
    }
    ?>

	</div>

	<div class="wp-social-login-widget-clearing"></div>

</div>

<?php 
    // provide popup url for hybridauth callback
    if ($wsl_settings_use_popup == 1) {
        ?>
<input type="hidden" id="wsl_popup_base_url" value="<?php 
        echo esc_url($authenticate_base_url);
        ?>
" />
<input type="hidden" id="wsl_login_form_uri" value="<?php 
        echo esc_url(site_url('wp-login.php', 'login_post'));
        ?>
" />

<?php 
    }
    // HOOKABLE: This action runs just after generating the WSL Widget.
    do_action('wsl_render_auth_widget_end');
    ?>
<!-- wsl_render_auth_widget -->

<?php 
    // Display WSL debugging area bellow the widget.
    // wsl_display_dev_mode_debugging_area(); // ! keep this line commented unless you know what you are doing :)
    return ob_get_clean();
}