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
260913 260909 260829 260814 260805 110710 110731 110812 110815 110912 110913 110915 110926 110927 111002 111003 111011 111017 111029 111105 111206 111216 111220 120213 120219 All 188 releases
s2member / includes / classes / user-securities.inc.php

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

140 lines 6.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * User securities.
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\User_Securities
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_user_securities"))
21 {
22 /**
23 * User securities.
24 *
25 * @package s2Member\User_Securities
26 * @since 3.5
27 */
28 class c_ws_plugin__s2member_user_securities
29 {
30 /**
31 * Initializes Filter for `user_has_cap`.
32 *
33 * It's very important that this is NOT attached before WordPress® creates `$current_user` via `$wp->init()`.
34 * This prevents crashes when other plugins attempt to call upon `current_user_can()` before WordPress is initialized.
35 * For instance, some plugins attempt to use `current_user_can()` on the `plugins_loaded` Hook, which they should not do.
36 *
37 * @package s2Member\User_Securities
38 * @since 3.5
39 *
40 * @attaches-to: ``add_action("init");``
41 *
42 * @return null
43 */
44 public static function initialize () /* Initializes the Filter for `user_has_cap`. */
45 {
46 add_filter ("user_has_cap", "c_ws_plugin__s2member_user_securities::user_capabilities", 10, 3);
47 }
48 /**
49 * Alters `WP_User->has_cap()` in special cases for Administrators.
50 *
51 * @package s2Member\User_Securities
52 * @since 110815
53 *
54 * @attaches-to: ``add_filter("user_has_cap");``
55 *
56 * @param array $capabilities Expects an array of Capabilities passed in by the Filter.
57 * This array contains all of the Capabilities that the User has *( i.e. ``$user->allcaps`` )*.
58 * @param array $caps_map An array of Capabilities mapped out by the ``map_meta_cap`` function.
59 * @param array $args Array of arguments originally passed through the ``has_cap()`` function.
60 * However, WordPress® modifies this array of arguments in the following way.
61 * Argument `[0]` is the Capability test string itself *( this is normal )*.
62 * Argument `[1]` is added by WordPress®; it's the ID of the User.
63 * Other arguments starting from array index `[2]` are normal.
64 * @return array An array of Capabilities.
65 */
66 public static function user_capabilities ($capabilities = FALSE, $caps_map = FALSE, $args = FALSE)
67 {
68 eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
69 do_action ("ws_plugin__s2member_before_user_capabilities", get_defined_vars ());
70 unset ($__refs, $__v); /* Unset defined __refs, __v. */
71 /**/
72 if (!is_multisite () && !empty ($capabilities["administrator"]) && !empty ($args[0]) && preg_match ("/^access_s2member_ccap_/i", $args[0]) && apply_filters ("ws_plugin__s2member_admins_have_all_ccaps", true, get_defined_vars ()))
73 $capabilities = array_merge ((array)$capabilities, array ($args[0] => 1));
74 /**/
75 else if (is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && (is_super_admin () || !empty ($capabilities["administrator"])) && !empty ($args[0]) && ($args[0] === "edit_user" || $args[0] === "edit_users"))
76 if ($args[0] === "edit_users" || ($args[0] === "edit_user" && !empty ($args[2]) && ((!empty ($args[1]) && (int)$args[1] === (int)$args[2]) || is_user_member_of_blog ($args[2]))))
77 $capabilities = array_merge ((array)$capabilities, array ("edit_users" => 1));
78 /**/
79 return apply_filters ("ws_plugin__s2member_user_capabilities", $capabilities, get_defined_vars ());
80 }
81 /**
82 * Alters this Filter inside `/wp-admin/user-edit.php`.
83 *
84 * @package s2Member\User_Securities
85 * @since 3.5
86 *
87 * @attaches-to: ``add_filter("enable_edit_any_user_configuration");``
88 *
89 * @param bool $allow Expects boolean value passed through by the Filter.
90 * @return bool True if the current User is allowed to edit any User, else existing value.
91 */
92 public static function ms_allow_edits ($allow = FALSE)
93 {
94 global $user_id; /* Available inside `/wp-admin/user-edit.php`. */
95 /**/
96 eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
97 do_action ("ws_plugin__s2member_before_ms_allow_edits", get_defined_vars ());
98 unset ($__refs, $__v); /* Unset defined __refs, __v. */
99 /**/
100 if (is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm ())
101 if (is_super_admin () || (current_user_can ("administrator") && $user_id && is_user_member_of_blog ($user_id)))
102 $allow = true; /* Yes, allow Administrators to edit User Profiles. */
103 /**/
104 return apply_filters ("ws_plugin__s2member_ms_allow_edits", $allow, get_defined_vars ());
105 }
106 /**
107 * Hides Password fields for Demo Users; and deals with Password fields on Multisite Blog Farms.
108 *
109 * Demo accounts *( where the Username MUST be "demo" )*, will NOT be allowed to change their Password.
110 * Any other restrictions you need to impose must be done through custom programming, using s2Member's Conditionals.
111 * See `s2Member -> API Scripting`.
112 *
113 * @package s2Member\User_Securities
114 * @since 3.5
115 *
116 * @attaches-to: ``add_filter("show_password_fields");``
117 *
118 * @param bool $show Expects boolean value passed through by the Filter.
119 * @param obj $user Expects a `WP_User` object passed through by the Filter.
120 * @return bool False if the Password is locked for this User, else existing value.
121 */
122 public static function hide_password_fields ($show = TRUE, $user = FALSE)
123 {
124 eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
125 do_action ("ws_plugin__s2member_before_hide_password_fields", get_defined_vars ());
126 unset ($__refs, $__v); /* Unset defined __refs, __v. */
127 /**/
128 if ($show && is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm ())
129 if (!is_super_admin () && is_object ($user) && !empty ($user->ID) && is_object ($current_user = wp_get_current_user ()) && !empty ($current_user->ID))
130 if ($user->ID !== $current_user->ID)
131 $show = false;
132 /**/
133 if ($show && is_object ($user) && !empty ($user->ID) && $user->user_login === "demo")
134 $show = false; /* Lock Password on Demos. */
135 /**/
136 return apply_filters ("ws_plugin__s2member_hide_password_fields", $show, get_defined_vars ());
137 }
138 }
139 }
140 ?>