Version Description
Download this release
Release Info
Developer | PriMoThemes |
Plugin | ![]() |
Version | 111002 |
Comparing to | |
See all releases |
Code changes from version 110927 to 111002
- includes/.htaccess +1 -0
- includes/classes/catgs-sp.inc.php +32 -28
- includes/classes/catgs.inc.php +28 -38
- includes/classes/files.inc.php +7 -7
- includes/classes/menu-pages.inc.php +1 -1
- includes/classes/no-cache.inc.php +13 -12
- includes/classes/pages-sp.inc.php +49 -43
- includes/classes/pages.inc.php +48 -69
- includes/classes/posts-sp.inc.php +51 -45
- includes/classes/posts.inc.php +47 -70
- includes/classes/profile-in.inc.php +1 -1
- includes/classes/ptags-sp.inc.php +37 -37
- includes/classes/ptags.inc.php +22 -29
- includes/classes/querys.inc.php +17 -17
- includes/classes/register-access.inc.php +5 -8
- includes/classes/ruris-sp.inc.php +19 -15
- includes/classes/ruris.inc.php +17 -18
- includes/classes/security.inc.php +30 -46
- includes/classes/sp-access.inc.php +7 -10
- includes/classes/ssl-in.inc.php +54 -64
- includes/classes/ssl.inc.php +13 -15
- includes/classes/systematics-sp.inc.php +42 -20
- includes/classes/systematics.inc.php +48 -13
- includes/classes/utils-conds.inc.php +11 -8
- includes/classes/utils-s2o.inc.php +80 -59
- includes/classes/utils-urls.inc.php +98 -57
- includes/functions/api-functions.inc.php +4 -4
- includes/hooks.inc.php +7 -8
- includes/jquery/.htaccess +1 -0
- includes/menu-pages/code-samples/{api-mop-vars.php → api-mop-vars.x-php} +0 -0
- includes/menu-pages/code-samples/{ccap-file-downloads.php → ccap-file-downloads.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-access-label.php → current-user-access-label.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-access-level-conditional-upgrades.php → current-user-access-level-conditional-upgrades.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-access-level.php → current-user-access-level.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-can-ccaps-1.php → current-user-can-ccaps-1.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-can-ccaps-2.php → current-user-can-ccaps-2.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-can-constants-1.php → current-user-can-constants-1.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-can-constants-2.php → current-user-can-constants-2.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-can-full-access.php → current-user-can-full-access.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-custom.php → current-user-custom.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-display-name.php → current-user-display-name.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-downloads-allowed-days.php → current-user-downloads-allowed-days.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-downloads-allowed-is-unlimited.php → current-user-downloads-allowed-is-unlimited.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-downloads-allowed.php → current-user-downloads-allowed.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-downloads-currently.php → current-user-downloads-currently.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-email.php → current-user-email.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-fields.php → current-user-fields.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-first-name.php → current-user-first-name.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-id.php → current-user-id.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-ip.php → current-user-ip.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-is-logged-in-as-member.php → current-user-is-logged-in-as-member.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-is-logged-in.php → current-user-is-logged-in.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-is-specific-content.php → current-user-is-specific-content.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-last-name.php → current-user-last-name.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-login-counter.php → current-user-login-counter.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-login.php → current-user-login.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-paid-registration-days-dripping.php → current-user-paid-registration-days-dripping.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-paid-registration-days.php → current-user-paid-registration-days.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-paid-registration-time.php → current-user-paid-registration-time.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-profile-modification-page-url-1-ops.php → current-user-profile-modification-page-url-1-ops.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-profile-modification-page-url-1.php → current-user-profile-modification-page-url-1.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-profile-modification-page-url-2-ops.php → current-user-profile-modification-page-url-2-ops.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-profile-modification-page-url-2.php → current-user-profile-modification-page-url-2.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-profile-modification-page-url-3-ops.php → current-user-profile-modification-page-url-3-ops.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-profile-modification-page-url-3.php → current-user-profile-modification-page-url-3.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-registration-days.php → current-user-registration-days.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-registration-ip.php → current-user-registration-ip.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-registration-time.php → current-user-registration-time.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-subscr-gateway.php → current-user-subscr-gateway.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-subscr-id.php → current-user-subscr-id.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-subscr-or-wp-id.php → current-user-subscr-or-wp-id.x-php} +0 -0
- includes/menu-pages/code-samples/{current-user-value-for-pp-on0-os0-on1-os1.php → current-user-value-for-pp-on0-os0-on1-os1.x-php} +0 -0
- includes/menu-pages/code-samples/{custom-queries-loop.php → custom-queries-loop.x-php} +0 -0
- includes/menu-pages/code-samples/{custom-queries.php → custom-queries.x-php} +0 -0
- includes/menu-pages/code-samples/{file-download-inline-extensions.php → file-download-inline-extensions.x-php} +0 -0
- includes/menu-pages/code-samples/{file-download-limit-exceeded-page-url.php → file-download-limit-exceeded-page-url.x-php} +0 -0
- includes/menu-pages/code-samples/{idev-ccap-tracking-code.php → idev-ccap-tracking-code.x-php} +0 -0
- includes/menu-pages/code-samples/{idev-modification-tracking-code.php → idev-modification-tracking-code.x-php} +0 -0
- includes/menu-pages/code-samples/{idev-signup-tracking-code.php → idev-signup-tracking-code.x-php} +0 -0
- includes/menu-pages/code-samples/{idev-sp-tracking-code.php → idev-sp-tracking-code.x-php} +0 -0
- includes/menu-pages/code-samples/{is-user-logged-in.php → is-user-logged-in.x-php} +0 -0
- includes/menu-pages/code-samples/{jwplayer-standard-mp4.php → jwplayer-standard-mp4.x-php} +0 -0
- includes/menu-pages/code-samples/{jwplayer-streaming-mp4-sca.php → jwplayer-streaming-mp4-sca.x-php} +0 -0
- includes/menu-pages/code-samples/{jwplayer-streaming-mp4-webm.php → jwplayer-streaming-mp4-webm.x-php} +0 -0
- includes/menu-pages/code-samples/{jwplayer-streaming-mp4.php → jwplayer-streaming-mp4.x-php} +0 -0
- includes/menu-pages/code-samples/{level-file-downloads.php → level-file-downloads.x-php} +0 -0
- includes/menu-pages/code-samples/{leveln-file-downloads-allowed-days.php → leveln-file-downloads-allowed-days.x-php} +0 -0
- includes/menu-pages/code-samples/{leveln-file-downloads-allowed.php → leveln-file-downloads-allowed.x-php} +0 -0
- includes/menu-pages/code-samples/{leveln-label.php → leveln-label.x-php} +0 -0
- includes/menu-pages/code-samples/{login-page-url.php → login-page-url.x-php} +0 -0
- includes/menu-pages/code-samples/{login-welcome-page-url.php → login-welcome-page-url.x-php} +0 -0
- includes/menu-pages/code-samples/{logout-page-url.php → logout-page-url.x-php} +0 -0
- includes/menu-pages/code-samples/{membership-options-page-url.php → membership-options-page-url.x-php} +0 -0
- includes/menu-pages/code-samples/{mms-patch-load.php → mms-patch-load.x-php} +0 -0
- includes/menu-pages/code-samples/{mms-patch-ms-functions.php → mms-patch-ms-functions.x-php} +0 -0
- includes/menu-pages/code-samples/{mms-patch-user-new.php → mms-patch-user-new.x-php} +0 -0
- includes/menu-pages/code-samples/{mms-patch-wp-login.php → mms-patch-wp-login.x-php} +0 -0
- includes/menu-pages/code-samples/{paypal-api-endpoint.php → paypal-api-endpoint.x-php} +0 -0
- includes/menu-pages/code-samples/{paypal-api-password.php → paypal-api-password.x-php} +0 -0
- includes/menu-pages/code-samples/{paypal-api-signature.php → paypal-api-signature.x-php} +0 -0
- includes/menu-pages/code-samples/{paypal-api-username.php → paypal-api-username.x-php} +0 -0
- includes/menu-pages/code-samples/{paypal-business.php → paypal-business.x-php} +0 -0
- includes/menu-pages/code-samples/{paypal-endpoint.php → paypal-endpoint.x-php} +0 -0
- includes/menu-pages/code-samples/{paypal-notify-url.php → paypal-notify-url.x-php} +0 -0
- includes/menu-pages/code-samples/{paypal-pdt-identity-token.php → paypal-pdt-identity-token.x-php} +0 -0
- includes/menu-pages/code-samples/{paypal-return-url.php → paypal-return-url.x-php} +0 -0
- includes/menu-pages/code-samples/{reg-email-from-email.php → reg-email-from-email.x-php} +0 -0
- includes/menu-pages/code-samples/{reg-email-from-name.php → reg-email-from-name.x-php} +0 -0
- includes/menu-pages/code-samples/{s2-conditional-supplements-1.php → s2-conditional-supplements-1.x-php} +0 -0
- includes/menu-pages/code-samples/{s2-conditional-supplements-2.php → s2-conditional-supplements-2.x-php} +0 -0
- includes/menu-pages/code-samples/{s2-conditional-supplements-3.php → s2-conditional-supplements-3.x-php} +0 -0
- includes/menu-pages/code-samples/{s2member-paid-registration-time-examples.php → s2member-paid-registration-time-examples.x-php} +0 -0
- includes/menu-pages/code-samples/{s2member-paid-registration-time.php → s2member-paid-registration-time.x-php} +0 -0
- includes/menu-pages/code-samples/{sas-ccap-tracking-code.php → sas-ccap-tracking-code.x-php} +0 -0
- includes/menu-pages/code-samples/{sas-modification-tracking-code.php → sas-modification-tracking-code.x-php} +0 -0
- includes/menu-pages/code-samples/{sas-signup-tracking-code.php → sas-signup-tracking-code.x-php} +0 -0
- includes/menu-pages/code-samples/{sas-sp-tracking-code.php → sas-sp-tracking-code.x-php} +0 -0
- includes/menu-pages/code-samples/{sc-current-user-can-full-access-farm.php → sc-current-user-can-full-access-farm.x-php} +0 -0
- includes/menu-pages/code-samples/{sc-current-user-can-full-access.php → sc-current-user-can-full-access.x-php} +0 -0
- includes/menu-pages/code-samples/{sc-current-user-is-specific-content-farm.php → sc-current-user-is-specific-content-farm.x-php} +0 -0
- includes/menu-pages/code-samples/{sc-current-user-is-specific-content.php → sc-current-user-is-specific-content.x-php} +0 -0
- includes/menu-pages/code-samples/{sc-is-user-logged-in-farm.php → sc-is-user-logged-in-farm.x-php} +0 -0
- includes/menu-pages/code-samples/{sc-is-user-logged-in.php → sc-is-user-logged-in.x-php} +0 -0
- includes/menu-pages/code-samples/{sc-s2-conditional-nesting.php → sc-s2-conditional-nesting.x-php} +0 -0
- includes/menu-pages/code-samples/{sc-s2-conditional-supplements-1-farm.php → sc-s2-conditional-supplements-1-farm.x-php} +0 -0
- includes/menu-pages/code-samples/{sc-s2-conditional-supplements-1.php → sc-s2-conditional-supplements-1.x-php} +0 -0
- includes/menu-pages/code-samples/{sc-s2-conditional-supplements-2-farm.php → sc-s2-conditional-supplements-2-farm.x-php} +0 -0
- includes/menu-pages/code-samples/{sc-s2-conditional-supplements-2.php → sc-s2-conditional-supplements-2.x-php} +0 -0
- includes/menu-pages/code-samples/{sc-s2-conditional-supplements-3-farm.php → sc-s2-conditional-supplements-3-farm.x-php} +0 -0
- includes/menu-pages/code-samples/{sc-s2-conditional-supplements-3.php → sc-s2-conditional-supplements-3.x-php} +0 -0
- includes/menu-pages/code-samples/{specific-category-restrictions.php → specific-category-restrictions.x-php} +0 -0
- includes/menu-pages/code-samples/{specific-page-restrictions.php → specific-page-restrictions.x-php} +0 -0
- includes/menu-pages/code-samples/{specific-post-restrictions.php → specific-post-restrictions.x-php} +0 -0
- includes/menu-pages/code-samples/{specific-tag-restrictions.php → specific-tag-restrictions.x-php} +0 -0
- includes/menu-pages/code-samples/{version.php → version.x-php} +0 -0
- includes/menu-pages/down-ops.inc.php +4 -4
- includes/menu-pages/gen-ops.inc.php +51 -10
- includes/menu-pages/mms-ops.inc.php +4 -4
- includes/menu-pages/paypal-ops.inc.php +4 -4
- includes/menu-pages/scripting.inc.php +90 -90
- includes/menu-pages/trk-ops.inc.php +8 -8
- includes/syscon.inc.php +36 -26
- includes/templates/cfg-files/s2o-mu-plugins.php +9 -0
- includes/templates/cfg-files/s2o-nw-plugins.php +21 -0
- includes/templates/cfg-files/s2o-st-plugins.php +21 -0
- includes/templates/cfg-files/s2o-th-funcs.php +6 -0
- readme.txt +11 -4
- s2member-o.php +6 -6
- s2member.php +4 -4
includes/.htaccess
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
deny from all
|
includes/classes/catgs-sp.inc.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
-
exit
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_catgs_sp"))
|
21 |
{
|
@@ -43,41 +43,45 @@ if (!class_exists ("c_ws_plugin__s2member_catgs_sp"))
|
|
43 |
/**/
|
44 |
$excluded = apply_filters ("ws_plugin__s2member_check_specific_catg_level_access_excluded", false, get_defined_vars ());
|
45 |
/**/
|
46 |
-
if (!$excluded && $cat_id && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
47 |
{
|
48 |
-
$cat_uri = c_ws_plugin__s2member_utils_urls::parse_uri (get_category_link ($cat_id));
|
49 |
/**/
|
50 |
-
|
51 |
-
/**/
|
52 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $cat_uri) && (!$check_user || !$user || !current_user_can ("access_s2member_level0")))
|
53 |
-
return apply_filters ("ws_plugin__s2member_check_specific_catg_level_access", array ("s2member_level_req" => 0), get_defined_vars ());
|
54 |
-
/**/
|
55 |
-
else if (!c_ws_plugin__s2member_systematics_sp::is_systematic_use_specific_page (null, $cat_uri)) /* Never restrict Systematics. However, there is 1 exception ^. */
|
56 |
{
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
/**/
|
62 |
-
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"] && in_array ($cat_id, ($catgs = preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"]))) && (!$check_user || !$user || !current_user_can ("access_s2member_level" . $n)))
|
63 |
-
return apply_filters ("ws_plugin__s2member_check_specific_catg_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
64 |
-
/**/
|
65 |
-
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"]) /* Check Category ancestry. */
|
66 |
-
foreach (preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"]) as $catg)
|
67 |
-
if ($catg && cat_is_ancestor_of ($catg, $cat_id) && (!$check_user || !$user || !current_user_can ("access_s2member_level" . $n)))
|
68 |
-
return apply_filters ("ws_plugin__s2member_check_specific_catg_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
69 |
-
}
|
70 |
/**/
|
71 |
-
|
72 |
{
|
73 |
-
|
74 |
-
|
75 |
-
if ($
|
|
|
|
|
|
|
76 |
return apply_filters ("ws_plugin__s2member_check_specific_catg_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
}
|
|
|
|
|
78 |
}
|
79 |
-
/**/
|
80 |
-
do_action ("ws_plugin__s2member_during_check_specific_catg_level_access", get_defined_vars ());
|
81 |
}
|
82 |
/**/
|
83 |
return apply_filters ("ws_plugin__s2member_check_specific_catg_level_access", null, get_defined_vars ());
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
+
exit("Do not access this file directly.");
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_catgs_sp"))
|
21 |
{
|
43 |
/**/
|
44 |
$excluded = apply_filters ("ws_plugin__s2member_check_specific_catg_level_access_excluded", false, get_defined_vars ());
|
45 |
/**/
|
46 |
+
if (!$excluded && is_numeric ($cat_id) && ($cat_id = (int)$cat_id) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
47 |
{
|
48 |
+
$cat_uri = c_ws_plugin__s2member_utils_urls::parse_uri (get_category_link ($cat_id)); /* Get a full valid URI for this Category. */
|
49 |
/**/
|
50 |
+
if (!c_ws_plugin__s2member_systematics_sp::is_wp_systematic_use_specific_page (null, $cat_uri)) /* Do NOT touch WordPress® Systematics. */
|
|
|
|
|
|
|
|
|
|
|
51 |
{
|
52 |
+
$user = (is_user_logged_in () && is_object ($user = wp_get_current_user ()) && !empty ($user->ID)) ? $user : false; /* Current User's object. */
|
53 |
+
/**/
|
54 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $cat_uri) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level0")))
|
55 |
+
return apply_filters ("ws_plugin__s2member_check_specific_catg_level_access", array ("s2member_level_req" => 0), get_defined_vars ());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
/**/
|
57 |
+
else if (!c_ws_plugin__s2member_systematics_sp::is_systematic_use_specific_page (null, $cat_uri)) /* Never restrict Systematics. However, there is 1 exception ^. */
|
58 |
{
|
59 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Category Level restrictions. Go through each Level. We also check nested Categories. */
|
60 |
+
{
|
61 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"] === "all" && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
62 |
+
return apply_filters ("ws_plugin__s2member_check_specific_catg_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
63 |
+
/**/
|
64 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"] && in_array ($cat_id, ($catgs = preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"]))) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
65 |
return apply_filters ("ws_plugin__s2member_check_specific_catg_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
66 |
+
/**/
|
67 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"]) /* Check Category ancestry. */
|
68 |
+
foreach (preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"]) as $catg)
|
69 |
+
if ($catg && cat_is_ancestor_of ($catg, $cat_id) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
70 |
+
return apply_filters ("ws_plugin__s2member_check_specific_catg_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
71 |
+
}
|
72 |
+
/**/
|
73 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* URIs. Go through each Level. */
|
74 |
+
{
|
75 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"]) /* URIs configured at this Level? */
|
76 |
+
/**/
|
77 |
+
foreach (preg_split ("/[\r\n\t]+/", c_ws_plugin__s2member_ruris::fill_ruri_level_access_rc_vars ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"], $user)) as $str)
|
78 |
+
if ($str && preg_match ("/" . preg_quote ($str, "/") . "/", $cat_uri) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
79 |
+
return apply_filters ("ws_plugin__s2member_check_specific_catg_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
80 |
+
}
|
81 |
}
|
82 |
+
/**/
|
83 |
+
do_action ("ws_plugin__s2member_during_check_specific_catg_level_access", get_defined_vars ());
|
84 |
}
|
|
|
|
|
85 |
}
|
86 |
/**/
|
87 |
return apply_filters ("ws_plugin__s2member_check_specific_catg_level_access", null, get_defined_vars ());
|
includes/classes/catgs.inc.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
-
exit
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_catgs"))
|
21 |
{
|
@@ -37,59 +37,49 @@ if (!class_exists ("c_ws_plugin__s2member_catgs"))
|
|
37 |
*/
|
38 |
public static function check_catg_level_access ()
|
39 |
{
|
40 |
-
global $post; /* get_the_ID() is NOT available outside The Loop. */
|
41 |
/**/
|
42 |
do_action ("ws_plugin__s2member_before_check_catg_level_access", get_defined_vars ());
|
43 |
/**/
|
44 |
$excluded = apply_filters ("ws_plugin__s2member_check_catg_level_access_excluded", false, get_defined_vars ());
|
45 |
/**/
|
46 |
-
if (!$excluded && is_category () && ($cat_id = get_query_var ("cat")) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
47 |
{
|
48 |
-
|
49 |
-
/**/
|
50 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) !== "nill" && (!$user || !current_user_can ("access_s2member_level0")))
|
51 |
{
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
{
|
59 |
-
|
60 |
{
|
61 |
-
|
62 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
}
|
64 |
/**/
|
65 |
-
|
66 |
{
|
67 |
-
|
68 |
-
|
|
|
|
|
|
|
69 |
}
|
70 |
-
/**/
|
71 |
-
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"]) /* Check Category ancestry. */
|
72 |
-
foreach (preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"]) as $catg)
|
73 |
-
if ($catg && cat_is_ancestor_of ($catg, $cat_id) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) !== "nill" && (!$user || !current_user_can ("access_s2member_level" . $n)))
|
74 |
-
{
|
75 |
-
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "catg-" . $cat_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ()));
|
76 |
-
exit ();
|
77 |
-
}
|
78 |
}
|
79 |
/**/
|
80 |
-
|
81 |
-
{
|
82 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"])
|
83 |
-
foreach (preg_split ("/[\r\n\t]+/", c_ws_plugin__s2member_ruris::fill_ruri_level_access_rc_vars ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"], $user)) as $str)
|
84 |
-
if ($str && preg_match ("/" . preg_quote ($str, "/") . "/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) !== "nill" && (!$user || !current_user_can ("access_s2member_level" . $n)))
|
85 |
-
{
|
86 |
-
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "catg-" . $cat_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ()));
|
87 |
-
exit ();
|
88 |
-
}
|
89 |
-
}
|
90 |
}
|
91 |
-
/**/
|
92 |
-
do_action ("ws_plugin__s2member_during_check_catg_level_access", get_defined_vars ());
|
93 |
}
|
94 |
/**/
|
95 |
do_action ("ws_plugin__s2member_after_check_catg_level_access", get_defined_vars ());
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
+
exit("Do not access this file directly.");
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_catgs"))
|
21 |
{
|
37 |
*/
|
38 |
public static function check_catg_level_access ()
|
39 |
{
|
40 |
+
global $post; /* ``get_the_ID()`` is NOT available outside The Loop. */
|
41 |
/**/
|
42 |
do_action ("ws_plugin__s2member_before_check_catg_level_access", get_defined_vars ());
|
43 |
/**/
|
44 |
$excluded = apply_filters ("ws_plugin__s2member_check_catg_level_access_excluded", false, get_defined_vars ());
|
45 |
/**/
|
46 |
+
if (!$excluded && is_category () && ($cat_id = get_query_var ("cat")) && ($cat_id = (int)$cat_id) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
47 |
{
|
48 |
+
if (!c_ws_plugin__s2member_systematics::is_wp_systematic_use_page ()) /* Do NOT touch WordPress® Systematics. This excludes all WordPress® Systematics. */
|
|
|
|
|
49 |
{
|
50 |
+
$user = (is_user_logged_in () && is_object ($user = wp_get_current_user ()) && !empty ($user->ID)) ? $user : false; /* Current User's object. */
|
51 |
+
/**/
|
52 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level0")))
|
53 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "catg-" . $cat_id, "s2member_level_req" => "0")), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
54 |
+
/**/
|
55 |
+
else if (!c_ws_plugin__s2member_systematics::is_systematic_use_page ()) /* Do NOT protect Systematics. However, there is 1 exception above. */
|
56 |
{
|
57 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Category Level restrictions. Go through each Level. We also check nested Categories. */
|
58 |
{
|
59 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"] === "all" && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
60 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "catg-" . $cat_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
61 |
+
/**/
|
62 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"] && in_array ($cat_id, ($catgs = preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"]))) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
63 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "catg-" . $cat_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
64 |
+
/**/
|
65 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"]) /* Check Category ancestry. */
|
66 |
+
foreach (preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"]) as $catg)
|
67 |
+
if ($catg && cat_is_ancestor_of ($catg, $cat_id) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
68 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "catg-" . $cat_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
69 |
}
|
70 |
/**/
|
71 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* URIs. Go through each Level. */
|
72 |
{
|
73 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"]) /* URIs configured at this Level? */
|
74 |
+
/**/
|
75 |
+
foreach (preg_split ("/[\r\n\t]+/", c_ws_plugin__s2member_ruris::fill_ruri_level_access_rc_vars ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"], $user)) as $str)
|
76 |
+
if ($str && preg_match ("/" . preg_quote ($str, "/") . "/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
77 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "catg-" . $cat_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
78 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
}
|
80 |
/**/
|
81 |
+
do_action ("ws_plugin__s2member_during_check_catg_level_access", get_defined_vars ());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
}
|
|
|
|
|
83 |
}
|
84 |
/**/
|
85 |
do_action ("ws_plugin__s2member_after_check_catg_level_access", get_defined_vars ());
|
includes/classes/files.inc.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
-
exit("Do not access this file directly.");
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_files"))
|
21 |
{
|
@@ -147,7 +147,7 @@ if (!class_exists ("c_ws_plugin__s2member_files"))
|
|
147 |
*/
|
148 |
public static function user_downloads ($user = FALSE, $not_counting_this_particular_file = FALSE, $log = NULL)
|
149 |
{
|
150 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
151 |
do_action ("ws_plugin__s2member_before_user_downloads", get_defined_vars ());
|
152 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
153 |
/**/
|
@@ -196,25 +196,25 @@ if (!class_exists ("c_ws_plugin__s2member_files"))
|
|
196 |
*/
|
197 |
public static function file_download_key ($file = FALSE, $directive = FALSE)
|
198 |
{
|
199 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
200 |
do_action ("ws_plugin__s2member_before_file_download_key", get_defined_vars ());
|
201 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
202 |
/**/
|
203 |
$file = ($file && is_string ($file) && ($file = trim ($file, "/"))) ? $file : "";
|
204 |
/**/
|
205 |
if ($directive === "ip-forever") /* Allows the current IP forever. */
|
206 |
-
eval('$allow_caching = false; $salt = $file . $_SERVER["REMOTE_ADDR"];');
|
207 |
/**/
|
208 |
else if ($directive === "universal" || $directive === "cache-compatible" || $directive)
|
209 |
-
eval('$allow_caching = true; $salt = $file;');
|
210 |
/**/
|
211 |
else /* Otherwise, we use the default ``$salt``, which is VERY restrictive; even to a specific browser. */
|
212 |
-
eval('$allow_caching = false; $salt = date ("Y-m-d") . $_SERVER["REMOTE_ADDR"] . $_SERVER["HTTP_USER_AGENT"] . $file;');
|
213 |
/**/
|
214 |
$key = md5 (c_ws_plugin__s2member_utils_encryption::xencrypt ($salt));
|
215 |
/**/
|
216 |
if ($allow_caching === false) /* Disallow caching? */
|
217 |
-
c_ws_plugin__s2member_no_cache::no_cache_constants (true);
|
218 |
/**/
|
219 |
return apply_filters ("ws_plugin__s2member_file_download_key", $key, get_defined_vars ());
|
220 |
}
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
+
exit ("Do not access this file directly.");
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_files"))
|
21 |
{
|
147 |
*/
|
148 |
public static function user_downloads ($user = FALSE, $not_counting_this_particular_file = FALSE, $log = NULL)
|
149 |
{
|
150 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
151 |
do_action ("ws_plugin__s2member_before_user_downloads", get_defined_vars ());
|
152 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
153 |
/**/
|
196 |
*/
|
197 |
public static function file_download_key ($file = FALSE, $directive = FALSE)
|
198 |
{
|
199 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
200 |
do_action ("ws_plugin__s2member_before_file_download_key", get_defined_vars ());
|
201 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
202 |
/**/
|
203 |
$file = ($file && is_string ($file) && ($file = trim ($file, "/"))) ? $file : "";
|
204 |
/**/
|
205 |
if ($directive === "ip-forever") /* Allows the current IP forever. */
|
206 |
+
eval ('$allow_caching = false; $salt = $file . $_SERVER["REMOTE_ADDR"];');
|
207 |
/**/
|
208 |
else if ($directive === "universal" || $directive === "cache-compatible" || $directive)
|
209 |
+
eval ('$allow_caching = true; $salt = $file;');
|
210 |
/**/
|
211 |
else /* Otherwise, we use the default ``$salt``, which is VERY restrictive; even to a specific browser. */
|
212 |
+
eval ('$allow_caching = false; $salt = date ("Y-m-d") . $_SERVER["REMOTE_ADDR"] . $_SERVER["HTTP_USER_AGENT"] . $file;');
|
213 |
/**/
|
214 |
$key = md5 (c_ws_plugin__s2member_utils_encryption::xencrypt ($salt));
|
215 |
/**/
|
216 |
if ($allow_caching === false) /* Disallow caching? */
|
217 |
+
c_ws_plugin__s2member_no_cache::no_cache_constants (true); /* No caching. */
|
218 |
/**/
|
219 |
return apply_filters ("ws_plugin__s2member_file_download_key", $key, get_defined_vars ());
|
220 |
}
|
includes/classes/menu-pages.inc.php
CHANGED
@@ -265,7 +265,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_pages"))
|
|
265 |
do_action ("_ws_plugin__s2member_before_add_settings_link", get_defined_vars ());
|
266 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
267 |
/**/
|
268 |
-
if ($plugin_file ===
|
269 |
{
|
270 |
$settings = '<a href="' . esc_attr (admin_url ("/admin.php?page=ws-plugin--s2member-gen-ops")) . '">Settings</a>';
|
271 |
array_unshift ($actions, apply_filters ("ws_plugin__s2member_add_settings_link", $settings, get_defined_vars ()));
|
265 |
do_action ("_ws_plugin__s2member_before_add_settings_link", get_defined_vars ());
|
266 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
267 |
/**/
|
268 |
+
if ($plugin_file === $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["plugin_basename"] && is_array ($actions))
|
269 |
{
|
270 |
$settings = '<a href="' . esc_attr (admin_url ("/admin.php?page=ws-plugin--s2member-gen-ops")) . '">Settings</a>';
|
271 |
array_unshift ($actions, apply_filters ("ws_plugin__s2member_add_settings_link", $settings, get_defined_vars ()));
|
includes/classes/no-cache.inc.php
CHANGED
@@ -71,7 +71,7 @@ if (!class_exists ("c_ws_plugin__s2member_no_cache"))
|
|
71 |
* @since 3.5
|
72 |
*
|
73 |
* @param bool $no_cache Optional. Defaults to false. If true, force no-cache headers if at all possible.
|
74 |
-
* @return
|
75 |
*
|
76 |
* @see s2Member\URIs\c_ws_plugin__s2member_ruris::check_ruri_level_access()
|
77 |
* @see s2Member\Categories\c_ws_plugin__s2member_catgs::check_catg_level_access()
|
@@ -122,7 +122,7 @@ if (!class_exists ("c_ws_plugin__s2member_no_cache"))
|
|
122 |
/**/
|
123 |
do_action ("ws_plugin__s2member_after_no_cache_constants", get_defined_vars ());
|
124 |
/**/
|
125 |
-
return; /*
|
126 |
}
|
127 |
/**
|
128 |
* Sends Cache-Control ( no-cache ) headers.
|
@@ -134,7 +134,7 @@ if (!class_exists ("c_ws_plugin__s2member_no_cache"))
|
|
134 |
* @package s2Member\No_Cache
|
135 |
* @since 3.5
|
136 |
*
|
137 |
-
* @return
|
138 |
*/
|
139 |
public static function no_cache_headers ()
|
140 |
{
|
@@ -145,26 +145,27 @@ if (!class_exists ("c_ws_plugin__s2member_no_cache"))
|
|
145 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
146 |
/**/
|
147 |
$using_selective_behavior = apply_filters ("ws_plugin__s2member_no_cache_headers_selective", false, get_defined_vars ());
|
148 |
-
$selective = @$GLOBALS["ws_plugin__s2member_no_cache_headers_selective"]; /* Selective ( i.e. required )
|
149 |
/**/
|
150 |
if (!$once && empty ($_GET["qcABC"]) && (!$using_selective_behavior || $selective) && !apply_filters ("ws_plugin__s2member_disable_no_cache_headers", false, get_defined_vars ()))
|
151 |
{
|
152 |
-
if
|
153 |
-
foreach ($headers as $header) /* Already? */
|
154 |
-
if (stripos ($header, "no-cache") !== false)
|
155 |
-
$no_cache_already_sent = true;
|
156 |
/**/
|
157 |
-
|
158 |
-
|
|
|
159 |
/**/
|
160 |
-
|
|
|
|
|
|
|
161 |
/**/
|
162 |
do_action ("ws_plugin__s2member_during_no_cache_headers", get_defined_vars ());
|
163 |
}
|
164 |
/**/
|
165 |
do_action ("ws_plugin__s2member_after_no_cache_headers", get_defined_vars ());
|
166 |
/**/
|
167 |
-
return; /*
|
168 |
}
|
169 |
}
|
170 |
}
|
71 |
* @since 3.5
|
72 |
*
|
73 |
* @param bool $no_cache Optional. Defaults to false. If true, force no-cache headers if at all possible.
|
74 |
+
* @return bool This function will always return `true`.
|
75 |
*
|
76 |
* @see s2Member\URIs\c_ws_plugin__s2member_ruris::check_ruri_level_access()
|
77 |
* @see s2Member\Categories\c_ws_plugin__s2member_catgs::check_catg_level_access()
|
122 |
/**/
|
123 |
do_action ("ws_plugin__s2member_after_no_cache_constants", get_defined_vars ());
|
124 |
/**/
|
125 |
+
return true; /* Always return true. */
|
126 |
}
|
127 |
/**
|
128 |
* Sends Cache-Control ( no-cache ) headers.
|
134 |
* @package s2Member\No_Cache
|
135 |
* @since 3.5
|
136 |
*
|
137 |
+
* @return bool This function will always return `true`.
|
138 |
*/
|
139 |
public static function no_cache_headers ()
|
140 |
{
|
145 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
146 |
/**/
|
147 |
$using_selective_behavior = apply_filters ("ws_plugin__s2member_no_cache_headers_selective", false, get_defined_vars ());
|
148 |
+
$selective = @$GLOBALS["ws_plugin__s2member_no_cache_headers_selective"]; /* Selective ( i.e. required )? */
|
149 |
/**/
|
150 |
if (!$once && empty ($_GET["qcABC"]) && (!$using_selective_behavior || $selective) && !apply_filters ("ws_plugin__s2member_disable_no_cache_headers", false, get_defined_vars ()))
|
151 |
{
|
152 |
+
$no_cache_headers_already_sent = false; /* Only if NOT already sent. Initialize this to a false value. */
|
|
|
|
|
|
|
153 |
/**/
|
154 |
+
foreach (headers_list () as $header) /* No-cache headers already sent? We need to check here. */
|
155 |
+
if (stripos ($header, "no-cache") !== false) /* No-cache headers already sent? */
|
156 |
+
eval('$no_cache_headers_already_sent = true; break;');
|
157 |
/**/
|
158 |
+
if (!$no_cache_headers_already_sent) /* Now check it here. */
|
159 |
+
nocache_headers (); /* Only if NOT already sent. */
|
160 |
+
/**/
|
161 |
+
$once = true; /* Only set these headers once. */
|
162 |
/**/
|
163 |
do_action ("ws_plugin__s2member_during_no_cache_headers", get_defined_vars ());
|
164 |
}
|
165 |
/**/
|
166 |
do_action ("ws_plugin__s2member_after_no_cache_headers", get_defined_vars ());
|
167 |
/**/
|
168 |
+
return true; /* Always return true. */
|
169 |
}
|
170 |
}
|
171 |
}
|
includes/classes/pages-sp.inc.php
CHANGED
@@ -43,62 +43,68 @@ if (!class_exists ("c_ws_plugin__s2member_pages_sp"))
|
|
43 |
/**/
|
44 |
$excluded = apply_filters ("ws_plugin__s2member_check_specific_page_level_access_excluded", false, get_defined_vars ());
|
45 |
/**/
|
46 |
-
if (!$excluded && $page_id && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
47 |
{
|
48 |
-
$page_uri = c_ws_plugin__s2member_utils_urls::parse_uri (get_page_link ($page_id));
|
49 |
/**/
|
50 |
-
|
51 |
-
/**/
|
52 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"] && $page_id == $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"] && (!$check_user || !$user || !current_user_can ("access_s2member_level0")) && $page_id != $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
53 |
-
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_level_req" => 0), get_defined_vars ());
|
54 |
-
/**/
|
55 |
-
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $page_uri) && (!$check_user || !$user || !current_user_can ("access_s2member_level0")) && $page_id != $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
56 |
-
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_level_req" => 0), get_defined_vars ());
|
57 |
-
/**/
|
58 |
-
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["file_download_limit_exceeded_page"] && $page_id == $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["file_download_limit_exceeded_page"] && (!$check_user || !$user || !current_user_can ("access_s2member_level0")) && $page_id != $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
59 |
-
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_level_req" => 0), get_defined_vars ());
|
60 |
-
/**/
|
61 |
-
else if (!c_ws_plugin__s2member_systematics_sp::is_systematic_use_specific_page ($page_id, $page_uri)) /* However, there are 3 exceptions ^. */
|
62 |
{
|
63 |
-
|
64 |
-
{
|
65 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_pages"] === "all" && (!$check_user || !$user || !current_user_can ("access_s2member_level" . $n)))
|
66 |
-
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
67 |
-
/**/
|
68 |
-
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_pages"] && in_array ($page_id, preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_pages"])) && (!$check_user || !$user || !current_user_can ("access_s2member_level" . $n)))
|
69 |
-
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
70 |
-
}
|
71 |
/**/
|
72 |
-
if (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
{
|
74 |
-
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /*
|
75 |
{
|
76 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "
|
77 |
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
78 |
/**/
|
79 |
-
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "
|
80 |
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
81 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
}
|
83 |
/**/
|
84 |
-
|
85 |
-
{
|
86 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"])
|
87 |
-
foreach (preg_split ("/[\r\n\t]+/", c_ws_plugin__s2member_ruris::fill_ruri_level_access_rc_vars ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"], $user)) as $str)
|
88 |
-
if ($str && preg_match ("/" . preg_quote ($str, "/") . "/", $page_uri) && (!$check_user || !$user || !current_user_can ("access_s2member_level" . $n)))
|
89 |
-
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
90 |
-
}
|
91 |
-
/**/
|
92 |
-
if (is_array ($ccaps_req = get_post_meta ($page_id, "s2member_ccaps_req", true)) && !empty ($ccaps_req))
|
93 |
-
foreach ($ccaps_req as $ccap) /* The $user MUST satisfy ALL Custom Capabilities. Serialized array. */
|
94 |
-
if (strlen ($ccap) && (!$check_user || !$user || !$user->has_cap ("access_s2member_ccap_" . $ccap)))
|
95 |
-
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_ccap_req" => $ccap), get_defined_vars ());
|
96 |
-
/**/
|
97 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["specific_ids"] && in_array ($page_id, preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["specific_ids"])) && (!$check_user || !c_ws_plugin__s2member_sp_access::sp_access ($page_id, "read-only")))
|
98 |
-
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_sp_req" => $page_id), get_defined_vars ());
|
99 |
}
|
100 |
-
/**/
|
101 |
-
do_action ("ws_plugin__s2member_during_check_specific_page_level_access", get_defined_vars ());
|
102 |
}
|
103 |
/**/
|
104 |
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", null, get_defined_vars ());
|
43 |
/**/
|
44 |
$excluded = apply_filters ("ws_plugin__s2member_check_specific_page_level_access_excluded", false, get_defined_vars ());
|
45 |
/**/
|
46 |
+
if (!$excluded && is_numeric ($page_id) && ($page_id = (int)$page_id) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
47 |
{
|
48 |
+
$page_uri = c_ws_plugin__s2member_utils_urls::parse_uri (get_page_link ($page_id)); /* Get a full valid URI for this Page now. */
|
49 |
/**/
|
50 |
+
if (!c_ws_plugin__s2member_systematics_sp::is_wp_systematic_use_specific_page ($page_id, $page_uri)) /* Do NOT touch WordPress® Systematics. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
{
|
52 |
+
$user = (is_user_logged_in () && is_object ($user = wp_get_current_user ()) && !empty ($user->ID)) ? $user : false; /* Current User's object. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
/**/
|
54 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"] && $page_id === (int)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"] && (!$check_user || !$user || !$user->has_cap ("access_s2member_level0")) && $page_id !== (int)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
55 |
+
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_level_req" => 0), get_defined_vars ());
|
56 |
+
/**/
|
57 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $page_uri) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level0")) && $page_id !== (int)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
58 |
+
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_level_req" => 0), get_defined_vars ());
|
59 |
+
/**/
|
60 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["file_download_limit_exceeded_page"] && $page_id === (int)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["file_download_limit_exceeded_page"] && (!$check_user || !$user || !$user->has_cap ("access_s2member_level0")) && $page_id !== (int)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
61 |
+
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_level_req" => 0), get_defined_vars ());
|
62 |
+
/**/
|
63 |
+
else if (!c_ws_plugin__s2member_systematics_sp::is_systematic_use_specific_page ($page_id, $page_uri)) /* However, there are 3 exceptions above. */
|
64 |
{
|
65 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Page Level restrictions. Go through each Level. */
|
66 |
{
|
67 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_pages"] === "all" && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
68 |
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
69 |
/**/
|
70 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_pages"] && in_array ($page_id, preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_pages"])) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
71 |
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
72 |
}
|
73 |
+
/**/
|
74 |
+
if (has_tag ("", $page_id)) /* Here we take a look to see if this Page has any Tags. If so, we need to run the full set of routines against Tags also. */
|
75 |
+
{
|
76 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Tag Level restrictions ( possibly through Page Tagger ). Go through each Level. */
|
77 |
+
{
|
78 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"] === "all" && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
79 |
+
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
80 |
+
/**/
|
81 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"] && has_tag (preg_split ("/[\r\n\t;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"]), $page_id) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
82 |
+
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
83 |
+
}
|
84 |
+
}
|
85 |
+
/**/
|
86 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* URIs. Go through each Level. */
|
87 |
+
{
|
88 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"]) /* URIs configured at this Level? */
|
89 |
+
/**/
|
90 |
+
foreach (preg_split ("/[\r\n\t]+/", c_ws_plugin__s2member_ruris::fill_ruri_level_access_rc_vars ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"], $user)) as $str)
|
91 |
+
if ($str && preg_match ("/" . preg_quote ($str, "/") . "/", $page_uri) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
92 |
+
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
93 |
+
}
|
94 |
+
/**/
|
95 |
+
if (is_array ($ccaps_req = get_post_meta ($page_id, "s2member_ccaps_req", true)) && !empty ($ccaps_req))
|
96 |
+
{
|
97 |
+
foreach ($ccaps_req as $ccap) /* The ``$user`` MUST satisfy ALL Custom Capabilities. */
|
98 |
+
if (strlen ($ccap) && (!$check_user || !$user || !$user->has_cap ("access_s2member_ccap_" . $ccap)))
|
99 |
+
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_ccap_req" => $ccap), get_defined_vars ());
|
100 |
+
}
|
101 |
+
/**/
|
102 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["specific_ids"] && in_array ($page_id, preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["specific_ids"])) && (!$check_user || !c_ws_plugin__s2member_sp_access::sp_access ($page_id, "read-only")))
|
103 |
+
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", array ("s2member_sp_req" => $page_id), get_defined_vars ());
|
104 |
}
|
105 |
/**/
|
106 |
+
do_action ("ws_plugin__s2member_during_check_specific_page_level_access", get_defined_vars ());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
}
|
|
|
|
|
108 |
}
|
109 |
/**/
|
110 |
return apply_filters ("ws_plugin__s2member_check_specific_page_level_access", null, get_defined_vars ());
|
includes/classes/pages.inc.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
-
exit("Do not access this file directly.");
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_pages"))
|
21 |
{
|
@@ -37,93 +37,72 @@ if (!class_exists ("c_ws_plugin__s2member_pages"))
|
|
37 |
*/
|
38 |
public static function check_page_level_access ()
|
39 |
{
|
40 |
-
global $post; /* get_the_ID() unavailable outside The Loop. */
|
41 |
/**/
|
42 |
do_action ("ws_plugin__s2member_before_check_page_level_access", get_defined_vars ());
|
43 |
/**/
|
44 |
$excluded = apply_filters ("ws_plugin__s2member_check_page_level_access_excluded", false, get_defined_vars ());
|
45 |
/**/
|
46 |
-
if (!$excluded && is_page () && is_object ($post) && ($page_id = $post->ID) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
47 |
{
|
48 |
-
|
49 |
-
/**/
|
50 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"] && $page_id == $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"] && c_ws_plugin__s2member_no_cache::no_cache_constants (true) !== "nill" && (!$user || !current_user_can ("access_s2member_level0")) && $page_id != $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
51 |
{
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
}
|
65 |
-
else if (!c_ws_plugin__s2member_systematics::is_systematic_use_page ()) /* Never restrict Systematics. However, there are 3 exceptions ^. */
|
66 |
-
{
|
67 |
-
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Page Level restrictions. Go through each Level. */
|
68 |
{
|
69 |
-
|
70 |
{
|
71 |
-
|
72 |
-
|
|
|
|
|
|
|
73 |
}
|
74 |
/**/
|
75 |
-
|
76 |
-
{
|
77 |
-
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "page-" . $page_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ()));
|
78 |
-
exit ();
|
79 |
-
}
|
80 |
-
}
|
81 |
-
/**/
|
82 |
-
if (has_tag ()) /* Here we take a look to see if this Page has any Tags. If so, we need to run the full set of routines against Tags also. */
|
83 |
-
{
|
84 |
-
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Tag Level restrictions ( possibly through Page Tagger ). Go through each Level. */
|
85 |
{
|
86 |
-
|
87 |
-
{
|
88 |
-
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "page-" . $page_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ()));
|
89 |
-
exit ();
|
90 |
-
}
|
91 |
-
/**/
|
92 |
-
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"] && has_tag (preg_split ("/[\r\n\t;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"])) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) !== "nill" && (!$user || !current_user_can ("access_s2member_level" . $n)))
|
93 |
{
|
94 |
-
|
95 |
-
|
|
|
|
|
|
|
96 |
}
|
97 |
}
|
98 |
-
|
99 |
-
|
100 |
-
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* URIs. Go through each Level. */
|
101 |
-
{
|
102 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"])
|
103 |
-
foreach (preg_split ("/[\r\n\t]+/", c_ws_plugin__s2member_ruris::fill_ruri_level_access_rc_vars ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"], $user)) as $str)
|
104 |
-
if ($str && preg_match ("/" . preg_quote ($str, "/") . "/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) !== "nill" && (!$user || !current_user_can ("access_s2member_level" . $n)))
|
105 |
-
{
|
106 |
-
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "page-" . $page_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ()));
|
107 |
-
exit ();
|
108 |
-
}
|
109 |
-
}
|
110 |
-
/**/
|
111 |
-
if (is_array ($ccaps_req = get_post_meta ($page_id, "s2member_ccaps_req", true)) && !empty ($ccaps_req) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) !== "nill")
|
112 |
-
foreach ($ccaps_req as $ccap) /* The $user MUST satisfy ALL Custom Capability requirements. Stored as a serialized array. */
|
113 |
-
if (strlen ($ccap) && (!$user || !$user->has_cap ("access_s2member_ccap_" . $ccap)))
|
114 |
{
|
115 |
-
|
116 |
-
|
|
|
|
|
|
|
117 |
}
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
|
|
|
|
|
|
|
|
|
|
123 |
}
|
|
|
|
|
124 |
}
|
125 |
-
/**/
|
126 |
-
do_action ("ws_plugin__s2member_during_check_page_level_access", get_defined_vars ());
|
127 |
}
|
128 |
/**/
|
129 |
do_action ("ws_plugin__s2member_after_check_page_level_access", get_defined_vars ());
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
+
exit ("Do not access this file directly.");
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_pages"))
|
21 |
{
|
37 |
*/
|
38 |
public static function check_page_level_access ()
|
39 |
{
|
40 |
+
global $post; /* ``get_the_ID()`` unavailable outside The Loop. */
|
41 |
/**/
|
42 |
do_action ("ws_plugin__s2member_before_check_page_level_access", get_defined_vars ());
|
43 |
/**/
|
44 |
$excluded = apply_filters ("ws_plugin__s2member_check_page_level_access_excluded", false, get_defined_vars ());
|
45 |
/**/
|
46 |
+
if (!$excluded && is_page () && is_object ($post) && ($page_id = (int)$post->ID) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
47 |
{
|
48 |
+
if (!c_ws_plugin__s2member_systematics::is_wp_systematic_use_page ()) /* Do NOT touch WordPress® Systematics. This excludes all WordPress® Systematics. */
|
|
|
|
|
49 |
{
|
50 |
+
$user = (is_user_logged_in () && is_object ($user = wp_get_current_user ()) && !empty ($user->ID)) ? $user : false; /* Current User's object. */
|
51 |
+
/**/
|
52 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"] && $page_id === (int)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"] && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level0")) && $page_id !== (int)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
53 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "page-" . $page_id, "s2member_level_req" => "0")), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
54 |
+
/**/
|
55 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level0")) && $page_id !== (int)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
56 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "page-" . $page_id, "s2member_level_req" => "0")), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
57 |
+
/**/
|
58 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["file_download_limit_exceeded_page"] && $page_id === (int)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["file_download_limit_exceeded_page"] && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level0")) && $page_id !== (int)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
59 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "page-" . $page_id, "s2member_level_req" => "0")), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
60 |
+
/**/
|
61 |
+
else if (!c_ws_plugin__s2member_systematics::is_systematic_use_page ()) /* Never restrict Systematics. However, there are 3 exceptions above. */
|
|
|
|
|
|
|
|
|
62 |
{
|
63 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Page Level restrictions. Go through each Level. */
|
64 |
{
|
65 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_pages"] === "all" && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
66 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "page-" . $page_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
67 |
+
/**/
|
68 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_pages"] && in_array ($page_id, preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_pages"])) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
69 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "page-" . $page_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
70 |
}
|
71 |
/**/
|
72 |
+
if (has_tag ()) /* Here we take a look to see if this Page has any Tags. If so, we need to run the full set of routines against Tags also. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
{
|
74 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Tag Level restrictions ( possibly through Page Tagger ). Go through each Level. */
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
{
|
76 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"] === "all" && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
77 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "page-" . $page_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
78 |
+
/**/
|
79 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"] && has_tag (preg_split ("/[\r\n\t;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"])) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
80 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "page-" . $page_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
81 |
}
|
82 |
}
|
83 |
+
/**/
|
84 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* URIs. Go through each Level. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
{
|
86 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"]) /* URIs configured at this Level? */
|
87 |
+
/**/
|
88 |
+
foreach (preg_split ("/[\r\n\t]+/", c_ws_plugin__s2member_ruris::fill_ruri_level_access_rc_vars ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"], $user)) as $str)
|
89 |
+
if ($str && preg_match ("/" . preg_quote ($str, "/") . "/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
90 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "page-" . $page_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
91 |
}
|
92 |
+
/**/
|
93 |
+
if (is_array ($ccaps_req = get_post_meta ($page_id, "s2member_ccaps_req", true)) && !empty ($ccaps_req) && c_ws_plugin__s2member_no_cache::no_cache_constants (true))
|
94 |
+
{
|
95 |
+
foreach ($ccaps_req as $ccap) /* The ``$user`` MUST satisfy ALL Custom Capability requirements. Stored as a serialized array. */
|
96 |
+
if (strlen ($ccap) && (!$user || !$user->has_cap ("access_s2member_ccap_" . $ccap)))
|
97 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "page-" . $page_id, "s2member_ccap_req" => $ccap)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
98 |
+
}
|
99 |
+
/**/
|
100 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["specific_ids"] && in_array ($page_id, preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["specific_ids"])) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && !c_ws_plugin__s2member_sp_access::sp_access ($page_id))
|
101 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "page-" . $page_id, "s2member_sp_req" => $page_id)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
102 |
}
|
103 |
+
/**/
|
104 |
+
do_action ("ws_plugin__s2member_during_check_page_level_access", get_defined_vars ());
|
105 |
}
|
|
|
|
|
106 |
}
|
107 |
/**/
|
108 |
do_action ("ws_plugin__s2member_after_check_page_level_access", get_defined_vars ());
|
includes/classes/posts-sp.inc.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
-
exit
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_posts_sp"))
|
21 |
{
|
@@ -43,65 +43,71 @@ if (!class_exists ("c_ws_plugin__s2member_posts_sp"))
|
|
43 |
/**/
|
44 |
$excluded = apply_filters ("ws_plugin__s2member_check_specific_post_level_access_excluded", false, get_defined_vars ());
|
45 |
/**/
|
46 |
-
if (!$excluded && $post_id && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
47 |
{
|
48 |
-
$post_uri = c_ws_plugin__s2member_utils_urls::parse_uri (get_permalink ($post_id));
|
49 |
/**/
|
50 |
-
|
51 |
-
/**/
|
52 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $post_uri) && (!$check_user || !$user || !current_user_can ("access_s2member_level0")))
|
53 |
-
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_level_req" => 0), get_defined_vars ());
|
54 |
-
/**/
|
55 |
-
else if (!c_ws_plugin__s2member_systematics_sp::is_systematic_use_specific_page (null, $post_uri)) /* Never restrict Systematics. However, there is 1 exception ^. */
|
56 |
{
|
57 |
-
|
58 |
-
{
|
59 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_posts"] === "all" && (!$check_user || !$user || !current_user_can ("access_s2member_level" . $n)))
|
60 |
-
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
61 |
-
/**/
|
62 |
-
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_posts"] && in_array ($post_id, preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_posts"])) && (!$check_user || !$user || !current_user_can ("access_s2member_level" . $n)))
|
63 |
-
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
64 |
-
}
|
65 |
/**/
|
66 |
-
|
67 |
-
|
68 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"] === "all" && (!$check_user || !$user || !current_user_can ("access_s2member_level" . $n)))
|
69 |
-
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
70 |
-
/**/
|
71 |
-
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"] && (in_category (($catgs = preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"])), $post_id) || c_ws_plugin__s2member_utils_conds::in_descendant_category ($catgs, $post_id)) && (!$check_user || !$user || !current_user_can ("access_s2member_level" . $n)))
|
72 |
-
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
73 |
-
}
|
74 |
/**/
|
75 |
-
if (
|
76 |
{
|
77 |
-
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /*
|
78 |
{
|
79 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "
|
80 |
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
81 |
/**/
|
82 |
-
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "
|
83 |
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
84 |
}
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
if ($
|
92 |
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
}
|
94 |
/**/
|
95 |
-
|
96 |
-
foreach ($ccaps_req as $ccap) /* The $user MUST satisfy ALL Custom Capabilities. Serialized array. */
|
97 |
-
if (strlen ($ccap) && (!$check_user || !$user || !$user->has_cap ("access_s2member_ccap_" . $ccap)))
|
98 |
-
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_ccap_req" => $ccap), get_defined_vars ());
|
99 |
-
/**/
|
100 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["specific_ids"] && in_array ($post_id, preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["specific_ids"])) && (!$check_user || !c_ws_plugin__s2member_sp_access::sp_access ($post_id, "read-only")))
|
101 |
-
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_sp_req" => $post_id), get_defined_vars ());
|
102 |
}
|
103 |
-
/**/
|
104 |
-
do_action ("ws_plugin__s2member_during_check_specific_post_level_access", get_defined_vars ());
|
105 |
}
|
106 |
/**/
|
107 |
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", null, get_defined_vars ());
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
+
exit("Do not access this file directly.");
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_posts_sp"))
|
21 |
{
|
43 |
/**/
|
44 |
$excluded = apply_filters ("ws_plugin__s2member_check_specific_post_level_access_excluded", false, get_defined_vars ());
|
45 |
/**/
|
46 |
+
if (!$excluded && is_numeric ($post_id) && ($post_id = (int)$post_id) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
47 |
{
|
48 |
+
$post_uri = c_ws_plugin__s2member_utils_urls::parse_uri (get_permalink ($post_id)); /* Get a full valid URI for this Post now. */
|
49 |
/**/
|
50 |
+
if (!c_ws_plugin__s2member_systematics_sp::is_wp_systematic_use_specific_page ($post_id, $post_uri)) /* Do NOT touch WordPress® Systematics. */
|
|
|
|
|
|
|
|
|
|
|
51 |
{
|
52 |
+
$user = (is_user_logged_in () && is_object ($user = wp_get_current_user ()) && !empty ($user->ID)) ? $user : false; /* Current User's object. */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
/**/
|
54 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $post_uri) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level0")))
|
55 |
+
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_level_req" => 0), get_defined_vars ());
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
/**/
|
57 |
+
else if (!c_ws_plugin__s2member_systematics_sp::is_systematic_use_specific_page ($post_id, $post_uri)) /* Never restrict Systematics. However, there is 1 exception above. */
|
58 |
{
|
59 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Post Level restrictions ( including Custom Post Types ). Go through each Level. */
|
60 |
{
|
61 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_posts"] === "all" && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
62 |
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
63 |
/**/
|
64 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_posts"] && in_array ($post_id, preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_posts"])) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
65 |
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
66 |
}
|
67 |
+
/**/
|
68 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Category Level Access against this Post. Go through each Level. */
|
69 |
+
{
|
70 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"] === "all" && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
71 |
+
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
72 |
+
/**/
|
73 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"] && (in_category (($catgs = preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"])), $post_id) || c_ws_plugin__s2member_utils_conds::in_descendant_category ($catgs, $post_id)) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
74 |
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
75 |
+
}
|
76 |
+
/**/
|
77 |
+
if (has_tag ("", $post_id)) /* Here we take a look to see if this Post has any Tags. If so, we need to run the full set of routines against Tags also. */
|
78 |
+
{
|
79 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Tag Level restrictions now. Go through each Level. */
|
80 |
+
{
|
81 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"] === "all" && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
82 |
+
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
83 |
+
/**/
|
84 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"] && has_tag (preg_split ("/[\r\n\t;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"]), $post_id) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
85 |
+
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
86 |
+
}
|
87 |
+
}
|
88 |
+
/**/
|
89 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* URIs. Go through each Level. */
|
90 |
+
{
|
91 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"]) /* URIs configured at this Level? */
|
92 |
+
/**/
|
93 |
+
foreach (preg_split ("/[\r\n\t]+/", c_ws_plugin__s2member_ruris::fill_ruri_level_access_rc_vars ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"], $user)) as $str)
|
94 |
+
if ($str && preg_match ("/" . preg_quote ($str, "/") . "/", $post_uri) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
95 |
+
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
96 |
+
}
|
97 |
+
/**/
|
98 |
+
if (is_array ($ccaps_req = get_post_meta ($post_id, "s2member_ccaps_req", true)) && !empty ($ccaps_req))
|
99 |
+
{
|
100 |
+
foreach ($ccaps_req as $ccap) /* The $user MUST satisfy ALL Custom Capabilities. Serialized array. */
|
101 |
+
if (strlen ($ccap) && (!$check_user || !$user || !$user->has_cap ("access_s2member_ccap_" . $ccap)))
|
102 |
+
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_ccap_req" => $ccap), get_defined_vars ());
|
103 |
+
}
|
104 |
+
/**/
|
105 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["specific_ids"] && in_array ($post_id, preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["specific_ids"])) && (!$check_user || !c_ws_plugin__s2member_sp_access::sp_access ($post_id, "read-only")))
|
106 |
+
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", array ("s2member_sp_req" => $post_id), get_defined_vars ());
|
107 |
}
|
108 |
/**/
|
109 |
+
do_action ("ws_plugin__s2member_during_check_specific_post_level_access", get_defined_vars ());
|
|
|
|
|
|
|
|
|
|
|
|
|
110 |
}
|
|
|
|
|
111 |
}
|
112 |
/**/
|
113 |
return apply_filters ("ws_plugin__s2member_check_specific_post_level_access", null, get_defined_vars ());
|
includes/classes/posts.inc.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
-
exit("Do not access this file directly.");
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_posts"))
|
21 |
{
|
@@ -37,98 +37,75 @@ if (!class_exists ("c_ws_plugin__s2member_posts"))
|
|
37 |
*/
|
38 |
public static function check_post_level_access ()
|
39 |
{
|
40 |
-
global $post; /* get_the_ID() unavailable outside The Loop. */
|
41 |
/**/
|
42 |
do_action ("ws_plugin__s2member_before_check_post_level_access", get_defined_vars ());
|
43 |
/**/
|
44 |
$excluded = apply_filters ("ws_plugin__s2member_check_post_level_access_excluded", false, get_defined_vars ());
|
45 |
/**/
|
46 |
-
if (!$excluded && is_single () && is_object ($post) && ($post_id = $post->ID) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
47 |
{
|
48 |
-
|
49 |
-
/**/
|
50 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) !== "nill" && (!$user || !current_user_can ("access_s2member_level0")))
|
51 |
{
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
{
|
59 |
-
|
60 |
{
|
61 |
-
|
62 |
-
|
|
|
|
|
|
|
63 |
}
|
64 |
/**/
|
65 |
-
|
66 |
{
|
67 |
-
|
68 |
-
|
|
|
|
|
|
|
69 |
}
|
70 |
-
|
71 |
-
|
72 |
-
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Category Level restrictions. Go through each Level. */
|
73 |
-
{
|
74 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"] === "all" && c_ws_plugin__s2member_no_cache::no_cache_constants (true) !== "nill" && (!$user || !current_user_can ("access_s2member_level" . $n)))
|
75 |
{
|
76 |
-
|
77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
}
|
79 |
/**/
|
80 |
-
|
81 |
{
|
82 |
-
|
83 |
-
|
|
|
|
|
|
|
84 |
}
|
85 |
-
|
86 |
-
|
87 |
-
if (has_tag ()) /* Here we take a look to see if this Post has any Tags. If so, we need to run the full set of routines against Tags also. */
|
88 |
-
{
|
89 |
-
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Tag Level restrictions. Go through each Level. */
|
90 |
{
|
91 |
-
|
92 |
-
|
93 |
-
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "post-" . $post_id, "
|
94 |
-
exit ();
|
95 |
-
}
|
96 |
-
/**/
|
97 |
-
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"] && has_tag (preg_split ("/[\r\n\t;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"])) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) !== "nill" && (!$user || !current_user_can ("access_s2member_level" . $n)))
|
98 |
-
{
|
99 |
-
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "post-" . $post_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ()));
|
100 |
-
exit ();
|
101 |
-
}
|
102 |
}
|
|
|
|
|
|
|
103 |
}
|
104 |
/**/
|
105 |
-
|
106 |
-
{
|
107 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"])
|
108 |
-
foreach (preg_split ("/[\r\n\t]+/", c_ws_plugin__s2member_ruris::fill_ruri_level_access_rc_vars ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"], $user)) as $str)
|
109 |
-
if ($str && preg_match ("/" . preg_quote ($str, "/") . "/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) !== "nill" && (!$user || !current_user_can ("access_s2member_level" . $n)))
|
110 |
-
{
|
111 |
-
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "post-" . $post_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ()));
|
112 |
-
exit ();
|
113 |
-
}
|
114 |
-
}
|
115 |
-
/**/
|
116 |
-
if (is_array ($ccaps_req = get_post_meta ($post_id, "s2member_ccaps_req", true)) && !empty ($ccaps_req) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) !== "nill")
|
117 |
-
foreach ($ccaps_req as $ccap) /* The $user MUST satisfy ALL Custom Capability requirements. Stored as a serialized array. */
|
118 |
-
if (strlen ($ccap) && (!$user || !$user->has_cap ("access_s2member_ccap_" . $ccap)))
|
119 |
-
{
|
120 |
-
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "post-" . $post_id, "s2member_ccap_req" => $ccap)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ()));
|
121 |
-
exit ();
|
122 |
-
}
|
123 |
-
/**/
|
124 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["specific_ids"] && in_array ($post_id, preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["specific_ids"])) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) !== "nill" && !c_ws_plugin__s2member_sp_access::sp_access ($post_id))
|
125 |
-
{
|
126 |
-
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "post-" . $post_id, "s2member_sp_req" => $post_id)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ()));
|
127 |
-
exit ();
|
128 |
-
}
|
129 |
}
|
130 |
-
/**/
|
131 |
-
do_action ("ws_plugin__s2member_during_check_post_level_access", get_defined_vars ());
|
132 |
}
|
133 |
/**/
|
134 |
do_action ("ws_plugin__s2member_after_check_post_level_access", get_defined_vars ());
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
+
exit ("Do not access this file directly.");
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_posts"))
|
21 |
{
|
37 |
*/
|
38 |
public static function check_post_level_access ()
|
39 |
{
|
40 |
+
global $post; /* ``get_the_ID()`` unavailable outside The Loop. */
|
41 |
/**/
|
42 |
do_action ("ws_plugin__s2member_before_check_post_level_access", get_defined_vars ());
|
43 |
/**/
|
44 |
$excluded = apply_filters ("ws_plugin__s2member_check_post_level_access_excluded", false, get_defined_vars ());
|
45 |
/**/
|
46 |
+
if (!$excluded && is_single () && is_object ($post) && ($post_id = (int)$post->ID) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
47 |
{
|
48 |
+
if (!c_ws_plugin__s2member_systematics::is_wp_systematic_use_page ()) /* Do NOT touch WordPress® Systematics. This excludes all WordPress® Systematics. */
|
|
|
|
|
49 |
{
|
50 |
+
$user = (is_user_logged_in () && is_object ($user = wp_get_current_user ()) && !empty ($user->ID)) ? $user : false; /* Current User's object. */
|
51 |
+
/**/
|
52 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level0")))
|
53 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "post-" . $post_id, "s2member_level_req" => "0")), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
54 |
+
/**/
|
55 |
+
else if (!c_ws_plugin__s2member_systematics::is_systematic_use_page ()) /* Do NOT protect Systematics. However, there is 1 exception above. */
|
56 |
{
|
57 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Post Level restrictions ( including Custom Post Types ). Go through each Level. */
|
58 |
{
|
59 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_posts"] === "all" && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
60 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "post-" . $post_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
61 |
+
/**/
|
62 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_posts"] && in_array ($post_id, preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_posts"])) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
63 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "post-" . $post_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
64 |
}
|
65 |
/**/
|
66 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Category Level restrictions. Go through each Level. */
|
67 |
{
|
68 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"] === "all" && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
69 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "post-" . $post_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
70 |
+
/**/
|
71 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"] && (in_category (($catgs = preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"])), $post_id) || c_ws_plugin__s2member_utils_conds::in_descendant_category ($catgs, $post_id)) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
72 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "post-" . $post_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
73 |
}
|
74 |
+
/**/
|
75 |
+
if (has_tag ()) /* Here we take a look to see if this Post has any Tags. If so, we need to run the full set of routines against Tags also. */
|
|
|
|
|
|
|
76 |
{
|
77 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Tag Level restrictions. Go through each Level. */
|
78 |
+
{
|
79 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"] === "all" && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
80 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "post-" . $post_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
81 |
+
/**/
|
82 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"] && has_tag (preg_split ("/[\r\n\t;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"])) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
83 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "post-" . $post_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
84 |
+
}
|
85 |
}
|
86 |
/**/
|
87 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* URIs. Go through each Level. */
|
88 |
{
|
89 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"]) /* URIs configured at this Level? */
|
90 |
+
/**/
|
91 |
+
foreach (preg_split ("/[\r\n\t]+/", c_ws_plugin__s2member_ruris::fill_ruri_level_access_rc_vars ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"], $user)) as $str)
|
92 |
+
if ($str && preg_match ("/" . preg_quote ($str, "/") . "/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
93 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "post-" . $post_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
94 |
}
|
95 |
+
/**/
|
96 |
+
if (is_array ($ccaps_req = get_post_meta ($post_id, "s2member_ccaps_req", true)) && !empty ($ccaps_req) && c_ws_plugin__s2member_no_cache::no_cache_constants (true))
|
|
|
|
|
|
|
97 |
{
|
98 |
+
foreach ($ccaps_req as $ccap) /* The ``$user`` MUST satisfy ALL Custom Capability requirements. Stored as a serialized array. */
|
99 |
+
if (strlen ($ccap) && (!$user || !$user->has_cap ("access_s2member_ccap_" . $ccap)))
|
100 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "post-" . $post_id, "s2member_ccap_req" => $ccap)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
}
|
102 |
+
/**/
|
103 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["specific_ids"] && in_array ($post_id, preg_split ("/[\r\n\t\s;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["specific_ids"])) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && !c_ws_plugin__s2member_sp_access::sp_access ($post_id))
|
104 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "post-" . $post_id, "s2member_sp_req" => $post_id)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
105 |
}
|
106 |
/**/
|
107 |
+
do_action ("ws_plugin__s2member_during_check_post_level_access", get_defined_vars ());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
}
|
|
|
|
|
109 |
}
|
110 |
/**/
|
111 |
do_action ("ws_plugin__s2member_after_check_post_level_access", get_defined_vars ());
|
includes/classes/profile-in.inc.php
CHANGED
@@ -43,7 +43,7 @@ if (!class_exists ("c_ws_plugin__s2member_profile_in"))
|
|
43 |
/**/
|
44 |
if (!empty ($_GET["s2member_profile"])) /* Requesting Profile? */
|
45 |
{
|
46 |
-
c_ws_plugin__s2member_no_cache::no_cache_constants (true);
|
47 |
/**/
|
48 |
$tabindex = apply_filters ("ws_plugin__s2member_sc_profile_tabindex", 0, get_defined_vars ());
|
49 |
/**/
|
43 |
/**/
|
44 |
if (!empty ($_GET["s2member_profile"])) /* Requesting Profile? */
|
45 |
{
|
46 |
+
c_ws_plugin__s2member_no_cache::no_cache_constants (true); /* No caching. */
|
47 |
/**/
|
48 |
$tabindex = apply_filters ("ws_plugin__s2member_sc_profile_tabindex", 0, get_defined_vars ());
|
49 |
/**/
|
includes/classes/ptags-sp.inc.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
-
exit
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_ptags_sp"))
|
21 |
{
|
@@ -43,59 +43,59 @@ if (!class_exists ("c_ws_plugin__s2member_ptags_sp"))
|
|
43 |
/**/
|
44 |
if ($_tag && is_numeric ($_tag) && is_object ($term = get_term_by ("id", $_tag, "post_tag")))
|
45 |
{
|
46 |
-
$tag_id = $_tag; /*
|
47 |
$tag_slug = $term->slug; /* Tag slug. */
|
48 |
$tag_name = $term->name; /* Tag name. */
|
49 |
}
|
50 |
-
else if ($_tag && is_string ($_tag)
|
51 |
{
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
$tag_slug = $_tag; /* A slug was passed in. */
|
62 |
-
$tag_id = $term->term_id; /* Tag ID. */
|
63 |
-
$tag_name = $term->name; /* Tag name. */
|
64 |
-
}
|
65 |
}
|
66 |
/**/
|
67 |
$excluded = apply_filters ("ws_plugin__s2member_check_specific_ptag_level_access_excluded", false, get_defined_vars ());
|
68 |
/**/
|
69 |
if (!$excluded && !empty ($tag_id) && !empty ($tag_slug) && !empty ($tag_name) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
70 |
{
|
71 |
-
$tag_uri = c_ws_plugin__s2member_utils_urls::parse_uri (get_tag_link ($tag_id));
|
72 |
-
/**/
|
73 |
-
$user = (is_user_logged_in ()) ? wp_get_current_user () : false; /* Get the current User's object. */
|
74 |
/**/
|
75 |
-
if (
|
76 |
-
return apply_filters ("ws_plugin__s2member_check_specific_ptag_level_access", array ("s2member_level_req" => 0), get_defined_vars ());
|
77 |
-
/**/
|
78 |
-
else if (!c_ws_plugin__s2member_systematics_sp::is_systematic_use_specific_page (null, $tag_uri)) /* Never restrict Systematics. However, there is 1 exception ^. */
|
79 |
{
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
/**/
|
85 |
-
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"] && (in_array ($tag_name, ($tags = preg_split ("/[\r\n\t;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"]))) || in_array ($tag_slug, $tags)) && (!$check_user || !$user || !current_user_can ("access_s2member_level" . $n)))
|
86 |
-
return apply_filters ("ws_plugin__s2member_check_specific_ptag_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
87 |
-
}
|
88 |
/**/
|
89 |
-
|
90 |
{
|
91 |
-
|
92 |
-
|
93 |
-
if ($
|
94 |
return apply_filters ("ws_plugin__s2member_check_specific_ptag_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
}
|
|
|
|
|
96 |
}
|
97 |
-
/**/
|
98 |
-
do_action ("ws_plugin__s2member_during_check_specific_ptag_level_access", get_defined_vars ());
|
99 |
}
|
100 |
/**/
|
101 |
return apply_filters ("ws_plugin__s2member_check_specific_ptag_level_access", null, get_defined_vars ());
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
+
exit("Do not access this file directly.");
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_ptags_sp"))
|
21 |
{
|
43 |
/**/
|
44 |
if ($_tag && is_numeric ($_tag) && is_object ($term = get_term_by ("id", $_tag, "post_tag")))
|
45 |
{
|
46 |
+
$tag_id = (int)$_tag; /* Need ``$tag_id``, ``$tag_slug``, and also the ``$tag_name``. */
|
47 |
$tag_slug = $term->slug; /* Tag slug. */
|
48 |
$tag_name = $term->name; /* Tag name. */
|
49 |
}
|
50 |
+
else if ($_tag && is_string ($_tag) && is_object ($term = get_term_by ("name", $_tag, "post_tag")))
|
51 |
{
|
52 |
+
$tag_name = $_tag; /* Need ``$tag_id``, ``$tag_slug``, and also the ``$tag_name``. */
|
53 |
+
$tag_id = (int)$term->term_id; /* Tag ID. */
|
54 |
+
$tag_slug = $term->slug; /* Tag slug. */
|
55 |
+
}
|
56 |
+
else if ($_tag && is_string ($_tag) && is_object ($term = get_term_by ("slug", $_tag, "post_tag")))
|
57 |
+
{
|
58 |
+
$tag_slug = $_tag; /* Need ``$tag_id``, ``$tag_slug``, and also the ``$tag_name``. */
|
59 |
+
$tag_id = (int)$term->term_id; /* Tag ID. */
|
60 |
+
$tag_name = $term->name; /* Tag name. */
|
|
|
|
|
|
|
|
|
61 |
}
|
62 |
/**/
|
63 |
$excluded = apply_filters ("ws_plugin__s2member_check_specific_ptag_level_access_excluded", false, get_defined_vars ());
|
64 |
/**/
|
65 |
if (!$excluded && !empty ($tag_id) && !empty ($tag_slug) && !empty ($tag_name) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
66 |
{
|
67 |
+
$tag_uri = c_ws_plugin__s2member_utils_urls::parse_uri (get_tag_link ($tag_id)); /* Get a full valid URI for this Tag. */
|
|
|
|
|
68 |
/**/
|
69 |
+
if (!c_ws_plugin__s2member_systematics_sp::is_wp_systematic_use_specific_page (null, $tag_uri)) /* Do NOT touch WordPress® Systematics. */
|
|
|
|
|
|
|
70 |
{
|
71 |
+
$user = (is_user_logged_in () && is_object ($user = wp_get_current_user ()) && !empty ($user->ID)) ? $user : false; /* Current User's object. */
|
72 |
+
/**/
|
73 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $tag_uri) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level0")))
|
74 |
+
return apply_filters ("ws_plugin__s2member_check_specific_ptag_level_access", array ("s2member_level_req" => 0), get_defined_vars ());
|
|
|
|
|
|
|
|
|
75 |
/**/
|
76 |
+
else if (!c_ws_plugin__s2member_systematics_sp::is_systematic_use_specific_page (null, $tag_uri)) /* Never restrict Systematics. However, there is 1 exception above. */
|
77 |
{
|
78 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Tag Level restrictions. Go through each Level. */
|
79 |
+
{
|
80 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"] === "all" && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
81 |
return apply_filters ("ws_plugin__s2member_check_specific_ptag_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
82 |
+
/**/
|
83 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"] && (in_array ($tag_name, ($tags = preg_split ("/[\r\n\t;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"]))) || in_array ($tag_slug, $tags)) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
84 |
+
return apply_filters ("ws_plugin__s2member_check_specific_ptag_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
85 |
+
}
|
86 |
+
/**/
|
87 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* URIs. Go through each Level. */
|
88 |
+
{
|
89 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"]) /* URIs configured at this Level? */
|
90 |
+
/**/
|
91 |
+
foreach (preg_split ("/[\r\n\t]+/", c_ws_plugin__s2member_ruris::fill_ruri_level_access_rc_vars ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"], $user)) as $str)
|
92 |
+
if ($str && preg_match ("/" . preg_quote ($str, "/") . "/", $tag_uri) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
93 |
+
return apply_filters ("ws_plugin__s2member_check_specific_ptag_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
94 |
+
}
|
95 |
}
|
96 |
+
/**/
|
97 |
+
do_action ("ws_plugin__s2member_during_check_specific_ptag_level_access", get_defined_vars ());
|
98 |
}
|
|
|
|
|
99 |
}
|
100 |
/**/
|
101 |
return apply_filters ("ws_plugin__s2member_check_specific_ptag_level_access", null, get_defined_vars ());
|
includes/classes/ptags.inc.php
CHANGED
@@ -37,51 +37,44 @@ if (!class_exists ("c_ws_plugin__s2member_ptags"))
|
|
37 |
*/
|
38 |
public static function check_ptag_level_access ()
|
39 |
{
|
40 |
-
global $wp_query, $post; /* get_the_ID() is NOT available outside The Loop. */
|
41 |
/**/
|
42 |
do_action ("ws_plugin__s2member_before_check_ptag_level_access", get_defined_vars ());
|
43 |
/**/
|
44 |
$excluded = apply_filters ("ws_plugin__s2member_check_ptag_level_access_excluded", false, get_defined_vars ());
|
45 |
/**/
|
46 |
-
if (!$excluded && is_tag () && is_object ($tag = $wp_query->get_queried_object ()) && ($tag_id = $tag->term_id) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
47 |
{
|
48 |
-
|
49 |
-
/**/
|
50 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) !== "nill" && (!$user || !current_user_can ("access_s2member_level0")))
|
51 |
{
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
{
|
59 |
-
|
60 |
{
|
61 |
-
|
62 |
-
|
|
|
|
|
|
|
63 |
}
|
64 |
/**/
|
65 |
-
|
66 |
{
|
67 |
-
|
68 |
-
|
|
|
|
|
|
|
69 |
}
|
70 |
}
|
71 |
/**/
|
72 |
-
|
73 |
-
{
|
74 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"])
|
75 |
-
foreach (preg_split ("/[\r\n\t]+/", c_ws_plugin__s2member_ruris::fill_ruri_level_access_rc_vars ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"], $user)) as $str)
|
76 |
-
if ($str && preg_match ("/" . preg_quote ($str, "/") . "/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) !== "nill" && (!$user || !current_user_can ("access_s2member_level" . $n)))
|
77 |
-
{
|
78 |
-
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "ptag-" . $tag_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ()));
|
79 |
-
exit ();
|
80 |
-
}
|
81 |
-
}
|
82 |
}
|
83 |
-
/**/
|
84 |
-
do_action ("ws_plugin__s2member_during_check_ptag_level_access", get_defined_vars ());
|
85 |
}
|
86 |
/**/
|
87 |
do_action ("ws_plugin__s2member_after_check_ptag_level_access", get_defined_vars ());
|
37 |
*/
|
38 |
public static function check_ptag_level_access ()
|
39 |
{
|
40 |
+
global $wp_query, $post; /* ``get_the_ID()`` is NOT available outside The Loop. */
|
41 |
/**/
|
42 |
do_action ("ws_plugin__s2member_before_check_ptag_level_access", get_defined_vars ());
|
43 |
/**/
|
44 |
$excluded = apply_filters ("ws_plugin__s2member_check_ptag_level_access_excluded", false, get_defined_vars ());
|
45 |
/**/
|
46 |
+
if (!$excluded && is_tag () && is_object ($tag = $wp_query->get_queried_object ()) && ($tag_id = (int)$tag->term_id) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
47 |
{
|
48 |
+
if (!c_ws_plugin__s2member_systematics::is_wp_systematic_use_page ()) /* Do NOT touch WordPress® Systematics. This excludes all WordPress® Systematics. */
|
|
|
|
|
49 |
{
|
50 |
+
$user = (is_user_logged_in () && is_object ($user = wp_get_current_user ()) && !empty ($user->ID)) ? $user : false; /* Current User's object. */
|
51 |
+
/**/
|
52 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level0")))
|
53 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "ptag-" . $tag_id, "s2member_level_req" => "0")), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
54 |
+
/**/
|
55 |
+
else if (!c_ws_plugin__s2member_systematics::is_systematic_use_page ()) /* Do NOT protect Systematics. However, there is 1 exception above. */
|
56 |
{
|
57 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* Tag Level restrictions. Go through each Level. */
|
58 |
{
|
59 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"] === "all" && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
60 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "ptag-" . $tag_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
61 |
+
/**/
|
62 |
+
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"] && (is_tag ($tags = preg_split ("/[\r\n\t;,]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ptags"])) || in_array ($tag_id, $tags)) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
63 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "ptag-" . $tag_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
64 |
}
|
65 |
/**/
|
66 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* URIs. Go through each Level. */
|
67 |
{
|
68 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"]) /* URIs configured at this Level? */
|
69 |
+
/**/
|
70 |
+
foreach (preg_split ("/[\r\n\t]+/", c_ws_plugin__s2member_ruris::fill_ruri_level_access_rc_vars ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"], $user)) as $str)
|
71 |
+
if ($str && preg_match ("/" . preg_quote ($str, "/") . "/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
72 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "ptag-" . $tag_id, "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
73 |
}
|
74 |
}
|
75 |
/**/
|
76 |
+
do_action ("ws_plugin__s2member_during_check_ptag_level_access", get_defined_vars ());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
}
|
|
|
|
|
78 |
}
|
79 |
/**/
|
80 |
do_action ("ws_plugin__s2member_after_check_ptag_level_access", get_defined_vars ());
|
includes/classes/querys.inc.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
-
exit("Do not access this file directly.");
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_querys"))
|
21 |
{
|
@@ -52,13 +52,13 @@ if (!class_exists ("c_ws_plugin__s2member_querys"))
|
|
52 |
*/
|
53 |
public static function force_query_level_access (&$wp_query = FALSE)
|
54 |
{
|
55 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
56 |
do_action ("ws_plugin__s2member_before_force_query_level_access", get_defined_vars ());
|
57 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
58 |
/**/
|
59 |
c_ws_plugin__s2member_querys::query_level_access ($wp_query, true);
|
60 |
/**/
|
61 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
62 |
do_action ("ws_plugin__s2member_after_force_query_level_access", get_defined_vars ());
|
63 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
64 |
/**/
|
@@ -86,14 +86,14 @@ if (!class_exists ("c_ws_plugin__s2member_querys"))
|
|
86 |
static $initial_query = true; /* Tracks initial query. */
|
87 |
c_ws_plugin__s2member_querys::$current_wp_query = &$wp_query;
|
88 |
/**/
|
89 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
90 |
do_action ("ws_plugin__s2member_before_query_level_access", get_defined_vars ());
|
91 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
92 |
/**/
|
93 |
c_ws_plugin__s2member_querys::_query_level_access_sys ($wp_query); /* Systematics. */
|
94 |
/**/
|
95 |
-
remove_filter ("comment_feed_where", "c_ws_plugin__s2member_querys::_query_level_access_coms",
|
96 |
-
remove_filter ("wp_get_nav_menu_items", "c_ws_plugin__s2member_querys::_query_level_access_navs",
|
97 |
/**/
|
98 |
if (is_object ($wpdb) && is_object ($wp_query) && (($o = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["filter_wp_query"]) || $force))
|
99 |
{
|
@@ -108,11 +108,11 @@ if (!class_exists ("c_ws_plugin__s2member_querys"))
|
|
108 |
|| (($suppressing_filters !== "n/a") && (in_array ("all", $o) || in_array ("nav-menus", $o)) && in_array ("wp_get_nav_menu_items", ($callers = (isset ($callers) ? $callers : c_ws_plugin__s2member_utilities::callers ()))))/**/)
|
109 |
{
|
110 |
if (!$suppressing_filters && (in_array ("all", $o) || in_array ("comment-feeds", $o)) && $wp_query->is_feed () && $wp_query->is_comment_feed ())
|
111 |
-
add_filter ("comment_feed_where", "c_ws_plugin__s2member_querys::_query_level_access_coms",
|
112 |
/**/
|
113 |
if ($suppressing_filters !== "n/a" && (in_array ("all", $o) || in_array ("nav-menus", $o))) /* Suppression irrelevant here. */
|
114 |
if (in_array ("wp_get_nav_menu_items", ($callers = (isset ($callers) ? $callers : c_ws_plugin__s2member_utilities::callers ()))))
|
115 |
-
add_filter ("wp_get_nav_menu_items", "c_ws_plugin__s2member_querys::_query_level_access_navs",
|
116 |
/**/
|
117 |
if ((is_user_logged_in () && is_object ($user = wp_get_current_user ()) && ($user_id = $user->ID)) || !($user = false))
|
118 |
{
|
@@ -214,14 +214,14 @@ if (!class_exists ("c_ws_plugin__s2member_querys"))
|
|
214 |
}
|
215 |
}
|
216 |
/**/
|
217 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
218 |
do_action ("ws_plugin__s2member_during_query_level_access", get_defined_vars ());
|
219 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
220 |
}
|
221 |
}
|
222 |
}
|
223 |
/**/
|
224 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
225 |
do_action ("ws_plugin__s2member_after_query_level_access", get_defined_vars ());
|
226 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
227 |
/**/
|
@@ -245,7 +245,7 @@ if (!class_exists ("c_ws_plugin__s2member_querys"))
|
|
245 |
{
|
246 |
global $wpdb; /* Global database object reference. */
|
247 |
/**/
|
248 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
249 |
do_action ("_ws_plugin__s2member_before_query_level_access_sys", get_defined_vars ());
|
250 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
251 |
/**/
|
@@ -257,12 +257,12 @@ if (!class_exists ("c_ws_plugin__s2member_querys"))
|
|
257 |
$wp_query->set ("post__in", array_unique (array_diff ((array)$wp_query->get ("post__in"), $s)));
|
258 |
$wp_query->set ("post__not_in", array_unique (array_merge ((array)$wp_query->get ("post__not_in"), $s)));
|
259 |
/**/
|
260 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
261 |
do_action ("_ws_plugin__s2member_during_query_level_access_sys", get_defined_vars ());
|
262 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
263 |
}
|
264 |
/**/
|
265 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
266 |
do_action ("_ws_plugin__s2member_after_query_level_access_sys", get_defined_vars ());
|
267 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
268 |
/**/
|
@@ -296,13 +296,13 @@ if (!class_exists ("c_ws_plugin__s2member_querys"))
|
|
296 |
{
|
297 |
foreach ($items as $child_item_key => $child_item)
|
298 |
if (!empty ($child_item->menu_item_parent) && (int)$child_item->menu_item_parent === (int)$item->ID)
|
299 |
-
unset($items[$child_item_key]);
|
300 |
/**/
|
301 |
-
unset($items[$item_key]);
|
302 |
}
|
303 |
}
|
304 |
/**/
|
305 |
-
remove_filter ("wp_get_nav_menu_items", "c_ws_plugin__s2member_querys::_query_level_access_navs",
|
306 |
return apply_filters ("_ws_plugin__s2member_query_level_access_navs", $items, get_defined_vars ());
|
307 |
}
|
308 |
/**
|
@@ -329,7 +329,7 @@ if (!class_exists ("c_ws_plugin__s2member_querys"))
|
|
329 |
$cwhere .= " AND `" . $wpdb->comments . "`.`comment_post_ID` NOT IN('" . implode ("','", c_ws_plugin__s2member_utils_gets::get_singular_ids_in_terms ($terms)) . "')";
|
330 |
}
|
331 |
/**/
|
332 |
-
remove_filter ("comment_feed_where", "c_ws_plugin__s2member_querys::_query_level_access_coms",
|
333 |
return apply_filters ("_ws_plugin__s2member_query_level_access_coms", $cwhere, get_defined_vars ());
|
334 |
}
|
335 |
/**
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
+
exit ("Do not access this file directly.");
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_querys"))
|
21 |
{
|
52 |
*/
|
53 |
public static function force_query_level_access (&$wp_query = FALSE)
|
54 |
{
|
55 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
56 |
do_action ("ws_plugin__s2member_before_force_query_level_access", get_defined_vars ());
|
57 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
58 |
/**/
|
59 |
c_ws_plugin__s2member_querys::query_level_access ($wp_query, true);
|
60 |
/**/
|
61 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
62 |
do_action ("ws_plugin__s2member_after_force_query_level_access", get_defined_vars ());
|
63 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
64 |
/**/
|
86 |
static $initial_query = true; /* Tracks initial query. */
|
87 |
c_ws_plugin__s2member_querys::$current_wp_query = &$wp_query;
|
88 |
/**/
|
89 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
90 |
do_action ("ws_plugin__s2member_before_query_level_access", get_defined_vars ());
|
91 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
92 |
/**/
|
93 |
c_ws_plugin__s2member_querys::_query_level_access_sys ($wp_query); /* Systematics. */
|
94 |
/**/
|
95 |
+
remove_filter ("comment_feed_where", "c_ws_plugin__s2member_querys::_query_level_access_coms", 100, 2);
|
96 |
+
remove_filter ("wp_get_nav_menu_items", "c_ws_plugin__s2member_querys::_query_level_access_navs", 100);
|
97 |
/**/
|
98 |
if (is_object ($wpdb) && is_object ($wp_query) && (($o = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["filter_wp_query"]) || $force))
|
99 |
{
|
108 |
|| (($suppressing_filters !== "n/a") && (in_array ("all", $o) || in_array ("nav-menus", $o)) && in_array ("wp_get_nav_menu_items", ($callers = (isset ($callers) ? $callers : c_ws_plugin__s2member_utilities::callers ()))))/**/)
|
109 |
{
|
110 |
if (!$suppressing_filters && (in_array ("all", $o) || in_array ("comment-feeds", $o)) && $wp_query->is_feed () && $wp_query->is_comment_feed ())
|
111 |
+
add_filter ("comment_feed_where", "c_ws_plugin__s2member_querys::_query_level_access_coms", 100, 2);
|
112 |
/**/
|
113 |
if ($suppressing_filters !== "n/a" && (in_array ("all", $o) || in_array ("nav-menus", $o))) /* Suppression irrelevant here. */
|
114 |
if (in_array ("wp_get_nav_menu_items", ($callers = (isset ($callers) ? $callers : c_ws_plugin__s2member_utilities::callers ()))))
|
115 |
+
add_filter ("wp_get_nav_menu_items", "c_ws_plugin__s2member_querys::_query_level_access_navs", 100);
|
116 |
/**/
|
117 |
if ((is_user_logged_in () && is_object ($user = wp_get_current_user ()) && ($user_id = $user->ID)) || !($user = false))
|
118 |
{
|
214 |
}
|
215 |
}
|
216 |
/**/
|
217 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
218 |
do_action ("ws_plugin__s2member_during_query_level_access", get_defined_vars ());
|
219 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
220 |
}
|
221 |
}
|
222 |
}
|
223 |
/**/
|
224 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
225 |
do_action ("ws_plugin__s2member_after_query_level_access", get_defined_vars ());
|
226 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
227 |
/**/
|
245 |
{
|
246 |
global $wpdb; /* Global database object reference. */
|
247 |
/**/
|
248 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
249 |
do_action ("_ws_plugin__s2member_before_query_level_access_sys", get_defined_vars ());
|
250 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
251 |
/**/
|
257 |
$wp_query->set ("post__in", array_unique (array_diff ((array)$wp_query->get ("post__in"), $s)));
|
258 |
$wp_query->set ("post__not_in", array_unique (array_merge ((array)$wp_query->get ("post__not_in"), $s)));
|
259 |
/**/
|
260 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
261 |
do_action ("_ws_plugin__s2member_during_query_level_access_sys", get_defined_vars ());
|
262 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
263 |
}
|
264 |
/**/
|
265 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
266 |
do_action ("_ws_plugin__s2member_after_query_level_access_sys", get_defined_vars ());
|
267 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
268 |
/**/
|
296 |
{
|
297 |
foreach ($items as $child_item_key => $child_item)
|
298 |
if (!empty ($child_item->menu_item_parent) && (int)$child_item->menu_item_parent === (int)$item->ID)
|
299 |
+
unset ($items[$child_item_key]);
|
300 |
/**/
|
301 |
+
unset ($items[$item_key]);
|
302 |
}
|
303 |
}
|
304 |
/**/
|
305 |
+
remove_filter ("wp_get_nav_menu_items", "c_ws_plugin__s2member_querys::_query_level_access_navs", 100);
|
306 |
return apply_filters ("_ws_plugin__s2member_query_level_access_navs", $items, get_defined_vars ());
|
307 |
}
|
308 |
/**
|
329 |
$cwhere .= " AND `" . $wpdb->comments . "`.`comment_post_ID` NOT IN('" . implode ("','", c_ws_plugin__s2member_utils_gets::get_singular_ids_in_terms ($terms)) . "')";
|
330 |
}
|
331 |
/**/
|
332 |
+
remove_filter ("comment_feed_where", "c_ws_plugin__s2member_querys::_query_level_access_coms", 100, 2);
|
333 |
return apply_filters ("_ws_plugin__s2member_query_level_access_coms", $cwhere, get_defined_vars ());
|
334 |
}
|
335 |
/**
|
includes/classes/register-access.inc.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
-
exit("Do not access this file directly.");
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_register_access"))
|
21 |
{
|
@@ -42,7 +42,7 @@ if (!class_exists ("c_ws_plugin__s2member_register_access"))
|
|
42 |
*/
|
43 |
public static function register_link_gen ($subscr_gateway = FALSE, $subscr_id = FALSE, $custom = FALSE, $item_number = FALSE, $shrink = TRUE)
|
44 |
{
|
45 |
-
eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
46 |
do_action ("ws_plugin__s2member_before_register_link_gen", get_defined_vars ());
|
47 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
48 |
/**/
|
@@ -51,13 +51,10 @@ if (!class_exists ("c_ws_plugin__s2member_register_access"))
|
|
51 |
$register = c_ws_plugin__s2member_utils_encryption::encrypt ("subscr_gateway_subscr_id_custom_item_number_time:.:|:.:" . $subscr_gateway . ":.:|:.:" . $subscr_id . ":.:|:.:" . $custom . ":.:|:.:" . $item_number . ":.:|:.:" . strtotime ("now"));
|
52 |
$register_link = site_url ("/?s2member_register=" . urlencode ($register));
|
53 |
/**/
|
54 |
-
if ($shrink && ($
|
55 |
-
return apply_filters ("ws_plugin__s2member_register_link_gen", $
|
56 |
/**/
|
57 |
-
else
|
58 |
-
return apply_filters ("ws_plugin__s2member_register_link_gen", $tinyurl . "#" . $_SERVER["HTTP_HOST"], get_defined_vars ());
|
59 |
-
/**/
|
60 |
-
else /* Else use the long one; tinyURL will fail when/if their server is down periodically. */
|
61 |
return apply_filters ("ws_plugin__s2member_register_link_gen", $register_link, get_defined_vars ());
|
62 |
}
|
63 |
/**/
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
+
exit ("Do not access this file directly.");
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_register_access"))
|
21 |
{
|
42 |
*/
|
43 |
public static function register_link_gen ($subscr_gateway = FALSE, $subscr_id = FALSE, $custom = FALSE, $item_number = FALSE, $shrink = TRUE)
|
44 |
{
|
45 |
+
eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
|
46 |
do_action ("ws_plugin__s2member_before_register_link_gen", get_defined_vars ());
|
47 |
unset ($__refs, $__v); /* Unset defined __refs, __v. */
|
48 |
/**/
|
51 |
$register = c_ws_plugin__s2member_utils_encryption::encrypt ("subscr_gateway_subscr_id_custom_item_number_time:.:|:.:" . $subscr_gateway . ":.:|:.:" . $subscr_id . ":.:|:.:" . $custom . ":.:|:.:" . $item_number . ":.:|:.:" . strtotime ("now"));
|
52 |
$register_link = site_url ("/?s2member_register=" . urlencode ($register));
|
53 |
/**/
|
54 |
+
if ($shrink && ($shorter_url = c_ws_plugin__s2member_utils_urls::shorten ($register_link)))
|
55 |
+
return apply_filters ("ws_plugin__s2member_register_link_gen", $shorter_url . "#" . $_SERVER["HTTP_HOST"], get_defined_vars ());
|
56 |
/**/
|
57 |
+
else /* Else use the long one; shortening may fail when/if an API server is down periodically. */
|
|
|
|
|
|
|
58 |
return apply_filters ("ws_plugin__s2member_register_link_gen", $register_link, get_defined_vars ());
|
59 |
}
|
60 |
/**/
|
includes/classes/ruris-sp.inc.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
-
exit("Do not access this file directly.");
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_ruris_sp"))
|
21 |
{
|
@@ -46,25 +46,29 @@ if (!class_exists ("c_ws_plugin__s2member_ruris_sp"))
|
|
46 |
/**/
|
47 |
$excluded = apply_filters ("ws_plugin__s2member_check_specific_ruri_level_access_excluded", false, get_defined_vars ());
|
48 |
/**/
|
49 |
-
if (!$excluded && !empty ($uri) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
50 |
{
|
51 |
-
|
52 |
-
/**/
|
53 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $uri) && (!$check_user || !$user || !current_user_can ("access_s2member_level0")))
|
54 |
-
return apply_filters ("ws_plugin__s2member_check_specific_ruri_level_access", array ("s2member_level_req" => 0), get_defined_vars ());
|
55 |
-
/**/
|
56 |
-
else if (!c_ws_plugin__s2member_systematics_sp::is_systematic_use_specific_page (null, $uri)) /* Never restrict Systematics. However, there is 1 exception ^. */
|
57 |
{
|
58 |
-
|
|
|
|
|
|
|
|
|
|
|
59 |
{
|
60 |
-
|
61 |
-
|
62 |
-
if ($
|
63 |
-
|
|
|
|
|
|
|
|
|
64 |
}
|
|
|
|
|
65 |
}
|
66 |
-
/**/
|
67 |
-
do_action ("ws_plugin__s2member_during_check_specific_ruri_level_access", get_defined_vars ());
|
68 |
}
|
69 |
/**/
|
70 |
return apply_filters ("ws_plugin__s2member_check_specific_ruri_level_access", null, get_defined_vars ());
|
15 |
* @since 3.5
|
16 |
*/
|
17 |
if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
|
18 |
+
exit ("Do not access this file directly.");
|
19 |
/**/
|
20 |
if (!class_exists ("c_ws_plugin__s2member_ruris_sp"))
|
21 |
{
|
46 |
/**/
|
47 |
$excluded = apply_filters ("ws_plugin__s2member_check_specific_ruri_level_access_excluded", false, get_defined_vars ());
|
48 |
/**/
|
49 |
+
if (!$excluded && !empty ($uri) && is_string ($uri) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])
|
50 |
{
|
51 |
+
if (!c_ws_plugin__s2member_systematics_sp::is_wp_systematic_use_specific_page (null, $uri)) /* Do NOT touch WordPress® Systematics. */
|
|
|
|
|
|
|
|
|
|
|
52 |
{
|
53 |
+
$user = (is_user_logged_in () && is_object ($user = wp_get_current_user ()) && !empty ($user->ID)) ? $user : false; /* Current User's object. */
|
54 |
+
/**/
|
55 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $uri) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level0")))
|
56 |
+
return apply_filters ("ws_plugin__s2member_check_specific_ruri_level_access", array ("s2member_level_req" => 0), get_defined_vars ());
|
57 |
+
/**/
|
58 |
+
else if (!c_ws_plugin__s2member_systematics_sp::is_systematic_use_specific_page (null, $uri)) /* Never restrict Systematics. However, there is 1 exception above. */
|
59 |
{
|
60 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* URIs. Go through each Level. */
|
61 |
+
{
|
62 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"]) /* URIs configured at this Level? */
|
63 |
+
/**/
|
64 |
+
foreach (preg_split ("/[\r\n\t]+/", c_ws_plugin__s2member_ruris::fill_ruri_level_access_rc_vars ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"], $user)) as $str)
|
65 |
+
if ($str && preg_match ("/" . preg_quote ($str, "/") . "/", $uri) && (!$check_user || !$user || !$user->has_cap ("access_s2member_level" . $n)))
|
66 |
+
return apply_filters ("ws_plugin__s2member_check_specific_ruri_level_access", array ("s2member_level_req" => $n), get_defined_vars ());
|
67 |
+
}
|
68 |
}
|
69 |
+
/**/
|
70 |
+
do_action ("ws_plugin__s2member_during_check_specific_ruri_level_access", get_defined_vars ());
|
71 |
}
|
|
|
|
|
72 |
}
|
73 |
/**/
|
74 |
return apply_filters ("ws_plugin__s2member_check_specific_ruri_level_access", null, get_defined_vars ());
|
includes/classes/ruris.inc.php
CHANGED
@@ -43,28 +43,27 @@ if (!class_exists ("c_ws_plugin__s2member_ruris"))
|
|
43 |
/**/
|
44 |
if (!$excluded && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"]) /* Has it been excluded? */
|
45 |
{
|
46 |
-
|
47 |
-
/**/
|
48 |
-
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) !== "nill" && (!$user || !current_user_can ("access_s2member_level0")))
|
49 |
{
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
{
|
57 |
-
|
58 |
-
|
59 |
-
if ($
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
|
|
64 |
}
|
|
|
|
|
65 |
}
|
66 |
-
/**/
|
67 |
-
do_action ("ws_plugin__s2member_during_check_ruri_level_access", get_defined_vars ());
|
68 |
}
|
69 |
/**/
|
70 |
do_action ("ws_plugin__s2member_after_check_ruri_level_access", get_defined_vars ());
|
43 |
/**/
|
44 |
if (!$excluded && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"]) /* Has it been excluded? */
|
45 |
{
|
46 |
+
if (!c_ws_plugin__s2member_systematics::is_wp_systematic_use_page ()) /* Do NOT touch WordPress® Systematics. This excludes all WordPress® Systematics. */
|
|
|
|
|
47 |
{
|
48 |
+
$user = (is_user_logged_in () && is_object ($user = wp_get_current_user ()) && !empty ($user->ID)) ? $user : false; /* Current User's object. */
|
49 |
+
/**/
|
50 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && ($login_redirection_uri = c_ws_plugin__s2member_login_redirects::login_redirection_uri ($user, "root-returns-false")) && preg_match ("/^" . preg_quote ($login_redirection_uri, "/") . "$/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level0")))
|
51 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "ruri-" . base64_encode ($_SERVER["REQUEST_URI"]), "s2member_level_req" => "0")), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
52 |
+
/**/
|
53 |
+
else if (!c_ws_plugin__s2member_systematics::is_systematic_use_page ()) /* Do NOT protect Systematics. However, there is 1 exception above ^. */
|
54 |
{
|
55 |
+
for ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--) /* URIs. Go through each Level. */
|
56 |
+
{
|
57 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"]) /* URIs configured at this Level? */
|
58 |
+
/**/
|
59 |
+
foreach (preg_split ("/[\r\n\t]+/", c_ws_plugin__s2member_ruris::fill_ruri_level_access_rc_vars ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"], $user)) as $str)
|
60 |
+
if ($str && preg_match ("/" . preg_quote ($str, "/") . "/", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level" . $n)))
|
61 |
+
wp_redirect (add_query_arg (urlencode_deep (array ("s2member_seeking" => "ruri-" . base64_encode ($_SERVER["REQUEST_URI"]), "s2member_level_req" => $n)), get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"])), apply_filters ("ws_plugin__s2member_content_redirect_status", 301, get_defined_vars ())) . exit ();
|
62 |
+
}
|
63 |
}
|
64 |
+
/**/
|
65 |
+
do_action ("ws_plugin__s2member_during_check_ruri_level_access", get_defined_vars ());
|
66 |
}
|
|
|
|
|
67 |
}
|
68 |
/**/
|
69 |
do_action ("ws_plugin__s2member_after_check_ruri_level_access", get_defined_vars ());
|
includes/classes/security.inc.php
CHANGED
@@ -28,72 +28,56 @@ if (!class_exists ("c_ws_plugin__s2member_security"))
|
|
28 |
class c_ws_plugin__s2member_security
|
29 |
{
|
30 |
/**
|
31 |
-
* s2Member's Security Gate ( protects WordPress®
|
32 |
*
|
33 |
* @package s2Member\Security
|
34 |
* @since 3.5
|
35 |
*
|
36 |
-
* @attaches-to: ``add_action("
|
37 |
*
|
38 |
-
* @
|
39 |
-
* @return null
|
40 |
*/
|
41 |
-
public static function
|
42 |
{
|
43 |
-
do_action ("
|
44 |
/**/
|
45 |
-
|
|
|
46 |
/**/
|
47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
/**/
|
49 |
return; /* Return for uniformity. */
|
50 |
}
|
51 |
/**
|
52 |
-
* s2Member's Security Gate ( protects WordPress®
|
53 |
*
|
54 |
* @package s2Member\Security
|
55 |
* @since 3.5
|
56 |
*
|
57 |
-
* @attaches-to: ``add_action("
|
58 |
*
|
59 |
-
* @
|
|
|
60 |
*/
|
61 |
-
public static function
|
62 |
{
|
63 |
-
do_action ("
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
if (is_category ()) /* Categories. */
|
69 |
-
c_ws_plugin__s2member_catgs::check_catg_level_access ();
|
70 |
-
/*
|
71 |
-
Tag Level Restrictions ( inclusively ).
|
72 |
-
- Including URI protections too.
|
73 |
-
*/
|
74 |
-
else if (is_tag ()) /* Tags. */
|
75 |
-
c_ws_plugin__s2member_ptags::check_ptag_level_access ();
|
76 |
-
/*
|
77 |
-
Post Level Restrictions ( inclusively, even Custom Post Types ).
|
78 |
-
- Including Category, Tag, URI, Capability, and Specifics too.
|
79 |
-
*/
|
80 |
-
else if (is_single ()) /* Posts & Custom Types. */
|
81 |
-
c_ws_plugin__s2member_posts::check_post_level_access ();
|
82 |
-
/*
|
83 |
-
Page Level Restrictions ( inclusively ).
|
84 |
-
- Including Category, Tag, URI, Capability, and Specifics too.
|
85 |
-
*/
|
86 |
-
else if (is_page ()) /* Pages. */
|
87 |
-
c_ws_plugin__s2member_pages::check_page_level_access ();
|
88 |
-
/*
|
89 |
-
Else just apply URI Level Restrictions ( only URIs ).
|
90 |
-
*/
|
91 |
-
else /* This optimizes things nicely. */
|
92 |
-
c_ws_plugin__s2member_ruris::check_ruri_level_access ();
|
93 |
-
/*
|
94 |
-
Hook after Security Gate.
|
95 |
-
*/
|
96 |
-
do_action ("ws_plugin__s2member_after_security_gate", get_defined_vars ());
|
97 |
/**/
|
98 |
return; /* Return for uniformity. */
|
99 |
}
|
28 |
class c_ws_plugin__s2member_security
|
29 |
{
|
30 |
/**
|
31 |
+
* s2Member's Security Gate ( protects WordPress® content ).
|
32 |
*
|
33 |
* @package s2Member\Security
|
34 |
* @since 3.5
|
35 |
*
|
36 |
+
* @attaches-to: ``add_action("wp");``
|
37 |
*
|
38 |
+
* @return null May redirect a browser *(exiting script execution)*, when/if content is NOT available to the current User/Member.
|
|
|
39 |
*/
|
40 |
+
public static function security_gate () /* s2Member's Security Gate. */
|
41 |
{
|
42 |
+
do_action ("ws_plugin__s2member_before_security_gate", get_defined_vars ());
|
43 |
/**/
|
44 |
+
if (is_category ()) /* Categories & other inclusives. */
|
45 |
+
c_ws_plugin__s2member_catgs::check_catg_level_access ();
|
46 |
/**/
|
47 |
+
else if (is_tag ()) /* Post/Page Tags & other inclusives. */
|
48 |
+
c_ws_plugin__s2member_ptags::check_ptag_level_access ();
|
49 |
+
/**/
|
50 |
+
else if (is_single ()) /* All Posts & other inclusives. */
|
51 |
+
c_ws_plugin__s2member_posts::check_post_level_access ();
|
52 |
+
/**/
|
53 |
+
else if (is_page ()) /* All Pages & other inclusives. */
|
54 |
+
c_ws_plugin__s2member_pages::check_page_level_access ();
|
55 |
+
/**/
|
56 |
+
else /* Else, we simply look at URIs & other inclusives. */
|
57 |
+
c_ws_plugin__s2member_ruris::check_ruri_level_access ();
|
58 |
+
/**/
|
59 |
+
do_action ("ws_plugin__s2member_after_security_gate", get_defined_vars ());
|
60 |
/**/
|
61 |
return; /* Return for uniformity. */
|
62 |
|