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 / Redirect.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
Redirect.php
97 lines
1 <?php
2
3 namespace ProfilePress\Core\ContentProtection\Frontend;
4
5 use ProfilePress\Core\ContentProtection\SettingsPage;
6 use ProfilePress\Core\Classes\PROFILEPRESS_sql;
7
8 class Redirect
9 {
10 public function __construct()
11 {
12 add_action('template_redirect', [$this, 'handler'], -1);
13 }
14
15 public function handler()
16 {
17 $metas = PROFILEPRESS_sql::get_meta_data_by_key(SettingsPage::META_DATA_KEY);
18
19 if (is_array($metas)) {
20
21 foreach ($metas as $meta) {
22
23 $meta_value = ppress_var($meta, 'meta_value', []);
24
25 if ( ! in_array(ppress_var($meta_value, 'is_active', true), ['true', true], true)) continue;
26
27 $access_condition = ppress_var($meta_value, 'access_condition', []);
28
29 $noaccess_action = ppress_var($access_condition, 'noaccess_action');
30
31 if ('redirect' != $noaccess_action) continue;
32
33 $redirect_url = '';
34
35 $current_url_raw = ppress_get_current_url_query_string();
36
37 $current_url = untrailingslashit(strtok($current_url_raw, '?'));
38
39 if ('custom_url' == ppress_var($access_condition, 'noaccess_action_redirect_url')) {
40 $redirect_url = ppress_var($access_condition, 'noaccess_action_redirect_custom_url');
41 }
42
43 if (empty($redirect_url)) {
44 $redirect_url = ppress_login_url($current_url);
45 }
46
47 // ----- Exclude the redirect url, login, registration, password reset and edit profile pages ------//
48 /** strtok() remove all query strings and trailing slash. @see https://stackoverflow.com/a/6975045/2648410 */
49 $comp_redirect_url = untrailingslashit(strtok($redirect_url, '?'));
50
51 $login_url = untrailingslashit(strtok(ppress_login_url(), '?'));
52 $registration_url = untrailingslashit(strtok(ppress_registration_url(), '?'));
53 $password_reset_url = untrailingslashit(strtok(ppress_password_reset_url(), '?'));
54 $edit_profile_url = untrailingslashit(strtok(ppress_edit_profile_url(), '?'));
55
56 if ($current_url == $comp_redirect_url) continue;
57 if ($current_url == $login_url) continue;
58 if ($current_url == $registration_url) continue;
59 if ($current_url == $password_reset_url) continue;
60 if ($current_url == $edit_profile_url) continue;
61
62 if (isset($meta_value['exempt']) && is_array($meta_value['exempt']) && Checker::content_match($meta_value['exempt'])) continue;
63
64 $is_new = ppress_var($meta_value, 'is_new') == 'true';
65
66 if (Checker::content_match($meta_value['content'], true, $is_new)) {
67
68 $who_can_access = ppress_var($access_condition, 'who_can_access', 'everyone');
69
70 $access_roles = ppress_var($access_condition, 'access_roles', []);
71 $access_wp_users = ppress_var($access_condition, 'access_wp_users', []);
72 $access_membership_plans = ppress_var($access_condition, 'access_membership_plans', []);
73
74 if (Checker::is_blocked($who_can_access, $access_roles, $access_wp_users, $access_membership_plans)) {
75 nocache_headers();
76 wp_safe_redirect(esc_url_raw($redirect_url));
77 exit;
78 }
79
80 break;
81 };
82
83 }
84 }
85 }
86
87 public static function get_instance()
88 {
89 static $instance = null;
90
91 if (is_null($instance)) {
92 $instance = new self();
93 }
94
95 return $instance;
96 }
97 }