PluginProbe ʕ •ᴥ•ʔ
Admin and Site Enhancements (ASE) / 7.8.1
Admin and Site Enhancements (ASE) v7.8.1
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-login-logout-menu.php
admin-site-enhancements / classes Last commit date
class-activation.php 1 year ago class-admin-menu-organizer.php 1 year ago class-auto-publish-posts-with-missed-schedule.php 1 year ago class-avif-upload.php 1 year ago class-captcha-protection.php 1 year ago class-change-login-url.php 1 year ago class-cleanup-admin-bar.php 1 year ago class-common-methods.php 1 year ago class-content-duplication.php 1 year ago class-content-order.php 1 year ago class-custom-admin-footer-text.php 1 year ago class-custom-body-class.php 1 year ago class-custom-css.php 1 year ago class-custom-nav-menu-items-in-new-tab.php 1 year ago class-deactivation.php 1 year ago class-disable-comments.php 1 year ago class-disable-dashboard-widgets.php 1 year ago class-disable-feeds.php 1 year ago class-disable-gutenberg.php 1 year ago class-disable-rest-api.php 1 year ago class-disable-smaller-components.php 1 year ago class-disable-updates.php 1 year ago class-disable-xml-rpc.php 1 year ago class-display-system-summary.php 1 year ago class-email-address-obfuscator.php 1 year ago class-email-delivery.php 1 year ago class-enhance-list-tables.php 1 year ago class-external-permalinks.php 1 year ago class-heartbeat-control.php 1 year ago class-hide-admin-bar.php 1 year ago class-hide-admin-notices.php 1 year ago class-image-sizes-panel.php 1 year ago class-image-upload-control.php 1 year ago class-insert-head-body-footer-code.php 1 year ago class-last-login-column.php 1 year ago class-limit-login-attempts.php 1 year ago class-login-id-type.php 1 year ago class-login-logout-menu.php 1 year ago class-maintenance-mode.php 1 year ago class-manage-ads-appads-txt.php 1 year ago class-manage-robots-txt.php 1 year ago class-media-replacement.php 1 year ago class-multiple-user-roles.php 1 year ago class-obfuscate-author-slugs.php 1 year ago class-open-external-links-in-new-tab.php 1 year ago class-password-protection.php 1 year ago class-redirect-after-login.php 1 year ago class-redirect-after-logout.php 1 year ago class-redirect-fourofour.php 1 year ago class-registration-date-column.php 1 year ago class-revisions-control.php 1 year ago class-search-engines-visibility.php 1 year ago class-settings-fields-render.php 1 year ago class-settings-sanitization.php 1 year ago class-settings-sections-fields.php 1 year ago class-show-custom-taxonomy-filters.php 1 year ago class-site-identity-on-login-page.php 1 year ago class-svg-upload.php 1 year ago class-various-admin-ui-enhancements.php 1 year ago class-view-admin-as-role.php 1 year ago class-wider-admin-menu.php 1 year ago class-wp-config-transformer.php 1 year ago
class-login-logout-menu.php
179 lines
1 <?php
2
3 namespace ASENHA\Classes;
4
5 use Walker_Nav_Menu_Checklist;
6
7 /**
8 * Class for Login Logout Menu module
9 *
10 * @since 6.9.5
11 */
12 class Login_Logout_Menu {
13
14 /**
15 * Add metabox to Appearance >> Menus page for the login logout menu items
16 *
17 * @since 3.4.0
18 */
19 public function add_login_logout_metabox() {
20 add_meta_box(
21 'add-login-logout',
22 'Log In / Log Out',
23 array( $this, 'add_login_logout_menu_items' ),
24 'nav-menus',
25 'side',
26 'default'
27 );
28 }
29
30 /**
31 * Add menu items for the login logout metabox
32 *
33 * @since 3.4.0
34 */
35 public function add_login_logout_menu_items() {
36
37 // The ID of the currently selected menu
38 global $nav_menu_selected_id;
39
40 $menu_items = array(
41 'asenha-login' => array(
42 'title' => 'Log In',
43 'url' => '#asenha-login',
44 'classes' => array( 'asenha-login-menu-item' ),
45 ),
46 'asenha-logout' => array(
47 'title' => 'Log Out',
48 'url' => '#asenha-logout',
49 'classes' => array( 'asenha-logout-menu-item' ),
50 ),
51 'asenha-login-logout' => array(
52 'title' => 'Log In / Log Out',
53 'url' => '#asenha-login-logout',
54 'classes' => array( 'asenha-login-logout-menu-item' ),
55 ),
56 );
57
58 $item_details = array(
59 'db_id' => 0,
60 'object' => 'asenha',
61 'object_id' => '',
62 'menu_item_parent' => 0,
63 'type' => 'custom',
64 'title' => '',
65 'url' => '',
66 'target' => '',
67 'attr_title' => '',
68 'classes' => array(),
69 'xfn' => '',
70 );
71
72 $menu_items_object = array();
73
74 foreach ( $menu_items as $item_id => $details ) {
75 $menu_items_object[ $details['title'] ] = (object) $item_details;
76 $menu_items_object[ $details['title'] ]->object_id = $item_id;
77 $menu_items_object[ $details['title'] ]->title = $details['title'];
78 $menu_items_object[ $details['title'] ]->classes = $details['classes'];
79 $menu_items_object[ $details['title'] ]->url = $details['url'];
80 }
81
82 $walker = new Walker_Nav_Menu_Checklist( array() );
83
84 ?>
85 <div id="login-logout-links" class="loginlinksdiv">
86 <div id="tabs-panel-login-logout-links-all" class="tabs-panel tabs-panel-view-all tabs-panel-active">
87 <ul id="login-logout-links-checklist" class="list:login-logout-links categorychecklist form-no-clear">
88 <?php echo walk_nav_menu_tree(
89 array_map( 'wp_setup_nav_menu_item', $menu_items_object ),
90 0,
91 (object) array( 'walker' => $walker)
92 ); ?>
93 </ul>
94 </div>
95 <p class="button-controls">
96 <span class="add-to-menu">
97 <input type="submit"<?php disabled( $nav_menu_selected_id, 0 ); ?> class="button-secondary submit-add-to-menu right" value="<?php echo esc_attr( 'Add to Menu' ); ?>" name="add-login-logout-links-menu-item" id="submit-login-logout-links" />
98 <span class="spinner"></span>
99 </span>
100 </p>
101 </div>
102 <?php
103
104 }
105
106 /**
107 * Setup login logout URL based on login state
108 *
109 * @since 3.4.0
110 */
111 public function set_login_logout_menu_item_dynamic_url( $menu_item ) {
112
113 global $pagenow;
114 $options = get_option( ASENHA_SLUG_U, array() );
115
116 if ( $pagenow != 'nav-menus.php' && !defined('DOING_AJAX') && isset( $menu_item->url ) && false !== strpos( $menu_item->url, 'asenha' ) ) {
117
118 // Define login URL based on whether
119 if ( array_key_exists( 'change_login_url', $options ) && $options['change_login_url'] ) {
120 if ( array_key_exists( 'custom_login_slug', $options ) && ! empty( $options['custom_login_slug'] ) ) {
121 $login_page_url = get_site_url() . '/' . $options['custom_login_slug'];
122 }
123 } else {
124 $login_page_url = wp_login_url();
125 }
126
127 $logout_redirect_url = home_url();
128
129 switch( $menu_item->url ) {
130 case '#asenha-login';
131 $menu_item->url = $login_page_url;
132 break;
133 case '#asenha-logout';
134 $menu_item->url = wp_logout_url();
135 break;
136 case '#asenha-login-logout';
137 $menu_item->url = ( is_user_logged_in() ) ? wp_logout_url() : $login_page_url;
138 $menu_item->title = ( is_user_logged_in() ) ? 'Log Out' : 'Log In';
139 break;
140 }
141
142 }
143
144 return $menu_item;
145
146 }
147
148 /**
149 * Conditionally remove login or logout menu item based on is_user_logged_in()
150 *
151 * @since 3.4.0
152 */
153 public function maybe_remove_login_or_logout_menu_item( $sorted_menu_items ) {
154
155 foreach( $sorted_menu_items as $menu => $item ) {
156
157 $item_classes = $item->classes;
158
159 // Maybe remove Log In menu item
160 if ( in_array( 'asenha-login-menu-item', $item_classes ) ) {
161 if ( is_user_logged_in() ) {
162 unset( $sorted_menu_items[$menu] );
163 }
164 }
165
166 // Maybe remove Log Out menu item
167 if ( in_array( 'asenha-logout-menu-item', $item_classes ) ) {
168 if ( ! is_user_logged_in() ) {
169 unset( $sorted_menu_items[$menu] );
170 }
171 }
172
173 }
174
175 return $sorted_menu_items;
176
177 }
178
179 }