PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 4.1.3
Adminify – White Label, Admin Menu Editor, Login Customizer v4.1.3
4.3.1 4.3.0 4.2.26 4.2.25 4.2.24 4.2.23 4.2.22 4.2.21 4.2.20 4.2.19 4.2.18 4.2.17 4.2.16 4.2.15 4.2.14 4.2.13 4.2.12 4.2.11 4.2.10 4.2.9 4.2.8 4.2.7 4.2.6 4.2.5 4.1.17 All 164 releases
adminify / Inc / Classes / AdminBar.php

AdminBar.php in Adminify – White Label, Admin Menu Editor, Login Customizer 4.1.3, at Inc/Classes/AdminBar.php

1,266 lines 57.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPAdminify\Inc\Classes;
4
5 use WPAdminify\Inc\Utils;
6 use WPAdminify\Inc\Admin\AdminSettings;
7 use WPAdminify\Inc\Classes\DarkModeConflicts;
8 use WPAdminify\Inc\Admin\AdminSettingsModel;
9 // no direct access allowed
10 if ( !defined( 'ABSPATH' ) ) {
11 exit;
12 }
13 class AdminBar extends AdminSettingsModel {
14 public $options;
15
16 public $post_types;
17
18 public $adminify_ui;
19
20 public function __construct() {
21 $this->options = (array) AdminSettings::get_instance()->get();
22 $this->adminify_ui = $this->options['admin_ui'];
23 $global_ui_mode = ( empty( $this->options['light_dark_mode']['admin_ui_mode'] ) ? 'light' : $this->options['light_dark_mode']['admin_ui_mode'] );
24 $current_ui_mode = ( empty( get_user_meta( get_current_user_id(), 'color_mode', true ) ) ? $global_ui_mode : get_user_meta( get_current_user_id(), 'color_mode', true ) );
25 if ( $current_ui_mode === 'dark' ) {
26 new DarkModeConflicts();
27 }
28 // $admin_bar_user_roles = !empty($this->options['admin_bar_user_roles']) ? $this->options['admin_bar_user_roles'] : '';
29 // if (Utils::restricted_for($admin_bar_user_roles)) {
30 // return;
31 // }
32 // Disable the default admin bar
33 // add_filter('show_admin_bar', '__return_false');
34 // Add admin-bar support if not already activated
35 // add_theme_support('admin-bar', ['callback' => '__return_false']);
36 // 05-06-2024
37 // Check Adminify Setup Wizard Page
38 if ( !empty( $_GET['page'] ) && 'wp-adminify-setup-wizard' == $_GET['page'] ) {
39 return;
40 }
41 $this->initialize();
42 // if (!empty($this->adminify_ui) && !empty($this->options['admin_bar_search'] )) {
43 // add_action('wp_admin_bar_class', [$this, 'load_wp_admin_bar_class']);
44 // add_action('adminify/before/secondary_menu', [$this, 'before_secondary_menu']);
45 // }
46 if ( is_admin() ) {
47 // Switcher for Default UI
48 if ( empty( $this->adminify_ui ) ) {
49 if ( !empty( $this->options['admin_bar_dark_light_btn'] ) ) {
50 add_action( 'admin_bar_menu', [$this, 'jltwp_adminify_dark_mode_switcher_icon'] );
51 }
52 }
53 }
54 }
55
56 // Add Switcher Icon on Admin Bar Secondary
57 public function jltwp_adminify_dark_mode_switcher_icon( $wp_admin_bar ) {
58 $args = [
59 'parent' => 'top-secondary',
60 'id' => 'wp-adminify-admin-bar-switcher',
61 'title' => $this->jltwp_adminify_dark_mode_switcher_dom(),
62 'meta' => false,
63 ];
64 $wp_admin_bar->add_node( $args );
65 }
66
67 public function jltwp_adminify_dark_mode_switcher_dom() {
68 $global_color_mode = ( !empty( $this->options['light_dark_mode']['admin_ui_mode'] ) ? $this->options['light_dark_mode']['admin_ui_mode'] : 'light' );
69 $color_mode = ( empty( get_user_meta( get_current_user_id(), 'color_mode', true ) ) ? $global_color_mode : get_user_meta( get_current_user_id(), 'color_mode', true ) );
70 $color_var = ( !empty( $this->adminify_ui ) ? 'var(--adminify-menu-text-color)' : '#fff' );
71 $adminbar_switcher_icon = '<div id="wp-adminify-color-mode-wrapper">
72 <div class="mode-icon adminify-color-mode-' . esc_attr( $color_mode ) . '-active">
73 <svg viewBox="0 0 24 24" width="24" height="24" class="darkIcon" ><path fill="' . $color_var . '" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg>
74 <svg viewBox="0 0 24 24" width="24" height="24" class="lightIcon"><path fill="' . $color_var . '" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg>
75 <svg width="16" height="16" viewBox="0 0 22 18" fill="none" xmlns="http://www.w3.org/2000/svg" class="systemIcon">
76 <path d="M20 13V4.2C20 3.0799 20 2.51984 19.782 2.09202C19.5903 1.71569 19.2843 1.40973 18.908 1.21799C18.4802 1 17.9201 1 16.8 1H5.2C4.07989 1 3.51984 1 3.09202 1.21799C2.71569 1.40973 2.40973 1.71569 2.21799 2.09202C2 2.51984 2 3.0799 2 4.2V13M3.66667 17H18.3333C18.9533 17 19.2633 17 19.5176 16.9319C20.2078 16.7469 20.7469 16.2078 20.9319 15.5176C21 15.2633 21 14.9533 21 14.3333C21 14.0233 21 13.8683 20.9659 13.7412C20.8735 13.3961 20.6039 13.1265 20.2588 13.0341C20.1317 13 19.9767 13 19.6667 13H2.33333C2.02334 13 1.86835 13 1.74118 13.0341C1.39609 13.1265 1.12654 13.3961 1.03407 13.7412C1 13.8683 1 14.0233 1 14.3333C1 14.9533 1 15.2633 1.06815 15.5176C1.25308 16.2078 1.79218 16.7469 2.48236 16.9319C2.73669 17 3.04669 17 3.66667 17Z" stroke="' . $color_var . '" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
77 </svg>
78 </div>
79 <div class="light-dark-dropdown">
80 <div class="light">
81 <svg viewBox="0 0 24 24" width="24" height="24" class="lightIcon"><path fill="' . $color_var . '" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg>
82 <span>Light</span>
83 </div>
84 <div class="dark">
85 <svg viewBox="0 0 24 24" width="24" height="24" class="darkIcon"><path fill="' . $color_var . '" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg>
86 <span>Dark</span>
87 </div>
88 <div class="system">
89 <svg width="16" height="16" viewBox="0 0 22 18" fill="none" xmlns="http://www.w3.org/2000/svg" class="systemIcon">
90 <path d="M20 13V4.2C20 3.0799 20 2.51984 19.782 2.09202C19.5903 1.71569 19.2843 1.40973 18.908 1.21799C18.4802 1 17.9201 1 16.8 1H5.2C4.07989 1 3.51984 1 3.09202 1.21799C2.71569 1.40973 2.40973 1.71569 2.21799 2.09202C2 2.51984 2 3.0799 2 4.2V13M3.66667 17H18.3333C18.9533 17 19.2633 17 19.5176 16.9319C20.2078 16.7469 20.7469 16.2078 20.9319 15.5176C21 15.2633 21 14.9533 21 14.3333C21 14.0233 21 13.8683 20.9659 13.7412C20.8735 13.3961 20.6039 13.1265 20.2588 13.0341C20.1317 13 19.9767 13 19.6667 13H2.33333C2.02334 13 1.86835 13 1.74118 13.0341C1.39609 13.1265 1.12654 13.3961 1.03407 13.7412C1 13.8683 1 14.0233 1 14.3333C1 14.9533 1 15.2633 1.06815 15.5176C1.25308 16.2078 1.79218 16.7469 2.48236 16.9319C2.73669 17 3.04669 17 3.66667 17Z" stroke="' . $color_var . '" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
91 </svg>
92 <span>System</span>
93 </div>
94 </div>
95 </div>';
96 return $adminbar_switcher_icon;
97 }
98
99 public function initialize() {
100 $admin_bar_position = ( !empty( $this->options['admin_bar_position'] ) ? $this->options['admin_bar_position'] : 'top' );
101 if ( is_admin() ) {
102 if ( $admin_bar_position == 'top' || $admin_bar_position == 'bottom' ) {
103 if ( !empty( $this->adminify_ui ) ) {
104 //TODO: not need to adminify ui. alternative use iframe topbar
105 // add_action('admin_init', [$this, 'jltwp_adminify_add_admin_bar']);
106 // } else {
107 add_action( 'admin_head', [$this, 'jltwp_adminify_legacy_admin_bar_positon'] );
108 }
109 }
110 add_action( 'admin_enqueue_scripts', [$this, 'jltwp_adminify_admin_scripts'], 100 );
111 // Remove Unnecessary Menus from Admin bar
112 // add_action('wp_before_admin_bar_render', [$this, 'jltma_adminify_remove_admin_bar_menus'], 0);
113 // add_filter('admin_body_class', [$this, 'admin_bar_body_class']);
114 // add_action('admin_head', [$this, 'jltwp_adminify_admin_bar_css'], 999);
115 add_action( 'wp_ajax_adminify_all_search', [$this, 'adminify_all_search'] );
116 add_action( 'wp_ajax_wp_adminify_color_mode', [$this, 'wp_adminify_color_mode'] );
117 // Screen Option and Help Tab
118 add_action(
119 'admin_head',
120 [$this, 'jltwp_adminify_remove_screen_options'],
121 10,
122 3
123 );
124 add_action( 'admin_head', [$this, 'jltwp_adminify_remove_help_tab'] );
125 } else {
126 // Admin bar Frontend settings
127 $frontend_admin = ( !empty( $this->options['admin_bar_hide_frontend'] ) ? $this->options['admin_bar_hide_frontend'] : 'show' );
128 // if (jltwp_adminify()->can_use_premium_code__premium_only()) {
129 // if ($frontend_admin == 'show') {
130 // $frontend_admin_roles = (!empty($this->options['admin_bar_hide_frontend_user_roles'])) ? $this->options['admin_bar_hide_frontend_user_roles'] : [];
131 // if (Utils::restricted_for($frontend_admin_roles)) {
132 // $frontend_admin = 'hide';
133 // }
134 // }
135 // }
136 $this->jltwp_adminify_front_bar();
137 if ( $admin_bar_position == 'bottom' ) {
138 add_action( 'init', [$this, 'admin_bar_front_style_init'] );
139 }
140 if ( $frontend_admin == 'hide' ) {
141 add_filter( 'show_admin_bar', '__return_false' );
142 }
143 }
144 }
145
146 public function before_secondary_menu() {
147 ?>
148 <div class="wp-adminify-top-header--search--form">
149 <form class="top-header--search--form" action="$">
150 <span class="adminify-search-expand"><i class="icon-magnifier icons"></i></span>
151 <input id="top-header-search-input" class="top-header-search-input" type="search" placeholder="Search here">
152 </form>
153
154 <div id="top-header-search-results" class=" top-header-search-results" style="display: none;">
155 <div class="top-header-results-wrapper">
156 </div>
157 </div>
158 </div>
159 <?php
160 }
161
162 public function load_wp_admin_bar_class() {
163 return 'WPAdminify\\Inc\\Classes\\Adminify_Admin_Bar';
164 }
165
166 public function jltwp_adminify_front_bar() {
167 add_action( 'admin_init', [$this, 'jltwp_adminify_add_admin_bar'] );
168 add_filter( 'body_class', [$this, 'admin_bar_body_class'] );
169 }
170
171 public function admin_bar_front_style_init() {
172 add_filter( 'wp_enqueue_scripts', [$this, 'admin_bar_front_style'] );
173 }
174
175 // Frontend Admin bar style
176 public function admin_bar_front_style() {
177 $admin_bar_css = '';
178 $admin_bar_css .= '.admin-bar-position-bottom #wpadminbar{
179 top:auto;
180 bottom: 0;
181 }
182 .admin-bar-position-bottom #wpadminbar .menupop .ab-sub-wrapper{
183 bottom: 32px;
184 }
185 @media all and (max-width:600px){
186 body.logged-in.admin-bar-position-bottom {
187 position: relative;
188 }
189 }';
190 wp_add_inline_style( 'admin-bar', $admin_bar_css );
191 }
192
193 // Remove Screen Options
194 public function jltwp_adminify_remove_screen_options() {
195 $enable_screen_tab = Utils::get_user_preference( 'screen_options_tab' );
196 if ( $enable_screen_tab ) {
197 add_filter( 'screen_options_show_screen', '__return_false' );
198 }
199 }
200
201 // Contextual Help Tab Remove
202 public function jltwp_adminify_remove_help_tab() {
203 $enable_screen_tab = Utils::get_user_preference( 'adminify_help_tab' );
204 if ( $enable_screen_tab ) {
205 $screen = get_current_screen();
206 $screen->remove_help_tabs();
207 }
208 }
209
210 // Get All registered WP Admin Menus
211 public static function get_wp_admin_menus( $thismenu, $thissubmenu ) {
212 $options = [];
213 if ( !empty( $thismenu ) && is_array( $thismenu ) ) {
214 foreach ( $thismenu as $item ) {
215 if ( !empty( $item[0] ) ) {
216 // the preg_replace removes "Comments" & "Plugins" menu spans.
217 $options[$item[2]] = preg_replace( '/\\<span.*?>.*?\\<\\/span><\\/span>/s', '', $item[0] );
218 }
219 }
220 }
221 if ( !empty( $thissubmenu ) && is_array( $thissubmenu ) ) {
222 foreach ( $thissubmenu as $items ) {
223 foreach ( $items as $item ) {
224 if ( !empty( $item[0] ) ) {
225 $options[$item[1]] = preg_replace( '/\\<span.*?>.*?\\<\\/span><\\/span>/s', '', $item[0] );
226 }
227 }
228 }
229 }
230 return $options;
231 }
232
233 public function jltwp_adminify_admin_scripts() {
234 global $pagenow;
235 if ( $pagenow == 'wp-login.php' || $pagenow == 'wp-register.php' || $pagenow == 'customize.php' ) {
236 return;
237 }
238 // Commented on: 9-6-24
239 if ( !empty( $this->adminify_ui ) ) {
240 wp_enqueue_style( 'wp-adminify-admin-bar' );
241 $this->admin_topbar_loader_css();
242 }
243 wp_localize_script( 'wp-adminify-admin', 'WPAdminify', $this->adminify_create_admin_bar_js_object() );
244 }
245
246 public function adminify_create_admin_bar_js_object() {
247 return [
248 'ajax_url' => admin_url( 'admin-ajax.php' ),
249 'security_nonce' => wp_create_nonce( 'adminify-admin-bar-security-nonce' ),
250 'notice_nonce' => wp_create_nonce( 'adminify-notice-nonce' ),
251 ];
252 }
253
254 /**
255 * Preloader
256 *
257 * @return void
258 */
259 public function admin_topbar_loader_css() {
260 $output_css = '';
261 $topbar_wireframe_img = WP_ADMINIFY_ASSETS_IMAGE . 'topbar-wireframe.svg';
262 $output_css .= '.js .wp-adminify-topbar-loader{background: url(' . esc_url( $topbar_wireframe_img ) . '); }';
263 // Use wp_add_inline_style instead of echo to prevent "headers already sent" errors
264 wp_add_inline_style( 'wp-adminify-admin-bar', wp_strip_all_tags( $output_css ) );
265 $screen = get_current_screen();
266 // Get current screen details
267 if ( isset( $screen->base ) && $screen->base === 'post' ) {
268 $inline_script = "window.addEventListener('load', function() {\n\t\t\t\tconst isFullscreenMode = wp.data.select('core/edit-post').isFeatureActive('fullscreenMode');\n\t\t\t\tif (isFullscreenMode) {\n\t\t\t\t\tjQuery('.adminify-top_bar').css({\n\t\t\t\t\t\t'display': 'none !important'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});";
269 wp_add_inline_script( 'wp-adminify-admin', $inline_script );
270 }
271 }
272
273 /**
274 * Save Color Mode by Ajax
275 *
276 * @return void
277 */
278 public function wp_adminify_color_mode() {
279 if ( defined( 'DOING_AJAX' ) && DOING_AJAX && check_ajax_referer( 'adminify-admin-bar-security-nonce', 'security' ) > 0 ) {
280 $admin_bar_mode = AdminSettings::get_instance()->get();
281 if ( !empty( $_POST['key'] ) ) {
282 $key = sanitize_key( $_POST['key'] );
283 $value = Utils::clean_ajax_input( wp_unslash( $_POST['value'] ) );
284 if ( $key == '' ) {
285 $message = __( 'No Color Mode supplied to save', 'adminify' );
286 echo Utils::ajax_error_message( $message );
287 die;
288 }
289 }
290 // Light/Dark Mode
291 if ( $key === 'color_mode' ) {
292 // For User preference
293 $userid = get_current_user_id();
294 $current = get_user_meta( $userid, $key, true );
295 if ( $current !== $value ) {
296 $state = update_user_meta( $userid, $key, $value );
297 }
298 die;
299 $admin_bar_mode['light_dark_mode']['admin_ui_mode'] = $value;
300 $this->options['schedule_dark_mode']['enable_schedule_dark_mode'] = false;
301 if ( $value == 'system' ) {
302 $admin_bar_mode['schedule_dark_mode']['enable_schedule_dark_mode'] = true;
303 $admin_bar_mode['schedule_dark_mode']['schedule_dark_mode_type'] = 'system';
304 }
305 update_option( '_wpadminify', $admin_bar_mode );
306 die;
307 }
308 // Screen Options, Help Tabs and WP Hide Links
309 if ( $key === 'screen_options_tab' || $key === 'hide_wp_links' || $key === 'adminify_help_tab' ) {
310 $userid = get_current_user_id();
311 $current = get_user_meta( $userid, '_wpadminify_preferences', true );
312 if ( is_array( $current ) ) {
313 $current[$key] = $value;
314 } else {
315 $current = [];
316 $current[$key] = $value;
317 }
318 $state = update_user_meta( $userid, '_wpadminify_preferences', $current );
319 if ( $state ) {
320 $returndata = [];
321 $returndata['success'] = true;
322 $returndata['message'] = __( 'Preferences saved', 'adminify' );
323 echo json_encode( $returndata );
324 } else {
325 $message = __( 'Unable to save user preferences', 'adminify' );
326 echo Utils::ajax_error_message( $message );
327 die;
328 }
329 }
330 }
331 }
332
333 /**
334 * Search Everything
335 *
336 * @return void
337 */
338 public function adminify_all_search() {
339 if ( defined( 'DOING_AJAX' ) && DOING_AJAX && check_ajax_referer( 'adminify-admin-bar-security-nonce', 'security' ) > 0 ) {
340 // Security check - only users who can edit posts should access admin search
341 if ( !current_user_can( 'edit_posts' ) ) {
342 wp_send_json_error( array(
343 'message' => __( 'You do not have permission to perform this action.', 'adminify' ),
344 ) );
345 }
346 $search_text = '';
347 if ( !empty( $_POST['search'] ) ) {
348 $search_text = sanitize_text_field( wp_unslash( $_POST['search'] ) );
349 }
350 // Error Handling For Minimum 3 Char
351 if ( strlen( $search_text ) < 3 ) {
352 wp_send_json_success( [
353 'message' => 'Please Enter Minimum 3 Characters',
354 ] );
355 }
356 // Search Arguments
357 $args = [
358 'numberposts' => -1,
359 's' => $search_text,
360 'post_status' => [
361 'publish',
362 'pending',
363 'draft',
364 'future',
365 'private',
366 'inherit'
367 ],
368 ];
369 // All Post Types
370 $post_types = $this->get_post_types();
371 foreach ( $post_types as $type ) {
372 $args['post_type'][] = $type->name;
373 }
374 // All Categories/Taxonomies
375 $all_taxonomies = get_taxonomies();
376 // Get Comments
377 $all_comments = get_comments();
378 // Get All Users
379 $all_users = get_users();
380 // All Users
381 // $blogusers = get_users();
382 // foreach ($blogusers as $type) {
383 // $name = $type->user_login;
384 // $id = $type->ID;
385 // $args['author__in'][] = $type->ID;
386 // }
387 // // All Menus
388 // $all_admin_menus = self::get_wp_admin_menus();
389 // All Plugins
390 if ( !function_exists( 'get_plugins' ) ) {
391 require_once ABSPATH . 'wp-admin/includes/plugin.php';
392 }
393 $all_plugins = get_plugins();
394 $foundposts = get_posts( $args );
395 // $count_items = '';
396 // if (count($foundposts) > 0) {
397 // $count_items .= count($foundposts);
398 // } elseif (count($all_plugins)) {
399 // $count_items .= count($all_plugins);
400 // }
401 $output_data = [
402 'foundposts' => $this->set_edit_url_foundposts( $foundposts ),
403 'all_taxonomies' => $this->filter_all_taxonomies( $all_taxonomies, $search_text ),
404 'all_comments' => $this->filter_all_comments( $all_comments, $search_text ),
405 'all_users' => $this->filter_all_users( $all_users, $search_text ),
406 'all_plugins' => $this->filter_all_plugins( $all_plugins, $search_text ),
407 ];
408 wp_send_json_success( [
409 'data' => json_encode( $output_data ),
410 ] );
411 return;
412 ob_start();
413 ?>
414
415 <p><span class="count"></span><?php
416 echo count( $foundposts ) . wp_kses_post( ' item<span>s</span> found' );
417 ?></p>
418
419 <table class="top-header-result-table" style="height:500px;">
420 <thead>
421 <tr class="has-text-left">
422 <th><?php
423 esc_html_e( 'Title', 'adminify' );
424 ?></th>
425 <th><?php
426 esc_html_e( 'Type', 'adminify' );
427 ?></th>
428 <th><?php
429 esc_html_e( 'User', 'adminify' );
430 ?></th>
431 <th><?php
432 esc_html_e( 'Date', 'adminify' );
433 ?></th>
434 </tr>
435 </thead>
436 <tbody>
437
438 <?php
439 foreach ( $foundposts as $item ) {
440 $author_id = $item->post_author;
441 $editurl = get_edit_post_link( $item );
442 $public = get_permalink( $item );
443 ?>
444 <tr>
445 <td><span class="table-title"><a href="<?php
446 echo esc_url( $editurl );
447 ?>"><?php
448 echo wp_kses_post( get_the_title( $item ) );
449 ?></a></span></td>
450 <td><span class="type"><?php
451 echo wp_kses_post( get_post_type( $item ) );
452 ?></span></td>
453 <td><span class="user"><?php
454 echo wp_kses_post( the_author_meta( 'user_login', $author_id ) );
455 ?></span></td>
456 <td><span class="date"><?php
457 echo wp_kses_post( get_the_date( get_option( 'date_format' ), $item ) );
458 ?></span></td>
459 </tr>
460 <?php
461 }
462 ?>
463
464 <?php
465 foreach ( $all_taxonomies as $tax_name ) {
466 $terms = get_terms( [
467 'taxonomy' => $tax_name,
468 'hide_empty' => 1,
469 ] );
470 foreach ( $terms as $cat ) {
471 if ( strpos( strtolower( $cat->name ), strtolower( $term ) ) === false ) {
472 continue;
473 }
474 // $user = get_userdata($cat->term_id);
475 ?>
476 <tr>
477 <td>
478 <span class="table-title">
479 <a href="<?php
480 echo esc_url( get_term_link( $cat->slug, $cat->taxonomy ) );
481 ?>">
482 <?php
483 echo esc_html( $cat->name );
484 ?>
485 </a>
486 </span>
487 </td>
488 <td>
489 <span class="type"><?php
490 echo esc_html( $cat->taxonomy );
491 ?></span>
492 </td>
493 <td>
494 <span class="user">
495 <?php
496 esc_html_e( 'N/A', 'adminify' );
497 ?>
498 </span>
499 </td>
500 <td>
501 <span class="date">
502 <?php
503 esc_html_e( 'N/A', 'adminify' );
504 ?>
505 </span>
506 </td>
507 <td>
508 </td>
509 </tr>
510 <?php
511 }
512 }
513 ?>
514
515
516 <!-- Get Comments -->
517 <?php
518 foreach ( $all_comments as $comment ) {
519 if ( strpos( strtolower( $comment->comment_content ), strtolower( $term ) ) === false ) {
520 continue;
521 }
522 ?>
523 <tr>
524 <td>
525 <span class="table-title">
526 <a href="<?php
527 echo esc_url_raw( admin_url( 'comment.php?action=editcomment&c=' . esc_attr( $comment->comment_ID ) ) );
528 ?>">
529 <?php
530 echo wp_kses_post( $comment->comment_content );
531 ?>
532 </a>
533 </span>
534 </td>
535 <td>
536 <span class="type">
537 <?php
538 echo wp_kses_post( ucwords( $comment->comment_type ) );
539 ?>
540 </span>
541 </td>
542 <td>
543 <span class="user">
544 <?php
545 echo wp_kses_post( the_author_meta( 'display_name', $comment->user_id ) );
546 ?>
547 </span>
548 </td>
549 <td>
550 <span class="date">
551 <?php
552 echo esc_html( get_the_date( get_option( 'date_format' ), $comment->comment_date ) );
553 ?>
554 </span>
555 </td>
556 </tr>
557 <?php
558 }
559 ?>
560
561
562
563 <!-- Get Users -->
564 <?php
565 foreach ( $all_users as $user ) {
566 if ( strpos( strtolower( $user->user_login ), strtolower( $term ) ) === false ) {
567 continue;
568 }
569 ?>
570 <tr>
571 <td>
572 <span class="table-title">
573 <a href="<?php
574 echo esc_url( admin_url( 'user-edit.php?user_id=' . $user->ID ) );
575 ?>">
576 <?php
577 echo esc_html( $user->display_name );
578 ?>
579 </a>
580 </span>
581 </td>
582 <td>
583 <span class="type">
584 <?php
585 echo wp_kses_post( ucwords( $comment->comment_type ) );
586 ?>
587 </span>
588 </td>
589 <td>
590 <span class="user">
591 <?php
592 echo wp_kses_post( the_author_meta( 'display_name', $comment->user_id ) );
593 ?>
594 </span>
595 </td>
596 <td>
597 <span class="date">
598 <?php
599 echo wp_kses_post( get_the_date( get_option( 'date_format' ), $user->user_registered ) );
600 ?>
601 </span>
602 </td>
603 </tr>
604 <?php
605 }
606 ?>
607
608
609
610 <!-- Get Plugins -->
611 <?php
612 foreach ( $all_plugins as $plugin ) {
613 if ( strpos( strtolower( $plugin['Name'] ), strtolower( $term ) ) === false ) {
614 continue;
615 }
616 ?>
617 <tr>
618 <td>
619 <span class="table-title">
620 <a href="<?php
621 echo esc_url( admin_url( 'plugins.php' ) );
622 ?>">
623 <?php
624 echo esc_html( $plugin['Name'] );
625 ?>
626 </a>
627 </span>
628 </td>
629 <td>
630 <span class="type">
631 <?php
632 esc_html_e( 'Plugin', 'adminify' );
633 ?>
634 </span>
635 </td>
636 <td>
637 <span class="user">
638 <?php
639 echo esc_html( $plugin['AuthorName'] );
640 ?>
641 </span>
642 </td>
643 <td>
644 <span class="date">
645 <?php
646 esc_html_e( 'N/A', 'adminify' );
647 ?>
648 </span>
649 </td>
650 </tr>
651 <?php
652 }
653 ?>
654
655
656 </tbody>
657 </table>
658
659
660 <?php
661 // $output_data = ob_get_clean();
662 // $output_data = [
663 // 'foundposts' => $foundposts,
664 // 'all_taxonomies' => $all_taxonomies,
665 // 'all_comments' => $all_comments,
666 // 'all_users' => $all_users,
667 // 'all_plugins' => $all_plugins,
668 // ];
669 // echo json_encode($output_data);
670 echo json_encode( $foundposts );
671 wp_send_json_success( [
672 'data' => $foundposts,
673 ] );
674 }
675 die;
676 }
677
678 /**
679 * Set URL to All Post
680 */
681 public function set_edit_url_foundposts( $foundposts ) {
682 $all_posts = [];
683 foreach ( $foundposts as $key => $post ) {
684 $edit_url = get_edit_post_link( $post );
685 $all_posts[$key]['title'] = get_the_title( $post->ID );
686 $all_posts[$key]['link'] = $edit_url;
687 }
688 return $all_posts;
689 }
690
691 /**
692 * Search Taxonomies
693 */
694 public function filter_all_taxonomies( $all_taxonomies, $search_text ) {
695 $find_taxonomies = [];
696 foreach ( $all_taxonomies as $tax_name ) {
697 $terms = get_terms( [
698 'taxonomy' => $tax_name,
699 'hide_empty' => 1,
700 ] );
701 foreach ( $terms as $key => $cat ) {
702 if ( strpos( strtolower( $cat->name ), strtolower( $search_text ) ) === false ) {
703 continue;
704 }
705 $find_taxonomies[$key]['name'] = $cat->name;
706 $find_taxonomies[$key]['link'] = get_edit_term_link( $cat );
707 }
708 }
709 return $find_taxonomies;
710 }
711
712 /**
713 * Search Comments
714 */
715 public function filter_all_comments( $all_comments, $search_text ) {
716 $find_comments = [];
717 foreach ( $all_comments as $key => $comment ) {
718 if ( strpos( strtolower( $comment->comment_content ), strtolower( $search_text ) ) === false ) {
719 continue;
720 }
721 $find_comments[$key]['content'] = $comment->comment_content;
722 $find_comments[$key]['link'] = admin_url( 'comment.php?action=editcomment&c=' . esc_attr( $comment->comment_ID ) );
723 }
724 return $find_comments;
725 }
726
727 /**
728 * Search Users
729 */
730 public function filter_all_users( $all_users, $search_text ) {
731 $find_users = [];
732 foreach ( $all_users as $key => $user ) {
733 if ( str_contains( strtolower( $user->data->user_login ), strtolower( $search_text ) ) || str_contains( strtolower( $user->data->display_name ), strtolower( $search_text ) ) ) {
734 $find_users[$key]['name'] = $user->data->user_login;
735 $find_users[$key]['display_name'] = $user->data->display_name;
736 $find_users[$key]['link'] = admin_url( 'user-edit.php?user_id=' . $user->ID );
737 }
738 }
739 return $find_users;
740 }
741
742 /**
743 * Search Plugins
744 */
745 public function filter_all_plugins( $all_plugins, $search_text ) {
746 $find_plugins = [];
747 foreach ( $all_plugins as $key => $plugin ) {
748 if ( strpos( strtolower( $plugin['Name'] ), strtolower( $search_text ) ) === false ) {
749 continue;
750 }
751 $find_plugins[] = [
752 'name' => $plugin['Name'],
753 'link' => admin_url( 'plugins.php' ),
754 ];
755 }
756 return $find_plugins;
757 }
758
759 public function jltwp_adminify_admin_bar_css() {
760 $current_screen = get_current_screen();
761 $admin_bar_mode = ( !empty( $admin_bar_mode['light_dark_mode']['admin_ui_mode'] ) ? $admin_bar_mode['light_dark_mode']['admin_ui_mode'] : '' );
762 $output_css = '';
763 $output_css .= '<style type="text/css">';
764 if ( !empty( $current_screen->is_block_editor ) ) {
765 $output_css .= '.wp-adminify.adminify-ui.block-editor-page:not(.wp-adminify.is-fullscreen-mode) .interface-interface-skeleton { top: 90px !important; left: 244px !important; border-top: 0 !important; border-left: 0 !important; }';
766 $output_css .= '.wp-adminify.block-editor-page.is-fullscreen-mode.block-editor-page .interface-interface-skeleton { top: 0 !important; left: 0 !important; border-top: 0 !important; border-left: 0 !important; }';
767 }
768 $admin_bar_container = ( !empty( $this->options['admin_bar_container'] ) ? $this->options['admin_bar_container'] : 'full_container' );
769 if ( $admin_bar_mode === 'light' ) {
770 $light_bg_type = ( !empty( $this->options['admin_bar_light_bg'] ) ? $this->options['admin_bar_light_bg'] : 'color' );
771 $light_bg_color = ( !empty( $this->options['admin_bar_light_bg_color'] ) ? $this->options['admin_bar_light_bg_color'] : '' );
772 // Full Container Colors
773 if ( $admin_bar_container == 'full_container' ) {
774 if ( $light_bg_type === 'color' ) {
775 $output_css .= '.wp-adminify.adminify-light-mode .adminify-top_bar nav.navbar, .wp-adminify .wp-adminify-horizontal-menu { background-color:' . esc_attr( $light_bg_color ) . ' ; }';
776 }
777 } elseif ( $admin_bar_container == 'admin_bar_only' ) {
778 // Admin Bar Colors
779 if ( $light_bg_type === 'color' ) {
780 if ( !empty( $this->options['admin_bar_light_bg_color'] ) ) {
781 $output_css .= '.wp-adminify.adminify-light-mode .adminify-top_bar nav.navbar { background-color:' . esc_attr( $light_bg_color ) . ' }';
782 }
783 }
784 }
785 if ( !empty( $admin_bar_colors['icon_color'] ) ) {
786 $output_css .= '.adminify-top_bar nav.navbar .navbar-menu .topbar-icon { fill: ' . esc_attr( $admin_bar_colors['icon_color'] ) . ' }';
787 }
788 } elseif ( $admin_bar_mode === 'dark' ) {
789 $dark_bg_type = ( isset( $this->options['admin_bar_dark_bg'] ) ? $this->options['admin_bar_dark_bg'] : 'color' );
790 if ( $admin_bar_container == 'full_container' ) {
791 if ( $dark_bg_type === 'color' ) {
792 $dark_bg_color = $this->options['admin_bar_dark_bg_color'];
793 $output_css .= '.wp-adminify.adminify-dark-mode .adminify-top_bar nav.navbar, .wp-adminify .wp-adminify-horizontal-menu{ background-color:' . esc_attr( $dark_bg_color ) . ' }';
794 } elseif ( $dark_bg_type === 'gradient' ) {
795 $dark_gradient_bg_color = $this->options['admin_bar_dark_bg_gradient']['background-color'];
796 $dark_gradient_color = $this->options['admin_bar_dark_bg_gradient']['background-gradient-color'];
797 $dark_gradient_color_dir = $this->options['admin_bar_dark_bg_gradient']['background-gradient-direction'];
798 $output_css .= '.wp-adminify.adminify-dark-mode .adminify-top_bar nav.navbar, .wp-adminify .wp-adminify-horizontal-menu{ background-image : linear-gradient(' . esc_attr( $dark_gradient_color_dir ) . ', ' . esc_attr( $dark_gradient_bg_color ) . ' , ' . esc_attr( $dark_gradient_color ) . '); }';
799 }
800 } elseif ( $admin_bar_container == 'admin_bar_only' ) {
801 if ( $dark_bg_type === 'color' ) {
802 $dark_bg_color = $this->options['admin_bar_dark_bg_color'];
803 $output_css .= '.wp-adminify.adminify-dark-mode .adminify-top_bar nav.navbar{ background-color:' . esc_attr( $dark_bg_color ) . ' }';
804 }
805 }
806 }
807 // "New" Button Colors
808 $new_btn_colors = ( !empty( $this->options['admin_bar_link_color'] ) ? $this->options['admin_bar_link_color'] : '' );
809 if ( !empty( $new_btn_colors['link_color'] ) ) {
810 $output_css .= '.wp-adminify #wpadminbar #wp-admin-bar-root-default #wp-admin-bar-new-content > .ab-item .ab-label, .wp-adminify #wpadminbar #wp-admin-bar-root-default #wp-admin-bar-new-content .ab-item .ab-icon:before { color:' . esc_attr( $new_btn_colors['link_color'] ) . ' !important; }';
811 }
812 if ( !empty( $new_btn_colors['hover_color'] ) ) {
813 $output_css .= '.wp-adminify #wpadminbar #wp-admin-bar-root-default #wp-admin-bar-new-content > .ab-item:hover .ab-label, .wp-adminify #wpadminbar #wp-admin-bar-root-default #wp-admin-bar-new-content .ab-item:hover .ab-icon:before{ color:' . esc_attr( $new_btn_colors['hover_color'] ) . ' !important; }';
814 }
815 if ( !empty( $new_btn_colors['bg_color'] ) ) {
816 $output_css .= '.wp-adminify #wpadminbar #wp-admin-bar-root-default #wp-admin-bar-new-content > .ab-item, .wp-adminify #wpadminbar #wp-admin-bar-root-default #wp-admin-bar-new-content:hover > .ab-item { background:' . esc_attr( $new_btn_colors['bg_color'] ) . ' !important;}';
817 }
818 // "New" Button Hover Colors
819 $new_btn_dropwon = ( !empty( $this->options['admin_bar_link_dropdown_color'] ) ? $this->options['admin_bar_link_dropdown_color'] : '' );
820 if ( !empty( $new_btn_dropwon['wrapper_bg'] ) ) {
821 $output_css .= '.wp-adminify #wpadminbar .ab-top-menu .ab-sub-wrapper, .wp-adminify #wpadminbar .ab-top-menu .ab-sub-wrapper .ab-submenu, .wp-adminify #wpadminbar .ab-top-menu .ab-sub-wrapper .ab-submenu .ab-item { background-color:' . esc_attr( $new_btn_dropwon['wrapper_bg'] ) . ' !important;}';
822 }
823 if ( !empty( $new_btn_dropwon['bg_color'] ) ) {
824 $output_css .= '.wp-adminify #wpadminbar .ab-top-menu .ab-sub-wrapper .ab-submenu .ab-item:hover { background-color:' . esc_attr( $new_btn_dropwon['bg_color'] ) . ' !important;}';
825 }
826 if ( !empty( $new_btn_dropwon['link_color'] ) ) {
827 $output_css .= '.wp-adminify #wpadminbar .ab-top-menu .ab-sub-wrapper .ab-submenu .ab-item { color:' . esc_attr( $new_btn_dropwon['link_color'] ) . ' !important }';
828 }
829 if ( !empty( $new_btn_dropwon['hover_color'] ) ) {
830 $output_css .= '.wp-adminify #wpadminbar .ab-top-menu .ab-sub-wrapper .ab-submenu .ab-item:hover { color:' . esc_attr( $new_btn_dropwon['hover_color'] ) . ' !important }';
831 }
832 // Text Color
833 if ( !empty( $this->options['admin_bar_text_color'] ) ) {
834 $output_css .= '.adminify-top_bar nav.navbar .navbar-brand .navbar-item .wp-adminify-site-name, .adminify-top_bar nav.navbar .navbar-menu .wp-adminify-user-site-list button { color:' . esc_attr( $this->options['admin_bar_text_color'] ) . ' }';
835 $output_css .= '.wp-adminify #wpadminbar #wp-admin-bar-root-default #wp-admin-bar-new-post > .ab-item { color:' . esc_attr( $this->options['admin_bar_text_color'] ) . ' ; }';
836 $output_css .= '.wp-adminify #wpadminbar #wp-admin-bar-root-default #wp-admin-bar-new-post > .ab-item .ab-icon:before { color:' . esc_attr( $this->options['admin_bar_text_color'] ) . ' ; }';
837 $output_css .= '.wp-adminify #wpadminbar #wp-admin-bar-root-default #wp-admin-bar-new-post > .ab-item .ab-label { color:' . esc_attr( $this->options['admin_bar_text_color'] ) . ' ; }';
838 }
839 // Icon Color
840 if ( !empty( $this->options['admin_bar_icon_color'] ) ) {
841 $output_css .= '.adminify-top_bar nav.navbar .navbar-menu .topbar-icon svg path { fill:' . esc_attr( $this->options['admin_bar_icon_color'] ) . ' }';
842 $output_css .= '.adminify-top_bar nav.navbar .navbar-end i, .adminify-top_bar nav.navbar .navbar-burger i { color:' . esc_attr( $this->options['admin_bar_icon_color'] ) . ' }';
843 }
844 $output_css .= '.wp-adminify .editor-document-tools__left button.editor-document-tools__inserter-toggle {
845 padding: 0 !important;
846 border: 2px solid var(--adminify-btn-bg) !important;
847 }';
848 $output_css .= ' </style>';
849 // echo Utils::wp_kses_custom($output_css);
850 echo $output_css;
851 }
852
853 // Admin Bar Body Class
854 public function admin_bar_body_class( $classes ) {
855 if ( is_admin() ) {
856 $classes .= ' wp-adminify-admin-bar';
857 $admin_bar_position = ( !empty( $this->options['admin_bar_position'] ) ? $this->options['admin_bar_position'] : 'top' );
858 if ( $admin_bar_position === 'top' ) {
859 $classes .= ' position-top';
860 } elseif ( $admin_bar_position === 'bottom' ) {
861 $classes .= ' position-bottom';
862 }
863 if ( !empty( $this->options['enable_admin_bar'] ) ) {
864 $classes .= ' topbar-disabled';
865 }
866 } else {
867 global $pagenow;
868 if ( !is_user_logged_in() && $pagenow != 'wp-login.php' ) {
869 return $classes;
870 }
871 $classes[] = 'wp-adminify-admin-bar';
872 $admin_bar_position = ( !empty( $this->options['admin_bar_position'] ) ? $this->options['admin_bar_position'] : 'top' );
873 if ( $admin_bar_position === 'top' ) {
874 $classes[] = 'admin-bar-position-top';
875 } elseif ( $admin_bar_position === 'bottom' ) {
876 $classes[] = 'admin-bar-position-bottom';
877 }
878 if ( !empty( $this->options['enable_admin_bar'] ) ) {
879 $classes[] = 'topbar-disabled';
880 }
881 }
882 return $classes;
883 }
884
885 public function get_post_types() {
886 if ( is_array( $this->post_types ) ) {
887 return $this->post_types;
888 } else {
889 $args = [
890 'public' => true,
891 ];
892 $output = 'objects';
893 $post_types = get_post_types( $args, $output );
894 $this->post_types = $post_types;
895 return $post_types;
896 }
897 }
898
899 public function jltwp_adminify_legacy_admin_bar_positon() {
900 if ( !empty( $this->options['admin_bar_position'] ) && $this->options['admin_bar_position'] == 'bottom' ) {
901 $jltwp_adminify_thirdparty_css = '';
902 $jltwp_adminify_thirdparty_css .= 'body.wp-adminify.position-bottom {
903 margin-top: -28px;
904 padding-bottom: 28px;
905 }
906
907 body.wp-adminify.position-bottom.admin-bar #wphead {
908 padding-top: 0;
909 }
910
911 body.wp-adminify.position-bottom.admin-bar #footer {
912 padding-bottom: 28px;
913 }
914
915 body.wp-adminify.position-bottom #wpadminbar {
916 top: auto !important;
917 bottom: 0;
918 }
919
920 body.wp-adminify.position-bottom #wpadminbar .quicklinks .ab-top-menu .menupop .ab-sub-wrapper {
921 bottom: 32px;
922 }
923
924 body.wp-adminify.position-bottom #wpadminbar .quicklinks .ab-top-menu .menupop .ab-sub-wrapper .ab-submenu .menupop .ab-sub-wrapper {
925 bottom: -9px;
926 }';
927 echo '<style>' . wp_strip_all_tags( $jltwp_adminify_thirdparty_css ) . '</style>';
928 }
929 }
930
931 public function jltwp_adminify_add_admin_bar() {
932 // For Testing Admin Bar on Setup Wizard
933 // add_action('admin_head', [$this, 'jltwp_adminify_render_admin_bar']);
934 add_action( 'in_admin_header', [$this, 'jltwp_adminify_render_admin_bar'], -999999999 );
935 // on frontend area
936 add_action( 'wp_head', [$this, 'jltwp_adminify_render_admin_bar'] );
937 }
938
939 public function jltwp_adminify_render_admin_bar() {
940 global $pagenow;
941 if ( !is_user_logged_in() && $pagenow != 'wp-login.php' ) {
942 return;
943 }
944 // Check Gutenberg Editor Page
945 // if (Utils::is_block_editor_page()) {
946 // return;
947 // }
948 // if (!is_admin_bar_showing()) {
949 // return false;
950 // }
951 // Remove Adminbar from Gutenberg Block Editor Page
952 // if (function_exists('is_gutenberg_page') && is_gutenberg_page()) {
953 // // The Gutenberg plugin is on.
954 // return;
955 // }
956 // if (function_exists('get_current_screen')) {
957 // $current_screen = get_current_screen();
958 // if (!empty($current_screen->is_block_editor)) {
959 // return;
960 // }
961 // }
962 global $wp_admin_bar;
963 if ( empty( $wp_admin_bar ) ) {
964 return false;
965 }
966 $admin_bar_mode = ( empty( $admin_bar_mode['light_dark_mode']['admin_ui_mode'] ) ? 'light' : $admin_bar_mode['light_dark_mode']['admin_ui_mode'] );
967 // Light/Dark Mode
968 $enable_dark_mode = $admin_bar_mode != 'light';
969 // Screen Option && Hide WP Links
970 $enable_screen_tab = Utils::get_user_preference( 'screen_options_tab' );
971 $enable_help_tab = Utils::get_user_preference( 'adminify_help_tab' );
972 // $enable_hide_wp_links = Utils::get_user_preference( 'hide_wp_links' );
973 // Admin Bar Position
974 if ( !empty( $this->options['admin_bar_position'] ) && $this->options['admin_bar_position'] === 'top' ) {
975 $admin_bar_position = 'top_bar';
976 } elseif ( !empty( $this->options['admin_bar_position'] ) && $this->options['admin_bar_position'] === 'bottom' ) {
977 $admin_bar_position = 'bottom_bar is-fixed-bottom';
978 } else {
979 $admin_bar_position = 'top_bar';
980 }
981 $current_user = wp_get_current_user();
982 ob_start();
983 // Temporarily removing Topbar
984 // <div class="wp-adminify-topbar-loader"></div>
985 // 17-7-23, removed opacity for Conflicting Opacity Issue
986 // <div class="wp-adminify adminify-top_bar" style="opacity: 0;">
987 ?>
988
989
990
991 <div class="wp-adminify adminify-top_bar">
992 <nav class="navbar adminify-top-navbar <?php
993 echo esc_attr( $admin_bar_position );
994 ?>">
995
996 <?php
997 $this->jltwp_adminify_logo();
998 ?>
999 <div class="adminify-admin-wrapper">
1000 <div class="adminify-legacy-admin">
1001 <div class="adminify-hamburger navbar-burger" data-target="wp-adminify-top-adminbar">
1002 <svg width="11" height="8" viewBox="0 0 11 8" fill="none" xmlns="http://www.w3.org/2000/svg">
1003 <path d="M7 0H0V1H7V0Z" fill="#48455F" />
1004 <path d="M7 7H0V8H7V7Z" fill="#48455F" />
1005 <path d="M4.67 3.5H0V4.5H4.67V3.5Z" fill="#48455F" />
1006 <path d="M9.65 7.35L6.29 4L9.65 0.65L10.35 1.35L7.71 4L10.35 6.65L9.65 7.35Z" fill="#48455F" />
1007 </svg>
1008 </div>
1009 <?php
1010 echo wp_admin_bar_render();
1011 ?>
1012 </div>
1013
1014 <div id="wp-adminify-top-adminbar" class="navbar-menu">
1015
1016 <div class="navbar-end">
1017 <div class="field is-grouped">
1018
1019 <?php
1020 echo $this->jltwp_adminify_dark_mode_switcher_dom();
1021 ?>
1022
1023 <?php
1024 if ( !empty( $this->options['admin_bar_notif'] ) ) {
1025 ?>
1026 <div class="wp-adminify--top--comment">
1027 <button class="comment-trigger is-clickable">
1028 <div class="topbar-icon">
1029 <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
1030 <path d="M0.25 13.75V1.75C0.25 0.921573 0.921572 0.25 1.75 0.25H12.25C13.0784 0.25 13.75 0.921573 13.75 1.75V9.25C13.75 10.0784 13.0784 10.75 12.25 10.75H4.75C4.42535 10.7494 4.10936 10.8547 3.85 11.05L0.25 13.75ZM1.75 1.75V10.75L3.3505 9.55C3.60973 9.35448 3.9258 9.24913 4.2505 9.25H12.25V1.75H1.75Z" fill="var(--adminify-menu-text-color)" />
1031 </svg>
1032 </div>
1033 <span class="comment-counter">
1034 <?php
1035 $comments_count = wp_count_comments();
1036 echo esc_html( $comments_count->moderated );
1037 ?>
1038 </span>
1039 </button>
1040 </div>
1041
1042 <?php
1043 }
1044 ?>
1045
1046 <div class="wp-adminify--preview">
1047 <a class="preview-trigger is-clickable" href="<?php
1048 echo esc_url( get_home_url() );
1049 ?>" target="_blank">
1050 <i class="dashicons dashicons-visibility"></i>
1051 </a>
1052 </div>
1053
1054 <div class="wp-adminify--user--account">
1055 <button class="user-avatar is-clickable">
1056 <div class="image is-45x45">
1057 <?php
1058 echo get_avatar(
1059 $current_user->user_email,
1060 45,
1061 '',
1062 '',
1063 [
1064 'class' => 'is-rounded',
1065 ]
1066 );
1067 ?>
1068 </div>
1069 <span class="user-status tag p-0 is-rounded"></span>
1070 </button>
1071
1072 <?php
1073 if ( !empty( $this->adminify_ui ) ) {
1074 ?>
1075 <div class="wp-adminify--user--wrapper">
1076 <div class="wp-adminify-user-info">
1077 <h3 class="wp-adminify-user-name">
1078 <?php
1079 echo esc_html( $current_user->display_name );
1080 ?>
1081 </h3>
1082 <span><?php
1083 echo wp_kses_post( is_email( $current_user->user_email ) );
1084 ?></span>
1085
1086 <ul>
1087 <hr>
1088 <li>
1089 <a href="<?php
1090 echo esc_url( admin_url( 'profile.php' ) );
1091 ?>">
1092 <svg class="wp-adminify-profile-icon" width="16" height="18" viewBox="0 0 16 18" fill="none" xmlns="http://www.w3.org/2000/svg">
1093 <path d="M14.6654 16.5C14.6654 15.337 14.6654 14.7555 14.5218 14.2824C14.1987 13.217 13.365 12.3834 12.2996 12.0602C11.8265 11.9167 11.245 11.9167 10.082 11.9167H5.91537C4.7524 11.9167 4.17091 11.9167 3.69775 12.0602C2.63241 12.3834 1.79873 13.217 1.47556 14.2824C1.33203 14.7555 1.33203 15.337 1.33203 16.5M11.7487 5.25C11.7487 7.32107 10.0698 9 7.9987 9C5.92763 9 4.2487 7.32107 4.2487 5.25C4.2487 3.17893 5.92763 1.5 7.9987 1.5C10.0698 1.5 11.7487 3.17893 11.7487 5.25Z" stroke="var(--adminify-primary)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
1094 </svg>
1095 <span><?php
1096 esc_html_e( 'View Profile', 'adminify' );
1097 ?></span>
1098 </a>
1099 </li>
1100 <hr>
1101 <li>
1102 <a href="<?php
1103 echo esc_url( wp_logout_url( home_url() ) );
1104 ?>" class="wp-adminify-logout">
1105 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
1106 <path fill-rule="evenodd" clip-rule="evenodd" d="M5.7587 4.31292e-07L7 9.08129e-07C7.55229 9.08129e-07 8 0.447716 8 1C8 1.55229 7.55229 2 7 2H5.8C4.94342 2 4.36113 2.00078 3.91104 2.03755C3.47262 2.07337 3.24842 2.1383 3.09202 2.21799C2.7157 2.40973 2.40974 2.7157 2.21799 3.09202C2.1383 3.24842 2.07337 3.47262 2.03755 3.91104C2.00078 4.36113 2 4.94342 2 5.8V14.2C2 15.0566 2.00078 15.6389 2.03755 16.089C2.07337 16.5274 2.1383 16.7516 2.21799 16.908C2.40973 17.2843 2.7157 17.5903 3.09202 17.782C3.24842 17.8617 3.47262 17.9266 3.91104 17.9624C4.36113 17.9992 4.94342 18 5.8 18H7C7.55229 18 8 18.4477 8 19C8 19.5523 7.55229 20 7 20H5.75868C4.95372 20 4.28937 20 3.74818 19.9558C3.18608 19.9099 2.66937 19.8113 2.18404 19.564C1.43139 19.1805 0.819468 18.5686 0.435975 17.816C0.188684 17.3306 0.0901197 16.8139 0.0441946 16.2518C-2.28137e-05 15.7106 -1.23241e-05 15.0463 4.31291e-07 14.2413V5.7587C-1.23241e-05 4.95373 -2.28137e-05 4.28937 0.0441947 3.74817C0.09012 3.18608 0.188685 2.66937 0.435976 2.18404C0.81947 1.43139 1.43139 0.819468 2.18404 0.435975C2.66938 0.188684 3.18608 0.0901197 3.74818 0.0441945C4.28937 -2.28137e-05 4.95373 -1.23241e-05 5.7587 4.31292e-07ZM13.2929 4.29289C13.6834 3.90237 14.3166 3.90237 14.7071 4.29289L19.7071 9.29289C20.0976 9.68342 20.0976 10.3166 19.7071 10.7071L14.7071 15.7071C14.3166 16.0976 13.6834 16.0976 13.2929 15.7071C12.9024 15.3166 12.9024 14.6834 13.2929 14.2929L16.5858 11H7C6.44772 11 6 10.5523 6 10C6 9.44772 6.44772 9 7 9H16.5858L13.2929 5.70711C12.9024 5.31658 12.9024 4.68342 13.2929 4.29289Z" fill="var(--adminify-primary)"></path>
1107 </svg>
1108 <span><?php
1109 echo esc_html__( 'Log Out', 'adminify' );
1110 ?></span>
1111 </a>
1112 </li>
1113 </ul>
1114 </div>
1115 </div>
1116 <?php
1117 }
1118 ?>
1119 </div>
1120 </div>
1121 </div>
1122 </div>
1123 </div>
1124 </nav>
1125 </div>
1126
1127 <?php
1128 $output_wp_admin_bar = ob_get_clean();
1129 // echo Utils::wp_kses_custom($output_wp_admin_bar);
1130 echo $output_wp_admin_bar;
1131 }
1132
1133 public function jltwp_adminify_logo() {
1134 global $wp_admin_bar;
1135 $adminurl = get_admin_url();
1136 $homeurl = $adminurl;
1137 // Light Logo
1138 $menu_layout = (array) $this->options['menu_layout_settings'];
1139 // Menu Layouts
1140 $menu_layout = ( !empty( $this->options['menu_layout_settings'] ) ? $this->options['menu_layout_settings'] : '' );
1141 $menu_mode = ( !empty( $menu_layout['menu_mode'] ) ? $menu_layout['menu_mode'] : 'classic' );
1142 $menu_layout = ( !empty( $menu_layout['layout_type'] ) ? $menu_layout['layout_type'] : 'vertical' );
1143 $admin_ui_logo_type = ( !empty( $this->options['light_dark_mode']['admin_ui_logo_type'] ) ? $this->options['light_dark_mode']['admin_ui_logo_type'] : 'image_logo' );
1144 $light_mode = ( !empty( $this->options['light_dark_mode']['admin_ui_light_mode'] ) ? $this->options['light_dark_mode']['admin_ui_light_mode'] : '' );
1145 $light_logo = '';
1146 $light_mini_logo = '';
1147 if ( $admin_ui_logo_type == 'image_logo' ) {
1148 if ( isset( $light_mode['mini_admin_ui_light_logo']['url'] ) && $light_mode['mini_admin_ui_light_logo']['url'] ) {
1149 $light_mini_logo = $light_mode['mini_admin_ui_light_logo']['url'];
1150 } else {
1151 $light_mini_logo = WP_ADMINIFY_ASSETS_IMAGE . 'logos/mini-logo-light.svg';
1152 }
1153 // Logo Image
1154 if ( !empty( $light_mode['admin_ui_light_logo']['url'] ) ) {
1155 $light_logo = $light_mode['admin_ui_light_logo']['url'];
1156 } else {
1157 $light_logo = WP_ADMINIFY_ASSETS_IMAGE . 'logos/logo-text-light.svg';
1158 }
1159 } elseif ( $admin_ui_logo_type == 'text_logo' ) {
1160 // Text Logo
1161 if ( $this->options['light_dark_mode']['admin_ui_mode'] == 'light' ) {
1162 $text_logo = $light_mode['admin_ui_light_logo_text'];
1163 }
1164 }
1165 // Logo Size
1166 $light_width = ( !empty( $light_mode['light_logo_size']['width'] ) ? $light_mode['light_logo_size']['width'] : '120' );
1167 $light_height = ( !empty( $light_mode['light_logo_size']['height'] ) ? $light_mode['light_logo_size']['height'] : '32' );
1168 // Dark Logo
1169 $dark_mode = ( !empty( $this->options['light_dark_mode']['admin_ui_dark_mode'] ) ? $this->options['light_dark_mode']['admin_ui_dark_mode'] : '' );
1170 $dark_logo = '';
1171 $dark_mini_logo = '';
1172 if ( $admin_ui_logo_type == 'image_logo' ) {
1173 if ( isset( $dark_mode['mini_admin_ui_dark_logo']['url'] ) && $dark_mode['mini_admin_ui_dark_logo']['url'] ) {
1174 $dark_mini_logo = $dark_mode['mini_admin_ui_dark_logo']['url'];
1175 } else {
1176 $dark_mini_logo = WP_ADMINIFY_ASSETS_IMAGE . 'logos/mini-logo-dark.svg';
1177 }
1178 // Dark Logo Image
1179 if ( isset( $dark_mode['admin_ui_dark_logo']['url'] ) && $dark_mode['admin_ui_dark_logo']['url'] ) {
1180 $dark_logo = $dark_mode['admin_ui_dark_logo']['url'];
1181 } else {
1182 $dark_logo = WP_ADMINIFY_ASSETS_IMAGE . 'logos/logo-text-dark.svg';
1183 }
1184 } elseif ( $admin_ui_logo_type == 'text_logo' ) {
1185 // Text Logo
1186 if ( $this->options['light_dark_mode']['admin_ui_mode'] == 'dark' ) {
1187 $text_logo = $dark_mode['admin_ui_dark_logo_text'];
1188 }
1189 }
1190 // Dark Logo Size
1191 $dark_width = ( !empty( $dark_mode['dark_logo_size']['width'] ) ? $dark_mode['dark_logo_size']['width'] : '120' );
1192 $dark_height = ( !empty( $dark_mode['dark_logo_size']['height'] ) ? $dark_mode['dark_logo_size']['height'] : '32' );
1193 ?>
1194
1195 <div class="navbar-brand">
1196 <a class="navbar-item p-0" href="<?php
1197 echo esc_url( $homeurl );
1198 ?>">
1199 <?php
1200 if ( $admin_ui_logo_type == 'image_logo' ) {
1201 ?>
1202 <!-- Light Logo -->
1203 <img alt="<?php
1204 echo esc_attr( get_bloginfo( 'name' ) );
1205 ?>" class="logo-light" src="<?php
1206 echo esc_url( $light_logo );
1207 ?>" width="<?php
1208 echo esc_attr( $light_width );
1209 ?>" height="<?php
1210 echo esc_attr( $light_height );
1211 ?>">
1212 <img alt="<?php
1213 echo esc_attr( get_bloginfo( 'name' ) );
1214 ?>" class="mini-logo-light" src="<?php
1215 echo esc_url( $light_mini_logo );
1216 ?>" width="36" height="36">
1217 <!-- Dark Logo -->
1218 <img alt="<?php
1219 echo esc_attr( get_bloginfo( 'name' ) );
1220 ?>" class="logo-dark" src="<?php
1221 echo esc_url( $dark_logo );
1222 ?>" width="<?php
1223 echo esc_attr( $dark_width );
1224 ?>" height="<?php
1225 echo esc_attr( $dark_height );
1226 ?>">
1227 <img alt="<?php
1228 echo esc_attr( get_bloginfo( 'name' ) );
1229 ?>" class="mini-logo-dark" src="<?php
1230 echo esc_url( $dark_mini_logo );
1231 ?>" width="36" height="36">
1232 <?php
1233 } elseif ( $admin_ui_logo_type == 'text_logo' ) {
1234 ?>
1235 <span class="wp-adminify-site-name">
1236 <?php
1237 echo esc_html( $text_logo );
1238 ?>
1239 </span>
1240 <?php
1241 }
1242 ?>
1243 </a>
1244
1245 <!-- <div class="navbar-burger" data-target="wp-adminify-top-adminbar">
1246 <img src="<?php
1247 // echo WP_ADMINIFY_ASSETS_IMAGE . 'icons/toggol.svg';
1248 ?>" alt="Toggol icon"/>
1249 </div> -->
1250
1251 </div>
1252
1253 <?php
1254 }
1255
1256 /* Remove from the administration bar */
1257 public function jltma_adminify_remove_admin_bar_menus() {
1258 global $wp_admin_bar;
1259 $wp_admin_bar->remove_menu( 'wp-logo' );
1260 $wp_admin_bar->remove_menu( 'site-name' );
1261 $wp_admin_bar->remove_menu( 'updates' );
1262 $wp_admin_bar->remove_menu( 'menu-toggle' );
1263 }
1264
1265 }
1266