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.19 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 / RestrictionShortcode.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
RestrictionShortcode.php
105 lines
1 <?php
2
3 namespace ProfilePress\Core\ContentProtection\Frontend;
4
5 use ProfilePress\Core\Membership\Models\Customer\CustomerFactory;
6
7 class RestrictionShortcode
8 {
9 public function __construct()
10 {
11 add_shortcode('pp-restrict-content', [$this, 'shortcode_handler']);
12 }
13
14 public function shortcode_handler($atts, $content = null)
15 {
16 $atts = shortcode_atts(array(
17 'roles' => '',
18 'users' => '',
19 'plans' => '',
20 'status' => '',
21 'action' => 'show' // value can be "show" or "hide"
22 ), $atts);
23
24 if ($atts['action'] == 'hide') {
25 return $this->rule_matches($atts['roles'], $atts['users'], $atts['plans'], $atts['status']) ? '' : \do_shortcode($content);
26 } else {
27 return $this->rule_matches($atts['roles'], $atts['users'], $atts['plans'], $atts['status']) ? \do_shortcode($content) : '';
28 }
29 }
30
31 public function rule_matches($roles = '', $user_ids = '', $plans = '', $sub_status = false)
32 {
33 if (is_user_logged_in()) {
34
35 $current_user_id = get_current_user_id();
36
37 if ( ! empty($plans)) {
38
39 $plans = array_map('absint', explode(',', $plans));
40
41 $customer = CustomerFactory::fromUserId($current_user_id);
42
43 foreach ($plans as $plan_id) {
44
45 if ( ! empty($sub_status)) {
46
47 $latestOnly = apply_filters('ppress_restriction_shortcode_rule_latest_only', false);
48
49 if ($latestOnly) {
50 $subs = $customer->get_subscriptions([], ['number' => 1]);
51 if ( ! empty($subs) && $subs[0]->status == $sub_status) return true;
52 } else {
53 if ($customer->has_any_status_subscription($plan_id, [$sub_status])) return true;
54 }
55 } else {
56 if ($customer->has_active_subscription($plan_id)) return true;
57 }
58 }
59 }
60
61 if ( ! empty($roles)) {
62
63 $roles = array_map('sanitize_text_field', explode(',', $roles));
64
65 $user_roles = wp_get_current_user()->roles;
66
67 if ( ! empty(array_intersect($roles, $user_roles))) return true;
68 }
69
70 if ( ! empty($user_ids)) {
71
72 $user_ids = array_map('sanitize_text_field', explode(',', $user_ids));
73
74 foreach ($user_ids as $user_id) {
75
76 if (is_numeric($user_id) && $current_user_id == absint($user_id)) {
77 return true;
78 } else {
79 $user = get_user_by('login', $user_id);
80 if ( ! $user) {
81 $user = get_user_by('email', $user_id);
82 }
83
84 if ($user instanceof \WP_User && $current_user_id == absint($user->ID)) {
85 return true;
86 }
87 }
88 }
89 }
90 }
91
92 return false;
93 }
94
95 public static function get_instance()
96 {
97 static $instance = null;
98
99 if (is_null($instance)) {
100 $instance = new self();
101 }
102
103 return $instance;
104 }
105 }