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-login-logout-menu.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-login-logout-menu.php
161 lines
1 <?php
2
3 namespace ASENHA\Classes;
4
5 use Walker_Nav_Menu_Checklist;
6 /**
7 * Class for Login Logout Menu module
8 *
9 * @since 6.9.5
10 */
11 class Login_Logout_Menu {
12 /**
13 * Add metabox to Appearance >> Menus page for the login logout menu items
14 *
15 * @since 3.4.0
16 */
17 public function add_login_logout_metabox() {
18 add_meta_box(
19 'add-login-logout',
20 __( 'Log In / Log Out', 'admin-site-enhancements' ),
21 array($this, 'add_login_logout_menu_items'),
22 'nav-menus',
23 'side',
24 'default'
25 );
26 }
27
28 /**
29 * Add menu items for the login logout metabox
30 *
31 * @since 3.4.0
32 */
33 public function add_login_logout_menu_items() {
34 // The ID of the currently selected menu
35 global $nav_menu_selected_id;
36 $menu_items = array(
37 'asenha-login' => array(
38 'title' => __( 'Log In', 'admin-site-enhancements' ),
39 'url' => '#asenha-login',
40 'classes' => array('asenha-login-menu-item'),
41 ),
42 'asenha-logout' => array(
43 'title' => __( 'Log Out', 'admin-site-enhancements' ),
44 'url' => '#asenha-logout',
45 'classes' => array('asenha-logout-menu-item'),
46 ),
47 'asenha-login-logout' => array(
48 'title' => __( 'Log In / Log Out', 'admin-site-enhancements' ),
49 'url' => '#asenha-login-logout',
50 'classes' => array('asenha-login-logout-menu-item'),
51 ),
52 );
53 $item_details = array(
54 'db_id' => 0,
55 'object' => 'asenha',
56 'object_id' => '',
57 'menu_item_parent' => 0,
58 'type' => 'custom',
59 'title' => '',
60 'url' => '',
61 'target' => '',
62 'attr_title' => '',
63 'classes' => array(),
64 'xfn' => '',
65 );
66 $menu_items_object = array();
67 foreach ( $menu_items as $item_id => $details ) {
68 $menu_items_object[$details['title']] = (object) $item_details;
69 $menu_items_object[$details['title']]->object_id = $item_id;
70 $menu_items_object[$details['title']]->title = $details['title'];
71 $menu_items_object[$details['title']]->classes = $details['classes'];
72 $menu_items_object[$details['title']]->url = $details['url'];
73 }
74 $walker = new Walker_Nav_Menu_Checklist(array());
75 ?>
76 <div id="login-logout-links" class="loginlinksdiv">
77 <div id="tabs-panel-login-logout-links-all" class="tabs-panel tabs-panel-view-all tabs-panel-active">
78 <ul id="login-logout-links-checklist" class="list:login-logout-links categorychecklist form-no-clear">
79 <?php
80 echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $menu_items_object ), 0, (object) array(
81 'walker' => $walker,
82 ) );
83 ?>
84 </ul>
85 </div>
86 <p class="button-controls">
87 <span class="add-to-menu">
88 <input type="submit"<?php
89 disabled( $nav_menu_selected_id, 0 );
90 ?> class="button-secondary submit-add-to-menu right" value="<?php
91 echo esc_attr( __( 'Add to Menu', 'admin-site-enhancements' ) );
92 ?>" name="add-login-logout-links-menu-item" id="submit-login-logout-links" />
93 <span class="spinner"></span>
94 </span>
95 </p>
96 </div>
97 <?php
98 }
99
100 /**
101 * Setup login logout URL based on login state
102 *
103 * @since 3.4.0
104 */
105 public function set_login_logout_menu_item_dynamic_url( $menu_item ) {
106 global $pagenow;
107 $options = get_option( ASENHA_SLUG_U, array() );
108 if ( $pagenow != 'nav-menus.php' && !defined( 'DOING_AJAX' ) && isset( $menu_item->url ) && false !== strpos( $menu_item->url, 'asenha' ) ) {
109 // Define login URL based on whether
110 if ( array_key_exists( 'change_login_url', $options ) && $options['change_login_url'] ) {
111 if ( array_key_exists( 'custom_login_slug', $options ) && !empty( $options['custom_login_slug'] ) ) {
112 $login_page_url = get_site_url() . '/' . $options['custom_login_slug'];
113 }
114 } else {
115 $login_page_url = wp_login_url();
116 }
117 $logout_redirect_url = home_url();
118 switch ( $menu_item->url ) {
119 case '#asenha-login':
120 $menu_item->url = $login_page_url;
121 break;
122 case '#asenha-logout':
123 $menu_item->url = wp_logout_url();
124 break;
125 case '#asenha-login-logout':
126 $login_text = __( 'Log In', 'admin-site-enhancements' );
127 $logout_text = __( 'Log Out', 'admin-site-enhancements' );
128 $menu_item->url = ( is_user_logged_in() ? wp_logout_url() : $login_page_url );
129 $menu_item->title = ( is_user_logged_in() ? $logout_text : $login_text );
130 break;
131 }
132 }
133 return $menu_item;
134 }
135
136 /**
137 * Conditionally remove login or logout menu item based on is_user_logged_in()
138 *
139 * @since 3.4.0
140 */
141 public function maybe_remove_login_or_logout_menu_item( $sorted_menu_items ) {
142 foreach ( $sorted_menu_items as $menu => $item ) {
143 $item_classes = $item->classes;
144 // Maybe remove Log In menu item
145 if ( in_array( 'asenha-login-menu-item', $item_classes ) ) {
146 if ( is_user_logged_in() ) {
147 unset($sorted_menu_items[$menu]);
148 }
149 }
150 // Maybe remove Log Out menu item
151 if ( in_array( 'asenha-logout-menu-item', $item_classes ) ) {
152 if ( !is_user_logged_in() ) {
153 unset($sorted_menu_items[$menu]);
154 }
155 }
156 }
157 return $sorted_menu_items;
158 }
159
160 }
161