/**
  * Handles Pro login redirections.
  *
  * @package optimizeMember\Login_Redirects
  * @since 110720
  *
  * @attaches-to ``add_filter("ws_plugin__optimizemember_login_redirect");``
  *
  * @param bool|str $redirect Expects a boolean value of true|false, or a non-empty string, passed through by the Filter.
  * @param array $vars Expects an array of defined variables, passed in by the Filter.
  * @return bool|str A One-Time-Offer redirection URL, else the original value.
  */
 public static function login_redirect($redirect = FALSE, $vars = FALSE)
 {
     if ($redirect && ($user = $vars["user"]) && ($logins = $vars["logins"])) {
         foreach (preg_split("/[\r\n\t]+/", $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["pro_login_welcome_page_otos"]) as $oto) {
             if (($oto = trim($oto)) && preg_match("/^(?:([0-9]+)\\:)(?:([0-9]+)\\:)?(.+)\$/", $oto, $m)) {
                 list(, $number_of_logins, $level, $url) = $m;
                 /* Assign variables. */
                 if ((int) $number_of_logins === (int) $logins) {
                     /* One-Time-Offer applies? */
                     if (!is_numeric($level) || c_ws_plugin__optimizemember_user_access::user_access_level($user) === (int) $level) {
                         if ($url = c_ws_plugin__optimizemember_login_redirects::fill_login_redirect_rc_vars($url, $user)) {
                             return $redirect = $url;
                         }
                     }
                 }
             }
         }
     }
     /**/
     return $redirect;
     /* Return ``$redirect`` value. */
 }
 /**
  * Parses a Special Login Redirection URL.
  *
  * @package optimizeMember\Login_Redirects
  * @since 3.5
  *
  * @param obj $user Optional. A WP_User object. Defaults to the current User, if logged-in.
  * @param bool $root_returns_false Defaults to false. True if the function should return false when a URL is reduced to the site root.
  * @return str|bool A Special Login Redirection URL with Replacement Codes having been parsed, or false if ``$root_returns_false = true`` and the URL is the site root.
  */
 public static function login_redirection_url($user = FALSE, $root_returns_false = FALSE)
 {
     eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
     do_action("ws_plugin__optimizemember_before_login_redirection_url", get_defined_vars());
     unset($__refs, $__v);
     /* Unset defined __refs, __v. */
     /**/
     $url = $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["login_redirection_override"];
     $url = c_ws_plugin__optimizemember_login_redirects::fill_login_redirect_rc_vars($url, $user, $root_returns_false);
     /**/
     return apply_filters("ws_plugin__optimizemember_login_redirection_url", $url, get_defined_vars());
 }
Beispiel #3
0
 /**
  * Widget display.
  *
  * @package optimizeMember\Widgets
  * @since 1.5
  *
  * @param array $args Optional. An array of basic settings.
  * @param array $instance Optional. An array of options for this instance.
  * @return null
  */
 public function widget($args = FALSE, $instance = FALSE)
 {
     $options = c_ws_plugin__optimizemember_pro_login_widget::configure_options_and_their_defaults((array) $instance);
     /**/
     eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
     do_action("ws_plugin__optimizemember_pro_login_widget_before_display", get_defined_vars(), $this);
     unset($__refs, $__v);
     /* Unset defined __refs, __v. */
     /**/
     echo $args["before_widget"];
     /* OK, here we go into this widget. */
     /**/
     if (is_user_logged_in() && strlen($options["profile_title"]) || !is_user_logged_in() && strlen($options["title"])) {
         echo $args["before_title"] . apply_filters("widget_title", $options[is_user_logged_in() ? "profile_title" : "title"]) . $args["after_title"];
     }
     /**/
     eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
     do_action("ws_plugin__optimizemember_pro_login_widget_during_display_before", get_defined_vars(), $this);
     unset($__refs, $__v);
     /* Unset defined __refs, __v. */
     /**/
     if (!is_user_logged_in()) {
         $links = c_ws_plugin__optimizemember_cache::cached_page_links();
         /**/
         $ops_page = $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["membership_options_page"];
         /**/
         if ($ops_page && is_page($ops_page) && !empty($_GET["_optimizemember_seeking"]["_uri"])) {
             $seeking = trim(base64_decode(trim(stripslashes((string) $_GET["_optimizemember_seeking"]["_uri"]))));
         }
         /**/
         $options["login_redirect"] = $options["login_redirect"] === "%%previous%%" && empty($seeking) && $ops_page && is_page($ops_page) ? "" : $options["login_redirect"];
         $options["login_redirect"] = $options["login_redirect"] === "%%previous%%" && empty($seeking) && is_front_page() ? "" : $options["login_redirect"];
         $options["login_redirect"] = $options["login_redirect"] === "%%previous%%" && !empty($seeking) && $seeking === "/" ? "" : $options["login_redirect"];
         /**/
         $redirect_to = $options["login_redirect"];
         $redirect_to = preg_replace("/%%previous%%/i", !empty($seeking) ? $seeking : $_SERVER["REQUEST_URI"], $redirect_to);
         $redirect_to = preg_replace("/%%home%%/i", home_url("/"), $redirect_to);
         /**/
         echo '<div class="ws-plugin--optimizemember-pro-login-widget">' . "\n";
         /**/
         echo '<form method="post" action="' . esc_url(site_url('wp-login.php', 'login_post')) . '" class="ws-plugin--optimizemember-pro-login-widget-form">' . "\n";
         /**/
         echo '<div class="ws-plugin--optimizemember-pro-login-widget-username">' . "\n";
         echo '<label for="ws-plugin--optimizemember-pro-login-widget-username">' . _x("Username", "s2member-front", "s2member") . ':</label><br />' . "\n";
         echo '<input type="text" name="log" id="ws-plugin--optimizemember-pro-login-widget-username" title="Username" />' . "\n";
         echo '</div>' . "\n";
         /**/
         echo '<div class="ws-plugin--optimizemember-pro-login-widget-password">' . "\n";
         echo '<label for="ws-plugin--optimizemember-pro-login-widget-password">' . _x("Password", "s2member-front", "s2member") . ':</label><br />' . "\n";
         echo '<input type="password" name="pwd" id="ws-plugin--optimizemember-pro-login-widget-password" title="Password" />' . "\n";
         echo '</div>' . "\n";
         /**/
         echo '<div class="ws-plugin--optimizemember-pro-login-widget-lost-password">' . "\n";
         $reg_cookies_ok_url = is_multisite() && c_ws_plugin__optimizemember_utils_conds::is_multisite_farm() && is_main_site() ? c_ws_plugin__optimizemember_utils_urls::wp_signup_url() : c_ws_plugin__optimizemember_utils_urls::wp_register_url();
         echo $options["signup_url"] ? '<a href="' . esc_attr($options["signup_url"] !== "%%automatic%%" ? $options["signup_url"] : (c_ws_plugin__optimizemember_register_access::reg_cookies_ok() ? $reg_cookies_ok_url : $links["membership_options_page"])) . '" tabindex="-1">' . _x("signup now", "s2member-front", "s2member") . '</a> | ' : '';
         echo '<a href="' . esc_attr(wp_lostpassword_url()) . '" tabindex="-1">' . _x("forgot password?", "s2member-front", "s2member") . '</a>' . "\n";
         echo '</div>' . "\n";
         /**/
         echo '<div class="ws-plugin--optimizemember-pro-login-widget-remember-me">' . "\n";
         echo '<label><input type="checkbox" name="rememberme" value="forever" />' . _x("Remember Me", "s2member-front", "s2member") . '</label>' . "\n";
         echo '</div>' . "\n";
         /**/
         echo '<div class="ws-plugin--optimizemember-pro-login-widget-submit">' . "\n";
         echo $redirect_to ? '<input type="hidden" name="redirect_to" value="' . esc_attr($redirect_to) . '" />' . "\n" : '';
         echo '<input type="submit" value="' . esc_attr(_x("Log Me In", "s2member-front", "s2member")) . '" />' . "\n";
         echo '</div>' . "\n";
         /**/
         echo '</form>' . "\n";
         /**/
         echo '<div class="ws-plugin--optimizemember-pro-login-widget-code">' . "\n";
         /**/
         if (is_multisite() && c_ws_plugin__optimizemember_utils_conds::is_multisite_farm() && !is_main_site()) {
             echo do_shortcode(trim($options["logged_out_code"]));
         } else {
             /* Otherwise, it's OK to execute PHP code. */
             echo do_shortcode(c_ws_plugin__optimizemember_utilities::evl(trim($options["logged_out_code"])));
         }
         /**/
         echo '</div>' . "\n";
         /**/
         echo '<div style="clear:both;"></div>' . "\n";
         /**/
         echo '</div>' . "\n";
     } else {
         if (is_user_logged_in() && is_object($user = wp_get_current_user()) && !empty($user->ID) && ($user_id = $user->ID)) {
             $links = c_ws_plugin__optimizemember_cache::cached_page_links();
             /**/
             $ops_page = $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["membership_options_page"];
             $welcome_page = $GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["login_welcome_page"];
             /**/
             $options["logout_redirect"] = $options["logout_redirect"] === "%%previous%%" && $ops_page && is_page($ops_page) ? "" : $options["logout_redirect"];
             $options["logout_redirect"] = $options["logout_redirect"] === "%%previous%%" && $welcome_page && is_page($welcome_page) ? "" : $options["logout_redirect"];
             /**/
             $redirect_to = preg_replace("/%%previous%%/i", $_SERVER["REQUEST_URI"], $redirect_to = $options["logout_redirect"]);
             $redirect_to = preg_replace("/%%home%%/i", home_url("/"), $redirect_to);
             /**/
             echo '<div id="ws-plugin--optimizemember-pro-login-widget" class="ws-plugin--optimizemember-pro-login-widget">' . "\n";
             /**/
             echo '<div class="ws-plugin--optimizemember-pro-login-widget-profile-summary">' . "\n";
             /**/
             echo $options["display_gravatar"] ? ($options["link_gravatar"] ? '<a href="http://www.gravatar.com/" target="_blank">' : '') . get_avatar($user_id, 48) . ($options["link_gravatar"] ? '</a>' : '') . "\n" : '';
             /**/
             echo $options["display_name"] ? '<div class="ws-plugin--optimizemember-pro-login-widget-profile-summary-name">' . esc_html($user->display_name) . '</div>' . "\n" : '';
             /**/
             echo '<div class="ws-plugin--optimizemember-pro-login-widget-profile-summary-code">' . "\n";
             /**/
             if (is_multisite() && c_ws_plugin__optimizemember_utils_conds::is_multisite_farm() && !is_main_site()) {
                 echo do_shortcode(trim($options["logged_in_code"]));
             } else {
                 /* Otherwise, it's OK to execute PHP code. */
                 echo do_shortcode(c_ws_plugin__optimizemember_utilities::evl(trim($options["logged_in_code"])));
             }
             /**/
             echo '</div>' . "\n";
             /**/
             echo $options["my_account_url"] ? '<div class="ws-plugin--optimizemember-pro-login-widget-profile-summary-my-account"><a href="' . esc_attr($options["my_account_url"] !== "%%automatic%%" ? c_ws_plugin__optimizemember_login_redirects::fill_login_redirect_rc_vars($options["my_account_url"]) : (($login_redirection_url = c_ws_plugin__optimizemember_login_redirects::login_redirection_url($user)) ? $login_redirection_url : $links["login_welcome_page"])) . '">' . _x("My Account", "s2member-front", "s2member") . '</a></div>' . "\n" : '';
             echo $options["my_profile_url"] ? '<div class="ws-plugin--optimizemember-pro-login-widget-profile-summary-edit-profile"><a href="' . ($options["my_profile_url"] !== "%%automatic%%" ? esc_attr(c_ws_plugin__optimizemember_login_redirects::fill_login_redirect_rc_vars($options["my_profile_url"])) : esc_attr(site_url("/?optimizemember_profile=1")) . '" onclick="if(!window.open(\'' . c_ws_plugin__optimizemember_utils_strings::esc_js_sq(esc_attr(site_url("/?optimizemember_profile=1"))) . '\',\'_profile\', \'width=600,height=400,left=\'+((screen.width/2)-(600/2))+\',screenX=\'+((screen.width/2)-(600/2))+\',top=\'+((screen.height/2)-(400/2))+\',screenY=\'+((screen.height/2)-(400/2))+\',location=0,menubar=0,toolbar=0,status=0,scrollbars=1,resizable=1\')) alert(\'' . c_ws_plugin__optimizemember_utils_strings::esc_js_sq(_x("Please disable popup blockers and try again!", "s2member-front", "s2member")) . '\'); return false;') . '">' . _x("Edit My Profile", "s2member-front", "s2member") . '</a></div>' . "\n" : '';
             echo '<div class="ws-plugin--optimizemember-pro-login-widget-profile-summary-logout"><a href="' . esc_attr(wp_logout_url($redirect_to)) . '">' . _x("Logout", "s2member-front", "s2member") . '</a></div>' . "\n";
             /**/
             echo '<div style="clear:both;"></div>' . "\n";
             /**/
             echo '</div>' . "\n";
             /**/
             echo '</div>' . "\n";
         }
     }
     /**/
     eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
     do_action("ws_plugin__optimizemember_pro_login_widget_during_display_after", get_defined_vars(), $this);
     unset($__refs, $__v);
     /* Unset defined __refs, __v. */
     /**/
     echo $args["after_widget"];
     /**/
     do_action("ws_plugin__optimizemember_pro_login_widget_after_display", get_defined_vars(), $this);
     /**/
     return;
     /* Return for uniformity. */
 }