= 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 (c_ws_plugin__s2member_utils_ip::current(), $sp_access_value))
return apply_filters("ws_plugin__s2member_sp_access", $sp_access_value, get_defined_vars (), "auth-via-link-session");
}
}
}
}
// Otherwise, authentication was NOT possible via link or session.
if (!$read_only && /* A Specific Post/Page Access Link? */ !empty($_g["s2member_sp_access"]))
{
status_header (503);
header ("Content-Type: text/html; charset=UTF-8");
while (@ob_end_clean ()); // Clean any existing output buffers.
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 string $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)
{
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);
$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.
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);
}
return apply_filters("ws_plugin__s2member_sp_access_session", $sp_access_values, get_defined_vars ());
}
}
}