PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / trunk
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress vtrunk
4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / ContentProtection / Frontend / Checker.php
wp-user-avatar / src / ContentProtection / Frontend Last commit date
Checker.php 1 year ago PostContent.php 9 months ago Redirect.php 1 year ago RestrictionShortcode.php 3 months ago SearchAndAPI.php 1 year ago index.php 5 years ago restricted-template.php 1 year ago
Checker.php
143 lines
1 <?php
2
3 namespace ProfilePress\Core\ContentProtection\Frontend;
4
5
6 use ProfilePress\Core\ContentProtection\ContentConditions;
7 use ProfilePress\Core\Membership\Models\Customer\CustomerFactory;
8
9 class Checker
10 {
11 public static function is_blocked($who_can_access = 'everyone', $roles = [], $wp_users = [], $membership_plans = [])
12 {
13 $function_args = func_get_args();
14
15 if ('login' == $who_can_access) {
16
17 if ( ! is_user_logged_in()) return self::fr(true, ...$function_args);
18
19 if ( ! empty($membership_plans)) {
20
21 $customer = CustomerFactory::fromUserId(get_current_user_id());
22
23 $membership_plans = array_map('absint', $membership_plans);
24
25 foreach ($membership_plans as $plan_id) {
26 if ($customer->has_active_subscription($plan_id)) return self::fr(false, ...$function_args);
27 }
28 }
29
30 if ( ! empty($roles)) {
31
32 $user = wp_get_current_user();
33
34 $user_roles = $user->roles;
35
36 if (is_array($roles) && in_array('administrator', $roles, true) && is_super_admin($user->ID)) {
37 return self::fr(false, ...$function_args);
38 }
39
40 if ( ! empty(array_intersect($roles, $user_roles))) return self::fr(false, ...$function_args);
41 }
42
43 if ( ! empty($wp_users)) {
44
45 $users = array_map('absint', $wp_users);
46
47 if (in_array(get_current_user_id(), $users)) return self::fr(false, ...$function_args);
48 }
49
50 if (empty($roles) && empty($wp_users) && empty($membership_plans)) return self::fr(false, ...$function_args);
51
52 // returning true to make users and user role combined rule OR instead of AND
53 return self::fr(true, ...$function_args);
54 }
55
56 if ('logout' == $who_can_access) {
57
58 if (is_user_logged_in()) return self::fr(true, ...$function_args);
59 }
60
61 return self::fr(false, ...$function_args);
62 }
63
64 /**
65 * @param $protection_rule
66 * @param bool $is_redirect set to true if this is a redirect check and not post content check.
67 * @param bool $is_new True if using the new reversed logic where OR comes AND and AND beocomes OR
68 *
69 * @return bool
70 */
71 public static function content_match($protection_rule, $is_redirect = false, $is_new = false)
72 {
73 if (empty($protection_rule)) return false;
74
75 $content_match = false;
76
77 if ($is_new) {
78
79 // All Groups Must Return True. Break if any is false
80 foreach ($protection_rule as $group => $conditions) {
81
82 $group_check_bucket = [];
83 // At least one group condition must be true. Break this loop if any condition is true.
84 foreach ($conditions as $condition) {
85
86 $match = self::check_condition($condition['condition'], ppress_var($condition, 'value', []), $is_redirect);
87
88 $group_check_bucket[] = $match ? 'true' : 'false';
89 }
90
91 if ( ! in_array('false', $group_check_bucket)) {
92 $content_match = true;
93 break;
94 }
95 }
96
97 } else {
98
99 // All Groups Must Return True. Break if any is false
100 foreach ($protection_rule as $group => $conditions) {
101
102 // Groups are false until a condition proves true.
103 $group_check = false;
104
105 // At least one group condition must be true. Break this loop if any condition is true.
106 foreach ($conditions as $condition) {
107
108 $match = self::check_condition($condition['condition'], ppress_var($condition, 'value', []), $is_redirect);
109
110 // If any condition passes, set $group_check true and break.
111 if ($match) {
112 $group_check = true;
113 break;
114 }
115 }
116
117 // If any group of conditions doesn't pass, not loadable.
118 if ( ! $group_check) {
119 $content_match = false;
120 break;
121 } else {
122 $content_match = true;
123 }
124 }
125 }
126
127 return $content_match;
128 }
129
130 public static function check_condition($condition_id, $rule_saved_value, $is_redirect = false)
131 {
132 $condition = ContentConditions::get_instance()->get_condition($condition_id);
133
134 if ( ! $condition) return false;
135
136 return call_user_func($condition['callback'], $condition_id, $rule_saved_value, $is_redirect);
137 }
138
139 public static function fr($response, ...$filter_args)
140 {
141 return apply_filters('ppress_content_protection_is_blocked', $response, ...$filter_args);
142 }
143 }