PluginProbe ʕ •ᴥ•ʔ
Admin and Site Enhancements (ASE) / 8.2.2
Admin and Site Enhancements (ASE) v8.2.2
9.1.0 9.0.2 9.0.1 9.0.0 8.9.2 8.9.1 8.9.0 8.8.8 8.8.7 8.8.6 8.8.5 8.8.4 8.8.3 8.8.2 8.8.1 8.8.0 8.7.3 8.7.2 8.7.1 8.2.1 8.2.2 8.2.3 8.3.0 8.3.1 8.3.2 8.4.0 8.4.1 8.4.2 8.5.0 8.5.1 8.5.2 8.6.0 8.6.1 8.6.2 8.7.0 5.0.1 5.0.2 5.0.2.1 5.0.2.2 5.0.2.3 5.0.2.4 5.1.0 5.2.0 5.2.1 5.2.10 5.2.11 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.3.0 5.3.1 5.3.2 5.4.0 5.4.1 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.8.0 5.8.1 6.0.0 6.0.3 6.0.4 6.0.5 6.0.5.1 6.0.6 6.0.7 6.0.8.1 6.1.0 6.1.3 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.2.6 6.2.7 6.3.0 6.3.1 6.3.2 6.4.0 6.5.0 6.5.1 6.6.0 6.7.0 6.8.0 6.8.2 6.8.3 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13.1 6.9.13.2 6.9.2 6.9.3 6.9.4 6.9.5 6.9.6 6.9.7 6.9.8 6.9.9 7.0.0 7.0.2 7.0.2.1 7.0.2.2 7.0.2.3 7.0.3 7.1.0 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2.0 7.2.1 7.3.0 7.3.1 7.3.2 7.3.3 7.4.0 7.4.2 7.4.4 7.4.5 7.4.6 7.4.7 7.4.8 7.5.0 7.5.1 7.5.2 7.5.3 7.5.4 7.6.0 7.6.1 7.6.1.1 7.6.10 7.6.11 7.6.2 7.6.3 7.6.4 7.6.5 7.6.6 7.6.7 7.6.7.1 7.6.8 7.6.9 7.7.0 7.8.0 7.8.1 7.8.10 7.8.11 7.8.12 7.8.13 7.8.14 7.8.15 7.8.16 7.8.17 7.8.18 7.8.2 7.8.3 7.8.4 7.8.5 7.8.5.1 7.8.6 7.8.7 7.8.8 7.8.9 7.9.0 7.9.1 7.9.10 7.9.11 7.9.2 7.9.3 7.9.4 7.9.5 7.9.6 7.9.7 7.9.8 7.9.9 8.0.0 8.0.1 8.0.2 8.0.3 8.0.4 8.0.5 8.0.6 8.0.7 8.0.8 8.1.0 8.1.1 8.1.2 8.1.3 8.1.4 8.2.0 trunk 1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 1.9.0 2.0.0 2.1.0 2.2.0 2.3.0 2.4.0 2.5.0 2.6.0 2.7.0 2.8.0 2.8.1 2.8.2 2.8.3 2.9.0 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.2.0 3.3.0 3.4.0 3.5.0 3.6.1 3.7.0 3.8.0 3.9.0 3.9.1 3.9.2 4.0.0 4.0.1 4.1.0 4.2.0 4.2.1 4.2.2 4.3.0 4.3.1 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.8.0 4.8.1 4.8.2 4.8.3 4.9.0 4.9.1 4.9.2 4.9.3 5.0.0
admin-site-enhancements / classes / class-redirect-after-logout.php
admin-site-enhancements / classes Last commit date
class-activation.php 7 months ago class-admin-menu-organizer.php 7 months ago class-admin-menu-svg-icon-mask.php 7 months ago class-auto-publish-posts-with-missed-schedule.php 7 months ago class-avif-upload.php 7 months ago class-captcha-protection.php 7 months ago class-change-login-url.php 7 months ago class-cleanup-admin-bar.php 7 months ago class-common-methods.php 7 months ago class-content-duplication.php 7 months ago class-content-order.php 7 months ago class-custom-admin-footer-text.php 7 months ago class-custom-body-class.php 7 months ago class-custom-css.php 7 months ago class-custom-nav-menu-items-in-new-tab.php 7 months ago class-deactivation.php 7 months ago class-disable-author-archives.php 7 months ago class-disable-comments.php 7 months ago class-disable-dashboard-widgets.php 7 months ago class-disable-embeds.php 7 months ago class-disable-feeds.php 7 months ago class-disable-gutenberg.php 7 months ago class-disable-rest-api.php 7 months ago class-disable-smaller-components.php 7 months ago class-disable-updates.php 7 months ago class-disable-xml-rpc.php 7 months ago class-display-system-summary.php 7 months ago class-email-address-obfuscator.php 7 months ago class-email-delivery.php 7 months ago class-enhance-list-tables.php 7 months ago class-external-permalinks.php 7 months ago class-heartbeat-control.php 7 months ago class-hide-admin-bar.php 7 months ago class-hide-admin-notices.php 7 months ago class-image-sizes-panel.php 7 months ago class-image-upload-control.php 7 months ago class-insert-head-body-footer-code.php 7 months ago class-last-login-column.php 7 months ago class-limit-login-attempts.php 7 months ago class-login-id-type.php 7 months ago class-login-logout-menu.php 7 months ago class-maintenance-mode.php 7 months ago class-manage-ads-appads-txt.php 7 months ago class-manage-robots-txt.php 7 months ago class-media-replacement.php 7 months ago class-multiple-user-roles.php 7 months ago class-obfuscate-author-slugs.php 7 months ago class-open-external-links-in-new-tab.php 7 months ago class-password-protection.php 7 months ago class-redirect-after-login.php 7 months ago class-redirect-after-logout.php 7 months ago class-redirect-fourofour.php 7 months ago class-registration-date-column.php 7 months ago class-revisions-control.php 7 months ago class-search-engines-visibility.php 7 months ago class-settings-fields-render.php 7 months ago class-settings-sanitization.php 7 months ago class-settings-sections-fields.php 7 months ago class-show-custom-taxonomy-filters.php 7 months ago class-site-identity-on-login-page.php 7 months ago class-svg-upload.php 7 months ago class-various-admin-ui-enhancements.php 7 months ago class-view-admin-as-role.php 7 months ago class-wider-admin-menu.php 7 months ago class-wp-config-transformer.php 7 months ago
class-redirect-after-logout.php
238 lines
1 <?php
2
3 namespace ASENHA\Classes;
4
5 /**
6 * Class for Redirect After Logout module
7 *
8 * @since 6.9.5
9 */
10 class Redirect_After_Logout {
11 /**
12 * Redirect to custom internal URL after login for user roles
13 *
14 * @param string $redirect_to_url URL to redirect to. Default is admin dashboard URL.
15 * @param string $origin_url URL the user is coming from.
16 * @param object $user logged-in user's data.
17 * @since 1.6.0
18 */
19 public function redirect_after_logout( $user_id ) {
20 $options = get_option( ASENHA_SLUG_U, array() );
21 $this->redirect_to_single_url( $user_id );
22 }
23
24 /**
25 * Redirect all applicable user roles to a single URL
26 *
27 * @since 7.3.3
28 */
29 public function redirect_to_single_url( $user_id ) {
30 $options = get_option( ASENHA_SLUG_U, array() );
31 $redirect_after_logout_to_slug_raw = ( isset( $options['redirect_after_logout_to_slug'] ) ? $options['redirect_after_logout_to_slug'] : '' );
32 if ( !empty( $redirect_after_logout_to_slug_raw ) ) {
33 $redirect_after_logout_to_slug = trim( trim( $redirect_after_logout_to_slug_raw ), '/' );
34 if ( false !== strpos( $redirect_after_logout_to_slug, '#' ) || false !== strpos( $redirect_after_logout_to_slug, '?' ) || false !== strpos( $redirect_after_logout_to_slug, '.php' ) || false !== strpos( $redirect_after_logout_to_slug, '.html' ) ) {
35 $relative_path = $redirect_after_logout_to_slug;
36 // do not append slash at the end
37 } else {
38 $relative_path = $redirect_after_logout_to_slug . '/';
39 }
40 } else {
41 $relative_path = '';
42 }
43 $redirect_url = get_site_url() . '/' . $relative_path;
44 $redirect_after_logout_for = $options['redirect_after_logout_for'];
45 $user = get_userdata( $user_id );
46 if ( isset( $redirect_after_logout_for ) && count( $redirect_after_logout_for ) > 0 ) {
47 // Assemble single-dimensional array of roles for which custom URL redirection should happen
48 $roles_for_custom_redirect = array();
49 foreach ( $redirect_after_logout_for as $role_slug => $custom_redirect ) {
50 if ( $custom_redirect ) {
51 $roles_for_custom_redirect[] = $role_slug;
52 }
53 }
54 // Does the user have roles data in array form?
55 if ( isset( $user->roles ) && is_array( $user->roles ) ) {
56 $current_user_roles = $user->roles;
57 }
58 // Redirect for roles set in the settings. Otherwise, leave redirect URL to the default, i.e. admin dashboard.
59 foreach ( $current_user_roles as $role ) {
60 if ( in_array( $role, $roles_for_custom_redirect ) ) {
61 wp_safe_redirect( $redirect_url );
62 exit;
63 }
64 }
65 }
66 }
67
68 /**
69 * Get the relative path to redirect to based on the raw redirect slug
70 *
71 * @since 7.3.3
72 */
73 public function get_redirect_relative_path( $redirect_after_logout_to_slug_raw ) {
74 if ( !empty( $redirect_after_logout_to_slug_raw ) ) {
75 $redirect_after_logout_to_slug = trim( trim( $redirect_after_logout_to_slug_raw ), '/' );
76 if ( false !== strpos( $redirect_after_logout_to_slug, '#' ) || false !== strpos( $redirect_after_logout_to_slug, '?' ) || false !== strpos( $redirect_after_logout_to_slug, '.php' ) || false !== strpos( $redirect_after_logout_to_slug, '.html' ) ) {
77 $relative_path = $redirect_after_logout_to_slug;
78 // do not append slash at the end
79 } else {
80 $relative_path = $redirect_after_logout_to_slug . '/';
81 }
82 } else {
83 $relative_path = '';
84 }
85 return $relative_path;
86 }
87
88 /**
89 * Apply custom redirect URL based on user role
90 *
91 * @since 7.4.8
92 */
93 // public function apply_custom_logout_redirect( $redirect_to, $requested_redirect_to, $user ) {
94 // $options = get_option( ASENHA_SLUG_U, array() );
95 // if ( bwasenha_fs()->can_use_premium_code__premium_only() ) {
96 // $redirect_after_logout_type = isset( $options['redirect_after_logout_type'] ) ? $options['redirect_after_logout_type'] : 'single_url';
97 // if ( 'separate_urls' == $redirect_after_logout_type ) {
98 // $redirect_after_logout_for_separate_role = isset( $options['redirect_after_logout_for_separate_role'] ) ? $options['redirect_after_logout_for_separate_role'] : array();
99 // $redirect_after_logout_for_separate_slug = isset( $options['redirect_after_logout_for_separate_slug'] ) ? $options['redirect_after_logout_for_separate_slug'] : array();
100 // if ( isset( $user->roles ) && is_array( $user->roles ) ) {
101 // $current_user_roles = $user->roles;
102 // }
103 // if ( isset( $redirect_after_logout_for_separate_role ) && ( count( $redirect_after_logout_for_separate_role ) > 0 ) ) {
104 // foreach ( $current_user_roles as $role ) {
105 // foreach ( $redirect_after_logout_for_separate_role as $role_slug => $custom_redirect ) {
106 // if ( $role == $role_slug
107 // && $custom_redirect
108 // ) {
109 // $redirect_after_logout_to_slug_raw = $redirect_after_logout_for_separate_slug[$role_slug];
110 // $relative_path = $this->get_redirect_relative_path( $redirect_after_logout_to_slug_raw );
111 // $redirect_to = home_url( $relative_path );
112 // }
113 // }
114 // }
115 // }
116 // } else {
117 // $redirect_to = $this->get_redirect_to_single_url( $user );
118 // }
119 // } else {
120 // $redirect_to = $this->get_redirect_to_single_url( $user );
121 // }
122 // return $redirect_to;
123 // }
124 /**
125 * Return the single redirect URL for all roles
126 *
127 * @since 7.4.8
128 */
129 // public function get_redirect_to_single_url( $user ) {
130 // $options = get_option( ASENHA_SLUG_U, array() );
131 // $redirect_after_logout_to_slug_raw = isset( $options['redirect_after_logout_to_slug'] ) ? $options['redirect_after_logout_to_slug'] : '';
132 // if ( ! empty( $redirect_after_logout_to_slug_raw ) ) {
133 // $redirect_after_logout_to_slug = trim( trim( $redirect_after_logout_to_slug_raw ), '/');
134 // $relative_path = $redirect_after_logout_to_slug . '/';
135 // } else {
136 // $relative_path = '';
137 // }
138 // $redirect_after_logout_for = $options['redirect_after_logout_for'];
139 // if ( isset( $redirect_after_logout_for ) && ( count( $redirect_after_logout_for ) > 0 ) ) {
140 // // Assemble single-dimensional array of roles for which custom URL redirection should happen
141 // $roles_for_custom_redirect = array();
142 // foreach( $redirect_after_logout_for as $role_slug => $custom_redirect ) {
143 // if ( $custom_redirect ) {
144 // $roles_for_custom_redirect[] = $role_slug;
145 // }
146 // }
147 // // Does the user have roles data in array form?
148 // if ( isset( $user->roles ) && is_array( $user->roles ) ) {
149 // $current_user_roles = $user->roles;
150 // }
151 // // Redirect for roles set in the settings. Otherwise, leave redirect URL to the default, i.e. admin dashboard.
152 // foreach ( $current_user_roles as $role ) {
153 // if ( in_array( $role, $roles_for_custom_redirect ) ) {
154 // $redirect_to = home_url( $relative_path );
155 // }
156 // }
157 // }
158 // return $redirect_to;
159 // }
160 /**
161 * Modifies the logout URL to include the custom logout slug
162 *
163 * @since 7.4.8
164 */
165 // public function add_redirect_to_in_logout_url( $logout_url, $redirect ) {
166 // $options = get_option( ASENHA_SLUG_U, array() );
167 // $user = wp_get_current_user();
168 // if ( isset( $user->roles ) && is_array( $user->roles ) ) {
169 // $current_user_roles = $user->roles;
170 // }
171 // if ( bwasenha_fs()->can_use_premium_code__premium_only() ) {
172 // $redirect_after_logout_type = isset( $options['redirect_after_logout_type'] ) ? $options['redirect_after_logout_type'] : 'single_url';
173 // if ( 'separate_urls' == $redirect_after_logout_type ) {
174 // $redirect_after_logout_for_separate_role = isset( $options['redirect_after_logout_for_separate_role'] ) ? $options['redirect_after_logout_for_separate_role'] : array();
175 // $redirect_after_logout_for_separate_slug = isset( $options['redirect_after_logout_for_separate_slug'] ) ? $options['redirect_after_logout_for_separate_slug'] : array();
176 // if ( isset( $redirect_after_logout_for_separate_role ) && ( count( $redirect_after_logout_for_separate_role ) > 0 ) ) {
177 // foreach ( $current_user_roles as $role ) {
178 // foreach ( $redirect_after_logout_for_separate_role as $role_slug => $custom_redirect ) {
179 // if ( $role == $role_slug
180 // && $custom_redirect
181 // ) {
182 // $redirect_to_slug = $redirect_after_logout_for_separate_slug[$role_slug];
183 // }
184 // }
185 // }
186 // }
187 // } else {
188 // $redirect_to_slug = $this->redirect_to_slug_for_all_roles( $user );
189 // }
190 // } else {
191 // $redirect_to_slug = $this->redirect_to_slug_for_all_roles( $user );
192 // }
193 // if ( false === strpos( $logout_url, 'redirect_to' ) ) {
194 // $logout_url = $logout_url . '&redirect_to=' . $redirect_to_slug;
195 // } else {
196 // $logout_url = add_query_arg( array( 'redirect_to' => false ), $logout_url ); // remove existing redirect_to
197 // $logout_url = add_query_arg( array( 'redirect_to' => $redirect_to_slug ), $logout_url ); // add custom redirect_to slug
198 // }
199 // return $logout_url;
200 // }
201 /**
202 * Get redirect_to slug for all roles
203 *
204 * @since 7.4.8
205 */
206 // public function redirect_to_slug_for_all_roles( $user ) {
207 // $options = get_option( ASENHA_SLUG_U, array() );
208 // $redirect_after_logout_to_slug_raw = isset( $options['redirect_after_logout_to_slug'] ) ? $options['redirect_after_logout_to_slug'] : '';
209 // $redirect_to_slug = '';
210 // if ( ! empty( $redirect_after_logout_to_slug_raw ) ) {
211 // $redirect_to_slug_processed = trim( trim( $redirect_after_logout_to_slug_raw ), '/');
212 // } else {
213 // $redirect_to_slug_processed = '';
214 // }
215 // $redirect_after_logout_for = $options['redirect_after_logout_for'];
216 // if ( isset( $redirect_after_logout_for ) && ( count( $redirect_after_logout_for ) > 0 ) ) {
217 // // Assemble single-dimensional array of roles for which custom URL redirection should happen
218 // $roles_for_custom_redirect = array();
219 // foreach( $redirect_after_logout_for as $role_slug => $custom_redirect ) {
220 // if ( $custom_redirect ) {
221 // $roles_for_custom_redirect[] = $role_slug;
222 // }
223 // }
224 // // Does the user have roles data in array form?
225 // if ( isset( $user->roles ) && is_array( $user->roles ) ) {
226 // $current_user_roles = $user->roles;
227 // }
228 // // Redirect for roles set in the settings. Otherwise, leave redirect URL to the default, i.e. admin dashboard.
229 // foreach ( $current_user_roles as $role ) {
230 // if ( in_array( $role, $roles_for_custom_redirect ) ) {
231 // $redirect_to_slug = $redirect_to_slug_processed;
232 // }
233 // }
234 // }
235 // return $redirect_to_slug;
236 // }
237 }
238