PageRenderTime 61ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/plugins/s2member/includes/classes/option-forces.inc.php

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