PluginProbe
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions / 110815
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions v110815
260917 260913 260909 260829 260814 260805 110710 110731 110812 110815 110912 110913 110915 110926 110927 111002 111003 111011 111017 111029 111105 111206 111216 111220 120213 All 189 releases
s2member / includes / classes / option-forces.inc.php

option-forces.inc.php in s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions 110815, at includes/classes/option-forces.inc.php

259 lines 12.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Forces WordPress® options.
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,
11 * along with this software. In the main directory, see: /licensing/
12 * If not, see: {@link http://www.gnu.org/licenses/}.
13 *
14 * @package s2Member\Option_Forces
15 * @since 3.5
16 */
17 if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
18 exit("Do not access this file directly.");
19 /**/
20 if (!class_exists ("c_ws_plugin__s2member_option_forces"))
21 {
22 /**
23 * Forces WordPress® options.
24 *
25 * @package s2Member\Option_Forces
26 * @since 3.5
27 */
28 class c_ws_plugin__s2member_option_forces
29 {
30 /**
31 * Forces a default Role for new registrations, NOT tied to an incoming payment.
32 *
33 * @package s2Member\Option_Forces
34 * @since 3.5
35 *
36 * @attaches-to: ``add_filter("pre_option_default_role");``
37 *
38 * @param str $default_role Expects a default Role to be passed by the Filter.
39 * @return str Default Role, as configured by s2Member.
40 */
41 public static function force_default_role ($default_role = FALSE)
42 {
43 do_action ("ws_plugin__s2member_before_force_default_role", get_defined_vars ());
44 /**/
45 return apply_filters ("ws_plugin__s2member_force_default_role", ($default_role = "subscriber"), get_defined_vars ());
46 }
47 /**
48 * Forces a default Role for new Multisite registrations ( on the Main Site ) NOT tied to an incoming payment.
49 *
50 * @package s2Member\Option_Forces
51 * @since 3.5
52 *
53 * @attaches-to: ``add_filter("pre_site_option_default_user_role");``
54 *
55 * @param str $default_role Expects a default Role to be passed by the Filter.
56 * @return str Default Role, as configured by s2Member.
57 */
58 public static function force_mms_default_role ($default_role = FALSE)
59 {
60 do_action ("ws_plugin__s2member_before_force_mms_default_role", get_defined_vars ());
61 /**/
62 return apply_filters ("ws_plugin__s2member_force_mms_default_role", ($default_role = "subscriber"), get_defined_vars ());
63 }
64 /**
65 * Forces a specific Role to demote to, whenever a Member is demoted in one way or another.
66 *
67 * Use by the PayPal® IPN routines, and also by the Auto-EOT system.
68 *
69 * @package s2Member\Option_Forces
70 * @since 3.5
71 *
72 * @param str $demotion_role Expects a demotion Role to be passed by the caller.
73 * @return str Demotion Role, as configured by s2Member.
74 */
75 public static function force_demotion_role ($demotion_role = FALSE)
76 {
77 do_action ("ws_plugin__s2member_before_force_demotion_role", get_defined_vars ());
78 /**/
79 return apply_filters ("ws_plugin__s2member_force_demotion_role", ($demotion_role = "subscriber"), get_defined_vars ());
80 }
81 /**
82 * Allows new Users to be created on a Multisite Network.
83 *
84 * @package s2Member\Option_Forces
85 * @since 3.5
86 *
87 * @attaches-to: ``add_filter("pre_site_option_add_new_users");``
88 *
89 * @param int|str $allow Numeric string (`1`) or (`0`), expected by the Filter.
90 * @return str Numeric (`1`) or (`0`) indicating true or false. Forces to (`1`) true.
91 */
92 public static function mms_allow_new_users ($allow = FALSE)
93 {
94 do_action ("ws_plugin__s2member_before_mms_allow_new_users", get_defined_vars ());
95 /**/
96 return apply_filters ("ws_plugin__s2member_mms_allow_new_users", ($allow = "1"), get_defined_vars ());
97 }
98 /**
99 * Forces a Multisite Dashboard Blog to be the Main Site.
100 *
101 * @package s2Member\Option_Forces
102 * @since 3.5
103 *
104 * @attaches-to: ``add_filter("pre_site_option_dashboard_blog");``
105 *
106 * @param int|str $dashboard_blog Numeric Dashboard Blog ID passed through by the Filter.
107 * @return int|str Numeric Dashboard Blog ID, as configured by s2Member. Forces to the Main Site.
108 */
109 public static function mms_dashboard_blog ($dashboard_blog = FALSE)
110 {
111 global $current_site, $current_blog; /* For Multisite support. */
112 /**/
113 do_action ("ws_plugin__s2member_before_mms_dashboard_blog", get_defined_vars ());
114 /**/
115 $main_site = ((is_multisite ()) ? $current_site->blog_id : "1"); /* Forces the Main Site. */
116 /**/
117 return apply_filters ("ws_plugin__s2member_mms_dashboard_blog", ($dashboard_blog = $main_site), get_defined_vars ());
118 }
119 /**
120 * Allows access to the Registration Form.
121 *
122 * @package s2Member\Option_Forces
123 * @since 3.5
124 *
125 * @attaches-to: ``add_filter("pre_option_users_can_register");``
126 *
127 * @param int|str $users_can_register Numeric (`1`) or (`0`), indicating true or false; passed through by the Filter.
128 * @return str Numeric value of (`1`) or (`0`), indicating true or false; depending on several factors.
129 */
130 public static function check_register_access ($users_can_register = FALSE)
131 {
132 global $wpdb; /* Global database object reference */
133 /**/
134 eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
135 do_action ("ws_plugin__s2member_before_check_register_access", get_defined_vars ());
136 unset ($__refs, $__v); /* Unset defined __refs, __v. */
137 /**/
138 $by_default = $users_can_register = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["allow_subscribers_in"];
139 /**/
140 if (is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && is_main_site ())
141 return apply_filters ("ws_plugin__s2member_check_register_access", ($users_can_register = "0"), get_defined_vars ());
142 /**/
143 else if (!is_admin () && !$users_can_register) /* Do NOT run these security checks on option pages; it's confusing to a site owner. */
144 if (!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || !is_main_site () || is_super_admin () || current_user_can ("create_users"))
145 {
146 if ((is_multisite () && is_super_admin ()) || current_user_can ("create_users") || c_ws_plugin__s2member_register_access::reg_cookies_ok ())
147 {
148 return apply_filters ("ws_plugin__s2member_check_register_access", ($users_can_register = "1"), get_defined_vars ());
149 }
150 }
151 /**/
152 return apply_filters ("ws_plugin__s2member_check_register_access", $users_can_register, get_defined_vars ());
153 }
154 /**
155 * Allows access to the main Multisite Registration Form.
156 *
157 * @package s2Member\Option_Forces
158 * @since 3.5
159 *
160 * @attaches-to: ``add_filter("pre_site_option_registration");``
161 *
162 * @param str $users_can_register Expects *( `none`, `all`, or `user` )*, passed through by the Filter.
163 * @return str One of `none|all|user`; depending on several factors.
164 */
165 public static function check_mms_register_access ($users_can_register = FALSE)
166 {
167 global $wpdb; /* Global database object reference */
168 global $current_site, $current_blog; /* For Multisite support. */
169 /**/
170 eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
171 do_action ("ws_plugin__s2member_before_check_register_access", get_defined_vars ());
172 unset ($__refs, $__v); /* Unset defined __refs, __v. */
173 /**/
174 $by_default = $users_can_register = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["mms_registration_grants"];
175 /**/
176 if (c_ws_plugin__s2member_utils_conds::bp_is_installed () && is_multisite () && /* BP Multisite / but NOT offering Blogs? */ !c_ws_plugin__s2member_utils_conds::is_multisite_farm ())
177 return apply_filters ("ws_plugin__s2member_check_mms_register_access", ($users_can_register = ((c_ws_plugin__s2member_option_forces::check_register_access ()) ? "user" : "none")), get_defined_vars ());
178 /**/
179 else if (!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || !is_main_site ()) /* Blog Farm? */
180 return apply_filters ("ws_plugin__s2member_check_mms_register_access", ($users_can_register = "none"), get_defined_vars ());
181 /**/
182 else if (!is_admin () && $users_can_register !== "all") /* Do NOT run these checks on option pages; it's confusing to a site owner. */
183 {
184 if (is_super_admin () || current_user_can ("create_users") || (($reg_cookies = c_ws_plugin__s2member_register_access::reg_cookies_ok ()) && extract ($reg_cookies)))
185 {
186 if (is_super_admin () || current_user_can ("create_users")) /* Either a Super Administrator, or an Administrator that can create. */
187 {
188 return apply_filters ("ws_plugin__s2member_check_mms_register_access", ($users_can_register = "all"), get_defined_vars ());
189 }
190 else if (!empty ($reg_cookies) && preg_match ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["membership_item_number_w_level_regex"], $item_number, $m) && !empty ($m[1]) && is_numeric ($level = $m[1]))
191 {
192 if (!empty ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["mms_registration_blogs_level" . $level])) /* Blog(s)? */
193 {
194 return apply_filters ("ws_plugin__s2member_check_mms_register_access", ($users_can_register = "all"), get_defined_vars ());
195 }
196 else /* Otherwise, we MUST allow them to at least create an account; they paid for it! Defaults to `user`. */
197 {
198 return apply_filters ("ws_plugin__s2member_check_mms_register_access", ($users_can_register = "user"), get_defined_vars ());
199 }
200 }
201 }
202 /* --------------------> $users_can_register !== "all", so exclude Level #0. */
203 else if (is_user_logged_in () && current_user_can ("access_s2member_level1") && is_object ($user = wp_get_current_user ()) && $user->ID)
204 {
205 $blogs_allowed = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["mms_registration_blogs_level" . c_ws_plugin__s2member_user_access::user_access_level ($user)];
206 $user_blogs = (is_array ($blogs = get_blogs_of_user ($user->ID))) ? count ($blogs) - 1 : 0;
207 /**/
208 $user_blogs = ($user_blogs >= 0) ? $user_blogs : 0; /* NOT less than zero. */
209 $blogs_allowed = ($blogs_allowed >= 0) ? $blogs_allowed : 0;
210 /**/
211 if ($user_blogs < $blogs_allowed) /* Are they within their limit? */
212 {
213 return apply_filters ("ws_plugin__s2member_check_mms_register_access", ($users_can_register = "all"), get_defined_vars ());
214 }
215 }
216 }
217 /**/
218 else if (!is_admin () && $users_can_register === "all") /* Do NOT run these security checks on option pages; it's confusing to a site owner. */
219 {
220 if (is_user_logged_in () && is_object ($user = wp_get_current_user ()) && $user->ID)
221 {
222 $blogs_allowed = $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["mms_registration_blogs_level" . c_ws_plugin__s2member_user_access::user_access_level ()];
223 $user_blogs = (is_array ($blogs = get_blogs_of_user ($user->ID))) ? count ($blogs) - 1 : 0;
224 /**/
225 $user_blogs = ($user_blogs >= 0) ? $user_blogs : 0; /* NOT less than zero. */
226 $blogs_allowed = ($blogs_allowed >= 0) ? $blogs_allowed : 0;
227 /**/
228 if ($user_blogs >= $blogs_allowed) /* Are they at their limit? */
229 {
230 return apply_filters ("ws_plugin__s2member_check_mms_register_access", ($users_can_register = "none"), get_defined_vars ());
231 }
232 }
233 }
234 /**/
235 return apply_filters ("ws_plugin__s2member_check_mms_register_access", $users_can_register, get_defined_vars ());
236 }
237 /**
238 * Register access in BuddyPress, for Multisite compatibility.
239 *
240 * BuddyPress bypasses the default Filter `pre_site_option_registration`, and instead uses: ``bp_core_get_site_options()``.
241 *
242 * @package s2Member\Option_Forces
243 * @since 3.5
244 *
245 * @attaches-to: ``add_filter("bp_core_get_site_options");``
246 *
247 * @param array $site_options Expects array of BuddyPress site options.
248 * @return array Site options array, after having been Filtered by this routine.
249 */
250 public static function check_bp_mms_register_access ($site_options = FALSE)
251 {
252 if (is_multisite ()) /* Only if Multisite Networking is enabled. Pointless otherwise. */
253 $site_options["registration"] = c_ws_plugin__s2member_option_forces::check_mms_register_access ($site_options["registration"]);
254 /**/
255 return apply_filters ("ws_plugin__s2member_check_bp_mms_register_access", $site_options, get_defined_vars ());
256 }
257 }
258 }
259 ?>