PluginProbe
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions / trunk
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions vtrunk
260909 260829 260814 260805 110710 110731 110812 110815 110912 110913 110915 110926 110927 111002 111003 111011 111017 111029 111105 111206 111216 111220 120213 120219 120301 All 187 releases
s2member / src / includes / classes / user-access.inc.php

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

172 lines 7.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 // @codingStandardsIgnoreFile
3 /**
4 * User access routines.
5 *
6 * Copyright: © 2009-2011
7 * {@link http://websharks-inc.com/ WebSharks, Inc.}
8 * (coded in the USA)
9 *
10 * Released under the terms of the GNU General Public License.
11 * You should have received a copy of the GNU General Public License,
12 * along with this software. In the main directory, see: /licensing/
13 * If not, see: {@link http://www.gnu.org/licenses/}.
14 *
15 * @package s2Member\User_Access
16 * @since 3.5
17 */
18 if(!defined('WPINC')) // MUST have WordPress.
19 exit ('Do not access this file directly.');
20
21 if(!class_exists('c_ws_plugin__s2member_user_access'))
22 {
23 /**
24 * User access routines.
25 *
26 * @package s2Member\User_Access
27 * @since 3.5
28 */
29 class c_ws_plugin__s2member_user_access
30 {
31 /**
32 * Determines the Access Role of a User/Member.
33 *
34 * If ``$user`` is NOT passed in, check the current User/Member.
35 * If ``$user`` IS passed in, this function will check a specific ``$user``.
36 * Returns their Role ID/Name value.
37 *
38 * @package s2Member\User_Access
39 * @since 3.5
40 *
41 * @param \WP_User $user Optional. A `WP_User` object. Defaults to the current User.
42 * In order to check the current User, you must call this function with no arguments/parameters.
43 *
44 * @return string Role ID/Name, or an empty string if they have no Role, or if ``$user`` does not exist, or if no User is currently logged-in.
45 */
46 public static function user_access_role($user = NULL)
47 {
48 if((func_num_args() && (!is_object($user) || empty($user->ID))) || (!func_num_args() && !$user && (!is_object($user = (is_user_logged_in()) ? wp_get_current_user() : FALSE) || empty($user->ID))))
49 return apply_filters('ws_plugin__s2member_user_access_role', '', get_defined_vars());
50
51 else // Else we return the first Role in their array of assigned WordPress Roles.
52 return apply_filters('ws_plugin__s2member_user_access_role', reset($user->roles), get_defined_vars());
53 }
54
55 /**
56 * Determines Custom Capabilities of a User/Member.
57 *
58 * If ``$user`` is NOT passed in, check the current User/Member.
59 * If ``$user`` IS passed in, this function will check a specific ``$user``.
60 * Returns an array of Custom Capabilities.
61 *
62 * @package s2Member\User_Access
63 * @since 3.5
64 *
65 * @param \WP_User $user Optional. A `WP_User` object. Defaults to the current User.
66 * In order to check the current User, you must call this function with no arguments/parameters.
67 *
68 * @return array Array of Custom Capabilities, or an empty array if they have no Custom Capabilities, or if ``$user`` does not exist, or if no User is currently logged-in.
69 */
70 public static function user_access_ccaps($user = NULL)
71 {
72 if((func_num_args() && (!is_object($user) || empty($user->ID))) || (!func_num_args() && !$user && (!is_object($user = (is_user_logged_in()) ? wp_get_current_user() : FALSE) || empty($user->ID))))
73 return apply_filters('ws_plugin__s2member_user_access_ccaps', array(), get_defined_vars());
74
75 else // Otherwise, we DO have the $user object available.
76 {
77 $ccaps = array(); // Initializes $ccaps array.
78
79 foreach($user->allcaps as $cap => $cap_enabled)
80 if(preg_match('/^access_s2member_ccap_/', $cap) && $cap_enabled)
81 $ccaps[] = preg_replace('/^access_s2member_ccap_/', '', $cap);
82
83 return apply_filters('ws_plugin__s2member_user_access_ccaps', $ccaps, get_defined_vars());
84 }
85 }
86
87 /**
88 * Determines Access Level of a User/Member.
89 *
90 * If ``$user`` is NOT passed in, check the current User/Member.
91 * If ``$user`` IS passed in, this function will check a specific ``$user``.
92 * Returns `-1` thru number of configured Levels, according to the Access Level#.
93 *
94 * @package s2Member\User_Access
95 * @since 3.5
96 *
97 * @param object $user Optional. A `WP_User` object. Defaults to the current User.
98 * In order to check the current User, you must call this function with no arguments/parameters.
99 *
100 * @return int Access Level#, `-1` if ``$user`` does not exist, or if no User is currently logged-in.
101 */
102 public static function user_access_level($user = NULL)
103 {
104 if((func_num_args() && (!is_object($user) || empty($user->ID))) || (!func_num_args() && !$user && (!is_object($user = (is_user_logged_in()) ? wp_get_current_user() : FALSE) || empty($user->ID))))
105 return apply_filters('ws_plugin__s2member_user_access_level', -1, get_defined_vars()); // No $user, or NOT logged in.
106
107 for($n = $GLOBALS['WS_PLUGIN__']['s2member']['c']['levels']; $n >= 0; $n--)
108 if($user->has_cap('access_s2member_level'.$n)) // Membership Level access.
109 {
110 return apply_filters('ws_plugin__s2member_user_access_level', $n, get_defined_vars());
111 }
112 return apply_filters('ws_plugin__s2member_user_access_level', 0, get_defined_vars());
113 }
114
115 /**
116 * Determines Access Level of a specific Role.
117 *
118 * @package s2Member\User_Access
119 * @since 3.5
120 *
121 * @param string $role A WordPress Role ID/Name.
122 *
123 * @return int Access Level#, `-1` if ``$role`` is empty.
124 */
125 public static function user_access_role_to_level($role = '')
126 {
127 if(!($role = strtolower($role))) // No ``$role`` provided. Default value of -1.
128 return apply_filters('ws_plugin__s2member_user_access_role_to_level', -1, get_defined_vars());
129
130 else if(in_array($role, array('administrator', 'editor', 'author', 'contributor', 'bbp_moderator')))
131 return apply_filters('ws_plugin__s2member_user_access_role_to_level', $GLOBALS['WS_PLUGIN__']['s2member']['c']['levels'], get_defined_vars());
132
133 else if(preg_match('/^s2member_level([0-9]+)$/i', $role, $m) && $m[1] >= 1) // Test for s2Member Roles.
134 return apply_filters('ws_plugin__s2member_user_access_role_to_level', (int)$m[1], get_defined_vars());
135
136 else if($role === 'subscriber') // Testing for Free Subscriber Role.
137 return apply_filters('ws_plugin__s2member_user_access_role_to_level', 0, get_defined_vars());
138
139 else // Else we assume this is a 'User' ( a Free Subscriber with an Access Level of 0. ).
140 return apply_filters('ws_plugin__s2member_user_access_role_to_level', 0, get_defined_vars());
141 }
142
143 /**
144 * Determines Access Label for a User/Member.
145 *
146 * If ``$user`` is NOT passed in, check the current User/Member.
147 * If ``$user`` IS passed in, this function will check a specific ``$user``.
148 *
149 * @package s2Member\User_Access
150 * @since 3.5
151 *
152 * @param object $user Optional. A `WP_User` object. Defaults to the current User.
153 * In order to check the current User, you must call this function with no arguments/parameters.
154 *
155 * @return string Access Level Label, empty string if ``$user`` does not exist, or if no User is currently logged-in.
156 */
157 public static function user_access_label($user = NULL)
158 {
159 if((func_num_args() && (!is_object($user) || empty($user->ID))) || (!func_num_args() && !$user && (!is_object($user = (is_user_logged_in()) ? wp_get_current_user() : FALSE) || empty($user->ID))))
160 {
161 return apply_filters('ws_plugin__s2member_user_access_label', '', get_defined_vars()); // No $user, or NOT logged in.
162 }
163 else if(($level = c_ws_plugin__s2member_user_access::user_access_level($user)) >= 0 && !empty($GLOBALS['WS_PLUGIN__']['s2member']['o']['level'.$level.'_label']))
164 {
165 return apply_filters('ws_plugin__s2member_user_access_label', $GLOBALS['WS_PLUGIN__']['s2member']['o']['level'.$level.'_label'], get_defined_vars());
166 }
167 else // Else there is no Label configured for this User/Member. Return empty string.
168 return apply_filters('ws_plugin__s2member_user_access_label', '', get_defined_vars());
169 }
170 }
171 }
172