s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) - Version 130213

Version Description

= v130213 = (Maintenance Release) Upgrade immediately.

Download this release

Release Info

Developer WebSharks
Plugin Icon 128x128 s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members)
Version 130213
Comparing to
See all releases

Code changes from version 130207 to 130213

Files changed (256) hide show
  1. checksum.txt +1 -1
  2. includes/classes/admin-css-js-in.inc.php +34 -36
  3. includes/classes/admin-css-js.inc.php +4 -4
  4. includes/classes/admin-lockouts.inc.php +27 -30
  5. includes/classes/admin-notices.inc.php +49 -54
  6. includes/classes/auto-eots.inc.php +90 -92
  7. includes/classes/brute-force.inc.php +18 -20
  8. includes/classes/cache.inc.php +19 -23
  9. includes/classes/catgs-sp.inc.php +23 -25
  10. includes/classes/catgs.inc.php +23 -26
  11. includes/classes/check-activation.inc.php +4 -5
  12. includes/classes/constants.inc.php +70 -70
  13. includes/classes/cron-jobs-in.inc.php +13 -14
  14. includes/classes/cron-jobs.inc.php +4 -4
  15. includes/classes/css-js-in.inc.php +52 -57
  16. includes/classes/css-js-themes.inc.php +20 -23
  17. includes/classes/css-js.inc.php +2 -2
  18. includes/classes/custom-reg-fields-4bp.inc.php +100 -103
  19. includes/classes/custom-reg-fields.inc.php +147 -167
  20. includes/classes/email-configs.inc.php +55 -56
  21. includes/classes/files-in.inc.php +298 -284
  22. includes/classes/files.inc.php +65 -65
  23. includes/classes/installation.inc.php +66 -66
  24. includes/classes/ip-restrictions.inc.php +87 -87
  25. includes/classes/labels.inc.php +10 -10
  26. includes/classes/list-servers.inc.php +150 -146
  27. includes/classes/login-customizations.inc.php +56 -44
  28. includes/classes/login-redirects-r.inc.php +11 -11
  29. includes/classes/login-redirects.inc.php +54 -52
  30. includes/classes/menu-pages-rs.inc.php +15 -15
  31. includes/classes/menu-pages.inc.php +498 -263
  32. includes/classes/meta-box-saves.inc.php +43 -43
  33. includes/classes/meta-box-security.inc.php +49 -49
  34. includes/classes/meta-boxes.inc.php +7 -7
  35. includes/classes/mms-patches.inc.php +37 -37
  36. includes/classes/mo-page-in.inc.php +17 -17
  37. includes/classes/mo-page.inc.php +3 -3
  38. includes/classes/no-cache.inc.php +37 -37
  39. includes/classes/op-notices.inc.php +42 -42
  40. includes/classes/option-forces.inc.php +49 -49
  41. includes/classes/pages-sp.inc.php +34 -34
  42. includes/classes/pages.inc.php +34 -34
  43. includes/classes/paypal-notify-in-cart.inc.php +27 -28
  44. includes/classes/paypal-notify-in-express-checkout.inc.php +26 -26
  45. includes/classes/paypal-notify-in-rec-profile-creation-w-level.inc.php +28 -28
  46. includes/classes/paypal-notify-in-send-money.inc.php +26 -26
  47. includes/classes/paypal-notify-in-sp-refund-reversal.inc.php +42 -42
  48. includes/classes/paypal-notify-in-subscr-modify-w-level.inc.php +92 -91
  49. includes/classes/paypal-notify-in-subscr-or-rp-cancellation-w-level.inc.php +63 -64
  50. includes/classes/paypal-notify-in-subscr-or-rp-eots-w-level.inc.php +166 -166
  51. includes/classes/paypal-notify-in-subscr-or-rp-payment-failed-w-level.inc.php +28 -28
  52. includes/classes/paypal-notify-in-subscr-or-rp-payment-w-level.inc.php +72 -72
  53. includes/classes/paypal-notify-in-subscr-or-wa-w-level.inc.php +192 -216
  54. includes/classes/paypal-notify-in-virtual-terminal.inc.php +26 -26
  55. includes/classes/paypal-notify-in-wa-ccaps-wo-level.inc.php +76 -76
  56. includes/classes/paypal-notify-in-web-accept-sp.inc.php +72 -72
  57. includes/classes/paypal-notify-in.inc.php +76 -75
  58. includes/classes/paypal-notify.inc.php +3 -3
  59. includes/classes/paypal-return-in-no-tx-data.inc.php +36 -32
  60. includes/classes/paypal-return-in-proxy-ty-email.inc.php +34 -29
  61. includes/classes/paypal-return-in-proxy-x-preview.inc.php +33 -28
  62. includes/classes/paypal-return-in-subscr-modify-w-level.inc.php +100 -103
  63. includes/classes/paypal-return-in-subscr-or-wa-w-level.inc.php +163 -171
  64. includes/classes/paypal-return-in-wa-ccaps-wo-level.inc.php +78 -82
  65. includes/classes/paypal-return-in-web-accept-sp.inc.php +55 -58
  66. includes/classes/paypal-return-in.inc.php +72 -69
  67. includes/classes/paypal-return.inc.php +3 -3
  68. includes/classes/paypal-utilities.inc.php +164 -175
  69. includes/classes/posts-sp.inc.php +34 -34
  70. includes/classes/posts.inc.php +35 -35
  71. includes/classes/profile-in.inc.php +102 -102
  72. includes/classes/profile-mods-4bp-in.inc.php +31 -31
  73. includes/classes/profile-mods-4bp.inc.php +4 -4
  74. includes/classes/profile-mods-in.inc.php +43 -43
  75. includes/classes/profile-mods.inc.php +3 -3
  76. includes/classes/profile.inc.php +3 -3
  77. includes/classes/ptags-sp.inc.php +33 -33
  78. includes/classes/ptags.inc.php +24 -24
  79. includes/classes/querys.inc.php +90 -90
  80. includes/classes/readmes.inc.php +68 -68
  81. includes/classes/register-access.inc.php +23 -23
  82. includes/classes/register-in.inc.php +21 -21
  83. includes/classes/register.inc.php +3 -3
  84. includes/classes/registration-times.inc.php +18 -18
  85. includes/classes/registrations.inc.php +326 -329
  86. includes/classes/return-templates.inc.php +15 -15
  87. includes/classes/roles-caps.inc.php +38 -38
  88. includes/classes/ruris-sp.inc.php +19 -19
  89. includes/classes/ruris.inc.php +30 -30
  90. includes/classes/s-badge-status-in.inc.php +20 -18
  91. includes/classes/s-badge-status.inc.php +3 -3
  92. includes/classes/sc-files-in.inc.php +31 -31
  93. includes/classes/sc-files.inc.php +2 -2
  94. includes/classes/sc-gets-in.inc.php +16 -16
  95. includes/classes/sc-gets.inc.php +2 -2
  96. includes/classes/sc-if-conds-in.inc.php +61 -61
  97. includes/classes/sc-if-conds.inc.php +3 -3
  98. includes/classes/sc-keys-in.inc.php +14 -14
  99. includes/classes/sc-keys.inc.php +2 -2
  100. includes/classes/sc-paypal-button-e.inc.php +31 -31
  101. includes/classes/sc-paypal-button-in.inc.php +82 -82
  102. includes/classes/sc-paypal-button.inc.php +2 -2
  103. includes/classes/sc-profile-in.inc.php +109 -110
  104. includes/classes/sc-profile.inc.php +2 -2
  105. includes/classes/sc-s-badge-in.inc.php +11 -11
  106. includes/classes/sc-s-badge.inc.php +2 -2
  107. includes/classes/security.inc.php +24 -24
  108. includes/classes/sp-access.inc.php +45 -46
  109. includes/classes/ssl-in.inc.php +34 -35
  110. includes/classes/ssl.inc.php +13 -13
  111. includes/classes/systematics-sp.inc.php +16 -16
  112. includes/classes/systematics.inc.php +24 -24
  113. includes/classes/tracking-codes.inc.php +55 -55
  114. includes/classes/tracking-cookies-in.inc.php +34 -26
  115. includes/classes/tracking-cookies.inc.php +4 -4
  116. includes/classes/translations.inc.php +27 -28
  117. includes/classes/user-access.inc.php +17 -17
  118. includes/classes/user-deletions.inc.php +74 -74
  119. includes/classes/user-new-in.inc.php +126 -126
  120. includes/classes/user-new.inc.php +9 -9
  121. includes/classes/user-notes.inc.php +21 -21
  122. includes/classes/user-securities.inc.php +23 -23
  123. includes/classes/users-list-in.inc.php +211 -211
  124. includes/classes/users-list.inc.php +68 -57
  125. includes/classes/utilities.inc.php +41 -26
  126. includes/classes/utils-arrays.inc.php +25 -25
  127. includes/classes/utils-captchas.inc.php +7 -7
  128. includes/classes/utils-conds.inc.php +20 -20
  129. includes/classes/utils-css.inc.php +3 -3
  130. includes/classes/utils-cur.inc.php +32 -32
  131. includes/classes/utils-dirs.inc.php +38 -38
  132. includes/classes/utils-encryption.inc.php +26 -26
  133. includes/classes/utils-forms.inc.php +10 -11
  134. includes/classes/utils-gets.inc.php +65 -66
  135. includes/classes/utils-html.inc.php +19 -19
  136. includes/classes/utils-logs.inc.php +62 -18
  137. includes/classes/utils-s2o.inc.php +14 -14
  138. includes/classes/utils-strings.inc.php +56 -56
  139. includes/classes/utils-time.inc.php +77 -77
  140. includes/classes/utils-urls.inc.php +55 -52
  141. includes/classes/utils-users.inc.php +77 -83
  142. includes/classes/wp-footer.inc.php +7 -8
  143. includes/codes.inc.php +3 -3
  144. includes/funcs.inc.php +1 -2
  145. includes/functions/api-functions.inc.php +252 -215
  146. includes/functions/class-autoloader.inc.php +20 -22
  147. includes/functions/deprecated.inc.php +1 -1
  148. includes/functions/pluggables.inc.php +6 -6
  149. includes/hooks.inc.php +43 -38
  150. includes/jquery/jquery.json-ps/jquery.json-ps.js +3 -4
  151. includes/jquery/jquery.sprintf/jquery.sprintf.js +15 -15
  152. includes/jquery/jquery.ui-effects/jquery.ui-effects.js +1 -1
  153. includes/menu-pages/api-ops.inc.php +274 -274
  154. includes/menu-pages/code-samples/api-mop-vars-e.x-php +11 -11
  155. includes/menu-pages/code-samples/api-mop-vars-o.x-php +10 -10
  156. includes/menu-pages/code-samples/api-mop-vars.x-php +16 -16
  157. includes/menu-pages/code-samples/current-user-access-label.x-php +1 -1
  158. includes/menu-pages/code-samples/current-user-custom.x-php +1 -1
  159. includes/menu-pages/code-samples/current-user-display-name.x-php +1 -1
  160. includes/menu-pages/code-samples/current-user-downloads-allowed-days.x-php +2 -2
  161. includes/menu-pages/code-samples/current-user-downloads-allowed.x-php +1 -1
  162. includes/menu-pages/code-samples/current-user-downloads-currently.x-php +1 -1
  163. includes/menu-pages/code-samples/current-user-email.x-php +1 -1
  164. includes/menu-pages/code-samples/current-user-first-name.x-php +1 -1
  165. includes/menu-pages/code-samples/current-user-id.x-php +1 -1
  166. includes/menu-pages/code-samples/current-user-ip.x-php +1 -1
  167. includes/menu-pages/code-samples/current-user-last-name.x-php +1 -1
  168. includes/menu-pages/code-samples/current-user-login-counter.x-php +1 -1
  169. includes/menu-pages/code-samples/current-user-login.x-php +1 -1
  170. includes/menu-pages/code-samples/current-user-paid-registration-days.x-php +1 -1
  171. includes/menu-pages/code-samples/current-user-paid-registration-time.x-php +1 -1
  172. includes/menu-pages/code-samples/current-user-registration-days.x-php +2 -2
  173. includes/menu-pages/code-samples/current-user-registration-ip.x-php +1 -1
  174. includes/menu-pages/code-samples/current-user-registration-time.x-php +1 -1
  175. includes/menu-pages/code-samples/current-user-subscr-gateway.x-php +2 -2
  176. includes/menu-pages/code-samples/current-user-subscr-id.x-php +1 -1
  177. includes/menu-pages/code-samples/current-user-subscr-or-wp-id.x-php +1 -1
  178. includes/menu-pages/code-samples/current-user-value-for-pp-on0-os0-on1-os1.x-php +1 -1
  179. includes/menu-pages/code-samples/custom-queries-loop.x-php +1 -1
  180. includes/menu-pages/code-samples/custom-queries.x-php +1 -1
  181. includes/menu-pages/code-samples/file-download-inline-extensions.x-php +1 -1
  182. includes/menu-pages/code-samples/jwplayer-standard-mp4.x-php +3 -3
  183. includes/menu-pages/code-samples/jwplayer-streaming-mp4-sca.x-php +7 -7
  184. includes/menu-pages/code-samples/jwplayer-streaming-mp4-webm.x-php +5 -5
  185. includes/menu-pages/code-samples/jwplayer-streaming-mp4.x-php +4 -4
  186. includes/menu-pages/code-samples/jwplayer-v5-standard-mp4.x-php +10 -10
  187. includes/menu-pages/code-samples/jwplayer-v5-streaming-mp4-sca.x-php +12 -12
  188. includes/menu-pages/code-samples/jwplayer-v5-streaming-mp4-webm.x-php +12 -12
  189. includes/menu-pages/code-samples/jwplayer-v5-streaming-mp4.x-php +9 -9
  190. includes/menu-pages/code-samples/leveln-label.x-php +1 -1
  191. includes/menu-pages/code-samples/paypal-api-endpoint.x-php +1 -1
  192. includes/menu-pages/code-samples/paypal-api-password.x-php +1 -1
  193. includes/menu-pages/code-samples/paypal-api-signature.x-php +1 -1
  194. includes/menu-pages/code-samples/paypal-api-username.x-php +1 -1
  195. includes/menu-pages/code-samples/paypal-business.x-php +1 -1
  196. includes/menu-pages/code-samples/paypal-endpoint.x-php +1 -1
  197. includes/menu-pages/code-samples/paypal-notify-url.x-php +1 -1
  198. includes/menu-pages/code-samples/paypal-pdt-identity-token.x-php +1 -1
  199. includes/menu-pages/code-samples/paypal-return-url.x-php +1 -1
  200. includes/menu-pages/code-samples/reg-email-from-email.x-php +1 -1
  201. includes/menu-pages/code-samples/reg-email-from-name.x-php +1 -1
  202. includes/menu-pages/code-samples/s2-conditional-supplements-2.x-php +1 -1
  203. includes/menu-pages/code-samples/s2-conditional-supplements-3.x-php +5 -5
  204. includes/menu-pages/code-samples/s2member-paid-registration-time-examples.x-php +2 -2
  205. includes/menu-pages/code-samples/s2member-paid-registration-time.x-php +2 -2
  206. includes/menu-pages/code-samples/sc-s2-conditional-supplements-1-farm.x-php +1 -1
  207. includes/menu-pages/code-samples/sc-s2-conditional-supplements-1.x-php +2 -2
  208. includes/menu-pages/code-samples/sc-s2-conditional-supplements-3-farm.x-php +5 -5
  209. includes/menu-pages/code-samples/sc-s2-conditional-supplements-3.x-php +5 -5
  210. includes/menu-pages/code-samples/version.x-php +2 -2
  211. includes/menu-pages/down-ops.inc.php +269 -269
  212. includes/menu-pages/els-ops.inc.php +100 -100
  213. includes/menu-pages/gen-ops.inc.php +422 -399
  214. includes/menu-pages/info.inc.php +18 -18
  215. includes/menu-pages/integrations.inc.php +28 -26
  216. includes/menu-pages/js-c-warning.inc.php +4 -4
  217. includes/menu-pages/logs.inc.php +353 -0
  218. includes/menu-pages/menu-pages-min.css +0 -1
  219. includes/menu-pages/menu-pages-s-min.js +1 -1
  220. includes/menu-pages/menu-pages-s.css +2 -2
  221. includes/menu-pages/menu-pages-s.js +277 -312
  222. includes/menu-pages/menu-pages.css +10 -10
  223. includes/menu-pages/menu-pages.js +40 -52
  224. includes/menu-pages/mms-ops.inc.php +110 -110
  225. includes/menu-pages/paypal-buttons.inc.php +175 -175
  226. includes/menu-pages/paypal-ops.inc.php +232 -231
  227. includes/menu-pages/res-ops.inc.php +193 -174
  228. includes/menu-pages/scripting.inc.php +501 -490
  229. includes/menu-pages/start.inc.php +174 -98
  230. includes/menu-pages/trk-ops.inc.php +165 -165
  231. includes/menu-pages/updates.inc.php +20 -19
  232. includes/s2member-min.js +1 -1
  233. includes/s2member.css +25 -25
  234. includes/s2member.js +109 -109
  235. includes/syscon.inc.php +149 -146
  236. includes/templates/badges/s-badge.php +1 -1
  237. includes/templates/buttons/paypal-ccaps-checkout-button.php +1 -1
  238. includes/templates/buttons/paypal-checkout-button.php +1 -1
  239. includes/templates/buttons/paypal-sp-checkout-button.php +1 -1
  240. includes/templates/cfg-files/s2member-files-no-gzip.php +5 -4
  241. includes/templates/cfg-files/s2member-files.php +11 -11
  242. includes/templates/cfg-files/s2o-mu-plugins.php +4 -4
  243. includes/templates/cfg-files/s2o-nw-plugins.php +7 -7
  244. includes/templates/cfg-files/s2o-st-plugins.php +7 -7
  245. includes/templates/cfg-files/s2o-th-funcs.php +1 -1
  246. includes/templates/options/paypal-membership-ccap-terms.php +2 -2
  247. includes/templates/options/paypal-membership-regular-terms.php +48 -47
  248. includes/templates/options/paypal-sp-hours.php +24 -24
  249. includes/templates/returns/default-return.php +9 -9
  250. includes/translations/s2member.pot +987 -979
  251. includes/translations/translators.txt +1 -1
  252. licensing/license.txt +2 -2
  253. readme-ms.txt +1 -1
  254. readme.txt +51 -15
  255. s2member-o.php +3 -3
  256. s2member.php +6 -6
checksum.txt CHANGED
@@ -1 +1 @@
1
- e4b87aec062b10f365e58c7d68c72229
1
+ d5307fe33825c3590ddb8e4809996e75
includes/classes/admin-css-js-in.inc.php CHANGED
@@ -1,10 +1,10 @@
1
<?php
2
/**
3
- * Administrative CSS/JS for menu pages ( inner processing routines ).
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
- * ( coded in the USA )
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
@@ -16,11 +16,11 @@
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_admin_css_js_in"))
21
{
22
/**
23
- * Administrative CSS/JS for menu pages ( inner processing routines ).
24
*
25
* @package s2Member\Admin_CSS_JS
26
* @since 3.5
@@ -40,35 +40,34 @@ if(!class_exists("c_ws_plugin__s2member_admin_css_js_in"))
40
public static function menu_pages_css()
41
{
42
do_action("ws_plugin__s2member_before_menu_pages_css", get_defined_vars());
43
- /**/
44
if(!empty($_GET["ws_plugin__s2member_menu_pages_css"]) && is_user_logged_in() && current_user_can("create_users"))
45
{
46
- status_header(200); /* 200 OK status header. */
47
- /**/
48
- header("Content-Type: text/css; charset=utf-8");
49
header("Expires: ".gmdate("D, d M Y H:i:s", strtotime("-1 week"))." GMT");
50
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
51
header("Cache-Control: no-cache, must-revalidate, max-age=0");
52
header("Pragma: no-cache");
53
- /**/
54
- eval('while (@ob_end_clean ());'); /* Clean buffers. */
55
- /**/
56
$u = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"];
57
$i = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]."/images";
58
- /**/
59
ob_start("c_ws_plugin__s2member_utils_css::compress_css");
60
- /**/
61
include_once dirname(dirname(__FILE__))."/menu-pages/menu-pages.css";
62
- /**/
63
- echo "\n"; /* Add a line break before inclusion of this file. */
64
- /**/
65
@include_once dirname(dirname(__FILE__))."/menu-pages/menu-pages-s.css";
66
- /**/
67
do_action("ws_plugin__s2member_during_menu_pages_css", get_defined_vars());
68
- /**/
69
- exit(); /* Clean exit. */
70
}
71
- /**/
72
do_action("ws_plugin__s2member_after_menu_pages_css", get_defined_vars());
73
}
74
/**
@@ -84,37 +83,36 @@ if(!class_exists("c_ws_plugin__s2member_admin_css_js_in"))
84
public static function menu_pages_js()
85
{
86
do_action("ws_plugin__s2member_before_menu_pages_js", get_defined_vars());
87
- /**/
88
if(!empty($_GET["ws_plugin__s2member_menu_pages_js"]) && is_user_logged_in() && current_user_can("create_users"))
89
{
90
- status_header(200); /* 200 OK status header. */
91
- /**/
92
- header("Content-Type: application/x-javascript; charset=utf-8");
93
header("Expires: ".gmdate("D, d M Y H:i:s", strtotime("-1 week"))." GMT");
94
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
95
header("Cache-Control: no-cache, must-revalidate, max-age=0");
96
header("Pragma: no-cache");
97
- /**/
98
- eval('while (@ob_end_clean ());'); /* Clean buffers. */
99
- /**/
100
$u = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"];
101
$i = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]."/images";
102
- /**/
103
for($n = 0, $labels = ""; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
104
$labels .= "labels['level".$n."'] = '".((!empty($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level".$n."_label"])) ? str_replace('"', "", c_ws_plugin__s2member_utils_strings::esc_js_sq($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level".$n."_label"], 3)) : "")."';";
105
unset($n);
106
- /**/
107
include_once dirname(dirname(__FILE__))."/menu-pages/menu-pages-min.js";
108
- /**/
109
- echo "\n"; /* Add a line break before inclusion of this file. */
110
- /**/
111
@include_once dirname(dirname(__FILE__))."/menu-pages/menu-pages-s-min.js";
112
- /**/
113
do_action("ws_plugin__s2member_during_menu_pages_js", get_defined_vars());
114
- /**/
115
- exit(); /* Clean exit. */
116
}
117
- /**/
118
do_action("ws_plugin__s2member_after_menu_pages_js", get_defined_vars());
119
}
120
}
1
<?php
2
/**
3
+ * Administrative CSS/JS for menu pages (inner processing routines).
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
+ * (coded in the USA)
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
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_admin_css_js_in"))
21
{
22
/**
23
+ * Administrative CSS/JS for menu pages (inner processing routines).
24
*
25
* @package s2Member\Admin_CSS_JS
26
* @since 3.5
40
public static function menu_pages_css()
41
{
42
do_action("ws_plugin__s2member_before_menu_pages_css", get_defined_vars());
43
+
44
if(!empty($_GET["ws_plugin__s2member_menu_pages_css"]) && is_user_logged_in() && current_user_can("create_users"))
45
{
46
+ status_header /* 200 OK status header. */(200);
47
+
48
+ header("Content-Type: text/css; charset=UTF-8");
49
header("Expires: ".gmdate("D, d M Y H:i:s", strtotime("-1 week"))." GMT");
50
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
51
header("Cache-Control: no-cache, must-revalidate, max-age=0");
52
header("Pragma: no-cache");
53
+
54
+ while (@ob_end_clean ()); // Clean any existing output buffers.
55
+
56
$u = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"];
57
$i = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]."/images";
58
+
59
ob_start("c_ws_plugin__s2member_utils_css::compress_css");
60
+
61
include_once dirname(dirname(__FILE__))."/menu-pages/menu-pages.css";
62
+
63
+ echo /* Add a line break before inclusion of this file. */ "\n";
64
+
65
@include_once dirname(dirname(__FILE__))."/menu-pages/menu-pages-s.css";
66
+
67
do_action("ws_plugin__s2member_during_menu_pages_css", get_defined_vars());
68
+
69
+ exit /* Clean exit. */();
70
}
71
do_action("ws_plugin__s2member_after_menu_pages_css", get_defined_vars());
72
}
73
/**
83
public static function menu_pages_js()
84
{
85
do_action("ws_plugin__s2member_before_menu_pages_js", get_defined_vars());
86
+
87
if(!empty($_GET["ws_plugin__s2member_menu_pages_js"]) && is_user_logged_in() && current_user_can("create_users"))
88
{
89
+ status_header /* 200 OK status header. */(200);
90
+
91
+ header("Content-Type: application/x-javascript; charset=UTF-8");
92
header("Expires: ".gmdate("D, d M Y H:i:s", strtotime("-1 week"))." GMT");
93
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
94
header("Cache-Control: no-cache, must-revalidate, max-age=0");
95
header("Pragma: no-cache");
96
+
97
+ while (@ob_end_clean ()); // Clean any existing output buffers.
98
+
99
$u = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"];
100
$i = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]."/images";
101
+
102
for($n = 0, $labels = ""; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
103
$labels .= "labels['level".$n."'] = '".((!empty($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level".$n."_label"])) ? str_replace('"', "", c_ws_plugin__s2member_utils_strings::esc_js_sq($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level".$n."_label"], 3)) : "")."';";
104
unset($n);
105
+
106
include_once dirname(dirname(__FILE__))."/menu-pages/menu-pages-min.js";
107
+
108
+ echo /* Add a line break before inclusion of this file. */"\n";
109
+
110
@include_once dirname(dirname(__FILE__))."/menu-pages/menu-pages-s-min.js";
111
+
112
do_action("ws_plugin__s2member_during_menu_pages_js", get_defined_vars());
113
+
114
+ exit /* Clean exit. */();
115
}
116
do_action("ws_plugin__s2member_after_menu_pages_js", get_defined_vars());
117
}
118
}
includes/classes/admin-css-js.inc.php CHANGED
@@ -4,7 +4,7 @@
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
- * ( coded in the USA )
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
@@ -16,7 +16,7 @@
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_admin_css_js"))
21
{
22
/**
@@ -39,7 +39,7 @@ if (!class_exists ("c_ws_plugin__s2member_admin_css_js"))
39
*/
40
public static function menu_pages_css ()
41
{
42
- if (!empty ($_GET["ws_plugin__s2member_menu_pages_css"])) /* Call inner routine? */
43
{
44
return c_ws_plugin__s2member_admin_css_js_in::menu_pages_css ();
45
}
@@ -56,7 +56,7 @@ if (!class_exists ("c_ws_plugin__s2member_admin_css_js"))
56
*/
57
public static function menu_pages_js ()
58
{
59
- if (!empty ($_GET["ws_plugin__s2member_menu_pages_js"])) /* Call inner routine? */
60
{
61
return c_ws_plugin__s2member_admin_css_js_in::menu_pages_js ();
62
}
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
+ * (coded in the USA)
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
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_admin_css_js"))
21
{
22
/**
39
*/
40
public static function menu_pages_css ()
41
{
42
+ if (!empty ($_GET["ws_plugin__s2member_menu_pages_css"]))
43
{
44
return c_ws_plugin__s2member_admin_css_js_in::menu_pages_css ();
45
}
56
*/
57
public static function menu_pages_js ()
58
{
59
+ if (!empty ($_GET["ws_plugin__s2member_menu_pages_js"]))
60
{
61
return c_ws_plugin__s2member_admin_css_js_in::menu_pages_js ();
62
}
includes/classes/admin-lockouts.inc.php CHANGED
@@ -4,7 +4,7 @@
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
- * ( coded in the USA )
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
@@ -16,7 +16,7 @@
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_admin_lockouts"))
21
{
22
/**
@@ -37,23 +37,22 @@ if (!class_exists ("c_ws_plugin__s2member_admin_lockouts"))
37
*
38
* @return null Or exits script execution after redirection.
39
*/
40
- public static function admin_lockout () /* Prevents admin access. */
41
{
42
do_action ("ws_plugin__s2member_before_admin_lockouts", get_defined_vars ());
43
- /**/
44
if (is_admin () && (!defined ("DOING_AJAX") || !DOING_AJAX) && !current_user_can ("edit_posts") /* Give Filters a chance here too. */)
45
if (apply_filters ("ws_plugin__s2member_admin_lockout", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["force_admin_lockouts"], get_defined_vars ()))
46
{
47
if ($redirection_url = c_ws_plugin__s2member_login_redirects::login_redirection_url ())
48
- wp_redirect ($redirection_url) . exit (); /* Special Redirection. */
49
- /**/
50
- else /* Else we use the Login Welcome Page configured for s2Member. */
51
wp_redirect (get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"])) . exit ();
52
}
53
- /**/
54
do_action ("ws_plugin__s2member_after_admin_lockouts", get_defined_vars ());
55
- /**/
56
- return; /* Return for uniformity. */
57
}
58
/**
59
* Filters administrative menu bar for Users/Members.
@@ -69,9 +68,9 @@ if (!class_exists ("c_ws_plugin__s2member_admin_lockouts"))
69
public static function filter_admin_menu_bar (&$wp_admin_bar = FALSE)
70
{
71
do_action ("ws_plugin__s2member_before_filter_admin_menu_bar", get_defined_vars ());
72
- /**/
73
$uses_nodes = (version_compare (get_bloginfo ("version"), "3.3-RC1", ">=")) ? true : false;
74
- /**/
75
if (is_object ($wp_admin_bar) && !current_user_can ("edit_posts") /* Always for Users/Members. */)
76
{
77
if ($uses_nodes && $wp_admin_bar->get_node /* We have this node? */ ("site-name"))
@@ -80,62 +79,60 @@ if (!class_exists ("c_ws_plugin__s2member_admin_lockouts"))
80
$title = wp_html_excerpt /* A brief excerpt. */ (get_bloginfo ("name"), 42);
81
$title = ($title !== get_bloginfo ("name")) ? trim ($title) . "&hellip;" : $title;
82
$href = /* Change to front page. */ site_url ("/");
83
- /**/
84
$wp_admin_bar->add_node (array ("id" => $id, "title" => $title, "href" => $href));
85
$wp_admin_bar->remove_node /* Ditch now, replacing this. */ ("site-name");
86
- /**/
87
unset /* A little housekeeping. */ ($id, $title, $href);
88
}
89
if ($uses_nodes && $wp_admin_bar->get_node /* We have this node? */ ("wp-logo"))
90
$wp_admin_bar->remove_node /* Ditch this node. */ ("wp-logo");
91
- /* ------- */
92
if (!$uses_nodes && isset /* Have this item? */ ($wp_admin_bar->menu->{"dashboard"}))
93
unset /* Ditch this item. */ ($wp_admin_bar->menu->{"dashboard"});
94
- /**/
95
if (!$uses_nodes && isset /* Have this item? */ ($wp_admin_bar->menu->{"my-blogs"}))
96
unset /* Ditch this item. */ ($wp_admin_bar->menu->{"my-blogs"});
97
- /* ------- */
98
if ($uses_nodes && $wp_admin_bar->get_node /* We have this node? */ ("my-sites"))
99
$wp_admin_bar->remove_node /* Ditch this node. */ ("my-sites");
100
}
101
- /**/
102
if (is_object ($wp_admin_bar) && !current_user_can ("edit_posts") /* If locking Users/Members out of `/wp-admin/` areas. */)
103
if (apply_filters ("ws_plugin__s2member_admin_lockout", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["force_admin_lockouts"], get_defined_vars ()))
104
{
105
$lwp = c_ws_plugin__s2member_login_redirects::login_redirection_url ();
106
$lwp = (!$lwp) ? get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"]) : $lwp;
107
- /**/
108
if ($uses_nodes && $wp_admin_bar->get_node /* We have this node? */ ("my-account"))
109
$wp_admin_bar->add_node /* Update this node. */ (array ("id" => "my-account", "href" => $lwp));
110
- /**/
111
if ($uses_nodes && $wp_admin_bar->get_node /* We have this node? */ ("user-info"))
112
$wp_admin_bar->add_node /* Update this node. */ (array ("id" => "user-info", "href" => $lwp));
113
- /**/
114
if ($uses_nodes && $wp_admin_bar->get_node /* We have this node? */ ("edit-profile"))
115
$wp_admin_bar->add_node /* Update this node. */ (array ("id" => "edit-profile", "href" => $lwp));
116
- /* ------- */
117
if (!$uses_nodes && isset /* Have this item? */ ($wp_admin_bar->menu->{"my-account"}["href"]))
118
$wp_admin_bar->menu->{"my-account"}["href"] = /* Update this item. */ $lwp;
119
- /**/
120
if (!$uses_nodes && isset /* Have this item? */ ($wp_admin_bar->menu->{"my-account"}["children"]->{"edit-profile"}["href"]))
121
$wp_admin_bar->menu->{"my-account"}["children"]->{"edit-profile"}["href"] = /* Update this item. */ $lwp;
122
- /**/
123
if (!$uses_nodes && isset /* Have this item? */ ($wp_admin_bar->menu->{"my-account"}["children"]->{"user-info"}["href"]))
124
$wp_admin_bar->menu->{"my-account"}["children"]->{"user-info"}["href"] = /* Update this item. */ $lwp;
125
- /* ------- */
126
if (!$uses_nodes && isset /* Have this item? */ ($wp_admin_bar->menu->{"my-account-with-avatar"}["href"]))
127
$wp_admin_bar->menu->{"my-account-with-avatar"}["href"] = /* Update this item. */ $lwp;
128
- /**/
129
if (!$uses_nodes && isset /* Have this item? */ ($wp_admin_bar->menu->{"my-account-with-avatar"}["children"]->{"user-info"}["href"]))
130
$wp_admin_bar->menu->{"my-account-with-avatar"}["children"]->{"user-info"}["href"] = /* Update this item. */ $lwp;
131
- /**/
132
if (!$uses_nodes && isset /* Have this item? */ ($wp_admin_bar->menu->{"my-account-with-avatar"}["children"]->{"edit-profile"}["href"]))
133
$wp_admin_bar->menu->{"my-account-with-avatar"}["children"]->{"edit-profile"}["href"] = /* Update this item. */ $lwp;
134
}
135
- /**/
136
do_action ("ws_plugin__s2member_after_filter_admin_menu_bar", get_defined_vars ());
137
- /**/
138
- return; /* Return for uniformity. */
139
}
140
}
141
}
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
+ * (coded in the USA)
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
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_admin_lockouts"))
21
{
22
/**
37
*
38
* @return null Or exits script execution after redirection.
39
*/
40
+ public static function admin_lockout ()
41
{
42
do_action ("ws_plugin__s2member_before_admin_lockouts", get_defined_vars ());
43
+
44
if (is_admin () && (!defined ("DOING_AJAX") || !DOING_AJAX) && !current_user_can ("edit_posts") /* Give Filters a chance here too. */)
45
if (apply_filters ("ws_plugin__s2member_admin_lockout", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["force_admin_lockouts"], get_defined_vars ()))
46
{
47
if ($redirection_url = c_ws_plugin__s2member_login_redirects::login_redirection_url ())
48
+ /* Special Redirection. */wp_redirect ($redirection_url) . exit ();
49
+
50
+ else // Else we use the Login Welcome Page configured for s2Member.
51
wp_redirect (get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"])) . exit ();
52
}
53
do_action ("ws_plugin__s2member_after_admin_lockouts", get_defined_vars ());
54
+
55
+ return /* Return for uniformity. */;
56
}
57
/**
58
* Filters administrative menu bar for Users/Members.
68
public static function filter_admin_menu_bar (&$wp_admin_bar = FALSE)
69
{
70
do_action ("ws_plugin__s2member_before_filter_admin_menu_bar", get_defined_vars ());
71
+
72
$uses_nodes = (version_compare (get_bloginfo ("version"), "3.3-RC1", ">=")) ? true : false;
73
+
74
if (is_object ($wp_admin_bar) && !current_user_can ("edit_posts") /* Always for Users/Members. */)
75
{
76
if ($uses_nodes && $wp_admin_bar->get_node /* We have this node? */ ("site-name"))
79
$title = wp_html_excerpt /* A brief excerpt. */ (get_bloginfo ("name"), 42);
80
$title = ($title !== get_bloginfo ("name")) ? trim ($title) . "&hellip;" : $title;
81
$href = /* Change to front page. */ site_url ("/");
82
+
83
$wp_admin_bar->add_node (array ("id" => $id, "title" => $title, "href" => $href));
84
$wp_admin_bar->remove_node /* Ditch now, replacing this. */ ("site-name");
85
+
86
unset /* A little housekeeping. */ ($id, $title, $href);
87
}
88
if ($uses_nodes && $wp_admin_bar->get_node /* We have this node? */ ("wp-logo"))
89
$wp_admin_bar->remove_node /* Ditch this node. */ ("wp-logo");
90
+ // -------
91
if (!$uses_nodes && isset /* Have this item? */ ($wp_admin_bar->menu->{"dashboard"}))
92
unset /* Ditch this item. */ ($wp_admin_bar->menu->{"dashboard"});
93
+
94
if (!$uses_nodes && isset /* Have this item? */ ($wp_admin_bar->menu->{"my-blogs"}))
95
unset /* Ditch this item. */ ($wp_admin_bar->menu->{"my-blogs"});
96
+ // -------
97
if ($uses_nodes && $wp_admin_bar->get_node /* We have this node? */ ("my-sites"))
98
$wp_admin_bar->remove_node /* Ditch this node. */ ("my-sites");
99
}
100
if (is_object ($wp_admin_bar) && !current_user_can ("edit_posts") /* If locking Users/Members out of `/wp-admin/` areas. */)
101
if (apply_filters ("ws_plugin__s2member_admin_lockout", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["force_admin_lockouts"], get_defined_vars ()))
102
{
103
$lwp = c_ws_plugin__s2member_login_redirects::login_redirection_url ();
104
$lwp = (!$lwp) ? get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"]) : $lwp;
105
+
106
if ($uses_nodes && $wp_admin_bar->get_node /* We have this node? */ ("my-account"))
107
$wp_admin_bar->add_node /* Update this node. */ (array ("id" => "my-account", "href" => $lwp));
108
+
109
if ($uses_nodes && $wp_admin_bar->get_node /* We have this node? */ ("user-info"))
110
$wp_admin_bar->add_node /* Update this node. */ (array ("id" => "user-info", "href" => $lwp));
111
+
112
if ($uses_nodes && $wp_admin_bar->get_node /* We have this node? */ ("edit-profile"))
113
$wp_admin_bar->add_node /* Update this node. */ (array ("id" => "edit-profile", "href" => $lwp));
114
+ // -------
115
if (!$uses_nodes && isset /* Have this item? */ ($wp_admin_bar->menu->{"my-account"}["href"]))
116
$wp_admin_bar->menu->{"my-account"}["href"] = /* Update this item. */ $lwp;
117
+
118
if (!$uses_nodes && isset /* Have this item? */ ($wp_admin_bar->menu->{"my-account"}["children"]->{"edit-profile"}["href"]))
119
$wp_admin_bar->menu->{"my-account"}["children"]->{"edit-profile"}["href"] = /* Update this item. */ $lwp;
120
+
121
if (!$uses_nodes && isset /* Have this item? */ ($wp_admin_bar->menu->{"my-account"}["children"]->{"user-info"}["href"]))
122
$wp_admin_bar->menu->{"my-account"}["children"]->{"user-info"}["href"] = /* Update this item. */ $lwp;
123
+ // -------
124
if (!$uses_nodes && isset /* Have this item? */ ($wp_admin_bar->menu->{"my-account-with-avatar"}["href"]))
125
$wp_admin_bar->menu->{"my-account-with-avatar"}["href"] = /* Update this item. */ $lwp;
126
+
127
if (!$uses_nodes && isset /* Have this item? */ ($wp_admin_bar->menu->{"my-account-with-avatar"}["children"]->{"user-info"}["href"]))
128
$wp_admin_bar->menu->{"my-account-with-avatar"}["children"]->{"user-info"}["href"] = /* Update this item. */ $lwp;
129
+
130
if (!$uses_nodes && isset /* Have this item? */ ($wp_admin_bar->menu->{"my-account-with-avatar"}["children"]->{"edit-profile"}["href"]))
131
$wp_admin_bar->menu->{"my-account-with-avatar"}["children"]->{"edit-profile"}["href"] = /* Update this item. */ $lwp;
132
}
133
do_action ("ws_plugin__s2member_after_filter_admin_menu_bar", get_defined_vars ());
134
+
135
+ return /* Return for uniformity. */;
136
}
137
}
138
}
includes/classes/admin-notices.inc.php CHANGED
@@ -4,7 +4,7 @@
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
- * ( coded in the USA )
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
@@ -16,7 +16,7 @@
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_admin_notices"))
21
{
22
/**
@@ -33,7 +33,7 @@ if (!class_exists ("c_ws_plugin__s2member_admin_notices"))
33
* @package s2Member\Admin_Notices
34
* @since 3.5
35
*
36
- * @param str $notice String value of actual notice *( i.e. the message )*.
37
* @param str|array $on_pages Optional. Defaults to any page. String or array of pages to display this notice on.
38
* @param bool $error Optional. True if this notice is regarding an error. Defaults to false.
39
* @param int $time Optional. Unix timestamp indicating when this notice will be displayed.
@@ -42,26 +42,25 @@ if (!class_exists ("c_ws_plugin__s2member_admin_notices"))
42
*/
43
public static function enqueue_admin_notice ($notice = FALSE, $on_pages = FALSE, $error = FALSE, $time = FALSE, $dismiss = FALSE)
44
{
45
- eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
46
do_action ("ws_plugin__s2member_before_enqueue_admin_notice", get_defined_vars ());
47
- unset ($__refs, $__v); /* Unset defined __refs, __v. */
48
- /**/
49
- if (is_string ($notice) && $notice) /* If we have a valid string. */
50
{
51
$notices = (array)get_option ("ws_plugin__s2member_notices");
52
- /**/
53
array_push ($notices, array ("notice" => $notice, "on_pages" => $on_pages, "error" => $error, "time" => $time, "dismiss" => $dismiss));
54
- /**/
55
- eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
56
do_action ("ws_plugin__s2member_during_enqueue_admin_notice", get_defined_vars ());
57
- unset ($__refs, $__v); /* Unset defined __refs, __v. */
58
- /**/
59
update_option ("ws_plugin__s2member_notices", c_ws_plugin__s2member_utils_arrays::array_unique ($notices));
60
}
61
- /**/
62
do_action ("ws_plugin__s2member_after_enqueue_admin_notice", get_defined_vars ());
63
- /**/
64
- return; /* Return for uniformity. */
65
}
66
/**
67
* Displays an administrative notice.
@@ -69,33 +68,32 @@ if (!class_exists ("c_ws_plugin__s2member_admin_notices"))
69
* @package s2Member\Admin_Notices
70
* @since 3.5
71
*
72
- * @param str $notice String value of actual notice *( i.e. the message )*.
73
* @param bool $error Optional. True if this notice is regarding an error. Defaults to false.
74
* @param bool $dismiss Optional. If true, the notice will be displayed with a dismissal link. Defaults to false.
75
* @return null
76
*/
77
public static function display_admin_notice ($notice = FALSE, $error = FALSE, $dismiss = FALSE)
78
{
79
- eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
80
do_action ("ws_plugin__s2member_before_display_admin_notice", get_defined_vars ());
81
- unset ($__refs, $__v); /* Unset defined __refs, __v. */
82
- /**/
83
- if (is_string ($notice) && $notice && $error) /* Slightly different/special format for errors. */
84
{
85
$notice .= ($dismiss) ? ' [ <a href="' . esc_attr(add_query_arg ("ws-plugin--s2member-dismiss-admin-notice", urlencode (md5 ($notice)), $_SERVER["REQUEST_URI"])) . '">dismiss message</a> ]' : '';
86
- /**/
87
- echo '<div class="error fade"><p>' . $notice . '</p></div>'; /* Error. */
88
}
89
else if (is_string ($notice) && $notice)
90
{
91
$notice .= ($dismiss) ? ' [ <a href="' . esc_attr(add_query_arg ("ws-plugin--s2member-dismiss-admin-notice", urlencode (md5 ($notice)), $_SERVER["REQUEST_URI"])) . '">dismiss message</a> ]' : '';
92
- /**/
93
echo '<div class="updated fade"><p>' . $notice . '</p></div>';
94
}
95
- /**/
96
do_action ("ws_plugin__s2member_after_display_admin_notice", get_defined_vars ());
97
- /**/
98
- return; /* Return for uniformity. */
99
}
100
/**
101
* Processes all administrative notices.
@@ -112,60 +110,57 @@ if (!class_exists ("c_ws_plugin__s2member_admin_notices"))
112
*/
113
public static function admin_notices ()
114
{
115
- global $pagenow; /* This holds the current page filename. */
116
- /**/
117
do_action ("ws_plugin__s2member_before_admin_notices", get_defined_vars ());
118
- /**/
119
if (is_admin () && is_array ($notices = get_option ("ws_plugin__s2member_notices")) && !empty ($notices))
120
{
121
$a = (is_blog_admin ()) ? "blog" : $a;
122
$a = (is_user_admin ()) ? "user" : $a;
123
$a = (is_network_admin ()) ? "network" : $a;
124
- $a = (!$a) ? "blog" : $a; /* Default Blog Admin. */
125
- /**/
126
- foreach ($notices as $i => $notice) /* Check several things about each Notice. */
127
foreach (((!$notice["on_pages"]) ? array ("*"): (array)$notice["on_pages"]) as $page)
128
{
129
- if (!preg_match ("/^(.+?)\:/", $page)) /* NO prefix? */
130
- $page = "blog:" . ltrim ($page, ":"); /* `blog:` */
131
- /**/
132
$adms = preg_split ("/\|/", preg_replace ("/\:(.*)#x2F;i", "", $page));
133
$page = preg_replace ("/^([^\:]*)\:/i", "", $page);
134
- /**/
135
if (empty ($adms) || in_array ("*", $adms) || in_array ($a, $adms))
136
if (!$page || "*" === $page || $pagenow === $page || $_GET["page"] === $page)
137
{
138
- if (strtotime ("now") >= (int)$notice["time"]) /* Time to show it? */
139
{
140
- eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
141
do_action ("ws_plugin__s2member_during_admin_notices_before_display", get_defined_vars ());
142
- unset ($__refs, $__v); /* Unset defined __refs, __v. */
143
- /**/
144
if (!$notice["dismiss"] || (!empty ($_GET["ws-plugin--s2member-dismiss-admin-notice"]) && $_GET["ws-plugin--s2member-dismiss-admin-notice"] === md5 ($notice["notice"])))
145
- unset($notices[$i]); /* Clear this administrative notice now? */
146
- /**/
147
if (!$notice["dismiss"] || empty ($_GET["ws-plugin--s2member-dismiss-admin-notice"]) || $_GET["ws-plugin--s2member-dismiss-admin-notice"] !== md5 ($notice["notice"]))
148
c_ws_plugin__s2member_admin_notices::display_admin_notice ($notice["notice"], $notice["error"], $notice["dismiss"]);
149
- /**/
150
do_action ("ws_plugin__s2member_during_admin_notices_after_display", get_defined_vars ());
151
}
152
- /**/
153
- continue 2; /* This Notice processed; continue. */
154
}
155
}
156
- /**/
157
- $notices = array_merge ($notices); /* Re-index array. */
158
- /**/
159
- eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
160
do_action ("ws_plugin__s2member_during_admin_notices", get_defined_vars ());
161
- unset ($__refs, $__v); /* Unset defined __refs, __v. */
162
- /**/
163
update_option ("ws_plugin__s2member_notices", $notices);
164
}
165
- /**/
166
do_action ("ws_plugin__s2member_after_admin_notices", get_defined_vars ());
167
- /**/
168
- return; /* Return for uniformity. */
169
}
170
}
171
}
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
+ * (coded in the USA)
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
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_admin_notices"))
21
{
22
/**
33
* @package s2Member\Admin_Notices
34
* @since 3.5
35
*
36
+ * @param str $notice String value of actual notice *(i.e. the message)*.
37
* @param str|array $on_pages Optional. Defaults to any page. String or array of pages to display this notice on.
38
* @param bool $error Optional. True if this notice is regarding an error. Defaults to false.
39
* @param int $time Optional. Unix timestamp indicating when this notice will be displayed.
42
*/
43
public static function enqueue_admin_notice ($notice = FALSE, $on_pages = FALSE, $error = FALSE, $time = FALSE, $dismiss = FALSE)
44
{
45
+ foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
46
do_action ("ws_plugin__s2member_before_enqueue_admin_notice", get_defined_vars ());
47
+ unset /* Unset defined __refs, __v. */ ($__refs, $__v);
48
+
49
+ if /* If we have a valid string. */(is_string ($notice) && $notice)
50
{
51
$notices = (array)get_option ("ws_plugin__s2member_notices");
52
+
53
array_push ($notices, array ("notice" => $notice, "on_pages" => $on_pages, "error" => $error, "time" => $time, "dismiss" => $dismiss));
54
+
55
+ foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
56
do_action ("ws_plugin__s2member_during_enqueue_admin_notice", get_defined_vars ());
57
+ unset /* Unset defined __refs, __v. */ ($__refs, $__v);
58
+
59
update_option ("ws_plugin__s2member_notices", c_ws_plugin__s2member_utils_arrays::array_unique ($notices));
60
}
61
do_action ("ws_plugin__s2member_after_enqueue_admin_notice", get_defined_vars ());
62
+
63
+ return /* Return for uniformity. */;
64
}
65
/**
66
* Displays an administrative notice.
68
* @package s2Member\Admin_Notices
69
* @since 3.5
70
*
71
+ * @param str $notice String value of actual notice *(i.e. the message)*.
72
* @param bool $error Optional. True if this notice is regarding an error. Defaults to false.
73
* @param bool $dismiss Optional. If true, the notice will be displayed with a dismissal link. Defaults to false.
74
* @return null
75
*/
76
public static function display_admin_notice ($notice = FALSE, $error = FALSE, $dismiss = FALSE)
77
{
78
+ foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
79
do_action ("ws_plugin__s2member_before_display_admin_notice", get_defined_vars ());
80
+ unset /* Unset defined __refs, __v. */ ($__refs, $__v);
81
+
82
+ if /* Slightly different/special format for errors. */ (is_string ($notice) && $notice && $error)
83
{
84
$notice .= ($dismiss) ? ' [ <a href="' . esc_attr(add_query_arg ("ws-plugin--s2member-dismiss-admin-notice", urlencode (md5 ($notice)), $_SERVER["REQUEST_URI"])) . '">dismiss message</a> ]' : '';
85
+
86
+ echo /* Error. */ '<div class="error fade"><p>' . $notice . '</p></div>';
87
}
88
else if (is_string ($notice) && $notice)
89
{
90
$notice .= ($dismiss) ? ' [ <a href="' . esc_attr(add_query_arg ("ws-plugin--s2member-dismiss-admin-notice", urlencode (md5 ($notice)), $_SERVER["REQUEST_URI"])) . '">dismiss message</a> ]' : '';
91
+
92
echo '<div class="updated fade"><p>' . $notice . '</p></div>';
93
}
94
do_action ("ws_plugin__s2member_after_display_admin_notice", get_defined_vars ());
95
+
96
+ return /* Return for uniformity. */;
97
}
98
/**
99
* Processes all administrative notices.
110
*/
111
public static function admin_notices ()
112
{
113
+ global /* This holds the current page filename. */ $pagenow;
114
+
115
do_action ("ws_plugin__s2member_before_admin_notices", get_defined_vars ());
116
+
117
if (is_admin () && is_array ($notices = get_option ("ws_plugin__s2member_notices")) && !empty ($notices))
118
{
119
$a = (is_blog_admin ()) ? "blog" : $a;
120
$a = (is_user_admin ()) ? "user" : $a;
121
$a = (is_network_admin ()) ? "network" : $a;
122
+ $a = /* Default Blog Admin. */(!$a) ? "blog" : $a;
123
+
124
+ foreach /* Check several things about each Notice. */ ($notices as $i => $notice)
125
foreach (((!$notice["on_pages"]) ? array ("*"): (array)$notice["on_pages"]) as $page)
126
{
127
+ if /* NO prefix? */ (!preg_match ("/^(.+?)\:/", $page))
128
+ $page = /* `blog:` */ "blog:" . ltrim ($page, ":");
129
+
130
$adms = preg_split ("/\|/", preg_replace ("/\:(.*)#x2F;i", "", $page));
131
$page = preg_replace ("/^([^\:]*)\:/i", "", $page);
132
+
133
if (empty ($adms) || in_array ("*", $adms) || in_array ($a, $adms))
134
if (!$page || "*" === $page || $pagenow === $page || $_GET["page"] === $page)
135
{
136
+ if /* Time to show it? */ (strtotime ("now") >= (int)$notice["time"])
137
{
138
+ foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
139
do_action ("ws_plugin__s2member_during_admin_notices_before_display", get_defined_vars ());
140
+ unset /* Unset defined __refs, __v. */ ($__refs, $__v);
141
+
142
if (!$notice["dismiss"] || (!empty ($_GET["ws-plugin--s2member-dismiss-admin-notice"]) && $_GET["ws-plugin--s2member-dismiss-admin-notice"] === md5 ($notice["notice"])))
143
+ unset /* Clear this administrative notice now? */($notices[$i]);
144
+
145
if (!$notice["dismiss"] || empty ($_GET["ws-plugin--s2member-dismiss-admin-notice"]) || $_GET["ws-plugin--s2member-dismiss-admin-notice"] !== md5 ($notice["notice"]))
146
c_ws_plugin__s2member_admin_notices::display_admin_notice ($notice["notice"], $notice["error"], $notice["dismiss"]);
147
+
148
do_action ("ws_plugin__s2member_during_admin_notices_after_display", get_defined_vars ());
149
}
150
+ continue /* This Notice processed; continue. */ 2;
151
}
152
}
153
+ $notices = /* Re-index array. */array_merge ($notices);
154
+
155
+ foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
156
do_action ("ws_plugin__s2member_during_admin_notices", get_defined_vars ());
157
+ unset /* Unset defined __refs, __v. */ ($__refs, $__v);
158
+
159
update_option ("ws_plugin__s2member_notices", $notices);
160
}
161
do_action ("ws_plugin__s2member_after_admin_notices", get_defined_vars ());
162
+
163
+ return /* Return for uniformity. */;
164
}
165
}
166
}
includes/classes/auto-eots.inc.php CHANGED
@@ -1,10 +1,10 @@
1
<?php
2
/**
3
- * s2Member's Auto-EOT System *( EOT = End Of Term )*.
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
- * ( coded in the USA )
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
@@ -16,11 +16,11 @@
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_auto_eots"))
21
{
22
/**
23
- * s2Member's Auto-EOT System *( EOT = End Of Term )*.
24
*
25
* @package s2Member\Auto_EOT_System
26
* @since 3.5
@@ -38,18 +38,18 @@ if (!class_exists ("c_ws_plugin__s2member_auto_eots"))
38
public static function add_auto_eot_system ()
39
{
40
do_action ("ws_plugin__s2member_before_add_auto_eot_system", get_defined_vars ());
41
- /**/
42
if (!c_ws_plugin__s2member_auto_eots::delete_auto_eot_system ())
43
{
44
return apply_filters ("ws_plugin__s2member_add_auto_eot_system", false, get_defined_vars ());
45
}
46
- else if (function_exists ("wp_cron")) /* Otherwise, we can schedule? */
47
{
48
wp_schedule_event (time (), "every10m", "ws_plugin__s2member_auto_eot_system__schedule");
49
- /**/
50
return apply_filters ("ws_plugin__s2member_add_auto_eot_system", true, get_defined_vars ());
51
}
52
- else /* Otherwise, it would appear that WP-Cron is not available. */
53
{
54
return apply_filters ("ws_plugin__s2member_add_auto_eot_system", false, get_defined_vars ());
55
}
@@ -65,23 +65,23 @@ if (!class_exists ("c_ws_plugin__s2member_auto_eots"))
65
public static function delete_auto_eot_system ()
66
{
67
do_action ("ws_plugin__s2member_before_delete_auto_eot_system", get_defined_vars ());
68
- /**/
69
- if (function_exists ("wp_cron")) /* Is `wp_cron()` even available? */
70
{
71
- wp_clear_scheduled_hook ("ws_plugin__s2member_auto_eot_system__schedule"); /* Since v3.0.3. */
72
- /**/
73
return apply_filters ("ws_plugin__s2member_delete_auto_eot_system", true, get_defined_vars ());
74
}
75
- else /* Otherwise, it would appear that WP-Cron is not available. */
76
{
77
return apply_filters ("ws_plugin__s2member_delete_auto_eot_system", false, get_defined_vars ());
78
}
79
}
80
/**
81
- * Processed by WP_Cron; this handles Auto-EOTs *( EOT = End Of Term )*.
82
*
83
* If you have a HUGE userbase, increase the max EOTs per process.
84
- * But NOTE, this runs ``$per_process`` *( per Blog )* on a Multisite Network.
85
* To increase, use: ``add_filter ("ws_plugin__s2member_auto_eot_system_per_process");``.
86
*
87
* This function makes an important Hook available: `ws_plugin__s2member_after_auto_eot_system`.
@@ -97,79 +97,82 @@ if (!class_exists ("c_ws_plugin__s2member_auto_eots"))
97
*/
98
public static function auto_eot_system ($per_process = 3)
99
{
100
- global $wpdb; /* Need global DB obj. */
101
- global $current_site, $current_blog; /* Multisite. */
102
- /**/
103
include_once ABSPATH . "wp-admin/includes/admin.php";
104
- /**/
105
- @set_time_limit (0); /* Make time for processing a larger userbase. */
106
@ini_set ("memory_limit", apply_filters ("admin_memory_limit", WP_MAX_MEMORY_LIMIT));
107
- /**/
108
- eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
109
do_action ("ws_plugin__s2member_before_auto_eot_system", get_defined_vars ());
110
- unset ($__refs, $__v); /* Unset defined __refs, __v. */
111
- /**/
112
- if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["auto_eot_system_enabled"]) /* Enabled? */
113
{
114
$per_process = apply_filters ("ws_plugin__s2member_auto_eot_system_per_process", $per_process, get_defined_vars ());
115
- /**/
116
if (is_array ($eots = $wpdb->get_results ("SELECT `user_id` AS `ID` FROM `" . $wpdb->usermeta . "` WHERE `meta_key` = '" . $wpdb->prefix . "s2member_auto_eot_time' AND `meta_value` != '' AND `meta_value` <= '" . $wpdb->escape (strtotime ("now")) . "' LIMIT " . $per_process)))
117
{
118
- foreach ($eots as $eot) /* Go through the array of EOTS. We need to (demote|delete) each of them. */
119
{
120
if (($user_id = $eot->ID) && is_object ($user = new WP_User ($user_id)) && $user->ID)
121
{
122
- delete_user_option ($user_id, "s2member_auto_eot_time"); /* Always delete. */
123
- /**/
124
- if (!$user->has_cap ("administrator")) /* Do NOT process Administrator accounts. */
125
{
126
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_eot_behavior"] === "demote")
127
{
128
- $eot_del_type = /* Set EOT/Del type. */
129
- "auto-eot-cancellation-expiration-demotion";
130
- /**/
131
$custom = get_user_option ("s2member_custom", $user_id);
132
$subscr_id = get_user_option ("s2member_subscr_id", $user_id);
133
$fields = get_user_option ("s2member_custom_fields", $user_id);
134
$user_reg_ip = get_user_option ("s2member_registration_ip", $user_id);
135
- /**/
136
$demotion_role = c_ws_plugin__s2member_option_forces::force_demotion_role ("subscriber");
137
$existing_role = c_ws_plugin__s2member_user_access::user_access_role ($user);
138
- /**/
139
- eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
140
do_action ("ws_plugin__s2member_during_auto_eot_system_during_before_demote", get_defined_vars ());
141
do_action ("ws_plugin__s2member_during_collective_mods", $user_id, get_defined_vars (), $eot_del_type, "modification", $demotion_role);
142
do_action ("ws_plugin__s2member_during_collective_eots", $user_id, get_defined_vars (), $eot_del_type, "modification");
143
- unset ($__refs, $__v); /* Unset defined __refs, __v. */
144
- /**/
145
- if ($existing_role !== $demotion_role) /* Only if NOT the existing Role. */
146
- $user->set_role ($demotion_role); /* Give User the demotion Role. */
147
- /**/
148
foreach ($user->allcaps as $cap => $cap_enabled)
149
if (preg_match ("/^access_s2member_ccap_/", $cap))
150
$user->remove_cap ($ccap = $cap);
151
- /**/
152
delete_user_option ($user_id, "s2member_custom");
153
delete_user_option ($user_id, "s2member_subscr_id");
154
delete_user_option ($user_id, "s2member_subscr_gateway");
155
- /**/
156
delete_user_option ($user_id, "s2member_ipn_signup_vars");
157
if (!apply_filters ("ws_plugin__s2member_preserve_paid_registration_times", true, get_defined_vars ()))
158
delete_user_option ($user_id, "s2member_paid_registration_times");
159
- /**/
160
delete_user_option ($user_id, "s2member_last_status_scan");
161
delete_user_option ($user_id, "s2member_first_payment_txn_id");
162
delete_user_option ($user_id, "s2member_last_payment_time");
163
delete_user_option ($user_id, "s2member_auto_eot_time");
164
- /**/
165
delete_user_option ($user_id, "s2member_file_download_access_log");
166
- /**/
167
c_ws_plugin__s2member_user_notes::append_user_notes ($user_id, "Demoted by s2Member: " . date ("D M j, Y g:i a T"));
168
- /**/
169
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["eot_del_notification_urls"] && is_array ($cv = preg_split ("/\|/", $custom)))
170
{
171
- foreach (preg_split ("/[\r\n\t]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["eot_del_notification_urls"]) as $url) /* Handle EOT Notifications. */
172
- /**/
173
if (($url = preg_replace ("/%%cv([0-9]+)%%/ei", 'urlencode(trim($cv[$1]))', $url)) && ($url = preg_replace ("/%%eot_del_type%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (urlencode ("auto-eot-cancellation-expiration-demotion")), $url)) && ($url = preg_replace ("/%%subscr_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (urlencode ($subscr_id)), $url)))
174
if (($url = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (urlencode ($user->first_name)), $url)) && ($url = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (urlencode ($user->last_name)), $url)))
175
if (($url = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (urlencode (trim ($user->first_name . " " . $user->last_name))), $url)))
@@ -179,23 +182,22 @@ if (!class_exists ("c_ws_plugin__s2member_auto_eots"))
179
if (($url = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (urlencode ($user_id)), $url)))
180
{
181
if (is_array ($fields) && !empty ($fields))
182
- foreach ($fields as $var => $val) /* Custom Registration/Profile Fields. */
183
if (!($url = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (urlencode (maybe_serialize ($val))), $url)))
184
break;
185
- /**/
186
if (($url = trim (preg_replace ("/%%(.+?)%%/i", "", $url))))
187
c_ws_plugin__s2member_utils_urls::remote ($url);
188
}
189
}
190
- /**/
191
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["eot_del_notification_recipients"] && is_array ($cv = preg_split ("/\|/", $custom)))
192
{
193
$email_configs_were_on = c_ws_plugin__s2member_email_configs::email_config_status ();
194
c_ws_plugin__s2member_email_configs::email_config_release ();
195
- /**/
196
- $msg = $sbj = "( s2Member / API Notification Email ) - EOT/Deletion";
197
- $msg .= "\n\n"; /* Spacing in the message body. */
198
- /**/
199
$msg .= "eot_del_type: %%eot_del_type%%\n";
200
$msg .= "subscr_id: %%subscr_id%%\n";
201
$msg .= "user_first_name: %%user_first_name%%\n";
@@ -205,11 +207,11 @@ if (!class_exists ("c_ws_plugin__s2member_auto_eots"))
205
$msg .= "user_login: %%user_login%%\n";
206
$msg .= "user_ip: %%user_ip%%\n";
207
$msg .= "user_id: %%user_id%%\n";
208
- /**/
209
if (is_array ($fields) && !empty ($fields))
210
foreach ($fields as $var => $val)
211
$msg .= $var . ": %%" . $var . "%%\n";
212
- /**/
213
$msg .= "cv0: %%cv0%%\n";
214
$msg .= "cv1: %%cv1%%\n";
215
$msg .= "cv2: %%cv2%%\n";
@@ -220,7 +222,7 @@ if (!class_exists ("c_ws_plugin__s2member_auto_eots"))
220
$msg .= "cv7: %%cv7%%\n";
221
$msg .= "cv8: %%cv8%%\n";
222
$msg .= "cv9: %%cv9%%";
223
- /**/
224
if (($msg = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $msg)) && ($msg = preg_replace ("/%%eot_del_type%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ("auto-eot-cancellation-expiration-demotion"), $msg)) && ($msg = preg_replace ("/%%subscr_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($subscr_id), $msg)))
225
if (($msg = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name), $msg)) && ($msg = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name), $msg)))
226
if (($msg = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (trim ($user->first_name . " " . $user->last_name)), $msg)))
@@ -230,65 +232,61 @@ if (!class_exists ("c_ws_plugin__s2member_auto_eots"))
230
if (($msg = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $msg)))
231
{
232
if (is_array ($fields) && !empty ($fields))
233
- foreach ($fields as $var => $val) /* Custom Registration/Profile Fields. */
234
if (!($msg = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $msg)))
235
break;
236
- /**/
237
- if ($sbj && ($msg = trim (preg_replace ("/%%(.+?)%%/i", "", $msg)))) /* Still have a ``$sbj`` and a ``$msg``? */
238
- /**/
239
foreach (c_ws_plugin__s2member_utils_strings::parse_emails ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["eot_del_notification_recipients"]) as $recipient)
240
- wp_mail ($recipient, apply_filters ("ws_plugin__s2member_eot_del_notification_email_sbj", $sbj, get_defined_vars ()), apply_filters ("ws_plugin__s2member_eot_del_notification_email_msg", $msg, get_defined_vars ()), "Content-Type: text/plain; charset=utf-8");
241
}
242
- /**/
243
- if ($email_configs_were_on) /* Back on? */
244
c_ws_plugin__s2member_email_configs::email_config ();
245
}
246
- /**/
247
- eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
248
do_action ("ws_plugin__s2member_during_auto_eot_system_during_demote", get_defined_vars ());
249
- unset ($__refs, $__v); /* Unset defined __refs, __v. */
250
}
251
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_eot_behavior"] === "delete")
252
{
253
$eot_del_type = $GLOBALS["ws_plugin__s2member_eot_del_type"] = "auto-eot-cancellation-expiration-deletion";
254
- /**/
255
- eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
256
do_action ("ws_plugin__s2member_during_auto_eot_system_during_before_delete", get_defined_vars ());
257
do_action ("ws_plugin__s2member_during_collective_eots", $user_id, get_defined_vars (), $eot_del_type, "removal-deletion");
258
- unset ($__refs, $__v); /* Unset defined __refs, __v. */
259
- /**/
260
- if (is_multisite ()) /* Multisite does NOT actually delete; ONLY removes. */
261
{
262
remove_user_from_blog ($user_id, $current_blog->blog_id);
263
- /* This will automatically trigger `eot_del_notification_urls` as well. */
264
c_ws_plugin__s2member_user_deletions::handle_ms_user_deletions ($user_id, $current_blog->blog_id, "s2says");
265
}
266
- /**/
267
- else /* Otherwise, we can actually delete them. */
268
- /* This will automatically trigger `eot_del_notification_urls` as well. */
269
- wp_delete_user ($user_id); /* `c_ws_plugin__s2member_user_deletions::handle_user_deletions()` */
270
- /**/
271
- eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
272
do_action ("ws_plugin__s2member_during_auto_eot_system_during_delete", get_defined_vars ());
273
- unset ($__refs, $__v); /* Unset defined __refs, __v. */
274
}
275
- /**/
276
- eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
277
do_action ("ws_plugin__s2member_during_auto_eot_system", get_defined_vars ());
278
- unset ($__refs, $__v); /* Unset defined __refs, __v. */
279
}
280
}
281
}
282
}
283
}
284
- /**/
285
- c_ws_plugin__s2member_utils_logs::cleanup_expired_s2m_transients (); /* Cleanup. */
286
- /**/
287
- eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
288
do_action ("ws_plugin__s2member_after_auto_eot_system", get_defined_vars ());
289
- unset ($__refs, $__v); /* Unset defined __refs, __v. */
290
- /**/
291
- return; /* Return for uniformity. */
292
}
293
}
294
}
1
<?php
2
/**
3
+ * s2Member's Auto-EOT System *(EOT = End Of Term)*.
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
+ * (coded in the USA)
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
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_auto_eots"))
21
{
22
/**
23
+ * s2Member's Auto-EOT System *(EOT = End Of Term)*.
24
*
25
* @package s2Member\Auto_EOT_System
26
* @since 3.5
38
public static function add_auto_eot_system ()
39
{
40
do_action ("ws_plugin__s2member_before_add_auto_eot_system", get_defined_vars ());
41
+
42
if (!c_ws_plugin__s2member_auto_eots::delete_auto_eot_system ())
43
{
44
return apply_filters ("ws_plugin__s2member_add_auto_eot_system", false, get_defined_vars ());
45
}
46
+ else if /* Otherwise, we can schedule? */ (function_exists ("wp_cron"))
47
{
48
wp_schedule_event (time (), "every10m", "ws_plugin__s2member_auto_eot_system__schedule");
49
+
50
return apply_filters ("ws_plugin__s2member_add_auto_eot_system", true, get_defined_vars ());
51
}
52
+ else // Otherwise, it would appear that WP-Cron is not available.
53
{
54
return apply_filters ("ws_plugin__s2member_add_auto_eot_system", false, get_defined_vars ());
55
}
65
public static function delete_auto_eot_system ()
66
{
67
do_action ("ws_plugin__s2member_before_delete_auto_eot_system", get_defined_vars ());
68
+
69
+ if /* Is `wp_cron()` even available? */ (function_exists ("wp_cron"))
70
{
71
+ wp_clear_scheduled_hook /* Since v3.0.3. */ ("ws_plugin__s2member_auto_eot_system__schedule");
72
+
73
return apply_filters ("ws_plugin__s2member_delete_auto_eot_system", true, get_defined_vars ());
74
}
75
+ else // Otherwise, it would appear that WP-Cron is not available.
76
{
77
return apply_filters ("ws_plugin__s2member_delete_auto_eot_system", false, get_defined_vars ());
78
}
79
}
80
/**
81
+ * Processed by WP_Cron; this handles Auto-EOTs *(EOT = End Of Term)*.
82
*
83
* If you have a HUGE userbase, increase the max EOTs per process.
84
+ * But NOTE, this runs ``$per_process`` *(per Blog)* on a Multisite Network.
85
* To increase, use: ``add_filter ("ws_plugin__s2member_auto_eot_system_per_process");``.
86
*
87
* This function makes an important Hook available: `ws_plugin__s2member_after_auto_eot_system`.
97
*/
98
public static function auto_eot_system ($per_process = 3)
99
{
100
+ global /* Need global DB obj. */ $wpdb;
101
+ global /* Multisite. */ $current_site, $current_blog;
102
+
103
include_once ABSPATH . "wp-admin/includes/admin.php";
104
+
105
+ @set_time_limit /* Make time for processing a larger userbase. */ (0);
106
@ini_set ("memory_limit", apply_filters ("admin_memory_limit", WP_MAX_MEMORY_LIMIT));
107
+
108
+ foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
109
do_action ("ws_plugin__s2member_before_auto_eot_system", get_defined_vars ());
110
+ unset /* Unset defined __refs, __v. */($__refs, $__v);
111
+
112
+ if /* Enabled? */($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["auto_eot_system_enabled"])
113
{
114
$per_process = apply_filters ("ws_plugin__s2member_auto_eot_system_per_process", $per_process, get_defined_vars ());
115
+
116
if (is_array ($eots = $wpdb->get_results ("SELECT `user_id` AS `ID` FROM `" . $wpdb->usermeta . "` WHERE `meta_key` = '" . $wpdb->prefix . "s2member_auto_eot_time' AND `meta_value` != '' AND `meta_value` <= '" . $wpdb->escape (strtotime ("now")) . "' LIMIT " . $per_process)))
117
{
118
+ foreach /* Go through the array of EOTS. We need to (demote|delete) each of them. */ ($eots as $eot)
119
{
120
if (($user_id = $eot->ID) && is_object ($user = new WP_User ($user_id)) && $user->ID)
121
{
122
+ delete_user_option /* Always delete. */ ($user_id, "s2member_auto_eot_time");
123
+
124
+ if /* Do NOT process Administrator accounts. */(!$user->has_cap ("administrator"))
125
{
126
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_eot_behavior"] === "demote")
127
{
128
+ $eot_del_type = /* Set EOT/Del type. */ "auto-eot-cancellation-expiration-demotion";
129
+
130
$custom = get_user_option ("s2member_custom", $user_id);
131
+ $subscr_gateway = get_user_option ("s2member_subscr_gateway", $user_id);
132
$subscr_id = get_user_option ("s2member_subscr_id", $user_id);
133
$fields = get_user_option ("s2member_custom_fields", $user_id);
134
$user_reg_ip = get_user_option ("s2member_registration_ip", $user_id);
135
+
136
$demotion_role = c_ws_plugin__s2member_option_forces::force_demotion_role ("subscriber");
137
$existing_role = c_ws_plugin__s2member_user_access::user_access_role ($user);
138
+
139
+ foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
140
do_action ("ws_plugin__s2member_during_auto_eot_system_during_before_demote", get_defined_vars ());
141
do_action ("ws_plugin__s2member_during_collective_mods", $user_id, get_defined_vars (), $eot_del_type, "modification", $demotion_role);
142
do_action ("ws_plugin__s2member_during_collective_eots", $user_id, get_defined_vars (), $eot_del_type, "modification");
143
+ unset /* Unset defined __refs, __v. */ ($__refs, $__v);
144
+
145
+ if /* Only if NOT the existing Role. */($existing_role !== $demotion_role)
146
+ $user->set_role /* Give User the demotion Role. */ ($demotion_role);
147
+
148
foreach ($user->allcaps as $cap => $cap_enabled)
149
if (preg_match ("/^access_s2member_ccap_/", $cap))
150
$user->remove_cap ($ccap = $cap);
151
+
152
delete_user_option ($user_id, "s2member_custom");
153
delete_user_option ($user_id, "s2member_subscr_id");
154
delete_user_option ($user_id, "s2member_subscr_gateway");
155
+
156
delete_user_option ($user_id, "s2member_ipn_signup_vars");
157
if (!apply_filters ("ws_plugin__s2member_preserve_paid_registration_times", true, get_defined_vars ()))
158
delete_user_option ($user_id, "s2member_paid_registration_times");
159
+
160
delete_user_option ($user_id, "s2member_last_status_scan");
161
delete_user_option ($user_id, "s2member_first_payment_txn_id");
162
delete_user_option ($user_id, "s2member_last_payment_time");
163
delete_user_option ($user_id, "s2member_auto_eot_time");
164
+
165
delete_user_option ($user_id, "s2member_file_download_access_log");
166
+
167
c_ws_plugin__s2member_user_notes::append_user_notes ($user_id, "Demoted by s2Member: " . date ("D M j, Y g:i a T"));
168
+
169
+ if($subscr_gateway && $subscr_id) // Also note the Paid Subscr. Gateway/ID so there is a reference left behind here.
170
+ c_ws_plugin__s2member_user_notes::append_user_notes ($user_id, "Paid Subscr. ID @ time of demotion: ".$subscr_gateway." -› ".$subscr_id);
171
+
172
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["eot_del_notification_urls"] && is_array ($cv = preg_split ("/\|/", $custom)))
173
{
174
+ foreach (preg_split ("/[\r\n\t]+/", $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["eot_del_notification_urls"]) as $url) // Handle EOT Notifications.
175
+
176
if (($url = preg_replace ("/%%cv([0-9]+)%%/ei", 'urlencode(trim($cv[$1]))', $url)) && ($url = preg_replace ("/%%eot_del_type%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (urlencode ("auto-eot-cancellation-expiration-demotion")), $url)) && ($url = preg_replace ("/%%subscr_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (urlencode ($subscr_id)), $url)))
177
if (($url = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (urlencode ($user->first_name)), $url)) && ($url = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (urlencode ($user->last_name)), $url)))
178
if (($url = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (urlencode (trim ($user->first_name . " " . $user->last_name))), $url)))
182
if (($url = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (urlencode ($user_id)), $url)))
183
{
184
if (is_array ($fields) && !empty ($fields))
185
+ foreach /* Custom Registration/Profile Fields. */ ($fields as $var => $val)
186
if (!($url = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (urlencode (maybe_serialize ($val))), $url)))
187
break;
188
+
189
if (($url = trim (preg_replace ("/%%(.+?)%%/i", "", $url))))
190
c_ws_plugin__s2member_utils_urls::remote ($url);
191
}
192
}
193
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["eot_del_notification_recipients"] && is_array ($cv = preg_split ("/\|/", $custom)))
194
{
195
$email_configs_were_on = c_ws_plugin__s2member_email_configs::email_config_status ();
196
c_ws_plugin__s2member_email_configs::email_config_release ();
197
+
198
+ $msg = $sbj = "(s2Member / API Notification Email) - EOT/Deletion";
199
+ $msg .= /* Spacing in the message body. */"\n\n";
200
+
201
$msg .= "eot_del_type: %%eot_del_type%%\n";
202
$msg .= "subscr_id: %%subscr_id%%\n";
203
$msg .= "user_first_name: %%user_first_name%%\n";
207
$msg .= "user_login: %%user_login%%\n";
208
$msg .= "user_ip: %%user_ip%%\n";
209
$msg .= "user_id: %%user_id%%\n";
210
+
211
if (is_array ($fields) && !empty ($fields))
212
foreach ($fields as $var => $val)
213
$msg .= $var . ": %%" . $var . "%%\n";
214
+
215
$msg .= "cv0: %%cv0%%\n";
216
$msg .= "cv1: %%cv1%%\n";
217
$msg .= "cv2: %%cv2%%\n";
222
$msg .= "cv7: %%cv7%%\n";
223
$msg .= "cv8: %%cv8%%\n";
224
$msg .= "cv9: %%cv9%%";
225
+
226
if (($msg = preg_replace ("/%%cv([0-9]+)%%/ei", 'trim($cv[$1])', $msg)) && ($msg = preg_replace ("/%%eot_del_type%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ("auto-eot-cancellation-expiration-demotion"), $msg)) && ($msg = preg_replace ("/%%subscr_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($subscr_id), $msg)))
227
if (($msg = preg_replace ("/%%user_first_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->first_name), $msg)) && ($msg = preg_replace ("/%%user_last_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user->last_name), $msg)))
228
if (($msg = preg_replace ("/%%user_full_name%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (trim ($user->first_name . " " . $user->last_name)), $msg)))
232
if (($msg = preg_replace ("/%%user_id%%/i", c_ws_plugin__s2member_utils_strings::esc_ds ($user_id), $msg)))
233
{
234
if (is_array ($fields) && !empty ($fields))
235
+ foreach /* Custom Registration/Profile Fields. */($fields as $var => $val)
236
if (!($msg = preg_replace ("/%%" . preg_quote ($var, "/") . "%%/i", c_ws_plugin__s2member_utils_strings::esc_ds (maybe_serialize ($val)), $msg)))
237
break;
238
+
239
+ if /* Still have a ``$sbj`` and a ``$msg``? */ ($sbj && ($msg = trim (preg_replace ("/%%(.+?)%%/i", "", $msg))))
240
+
241
foreach (c_ws_plugin__s2member_utils_strings::parse_emails ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["eot_del_notification_recipients"]) as $recipient)
242
+ wp_mail ($recipient, apply_filters ("ws_plugin__s2member_eot_del_notification_email_sbj", $sbj, get_defined_vars ()), apply_filters ("ws_plugin__s2member_eot_del_notification_email_msg", $msg, get_defined_vars ()), "Content-Type: text/plain; charset=UTF-8");
243
}
244
+ if /* Back on? */ ($email_configs_were_on)
245
c_ws_plugin__s2member_email_configs::email_config ();
246
}
247
+ foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
248
do_action ("ws_plugin__s2member_during_auto_eot_system_during_demote", get_defined_vars ());
249
+ unset /* Unset defined __refs, __v. */ ($__refs, $__v);
250
}
251
else if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_eot_behavior"] === "delete")
252
{
253
$eot_del_type = $GLOBALS["ws_plugin__s2member_eot_del_type"] = "auto-eot-cancellation-expiration-deletion";
254
+
255
+ foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
256
do_action ("ws_plugin__s2member_during_auto_eot_system_during_before_delete", get_defined_vars ());
257
do_action ("ws_plugin__s2member_during_collective_eots", $user_id, get_defined_vars (), $eot_del_type, "removal-deletion");
258
+ unset /* Unset defined __refs, __v. */ ($__refs, $__v);
259
+
260
+ if /* Multisite does NOT actually delete; ONLY removes. */(is_multisite ())
261
{
262
remove_user_from_blog ($user_id, $current_blog->blog_id);
263
+ // This will automatically trigger `eot_del_notification_urls`.
264
c_ws_plugin__s2member_user_deletions::handle_ms_user_deletions ($user_id, $current_blog->blog_id, "s2says");
265
}
266
+ else // Otherwise, we can actually delete them.
267
+ // This will automatically trigger `eot_del_notification_urls`
268
+ wp_delete_user /* `c_ws_plugin__s2member_user_deletions::handle_user_deletions()` */ ($user_id);
269
+
270
+ foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
271
do_action ("ws_plugin__s2member_during_auto_eot_system_during_delete", get_defined_vars ());
272
+ unset /* Unset defined __refs, __v. */ ($__refs, $__v);
273
}
274
+ foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
275
do_action ("ws_plugin__s2member_during_auto_eot_system", get_defined_vars ());
276
+ unset /* Unset defined __refs, __v. */ ($__refs, $__v);
277
}
278
}
279
}
280
}
281
}
282
+
283
+ c_ws_plugin__s2member_utils_logs::cleanup_expired_s2m_transients /* Cleanup. */ ();
284
+
285
+ foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
286
do_action ("ws_plugin__s2member_after_auto_eot_system", get_defined_vars ());
287
+ unset /* Unset defined __refs, __v. */($__refs, $__v);
288
+
289
+ return /* Return for uniformity. */;
290
}
291
}
292
}
includes/classes/brute-force.inc.php CHANGED
@@ -4,7 +4,7 @@
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
- * ( coded in the USA )
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
@@ -16,7 +16,7 @@
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_brute_force"))
21
{
22
/**
@@ -43,22 +43,21 @@ if (!class_exists ("c_ws_plugin__s2member_brute_force"))
43
*/
44
public static function track_failed_logins ($username = FALSE)
45
{
46
- eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
47
do_action ("ws_plugin__s2member_before_track_failed_logins", get_defined_vars ());
48
- unset ($__refs, $__v); /* Unset defined __refs, __v. */
49
- /**/
50
if (($max = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_failed_login_attempts"]))
51
{
52
$exp_secs = strtotime ("+" . apply_filters ("ws_plugin__s2member_track_failed_logins__exp_time", "30 minutes", get_defined_vars ())) - time ();
53
- /* If you add Filters to this value, you should use a string that is compatible with PHP's strtotime() function. */
54
- /**/
55
$transient = "s2m_ipr_" . md5 ("s2member_transient_failed_login_attempts_" . $_SERVER["REMOTE_ADDR"]);
56
set_transient ($transient, (int)get_transient ($transient) + 1, $exp_secs);
57
}
58
- /**/
59
do_action ("ws_plugin__s2member_after_track_failed_logins", get_defined_vars ());
60
- /**/
61
- return; /* Return for uniformity. */
62
}
63
/**
64
* Stops anyone attempting a Brute Force attack.
@@ -77,27 +76,26 @@ if (!class_exists ("c_ws_plugin__s2member_brute_force"))
77
*/
78
public static function stop_brute_force_logins ($user = FALSE)
79
{
80
- eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
81
do_action ("ws_plugin__s2member_before_stop_brute_force_logins", get_defined_vars ());
82
- unset ($__refs, $__v); /* Unset defined __refs, __v. */
83
- /**/
84
if (($max = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_failed_login_attempts"]))
85
{
86
$exp_secs = strtotime ("+" . apply_filters ("ws_plugin__s2member_track_failed_logins__exp_time", "30 minutes", get_defined_vars ())) - time ();
87
- /* If you add Filters to this value, you should use a string that is compatible with PHP's strtotime() function. */
88
- /**/
89
$about = c_ws_plugin__s2member_utils_time::approx_time_difference (time (), time () + $exp_secs);
90
- /**/
91
if ((int)get_transient ("s2m_ipr_" . md5 ("s2member_transient_failed_login_attempts_" . $_SERVER["REMOTE_ADDR"])) > $max)
92
{
93
$errors = new WP_Error ("incorrect_password", sprintf (_x ("Max failed logins. Please wait %s and try again.", "s2member-front", "s2member"), $about));
94
- /**/
95
- eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
96
do_action ("ws_plugin__s2member_during_stop_brute_force_logins", get_defined_vars ());
97
- unset ($__refs, $__v); /* Unset defined __refs, __v. */
98
}
99
}
100
- /**/
101
return apply_filters ("ws_plugin__s2member_stop_brute_force_logins", ((!empty ($errors)) ? $errors : $user), get_defined_vars ());
102
}
103
}
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
+ * (coded in the USA)
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
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_brute_force"))
21
{
22
/**
43
*/
44
public static function track_failed_logins ($username = FALSE)
45
{
46
+ foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
47
do_action ("ws_plugin__s2member_before_track_failed_logins", get_defined_vars ());
48
+ unset /* Unset defined __refs, __v. */ ($__refs, $__v);
49
+
50
if (($max = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_failed_login_attempts"]))
51
{
52
$exp_secs = strtotime ("+" . apply_filters ("ws_plugin__s2member_track_failed_logins__exp_time", "30 minutes", get_defined_vars ())) - time ();
53
+ // If you add Filters to this value, you should use a string that is compatible with PHP's strtotime() function.
54
+
55
$transient = "s2m_ipr_" . md5 ("s2member_transient_failed_login_attempts_" . $_SERVER["REMOTE_ADDR"]);
56
set_transient ($transient, (int)get_transient ($transient) + 1, $exp_secs);
57
}
58
do_action ("ws_plugin__s2member_after_track_failed_logins", get_defined_vars ());
59
+
60
+ return /* Return for uniformity. */;
61
}
62
/**
63
* Stops anyone attempting a Brute Force attack.
76
*/
77
public static function stop_brute_force_logins ($user = FALSE)
78
{
79
+ foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
80
do_action ("ws_plugin__s2member_before_stop_brute_force_logins", get_defined_vars ());
81
+ unset /* Unset defined __refs, __v. */ ($__refs, $__v);
82
+
83
if (($max = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_failed_login_attempts"]))
84
{
85
$exp_secs = strtotime ("+" . apply_filters ("ws_plugin__s2member_track_failed_logins__exp_time", "30 minutes", get_defined_vars ())) - time ();
86
+ // If you add Filters to this value, you should use a string that is compatible with PHP's strtotime() function.
87
+
88
$about = c_ws_plugin__s2member_utils_time::approx_time_difference (time (), time () + $exp_secs);
89
+
90
if ((int)get_transient ("s2m_ipr_" . md5 ("s2member_transient_failed_login_attempts_" . $_SERVER["REMOTE_ADDR"])) > $max)
91
{
92
$errors = new WP_Error ("incorrect_password", sprintf (_x ("Max failed logins. Please wait %s and try again.", "s2member-front", "s2member"), $about));
93
+
94
+ foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;
95
do_action ("ws_plugin__s2member_during_stop_brute_force_logins", get_defined_vars ());
96
+ unset /* Unset defined __refs, __v. */ ($__refs, $__v);
97
}
98
}
99
return apply_filters ("ws_plugin__s2member_stop_brute_force_logins", ((!empty ($errors)) ? $errors : $user), get_defined_vars ());
100
}
101
}
includes/classes/cache.inc.php CHANGED
@@ -4,7 +4,7 @@
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
- * ( coded in the USA )
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
@@ -16,7 +16,7 @@
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_cache"))
21
{
22
/**
@@ -43,65 +43,61 @@ if (!class_exists ("c_ws_plugin__s2member_cache"))
43
public static function cached_page_links ()
44
{
45
do_action ("ws_plugin__s2member_before_cached_page_links", get_defined_vars ());
46
- /**/
47
$lwp = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"];
48
$mop = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"];
49
$fdlep = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["file_download_limit_exceeded_page"];
50
- /**/
51
$lwp_cache = @$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["login_welcome_page"];
52
$mop_cache = @$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["membership_options_page"];
53
$fdlep_cache = @$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["file_download_limit_exceeded_page"];
54
- /**/
55
$links = array ("login_welcome_page" => "", "membership_options_page" => "", "file_download_limit_exceeded_page" => "");
56
- /**/
57
if (isset ($lwp_cache["page"], $lwp_cache["time"], $lwp_cache["link"]) && $lwp_cache["page"] === $lwp && $lwp_cache["time"] >= strtotime ("-15 minutes") && $lwp_cache["link"])
58
{
59
$links["login_welcome_page"] = $lwp_cache["link"];
60
}
61
- else /* Otherwise, query the database using ``get_page_link()`` and update the cache. */
62
{
63
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["login_welcome_page"]["page"] = $lwp;
64
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["login_welcome_page"]["time"] = time ();
65
$links["login_welcome_page"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["login_welcome_page"]["link"] = get_page_link ($lwp);
66
- /**/
67
- $cache_needs_updating = true; /* Flag for cache update. */
68
}
69
- /**/
70
if (isset ($mop_cache["page"], $mop_cache["time"], $mop_cache["link"]) && $mop_cache["page"] === $mop && $mop_cache["time"] >= strtotime ("-15 minutes") && $mop_cache["link"])
71
{
72
$links["membership_options_page"] = $mop_cache["link"];
73
}
74
- else /* Otherwise, query the database using ``get_page_link()`` and update the cache. */
75
{
76
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["membership_options_page"]["page"] = $mop;
77
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["membership_options_page"]["time"] = time ();
78
$links["membership_options_page"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["membership_options_page"]["link"] = get_page_link ($mop);
79
- /**/
80
- $cache_needs_updating = true; /* Flag for cache update. */
81
}
82
- /**/
83
if (isset ($fdlep_cache["page"], $fdlep_cache["time"], $fdlep_cache["link"]) && $fdlep_cache["page"] === $fdlep && $fdlep_cache["time"] >= strtotime ("-15 minutes") && $fdlep_cache["link"])
84
{
85
$links["file_download_limit_exceeded_page"] = $fdlep_cache["link"];
86
}
87
- else /* Otherwise, query the database using ``get_page_link()`` and update the cache. */
88
{
89
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["file_download_limit_exceeded_page"]["page"] = $fdlep;
90
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["file_download_limit_exceeded_page"]["time"] = time ();
91
$links["file_download_limit_exceeded_page"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["file_download_limit_exceeded_page"]["link"] = get_page_link ($fdlep);
92
- /**/
93
- $cache_needs_updating = true; /* Flag for cache update. */
94
}
95
- /**/
96
- if ($cache_needs_updating) /* Cache is also reset dynamically during back-end option updates. */
97
{
98
update_option ("ws_plugin__s2member_cache", $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]);
99
}
100
- /**/
101
- $scheme = (is_ssl ()) ? "https" : "http"; /* SSL mode? */
102
- foreach ($links as &$link) /* Conversions for SSL and non-SSL mode. */
103
$link = preg_replace ("/^https?\:\/\//i", $scheme . "://", $link);
104
- /**/
105
return apply_filters ("ws_plugin__s2member_cached_page_links", $links, get_defined_vars ());
106
}
107
}
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
+ * (coded in the USA)
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
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_cache"))
21
{
22
/**
43
public static function cached_page_links ()
44
{
45
do_action ("ws_plugin__s2member_before_cached_page_links", get_defined_vars ());
46
+
47
$lwp = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"];
48
$mop = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"];
49
$fdlep = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["file_download_limit_exceeded_page"];
50
+
51
$lwp_cache = @$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["login_welcome_page"];
52
$mop_cache = @$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["membership_options_page"];
53
$fdlep_cache = @$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["file_download_limit_exceeded_page"];
54
+
55
$links = array ("login_welcome_page" => "", "membership_options_page" => "", "file_download_limit_exceeded_page" => "");
56
+
57
if (isset ($lwp_cache["page"], $lwp_cache["time"], $lwp_cache["link"]) && $lwp_cache["page"] === $lwp && $lwp_cache["time"] >= strtotime ("-15 minutes") && $lwp_cache["link"])
58
{
59
$links["login_welcome_page"] = $lwp_cache["link"];
60
}
61
+ else // Otherwise, query the database using ``get_page_link()`` and update the cache.
62
{
63
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["login_welcome_page"]["page"] = $lwp;
64
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["login_welcome_page"]["time"] = time ();
65
$links["login_welcome_page"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["login_welcome_page"]["link"] = get_page_link ($lwp);
66
+
67
+ $cache_needs_updating = /* Flag for cache update. */ true;
68
}
69
if (isset ($mop_cache["page"], $mop_cache["time"], $mop_cache["link"]) && $mop_cache["page"] === $mop && $mop_cache["time"] >= strtotime ("-15 minutes") && $mop_cache["link"])
70
{
71
$links["membership_options_page"] = $mop_cache["link"];
72
}
73
+ else // Otherwise, query the database using ``get_page_link()`` and update the cache.
74
{
75
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["membership_options_page"]["page"] = $mop;
76
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["membership_options_page"]["time"] = time ();
77
$links["membership_options_page"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["membership_options_page"]["link"] = get_page_link ($mop);
78
+
79
+ $cache_needs_updating = /* Flag for cache update. */ true;
80
}
81
if (isset ($fdlep_cache["page"], $fdlep_cache["time"], $fdlep_cache["link"]) && $fdlep_cache["page"] === $fdlep && $fdlep_cache["time"] >= strtotime ("-15 minutes") && $fdlep_cache["link"])
82
{
83
$links["file_download_limit_exceeded_page"] = $fdlep_cache["link"];
84
}
85
+ else // Otherwise, query the database using ``get_page_link()`` and update the cache.
86
{
87
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["file_download_limit_exceeded_page"]["page"] = $fdlep;
88
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["file_download_limit_exceeded_page"]["time"] = time ();
89
$links["file_download_limit_exceeded_page"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["file_download_limit_exceeded_page"]["link"] = get_page_link ($fdlep);
90
+
91
+ $cache_needs_updating = /* Flag for cache update. */ true;
92
}
93
+ if /* Cache is also reset dynamically during back-end option updates. */ ($cache_needs_updating)
94
{
95
update_option ("ws_plugin__s2member_cache", $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]);
96
}
97
+ $scheme = /* SSL mode? */ (is_ssl ()) ? "https" : "http";
98
+ foreach /* Conversions for SSL and non-SSL mode. */ ($links as &$link)
99
$link = preg_replace ("/^https?\:\/\//i", $scheme . "://", $link);
100
+
101
return apply_filters ("ws_plugin__s2member_cached_page_links", $links, get_defined_vars ());
102
}
103
}
includes/classes/catgs-sp.inc.php CHANGED
@@ -1,10 +1,10 @@
1
<?php
2
/**
3
- * s2Member's Category protection routines *( for specific Categories )*.
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
- * ( coded in the USA )
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
@@ -16,11 +16,11 @@
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
{
22
/**
23
- * s2Member's Category protection routines *( for specific Categories )*.
24
*
25
* @package s2Member\Categories
26
* @since 3.5
@@ -28,62 +28,60 @@ if (!class_exists ("c_ws_plugin__s2member_catgs_sp"))
28
class c_ws_plugin__s2member_catgs_sp
29
{
30
/**
31
- * Handles Category Level Access *( for specific Categories )*.
32
*
33
* @package s2Member\Categories
34
* @since 3.5
35
*
36
* @param int|str $cat_id Numeric Category ID.
37
* @param bool $check_user Test permissions against the current User? Defaults to true.
38
- * @return null|array Non-empty array ( with details ) if access is denied, else null if access is allowed.
39
*/
40
public static function check_specific_catg_level_access ($cat_id = FALSE, $check_user = TRUE)
41
{
42
do_action ("ws_plugin__s2member_before_check_specific_catg_level_access", get_defined_vars ());
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, "/") . "#x2F;", $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 ());
88
}
89
}
1
<?php
2
/**
3
+ * s2Member's Category protection routines *(for specific Categories)*.
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
+ * (coded in the USA)
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
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
{
22
/**
23
+ * s2Member's Category protection routines *(for specific Categories)*.
24
*
25
* @package s2Member\Categories
26
* @since 3.5
28
class c_ws_plugin__s2member_catgs_sp
29
{
30
/**
31
+ * Handles Category Level Access *(for specific Categories)*.
32
*
33
* @package s2Member\Categories
34
* @since 3.5
35
*
36
* @param int|str $cat_id Numeric Category ID.
37
* @param bool $check_user Test permissions against the current User? Defaults to true.
38
+ * @return null|array Non-empty array (with details) if access is denied, else null if access is allowed.
39
*/
40
public static function check_specific_catg_level_access ($cat_id = FALSE, $check_user = TRUE)
41
{
42
do_action ("ws_plugin__s2member_before_check_specific_catg_level_access", get_defined_vars ());
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 = /* Get a full valid URI for this Category. */ c_ws_plugin__s2member_utils_urls::parse_uri (get_category_link ($cat_id));
49
+
50
+ if /* Do NOT touch WordPress® Systematics. */ (!c_ws_plugin__s2member_systematics_sp::is_wp_systematic_use_specific_page (null, $cat_uri))
51
{
52
+ $user = /* Current User's object. */(is_user_logged_in () && is_object ($user = wp_get_current_user ()) && !empty ($user->ID)) ? $user : false;
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, "/") . "#x2F;", $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 /* Never restrict Systematics. However, there is 1 exception ^. */ (!c_ws_plugin__s2member_systematics_sp::is_systematic_use_specific_page (null, $cat_uri))
58
{
59
+ for /* Category Level restrictions. Go through each Level. We also check nested Categories. */ ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--)
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 /* Check Category ancestry. */ ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_catgs"])
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 /* URIs. Go through each Level. */ ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--)
74
{
75
+ if /* URIs configured at this Level? */ ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"])
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
do_action ("ws_plugin__s2member_during_check_specific_catg_level_access", get_defined_vars ());
83
}
84
}
85
return apply_filters ("ws_plugin__s2member_check_specific_catg_level_access", null, get_defined_vars ());
86
}
87
}
includes/classes/catgs.inc.php CHANGED
@@ -1,10 +1,10 @@
1
<?php
2
/**
3
- * s2Member's Category protection routines *( for current page )*.
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
- * ( coded in the USA )
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
@@ -16,11 +16,11 @@
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
{
22
/**
23
- * s2Member's Category protection routines *( for current page )*.
24
*
25
* @package s2Member\Categories
26
* @since 3.5
@@ -28,7 +28,7 @@ if (!class_exists ("c_ws_plugin__s2member_catgs"))
28
class c_ws_plugin__s2member_catgs
29
{
30
/**
31
- * Handles Category Level Access *( for current page )*.
32
*
33
* @package s2Member\Categories
34
* @since 3.5
@@ -37,54 +37,51 @@ 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")) && ($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, "/") . "#x2F;", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level0")))
53
c_ws_plugin__s2member_mo_page::wp_redirect_w_mop_vars /* Configure MOP Vars here. */ ("catg", $cat_id, "level", 0, $_SERVER["REQUEST_URI"], "sys") . 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
c_ws_plugin__s2member_mo_page::wp_redirect_w_mop_vars /* Configure MOP Vars here. */ ("catg", $cat_id, "level", $n, $_SERVER["REQUEST_URI"]) . 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
c_ws_plugin__s2member_mo_page::wp_redirect_w_mop_vars /* Configure MOP Vars here. */ ("catg", $cat_id, "level", $n, $_SERVER["REQUEST_URI"]) . 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
c_ws_plugin__s2member_mo_page::wp_redirect_w_mop_vars /* Configure MOP Vars here. */ ("catg", $cat_id, "level", $n, $_SERVER["REQUEST_URI"]) . 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
c_ws_plugin__s2member_mo_page::wp_redirect_w_mop_vars /* Configure MOP Vars here. */ ("catg", $cat_id, "level", $n, $_SERVER["REQUEST_URI"], "ruri") . 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 ());
86
- /**/
87
- return; /* For uniformity. */
88
}
89
}
90
}
1
<?php
2
/**
3
+ * s2Member's Category protection routines *(for current page)*.
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
+ * (coded in the USA)
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
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
{
22
/**
23
+ * s2Member's Category protection routines *(for current page)*.
24
*
25
* @package s2Member\Categories
26
* @since 3.5
28
class c_ws_plugin__s2member_catgs
29
{
30
/**
31
+ * Handles Category Level Access *(for current page)*.
32
*
33
* @package s2Member\Categories
34
* @since 3.5
37
*/
38
public static function check_catg_level_access ()
39
{
40
+ global /* ``get_the_ID()`` is NOT available outside The Loop. */ $post;
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 /* Do NOT touch WordPress® Systematics. This excludes all WordPress® Systematics. */ (!c_ws_plugin__s2member_systematics::is_wp_systematic_use_page ())
49
{
50
+ $user = /* Current User's object. */ (is_user_logged_in () && is_object ($user = wp_get_current_user ()) && !empty ($user->ID)) ? $user : false;
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, "/") . "#x2F;", $_SERVER["REQUEST_URI"]) && c_ws_plugin__s2member_no_cache::no_cache_constants (true) && (!$user || !$user->has_cap ("access_s2member_level0")))
53
c_ws_plugin__s2member_mo_page::wp_redirect_w_mop_vars /* Configure MOP Vars here. */ ("catg", $cat_id, "level", 0, $_SERVER["REQUEST_URI"], "sys") . exit ();
54
+
55
+ else if /* Do NOT protect Systematics. However, there is 1 exception above. */ (!c_ws_plugin__s2member_systematics::is_systematic_use_page ())
56
{
57
+ for /* Category Level restrictions. Go through each Level. We also check nested Categories. */ ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--)
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
c_ws_plugin__s2member_mo_page::wp_redirect_w_mop_vars /* Configure MOP Vars here. */ ("catg", $cat_id, "level", $n, $_SERVER["REQUEST_URI"]) . 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
c_ws_plugin__s2member_mo_page::wp_redirect_w_mop_vars /* Configure MOP Vars here. */ ("catg", $cat_id, "level", $n, $_SERVER["REQUEST_URI"]) . 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
c_ws_plugin__s2member_mo_page::wp_redirect_w_mop_vars /* Configure MOP Vars here. */ ("catg", $cat_id, "level", $n, $_SERVER["REQUEST_URI"]) . exit ();
69
}
70
+ for /* URIs. Go through each Level. */ ($n = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n >= 0; $n--)
71
{
72
+ if /* URIs configured at this Level? */ ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_ruris"])
73
+
74
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)
75
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)))
76
c_ws_plugin__s2member_mo_page::wp_redirect_w_mop_vars /* Configure MOP Vars here. */ ("catg", $cat_id, "level", $n, $_SERVER["REQUEST_URI"], "ruri") . exit ();
77
}
78
}
79
do_action ("ws_plugin__s2member_during_check_catg_level_access", get_defined_vars ());
80
}
81
}
82
do_action ("ws_plugin__s2member_after_check_catg_level_access", get_defined_vars ());
83
+
84
+ return /* For uniformity. */;
85
}
86
}
87
}
includes/classes/check-activation.inc.php CHANGED
@@ -4,7 +4,7 @@
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
- * ( coded in the USA )
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
@@ -16,7 +16,7 @@
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_check_activation"))
21
{
22
/**
@@ -37,7 +37,7 @@ if (!class_exists ("c_ws_plugin__s2member_check_activation"))
37
*
38
* @return null
39
*/
40
- public static function check () /* Up-to-date? */
41
{
42
if (!($v = get_option ("ws_plugin__s2member_activated_version")) || !version_compare ($v, WS_PLUGIN__S2MEMBER_VERSION, ">="))
43
{
@@ -51,8 +51,7 @@ if (!class_exists ("c_ws_plugin__s2member_check_activation"))
51
{
52
c_ws_plugin__s2member_installation::activate ("levels");
53
}
54
- /**/
55
- return; /* Return for uniformity. */
56
}
57
}
58
}
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
+ * (coded in the USA)
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
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_check_activation"))
21
{
22
/**
37
*
38
* @return null
39
*/
40
+ public static function check ()
41
{
42
if (!($v = get_option ("ws_plugin__s2member_activated_version")) || !version_compare ($v, WS_PLUGIN__S2MEMBER_VERSION, ">="))
43
{
51
{
52
c_ws_plugin__s2member_installation::activate ("levels");
53
}
54
+ return /* Return for uniformity. */;
55
}
56
}
57
}
includes/classes/constants.inc.php CHANGED
@@ -1,10 +1,10 @@
1
<?php
2
/**
3
- * s2Member's API Constants *( for site owners )*.
4
*
5
* Copyright: © 2009-2011
6
* {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7
- * ( coded in the USA )
8
*
9
* Released under the terms of the GNU General Public License.
10
* You should have received a copy of the GNU General Public License,
@@ -16,11 +16,11 @@
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_constants"))
21
{
22
/**
23
- * s2Member's API Constants *( for site owners )*.
24
*
25
* @package s2Member\API_Constants
26
* @since 3.5
@@ -44,15 +44,15 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
44
public static function constants ()
45
{
46
do_action ("ws_plugin__s2member_before_constants", get_defined_vars ());
47
- /**/
48
$links = c_ws_plugin__s2member_cache::cached_page_links ();
49
- /**/
50
$user = (is_user_logged_in () && is_object ($user = wp_get_current_user ()) && $user->ID) ? $user : false;
51
- /**/
52
$level = c_ws_plugin__s2member_user_access::user_access_level ($user);
53
$file_downloads = c_ws_plugin__s2member_files::user_downloads ($user);
54
$login_redirection_url = c_ws_plugin__s2member_login_redirects::login_redirection_url ($user);
55
- /**/
56
$custom = ($user) ? get_user_option ("s2member_custom", $user->ID) : "";
57
$subscr_id = ($user) ? get_user_option ("s2member_subscr_id", $user->ID) : "";
58
$subscr_gateway = ($user) ? get_user_option ("s2member_subscr_gateway", $user->ID) : "";
@@ -60,10 +60,10 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
60
$custom_fields = ($user) ? get_user_option ("s2member_custom_fields", $user->ID) : array ();
61
$paid_registration_times = ($user) ? get_user_option ("s2member_paid_registration_times", $user->ID) : array ();
62
$login_counter = ($user) ? (int)get_user_option ("s2member_login_counter") : -1;
63
- /**/
64
- eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$__v;');
65
do_action ("ws_plugin__s2member_during_constants", get_defined_vars ());
66
- unset ($__refs, $__v); /* Unset defined __refs, __v. */
67
/**
68
* Current version of s2Member.
69
*
@@ -250,7 +250,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
250
* The current User's Membership Access Label.
251
*
252
* As configured by the site owner. Each Membership Level is associated with a Membership Label
253
- * *( i.e. Bronze, Silver, Gold, Platinum )*, or whatever the site owner has configured.
254
*
255
* An empty string if NOT logged-in.
256
*
@@ -284,7 +284,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
284
if (!defined ("S2MEMBER_CURRENT_USER_ACCESS_LABEL"))
285
define ("S2MEMBER_CURRENT_USER_ACCESS_LABEL", ($c[] = (string)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $level . "_label"]));
286
/**
287
- * The current User's Paid Subscription ID ( when applicable ).
288
*
289
* An empty string if NOT logged-in.
290
*
@@ -322,7 +322,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
322
if (!defined ("S2MEMBER_CURRENT_USER_SUBSCR_ID"))
323
define ("S2MEMBER_CURRENT_USER_SUBSCR_ID", ($c[] = (($user) ? (string)$subscr_id : "")));
324
/**
325
- * The current User's Paid Subscription ID ( when applicable );
326
* otherwise, this will contain their WordPress® User ID.
327
*
328
* An empty string if NOT logged-in.
@@ -361,7 +361,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
361
if (!defined ("S2MEMBER_CURRENT_USER_SUBSCR_OR_WP_ID"))
362
define ("S2MEMBER_CURRENT_USER_SUBSCR_OR_WP_ID", ($c[] = (($user) ? (($subscr_id) ? (string)$subscr_id : (string)$user->ID) : "")));
363
/**
364
- * The current User's Paid Subscription Gateway Code ( when applicable ).
365
*
366
* Usually one of these values: `paypal`, `authnet`, `clickbank`, `google`, `ccbill`, `alipay`.
367
*
@@ -822,7 +822,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
822
if (!defined ("S2MEMBER_CURRENT_USER_EMAIL"))
823
define ("S2MEMBER_CURRENT_USER_EMAIL", ($c[] = (($user) ? (string)$user->user_email : "")));
824
/**
825
- * The current User's IP Address ( even if/when NOT logged-in ).
826
*
827
* This is the current IP Address, taken from ``$_SERVER["REMOTE_ADDR"]``.
828
*
@@ -1050,7 +1050,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1050
*
1051
* @see s2Member\API_Constants\S2MEMBER_FILE_DOWNLOAD_INLINE_EXTENSIONS
1052
*
1053
- * @see `Dashboard -> s2Member -> Download Options`
1054
*/
1055
if (!defined ("S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED"))
1056
define ("S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED", ($c[] = (int)$file_downloads["allowed"]));
@@ -1104,7 +1104,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1104
*
1105
* @see s2Member\API_Constants\S2MEMBER_FILE_DOWNLOAD_INLINE_EXTENSIONS
1106
*
1107
- * @see `Dashboard -> s2Member -> Download Options`
1108
*/
1109
if (!defined ("S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_IS_UNLIMITED"))
1110
define ("S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_IS_UNLIMITED", ($c[] = (($file_downloads["allowed"] >= 999999999) ? true : false)));
@@ -1149,7 +1149,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1149
*
1150
* @see s2Member\API_Constants\S2MEMBER_FILE_DOWNLOAD_INLINE_EXTENSIONS
1151
*
1152
- * @see `Dashboard -> s2Member -> Download Options`
1153
*/
1154
if (!defined ("S2MEMBER_CURRENT_USER_DOWNLOADS_CURRENTLY"))
1155
define ("S2MEMBER_CURRENT_USER_DOWNLOADS_CURRENTLY", ($c[] = (int)$file_downloads["currently"]));
@@ -1194,7 +1194,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1194
*
1195
* @see s2Member\API_Constants\S2MEMBER_FILE_DOWNLOAD_INLINE_EXTENSIONS
1196
*
1197
- * @see `Dashboard -> s2Member -> Download Options`
1198
*/
1199
if (!defined ("S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_DAYS"))
1200
define ("S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_DAYS", ($c[] = (int)$file_downloads["allowed_days"]));
@@ -1249,7 +1249,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1249
*
1250
* @see s2Member\API_Constants\S2MEMBER_FILE_DOWNLOAD_INLINE_EXTENSIONS
1251
*
1252
- * @see `Dashboard -> s2Member -> Download Options`
1253
*/
1254
if (!defined ("S2MEMBER_FILE_DOWNLOAD_LIMIT_EXCEEDED_PAGE_ID"))
1255
define ("S2MEMBER_FILE_DOWNLOAD_LIMIT_EXCEEDED_PAGE_ID", ($c[] = (int)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["file_download_limit_exceeded_page"]));
@@ -1289,7 +1289,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1289
*
1290
* @see s2Member\API_Constants\S2MEMBER_CURRENT_USER_PROFILE_MODIFICATION_PAGE_URL
1291
*
1292
- * @see `Dashboard -> s2Member -> General Options -> Membership Options Page`
1293
*/
1294
if (!defined ("S2MEMBER_MEMBERSHIP_OPTIONS_PAGE_ID"))
1295
define ("S2MEMBER_MEMBERSHIP_OPTIONS_PAGE_ID", ($c[] = (int)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"]));
@@ -1329,14 +1329,14 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1329
*
1330
* @see s2Member\API_Constants\S2MEMBER_CURRENT_USER_PROFILE_MODIFICATION_PAGE_URL
1331
*
1332
- * @see `Dashboard -> s2Member -> General Options -> Login Welcome Page`
1333
*/
1334
if (!defined ("S2MEMBER_LOGIN_WELCOME_PAGE_ID"))
1335
define ("S2MEMBER_LOGIN_WELCOME_PAGE_ID", ($c[] = (int)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"]));
1336
/**
1337
* A URL, which leads to the Stand-Alone Profile Modification Page.
1338
*
1339
- * This is always a reference to `/?s2member_profile=1` *( i.e. the Stand-Alone version )*.
1340
*
1341
* ———— Quick PHP Code Sample ————
1342
* ```
@@ -1368,7 +1368,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1368
* @see s2Member\API_Constants\S2MEMBER_FILE_DOWNLOAD_LIMIT_EXCEEDED_PAGE_ID
1369
* @see s2Member\API_Constants\S2MEMBER_FILE_DOWNLOAD_LIMIT_EXCEEDED_PAGE_URL
1370
*
1371
- * @see `Dashboard -> s2Member -> General Options -> Profile Modifications`
1372
*/
1373
if (!defined ("S2MEMBER_CURRENT_USER_PROFILE_MODIFICATION_PAGE_URL"))
1374
define ("S2MEMBER_CURRENT_USER_PROFILE_MODIFICATION_PAGE_URL", ($c[] = (string)site_url ("/?s2member_profile=1")));
@@ -1423,7 +1423,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1423
*
1424
* @see s2Member\API_Constants\S2MEMBER_FILE_DOWNLOAD_INLINE_EXTENSIONS
1425
*
1426
- * @see `Dashboard -> s2Member -> Download Options`
1427
*/
1428
if (!defined ("S2MEMBER_FILE_DOWNLOAD_LIMIT_EXCEEDED_PAGE_URL"))
1429
define ("S2MEMBER_FILE_DOWNLOAD_LIMIT_EXCEEDED_PAGE_URL", ($c[] = (string)$links["file_download_limit_exceeded_page"]));
@@ -1463,10 +1463,10 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1463
*
1464
* @see s2Member\API_Constants\S2MEMBER_CURRENT_USER_PROFILE_MODIFICATION_PAGE_URL
1465
*
1466
- * @see `Dashboard -> s2Member -> General Options -> Membership Options Page`
1467
*/
1468
if (!defined ("S2MEMBER_MEMBERSHIP_OPTIONS_PAGE_URL"))
1469
- define ("S2MEMBER_MEMBERSHIP_OPTIONS_PAGE_URL", ($c[] = (string)$links["membership_options_page"])); /* Signup page. */
1470
/**
1471
* The URL, which leads to the Login Welcome Page; as configured by the site owner.
1472
*
@@ -1503,7 +1503,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1503
*
1504
* @see s2Member\API_Constants\S2MEMBER_CURRENT_USER_PROFILE_MODIFICATION_PAGE_URL
1505
*
1506
- * @see `Dashboard -> s2Member -> General Options -> Login Welcome Page`
1507
*/
1508
if (!defined ("S2MEMBER_LOGIN_WELCOME_PAGE_URL"))
1509
define ("S2MEMBER_LOGIN_WELCOME_PAGE_URL", ($c[] = (($login_redirection_url) ? (string)$login_redirection_url : (string)$links["login_welcome_page"])));
@@ -1546,7 +1546,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1546
* @see http://codex.wordpress.org/Function_Reference/wp_logout_url wp_logout_url()
1547
*/
1548
if (!defined ("S2MEMBER_LOGOUT_PAGE_URL"))
1549
- define ("S2MEMBER_LOGOUT_PAGE_URL", ($c[] = (string)wp_logout_url ())); /* This triggers `wp_nonce_tick()`; watch out for dynamic changes. */
1550
/**
1551
* The URL, where a User can log into their account.
1552
*
@@ -1586,9 +1586,9 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1586
* @see http://codex.wordpress.org/Function_Reference/wp_login_url wp_login_url()
1587
*/
1588
if (!defined ("S2MEMBER_LOGIN_PAGE_URL"))
1589
- define ("S2MEMBER_LOGIN_PAGE_URL", ($c[] = (string)wp_login_url ())); /* Will not trigger `wp_nonce_tick()`, no worries in this case. */
1590
/**
1591
- * Each Membership Level ( Label ); as configured by the site owner.
1592
*
1593
* The defaults are as follows:
1594
* o Level #0 ``S2MEMBER_LEVEL0_LABEL`` = Free Subscriber
@@ -1625,7 +1625,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1625
*
1626
* @see http://codex.wordpress.org/Function_Reference/wp_get_current_user wp_get_current_user()
1627
*
1628
- * @see `Dashboard -> s2Member -> General Options -> Membership Level ( Labels )`
1629
*/
1630
for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
1631
{
@@ -1677,7 +1677,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1677
*
1678
* @see s2Member\API_Constants\S2MEMBER_FILE_DOWNLOAD_INLINE_EXTENSIONS
1679
*
1680
- * @see `Dashboard -> s2Member -> Download Options`
1681
*/
1682
for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
1683
{
@@ -1730,7 +1730,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1730
*
1731
* @see s2Member\API_Constants\S2MEMBER_FILE_DOWNLOAD_INLINE_EXTENSIONS
1732
*
1733
- * @see `Dashboard -> s2Member -> Download Options`
1734
*/
1735
for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
1736
{
@@ -1774,7 +1774,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1774
* @see s2Member\API_Constants\S2MEMBER_LEVELn_FILE_DOWNLOADS_ALLOWED
1775
* @see s2Member\API_Constants\S2MEMBER_LEVELn_FILE_DOWNLOADS_ALLOWED_DAYS
1776
*
1777
- * @see `Dashboard -> s2Member -> Download Options`
1778
*/
1779
if (!defined ("S2MEMBER_FILE_DOWNLOAD_INLINE_EXTENSIONS"))
1780
define ("S2MEMBER_FILE_DOWNLOAD_INLINE_EXTENSIONS", ($c[] = (string)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["file_download_inline_extensions"]));
@@ -1801,7 +1801,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1801
*
1802
* @see s2Member\API_Constants\S2MEMBER_REG_EMAIL_FROM_EMAIL
1803
*
1804
- * @see `Dashboard -> s2Member -> General Options`
1805
*/
1806
if (!defined ("S2MEMBER_REG_EMAIL_FROM_NAME"))
1807
define ("S2MEMBER_REG_EMAIL_FROM_NAME", ($c[] = (string)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["reg_email_from_name"]));
@@ -1828,7 +1828,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1828
*
1829
* @see s2Member\API_Constants\S2MEMBER_REG_EMAIL_FROM_NAME
1830
*
1831
- * @see `Dashboard -> s2Member -> General Options`
1832
*/
1833
if (!defined ("S2MEMBER_REG_EMAIL_FROM_EMAIL"))
1834
define ("S2MEMBER_REG_EMAIL_FROM_EMAIL", ($c[] = (string)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["reg_email_from_email"]));
@@ -1856,7 +1856,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1856
* @see s2Member\API_Constants\S2MEMBER_PAYPAL_RETURN_URL
1857
* @see s2Member\API_Constants\S2MEMBER_PAYPAL_PDT_IDENTITY_TOKEN
1858
*
1859
- * @see `Dashboard -> s2Member -> PayPal® Options -> IPN Integration`
1860
*/
1861
if (!defined ("S2MEMBER_PAYPAL_NOTIFY_URL"))
1862
define ("S2MEMBER_PAYPAL_NOTIFY_URL", ($c[] = (string)site_url ("/?s2member_paypal_notify=1")));
@@ -1884,7 +1884,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1884
* @see s2Member\API_Constants\S2MEMBER_PAYPAL_NOTIFY_URL
1885
* @see s2Member\API_Constants\S2MEMBER_PAYPAL_PDT_IDENTITY_TOKEN
1886
*
1887
- * @see `Dashboard -> s2Member -> PayPal® Options -> Auto-Return/PDT Integration`
1888
*/
1889
if (!defined ("S2MEMBER_PAYPAL_RETURN_URL"))
1890
define ("S2MEMBER_PAYPAL_RETURN_URL", ($c[] = (string)site_url ("/?s2member_paypal_return=1")));
@@ -1913,12 +1913,12 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
1913
* @see s2Member\API_Constants\S2MEMBER_PAYPAL_API_PASSWORD
1914
* @see s2Member\API_Constants\S2MEMBER_PAYPAL_API_SIGNATURE
1915
*
1916
- * @see `Dashboard -> s2Member -> PayPal® Options -> Account Details`
1917
*/
1918
if (!defined ("S2MEMBER_PAYPAL_BUSINESS"))
1919
define ("S2MEMBER_PAYPAL_BUSINESS", ($c[] = (string)$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_business"]));
1920
/**
1921
- * PayPal® endpoint domain ( changes when Sandbox Mode is enabled ).
1922
*
1923