= strtotime ("now")) { if (!$read_only && !empty ($_g["s2member_sp_access"])) /* Add to session? */ c_ws_plugin__s2member_sp_access::sp_access_session ($_g["s2member_sp_access"]); /**/ if ($read_only || c_ws_plugin__s2member_ip_restrictions::ip_restrictions_ok ($_SERVER["REMOTE_ADDR"], $sp_access_value)) return apply_filters ("ws_plugin__s2member_sp_access", true, get_defined_vars (), "auth-via-link-session"); } } } } /* Otherwise, authentication was NOT possible via link or session. */ if (!$read_only && /* A Specific Post/Page Link? */ !empty ($_g["s2member_sp_access"])) { status_header (503) . header ("Content-Type: text/html; charset=utf-8"); eval ('while (@ob_end_clean ());'); /* End/clean all output buffers that may exist. */ exit (_x ('Your Link Expired:
Please contact Support if you need assistance.', "s2member-front", "s2member")); } else /* Else return false here. */ return apply_filters ("ws_plugin__s2member_sp_access", false, get_defined_vars (), "no-auth-via-link-session"); } /**/ else /* Else return false here. */ return apply_filters ("ws_plugin__s2member_sp_access", false, get_defined_vars (), "no-auth-no-link-session"); } /** * Handles Specific Post/Page sessions, by writing access values into a cookie. * * Can be used to add a new value to the session, and/or to return the current set of values in the session. * * @package s2Member\SP_Access * @since 3.5 * * @param str $add_sp_access_value Encrypted Specific Post/Page Access value. * @return array Array of Specific Post/Page Access values. */ public static function sp_access_session ($add_sp_access_value = FALSE) { eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action ("ws_plugin__s2member_before_sp_access_session", get_defined_vars ()); unset ($__refs, $__v); /* Unset defined __refs, __v. */ /**/ $sp_access_values = (!empty ($_COOKIE["s2member_sp_access"])) ? preg_split ("/\:\.\:\|\:\.\:/", (string)$_COOKIE["s2member_sp_access"]) : array (); /**/ if ($add_sp_access_value && is_string ($add_sp_access_value) && !in_array /* Not in session? */ ($add_sp_access_value, $sp_access_values)) { $sp_access_values[] = $add_sp_access_value; /* Add an access value, and update the delimited session cookie. */ $sp_access_values = array_unique ($sp_access_values); /* Keep this array unique; disallow double-stacking. */ /**/ $cookie = implode (":.:|:.:", $sp_access_values); /* Implode the access values into a delimited string. */ $cookie = (strlen ($cookie) >= 4096) ? $add_sp_access_value : $cookie; /* Max cookie size is 4kbs. */ /**/ setcookie ("s2member_sp_access", $cookie, time () + 31556926, COOKIEPATH, COOKIE_DOMAIN); setcookie ("s2member_sp_access", $cookie, time () + 31556926, SITECOOKIEPATH, COOKIE_DOMAIN); $_COOKIE["s2member_sp_access"] = $cookie; /* Real-time cookie updates. */ /**/ eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action ("ws_plugin__s2member_during_sp_access_session", get_defined_vars ()); unset ($__refs, $__v); /* Unset defined __refs, __v. */ } /**/ return apply_filters ("ws_plugin__s2member_sp_access_session", $sp_access_values, get_defined_vars ()); } } } ?>