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))); }
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 > 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(); }