PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 4.0.3.2
Adminify – White Label, Admin Menu Editor, Login Customizer v4.0.3.2
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 / Admin / Frames / Admin.php

Admin.php in Adminify – White Label, Admin Menu Editor, Login Customizer 4.0.3.2, at Inc/Admin/Frames/Admin.php

708 lines 31.9 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\Admin\Frames;
4
5 use WPAdminify\Inc\Utils;
6 use WPAdminify\Inc\Modules\MenuEditor\MenuEditorOptions;
7 use WPAdminify\Inc\Admin\AdminSettings;
8
9 // no direct access allowed
10 if (!defined('ABSPATH')) {
11 exit;
12 }
13 /**
14 * WP Adminify
15 * Admin Class
16 *
17 * @author Jewel Theme <support@jeweltheme.com>
18 */
19
20 if (!class_exists('Admin')) {
21 class Admin
22 {
23
24 public $options;
25 public $menu_settings;
26
27 /**
28 * Constructor for the class.
29 *
30 * Initializes the hooks for the admin class.
31 *
32 * @return void
33 */
34 public function __construct()
35 {
36 $this->options = (array) AdminSettings::get_instance()->get();
37 $this->menu_settings = (new MenuEditorOptions())->get();
38 $this->init_hooks();
39 }
40
41 /**
42 * Initializes the hooks for the admin class.
43 *
44 * This function adds the `load_scripts` method of the current object as a callback
45 * to the `admin_enqueue_scripts` action hook. It also adds the `page_attribute`
46 * method of the current object as a callback to the `language_attributes` filter
47 * hook.
48 *
49 * @return void
50 */
51 private function init_hooks()
52 {
53 if ( wp_doing_ajax() ) return;
54 add_action('admin_init', [$this, 'load_template']);
55 add_action('admin_enqueue_scripts', [$this, 'load_scripts']);
56 add_filter("language_attributes", [$this, "page_attribute"]);
57 add_filter('parent_file', array($this, 'capture_wp_menu'), 999999999);
58
59 add_action('wp_before_admin_bar_render', [$this, 'get_admin_bar_menu_list'], 999999);
60 }
61
62 /**
63 * Enqueue the admin stylesheet and script.
64 *
65 * @return void
66 */
67 public function load_scripts()
68 {
69 wp_enqueue_style('frame-adminify--admin', WP_ADMINIFY_ASSETS . 'admin/css/admin' . Utils::assets_ext('.css'), [], WP_ADMINIFY_VER);
70 wp_enqueue_script('frame-adminify--admin', WP_ADMINIFY_ASSETS . 'admin/js/frame' . Utils::assets_ext('.js'), ['jquery', 'react'], WP_ADMINIFY_VER, true);
71
72 $localize_array_data = [
73 'ajax_url' => admin_url('admin-ajax.php'),
74 'security_nonce' => wp_create_nonce('adminify_nonce')
75 ];
76
77 wp_localize_script( 'frame-adminify--admin', 'WPAdminify', $localize_array_data );
78 wp_localize_script( 'frame-adminify--admin', 'WPAdminifyFrameNotAllowedURLs', self::get_not_allowed_urls() );
79 }
80
81 public static function get_not_allowed_urls() {
82
83 $not_allowed_urls = [
84 '/wp-admin/customize.php',
85 '/wp-admin/site-editor.php',
86 [
87 'url' => '*',
88 'query_params' => ['fl_builder', 'fl_builder_ui']
89 ],
90 [
91 'url' => '*',
92 'query_params' => ['action' => 'elementor']
93 ],
94 [
95 'url' => '*',
96 'query_params' => ['bricks' => 'true']
97 ],
98 [
99 'url' => '*',
100 'query_params' => ['ct_builder' => 'true', 'oxygen_iframe!']
101 ],
102 [
103 'url' => '*',
104 'query_params' => ['page' => 'sbi-setup']
105 ],
106 [
107 'url' => '*',
108 'query_params' => ['page' => 'sbtt']
109 ],
110 [
111 'url' => '*',
112 'query_params' => ['page' => 'cff-setup']
113 ],
114 [
115 'url' => '*',
116 'query_params' => ['page' => 'rank-math-registration']
117 ],
118 [
119 'url' => '*',
120 'query_params' => ['page' => 'googlesitekit-splash']
121 ],
122 [
123 'url' => '*',
124 'query_params' => ['page' => 'cff-feed-builder']
125 ],
126 [
127 'url' => '*',
128 'query_params' => ['page' => 'sbi-feed-builder']
129 ],
130 [
131 'url' => '*',
132 'query_params' => ['page' => 'sbr']
133 ],
134 [
135 'url' => '*',
136 'query_params' => ['page' => 'ctf-feed-builder']
137 ],
138 [
139 'url' => '*',
140 'query_params' => ['page' => 'sby-feed-builder']
141 ],
142 // [
143 // 'url' => '/wp-admin/post-new.php',
144 // 'post_type' => ['post', 'page']
145 // ],
146 // [
147 // 'url' => '/wp-admin/post.php',
148 // 'post_type' => ['post', 'page']
149 // ]
150 ];
151
152 return apply_filters( 'adminify_frame_not_allowed_urls', $not_allowed_urls );
153 }
154
155 /**
156 * Adds the 'frame-adminify-app="true"' attribute to the given attribute string.
157 *
158 * @param string $attr The original attribute string.
159 * @return string The modified attribute string.
160 */
161 public function page_attribute($attr)
162 {
163 $attrs = [$attr];
164 $attrs[] = 'frame-adminify-app="true"';
165 return implode(' ', $attrs);
166 }
167
168 /**
169 * Loads the admin template.
170 *
171 * @return void
172 */
173 public function load_template()
174 {
175 adminify_load_template('Templates.php');
176 }
177
178 public function capture_wp_menu($parent_file)
179 {
180 global $menu, $submenu;
181
182 $menu_build = jltwp_adminify_build_menu($menu, $submenu, $this->menu_settings);
183
184 $this->enqueue_menu($menu_build);
185
186 return $parent_file;
187 }
188
189 public function enqueue_menu($menu)
190 {
191 $outputter = function () use ($menu) {
192
193 $current_user = wp_get_current_user();
194 $light_dark_mode = $this->options['light_dark_mode'];
195 if( !isset($light_dark_mode['admin_ui_mode']) ) {
196 $default_light_dark_mode = [
197 'admin_ui_mode' => 'light',
198 'admin_ui_logo_type' => 'image_logo',
199 'admin_ui_light_mode' => [
200 'admin_ui_light_logo_text' => 'WP Adminify',
201 'admin_ui_light_logo_text_typo' => array_fill_keys(
202 ['font-family', 'font-weight', 'font-style', 'font-size', 'letter-spacing', 'color', 'type', 'unit'], ''
203 ) + ['unit' => 'px'],
204 'admin_ui_light_logo' => array_fill_keys(['url', 'id', 'width', 'height', 'thumbnail', 'alt', 'title', 'description'], ''),
205 'light_logo_size' => ['width' => 120, 'height' => 32, 'unit' => 'px'],
206 'mini_admin_ui_light_logo' => array_fill_keys(['url', 'id', 'width', 'height', 'thumbnail', 'alt', 'title', 'description'], ''),
207 ],
208 'admin_ui_dark_mode' => [
209 'admin_ui_dark_logo_text' => 'WP Adminify',
210 'admin_ui_dark_logo_text_typo' => array_fill_keys(
211 ['font-family', 'font-weight', 'font-style', 'font-size', 'letter-spacing', 'color', 'type', 'unit'], ''
212 ) + ['unit' => 'px'],
213 'admin_ui_dark_logo' => array_fill_keys(['url', 'id', 'width', 'height', 'thumbnail', 'alt', 'title', 'description'], ''),
214 'dark_logo_size' => ['width' => 150, 'height' => 45, 'unit' => 'px'],
215 'mini_admin_ui_dark_logo' => array_fill_keys(['url', 'id', 'width', 'height', 'thumbnail', 'alt', 'title', 'description'], ''),
216 'schedule_dark_mode' => array_fill_keys(['enable_schedule_dark_mode', 'schedule_dark_mode_type', 'schedule_dark_mode_start_time', 'schedule_dark_mode_end_time'], ''),
217 ],
218 ];
219 $light_dark_mode = array_merge($default_light_dark_mode, $light_dark_mode);
220 }else{
221 $light_dark_mode['admin_ui_mode'] = empty(get_user_meta(get_current_user_id(), 'color_mode', true)) ? $light_dark_mode['admin_ui_mode'] : get_user_meta(get_current_user_id(), 'color_mode', true);
222 }
223 $menu_settings = [
224 'menu' => $menu,
225 'admin_bar_dark_light_btn' => $this->options['admin_bar_dark_light_btn'],
226 'light_dark_mode' => $light_dark_mode ,
227 'menu_layout_settings' => $this->options['menu_layout_settings'],
228 'user_info' => [
229 'img' => get_avatar($current_user->user_email, 72, '', ''),
230 'display_name' => esc_html($current_user->display_name),
231 'profile_url' => esc_url(admin_url('profile.php')),
232 'username' => esc_html($current_user->user_login),
233 'email' => wp_kses_post(is_email($current_user->user_email)),
234 ],
235 'image_path' => WP_ADMINIFY_ASSETS_IMAGE,
236 'is_pro' => (class_exists('\\WPAdminify\\Pro\\Adminify_Pro') && !empty(\WPAdminify\Pro\Adminify_Pro::is_premium())) ? true : false
237 ];
238
239 $data = "var frame_adminify_menu=" . json_encode($menu_settings);
240 wp_print_inline_script_tag($data, ["id" => "frame_adminify_menu"]);
241 };
242
243 add_action("admin_footer", $outputter, 0);
244 add_action("wp_footer", $outputter, 0);
245 }
246
247
248 public function get_admin_bar_menu_list()
249 {
250 global $wp_admin_bar;
251
252 $admin_bar_data = $this->nodes_to_array($wp_admin_bar->get_nodes());
253 $admin_bar_data_nested = $this->format_to_nested($admin_bar_data);
254
255
256 $admin_bar_menu_data = [];
257
258 // Admin Bar Exits
259 if ( Utils::is_plugin_active('admin-bar/admin-bar.php') || Utils::is_plugin_active('admin-bar-pro/admin-bar-pro.php') ) {
260 $admin_bar_items = get_option('_jltadminbar_settings');
261
262 if( empty($admin_bar_items) ) return;
263
264 $existing_admin_bar = !empty($admin_bar_items['existing_admin_bar']) ? $admin_bar_items['existing_admin_bar'] : '';
265 $saved_admin_bar = !empty($admin_bar_items['saved_admin_bar']) ? $admin_bar_items['saved_admin_bar'] : [];
266
267 $parsed_admin_bar_backend = empty($saved_admin_bar) ? $existing_admin_bar : $this->parse_menu_items($saved_admin_bar, $existing_admin_bar, 'backend');
268
269 $nested_admin_bar = $this->format_to_nested($parsed_admin_bar_backend);
270 $formated_admin_menu = $this->associative_to_index_array($nested_admin_bar);
271
272 $remove_admin_menu = [];
273 foreach ($formated_admin_menu as $key => $value) {
274 if($value['id'] === 'wp-logo' || $value['id'] === 'site-name'|| $value['id'] === 'updates'|| $value['id'] === 'menu-toggle'|| $value['id'] === 'comments') {
275 continue;
276 }
277 $remove_admin_menu[$key] = $value;
278 }
279
280 $admin_bar_menu_data = $this->nodes_to_array_for_admin_bar($remove_admin_menu);
281 }
282
283 unset($admin_bar_data_nested['wp-logo']);
284 unset($admin_bar_data_nested['site-name']);
285 unset($admin_bar_data_nested['updates']);
286 unset($admin_bar_data_nested['menu-toggle']);
287 unset($admin_bar_data_nested['comments']);
288
289 $admin_bar_data_nested = jlt_adminify_replaceAmpersandInHref($admin_bar_data_nested);
290 $outputter = function () use ($admin_bar_data_nested, $admin_bar_menu_data) {
291 $extra_data = [
292 'data' => !empty($admin_bar_menu_data) ? $admin_bar_menu_data : array_values($admin_bar_data_nested),
293 'logout_url' => wp_logout_url(home_url('/')),
294 // 'site_url' => site_url('/'),
295 'site_url' => home_url(),
296 'admin_url' => admin_url(),
297 'search' => $this->options['admin_bar_search'],
298 'notification' => $this->options['admin_bar_notif'],
299 'light_dark_switcher' => $this->options['admin_bar_dark_light_btn'],
300 ];
301 $data = "var adminify_admin_bar_data=" . json_encode($extra_data);
302 wp_print_inline_script_tag($data, ["id" => "adminify_admin_bar_data"]);
303 };
304
305 add_action("admin_footer", $outputter, 0);
306 add_action("wp_footer", $outputter, 0);
307 return $admin_bar_data;
308 }
309
310 public function adminify_adminbar_localize_script(){
311 echo $this->get_admin_bar_menu_list();
312 }
313
314 /**
315 * Turn admin bar items object to array
316 *
317 * @param array $nodes The admin bar menu.
318 * @return array Array in expected format.
319 */
320 public function nodes_to_array($nodes)
321 {
322 $admin_bar_array = array();
323 foreach ($nodes as $node_id => $node) {
324 $admin_bar_array[$node_id] = array(
325 'icon' => $this->add_default_icon($node->id),
326 // 'icon_default' => $this->add_default_icon($node->id),
327 'id' => $node->id,
328 // 'id_default' => $node->id,
329 'title' => $node->title,
330 // 'title_default' => $node->title,
331 'parent' => $node->parent,
332 // 'parent_default' => $node->parent,
333 'href' => $node->href,
334 // 'href_default' => $node->href,
335 'group' => $node->group,
336 // 'group_default' => $node->group,
337 'meta' => $node->meta,
338 // 'meta_default' => $node->meta,
339 'submenu' => array(),
340 // 'hidden_for' => '',
341 // 'newly_created' => 0,
342 'menu_level' => 0,
343 'menu_status' => true,
344 );
345 }
346 return $admin_bar_array;
347 }
348
349 /**
350 * Turn admin bar items object to array
351 *
352 * @param array $nodes The admin bar menu.
353 * @return array Array in expected format.
354 */
355 public function nodes_to_array_for_admin_bar($nodes)
356 {
357 $admin_bar_array = [];
358 foreach ($nodes as $node_id => $node) {
359 $admin_bar_array[$node_id] = array(
360 'icon' => !empty($node['icon']) ? $node['icon'] : $node['icon_default'],
361 // 'icon_default' => $this->add_default_icon($node->id),
362 'id' => !empty($node['id']) ? $node['id'] : $node['id_default'],
363 // 'id_default' => $node->id,
364 'title' => !empty($node['title']) ? $node['title'] : $node['title_default'],
365 // 'title_default' => $node->title,
366 'parent' => !empty($node['parent']) ? $node['parent'] : $node['parent_default'],
367 // 'parent_default' => $node->parent,
368 'href' => !empty($node['href']) ? $node['href'] : $node['href_default'],
369 // 'href_default' => $node->href,
370 'group' => !empty($node['group']) ? $node['group'] : $node['group_default'],
371 // 'group_default' => $node->group,
372 'meta' => !empty($node['meta']) ? $node['meta'] : $node['meta_default'],
373 // 'meta_default' => $node->meta,
374 'submenu' => $this->nodes_to_array_for_admin_bar($node['submenu']),
375 // 'hidden_for' => '',
376 // 'newly_created' => 0,
377 'menu_level' => 0,
378 'menu_status' => !empty( $node['menu_status'] ) ? true : false,
379 );
380 }
381
382 return array_values($admin_bar_array);
383 }
384
385 /**
386 * Default Icon
387 */
388 public function add_default_icon($menu_id)
389 {
390 $icon_class = '';
391
392 if ('wp-logo' === $menu_id) {
393 $icon_class = 'dashicons dashicons-wordpress';
394 } else if ('my-sites' === $menu_id) {
395 $icon_class = 'dashicons dashicons-admin-multisite';
396 } else if ('site-name' === $menu_id) {
397 $icon_class = 'dashicons dashicons-admin-home';
398 } else if ('site-name-frontend' === $menu_id) {
399 $icon_class = 'dashicons dashicons-dashboard';
400 } else if ('customize' === $menu_id) {
401 $icon_class = 'dashicons dashicons-admin-customizer';
402 } else if ('updates' === $menu_id) {
403 $icon_class = 'dashicons dashicons-update';
404 } else if ('comments' === $menu_id) {
405 $icon_class = 'dashicons dashicons-admin-comments';
406 } else if ('new-content' === $menu_id) {
407 $icon_class = 'dashicons dashicons-plus';
408 } else if ('edit' === $menu_id) {
409 $icon_class = 'dashicons dashicons-edit';
410 } else if ('site-editor' === $menu_id) {
411 $icon_class = 'dashicons dashicons-admin-appearance';
412 }
413 return $icon_class;
414 }
415
416
417 public function format_to_nested($flat_array)
418 {
419
420 if (isset($flat_array['menu-toggle'])) {
421 unset($flat_array['menu-toggle']);
422 }
423
424 $nested_array = [];
425
426 // Third, get the parent menu items.
427 foreach ($flat_array as $menu_id => $menu) {
428
429 if( !empty($menu['hidden_for']) ) {
430 $disable_for = [];
431
432 foreach($menu['hidden_for'] as $hidden_key => $hidden_user){
433 $disable_for[$hidden_key] = strtolower($hidden_user['value']);
434
435 }
436
437 if (\WPAdminify\Inc\Utils::restricted_for($disable_for)) {
438 continue;
439 }
440 }
441
442
443 if (!isset($menu['parent']) || !$menu['parent'] || !isset($flat_array[$menu['parent']])) {
444 $nested_array[$menu_id] = $menu;
445
446 $additional = array(
447 'title_encoded' => isset($menu['title']) ? htmlentities2($menu['title']) : '',
448 'title_clean' => isset($menu['title']) ? wp_strip_all_tags($menu['title']) : '',
449 'title_encoded_default' => isset($menu['title_default']) ? htmlentities2($menu['title_default']) : '',
450 'title_clean_default' => isset($menu['title_default']) ? wp_strip_all_tags($menu['title_default']) : '',
451 'submenu' => array(),
452 'menu_level' => 0
453 );
454
455 $nested_array[$menu_id] = array_merge($nested_array[$menu_id], $additional);
456 }
457 }
458
459 // Fourth, remove collected parent array from $flat_array.
460 foreach ($nested_array as $key => $value) {
461 if (isset($flat_array[$key])) {
462 unset($flat_array[$key]);
463 }
464 }
465
466 // Fifth, get the 1st level submenu items.
467 foreach ($flat_array as $menu_id => $menu) {
468 if (isset($nested_array[$menu['parent']])) {
469 $nested_array[$menu['parent']]['submenu'][$menu['id']] = $menu;
470
471 $additional = array(
472 'title_encoded' => isset($menu['title']) ? htmlentities2($menu['title']) : '',
473 'title_clean' => isset($menu['title']) ? wp_strip_all_tags($menu['title']) : '',
474 'title_encoded_default' => isset($menu['title_default']) ? htmlentities2($menu['title_default']) : '',
475 'title_clean_default' => isset($menu['title_default']) ? wp_strip_all_tags($menu['title_default']) : '',
476 'submenu' => array(),
477 'menu_level' => 1
478 );
479
480 $nested_array[$menu['parent']]['submenu'][$menu['id']] = array_merge(
481 $nested_array[$menu['parent']]['submenu'][$menu['id']],
482 $additional
483 );
484
485 unset($flat_array[$menu_id]);
486 }
487 }
488
489 // Sixth, get the 2nd level submenu items.
490 if (!empty($flat_array)) {
491 // Loop over flat_array.
492 foreach ($flat_array as $menu_id => $menu) {
493 // Loop over nested_array.
494 foreach ($nested_array as $parent_id => $parent_array) {
495 $submenu_lv2_found = false;
496
497 if (!empty($parent_array['submenu'])) {
498 // Loop over parent array's submenu.
499 foreach ($parent_array['submenu'] as $submenu_lv1_id => $submenu_lv1_array) {
500 if ($menu['parent'] === $submenu_lv1_id) {
501 if (!isset($nested_array[$parent_id]['submenu'][$submenu_lv1_id]['submenu'])) {
502 $nested_array[$parent_id]['submenu'][$submenu_lv1_id]['submenu'] = array();
503 }
504
505 $nested_array[$parent_id]['submenu'][$submenu_lv1_id]['submenu'][$menu_id] = $menu;
506
507 $additional = array(
508 'title_encoded' => isset($menu['title']) ? htmlentities2($menu['title']) : '',
509 'title_clean' => isset($menu['title']) ? wp_strip_all_tags($menu['title']) : '',
510 'title_encoded_default' => isset($menu['title_default']) ? htmlentities2($menu['title_default']) : '',
511 'title_clean_default' => isset($menu['title_default']) ? wp_strip_all_tags($menu['title_default']) : '',
512 'submenu' => array(),
513 'menu_level' => 2
514 );
515
516 $nested_array[$parent_id]['submenu'][$submenu_lv1_id]['submenu'][$menu_id] = array_merge(
517 $nested_array[$parent_id]['submenu'][$submenu_lv1_id]['submenu'][$menu_id],
518 $additional
519 );
520
521 unset($flat_array[$menu_id]);
522 $submenu_lv2_found = true;
523 break;
524 }
525 }
526 }
527
528 if ($submenu_lv2_found) {
529 break;
530 }
531 }
532 }
533 }
534
535 // Seventh, get the 3rd level submenu items.
536 if (!empty($flat_array)) {
537 // Loop over flat_array.
538 foreach ($flat_array as $menu_id => $menu) {
539 // Loop over nested_array.
540 foreach ($nested_array as $parent_id => $parent_array) {
541 $submenu_lv3_found = false;
542
543 if (!empty($parent_array['submenu'])) {
544 // Loop over parent array's submenu.
545 foreach ($parent_array['submenu'] as $submenu_lv1_id => $submenu_lv1_array) {
546 if (!empty($submenu_lv1_array['submenu'])) {
547 // Loop over submenu level 1's submenu.
548 foreach ($submenu_lv1_array['submenu'] as $submenu_lv2_id => $submenu_lv2_array) {
549 if ($menu['parent'] === $submenu_lv2_id) {
550 if (!isset($nested_array[$parent_id]['submenu'][$submenu_lv1_id]['submenu'][$submenu_lv2_id]['submenu'])) {
551 $nested_array[$parent_id]['submenu'][$submenu_lv1_id]['submenu'][$submenu_lv2_id]['submenu'] = array();
552 }
553
554 $nested_array[$parent_id]['submenu'][$submenu_lv1_id]['submenu'][$submenu_lv2_id]['submenu'][$menu_id] = $menu;
555
556 $additional = array(
557 'title_encoded' => isset($menu['title']) ? htmlentities2($menu['title']) : '',
558 'title_clean' => isset($menu['title']) ? wp_strip_all_tags($menu['title']) : '',
559 'title_encoded_default' => isset($menu['title_default']) ? htmlentities2($menu['title_default']) : '',
560 'title_clean_default' => isset($menu['title_default']) ? wp_strip_all_tags($menu['title_default']) : '',
561 'submenu' => array(),
562 'menu_level' => 3
563 );
564
565 $nested_array[$parent_id]['submenu'][$submenu_lv1_id]['submenu'][$submenu_lv2_id]['submenu'][$menu_id] = array_merge(
566 $nested_array[$parent_id]['submenu'][$submenu_lv1_id]['submenu'][$submenu_lv2_id]['submenu'][$menu_id],
567 $additional
568 );
569
570 unset($flat_array[$menu_id]);
571 $submenu_lv3_found = true;
572 break;
573 }
574 }
575 }
576
577 if ($submenu_lv3_found) {
578 break;
579 }
580 }
581 }
582
583 if ($submenu_lv3_found) {
584 break;
585 }
586 }
587 }
588 }
589 return $nested_array;
590 }
591
592
593
594 public function is_network_active()
595 {
596 if (!function_exists('is_plugin_active_for_network') || !function_exists('is_plugin_active')) {
597 require_once ABSPATH . '/wp-admin/includes/plugin.php';
598 }
599
600 return (is_plugin_active_for_network('adminify/adminify.php') ? true : false);
601 }
602
603 public function parse_menu_items($args, $default, $request_from = 'backend')
604 {
605 // $instance = new self();
606 $parsed_array = [];
607 // $ms_helper = new Multisite_Helper();
608 $mulsite_site = $this->is_network_active();
609
610 // parse menu
611 if (true) {
612 if ($request_from == 'backend') {
613 $new_array = [];
614 foreach ($default as $key => $menu) {
615 if (array_search($key, array_keys($args)) && $key == $args[$key]['id']) {
616 // $new_array[$key] = $args[$key];
617 } else {
618 if (($mulsite_site) && ($key == 'my-sites')) {
619 $new_array[$key] = $args[$key];
620 unset($args[$key]);
621 } else {
622 $new_array[$key] = $menu;
623 }
624 }
625 }
626
627 $new_args = [];
628 foreach ($args as $key => $menu) {
629 if (str_contains($key, 'custom-menu-')) {
630 $new_args[$key] = $menu;
631 }
632 if (!array_key_exists($key, $default)) {
633 continue;
634 }
635 $new_args[$key] = $args[$key];
636 }
637
638 $pos = array_search('comments', array_keys($new_array), true);
639 // $pos += 1;
640
641 unset($new_array['top-secondary']);
642
643 // $new_array = array_slice($new_array, 0, $pos, true) + $new_args + array_slice($new_array, $pos, count($new_array) - 1, true);
644 $new_array = $new_args + array_slice($new_array, $pos, count($new_array), true);
645
646 return $new_array;
647 }
648 }
649 }
650
651 public static function associative_to_index_array($asoc_array)
652 {
653
654 $new_array = [];
655 $i = 0;
656
657 foreach ($asoc_array as $key => $value) {
658 if (isset($value['submenu']) && count($value['submenu']) > 0) {
659 $j = 0;
660 $sub_1 = [];
661 foreach ($value['submenu'] as $key1 => $value1) {
662
663 if (isset($value1['submenu']) && count($value1['submenu']) > 0) {
664 $k = 0;
665 $sub_2 = [];
666 foreach ($value1['submenu'] as $key2 => $value2) {
667 if (isset($value2['submenu']) && count($value2['submenu']) > 0) {
668 $l = 0;
669 $sub_3 = [];
670 foreach ($value2['submenu'] as $key => $value3) {
671 if (isset($value3['submenu']) && count($value3['submenu']) > 0) {
672 $sub_3[$l] = $value3;
673 $sub_3[$l]['submenu'] = array_values($value3['submenu']);
674 } else {
675 $sub_3[$l] = $value3;
676 }
677 $l++;
678 }
679 $sub_2[$k] = $value2;
680 $sub_2[$k]['submenu'] = $sub_3;
681 } else {
682 $sub_2[$k] = $value2;
683 }
684 $k++;
685 }
686
687 $sub_1[$j] = $value1;
688 $sub_1[$j]['submenu'] = $sub_2;
689 } else {
690 $sub_1[$j] = $value1;
691 }
692 // $new_array[$i]['submenu'][$j] = $value1;
693 $j++;
694 }
695 $new_array[$i] = $value;
696 $new_array[$i]['submenu'] = $sub_1;
697 } else {
698 $new_array[$i] = $value;
699 }
700 $i++;
701 }
702 return $new_array;
703 }
704
705
706 }
707 }
708