PluginProbe
WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards / 5.5.41
WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards v5.5.41
5.5.85 5.5.84 5.5.83 5.5.82 5.5.81 5.5.80 5.5.79 5.5.77 5.5.76 5.5.75 5.5.73 5.5.72 5.5.22 5.5.23 5.5.29 5.5.3 5.5.31 5.5.32 5.5.34 5.5.35 5.5.36 5.5.37 5.5.4 5.5.40 5.5.41 All 161 releases
wp-data-access / WPDataAccess / Utilities / WPDA_Add_App_To_Menu.php

WPDA_Add_App_To_Menu.php in WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards 5.5.41, at WPDataAccess/Utilities/WPDA_Add_App_To_Menu.php

126 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPDataAccess\Utilities;
4
5 use WPDataAccess\Data_Apps\WPDA_App_Container;
6 use WPDataAccess\Plugin_Table_Models\WPDA_App_Model;
7 use WPDataAccess\WPDA;
8
9 class WPDA_Add_App_To_Menu {
10
11 private $wp_admin_toolbar = array();
12
13 public function add_apps_to_menu() {
14
15 $apps = WPDA_App_Model::add_to_dashboard_menu();
16 foreach ( $apps as $app ) {
17
18 $settings = json_decode( $app['app_settings'], true );
19 if (
20 ! isset(
21 $settings['rest_api']['authorization'],
22 $settings['rest_api']['authorized_roles'],
23 $settings['rest_api']['authorized_users'],
24 $settings['settings']['app_menu_title']
25 )
26 ) {
27 continue;
28 }
29 if ( $settings['rest_api']['authorization'] === 'authorized' ) {
30 $authorized_roles = $settings['rest_api']['authorized_roles'];
31 $current_user_roles = WPDA::get_current_user_roles();
32 if ( 0 === count( array_intersect( $authorized_roles, $current_user_roles ) ) ) {
33 $authorized_users = $settings['rest_api']['authorized_users'];
34 $current_user_name = WPDA::get_current_user_login();
35 if ( ! in_array( $current_user_name, $authorized_users ) ) {
36 continue;
37 }
38 }
39 }
40
41 $title = $settings['settings']['app_menu_title'];
42 if ( is_admin() ) {
43 // Add app to dashboard menu
44 add_menu_page(
45 $title,
46 $title,
47 WPDA::get_current_user_capability(),
48 $title,
49 null,
50 'dashicons-database-view'
51 );
52
53 add_submenu_page(
54 $title,
55 $title,
56 $title,
57 WPDA::get_current_user_capability(),
58 $title,
59 function() use ( $app, $title ) {
60 // Style not enqueued from container class.
61 // Adding container style manually.
62 $args = array(
63 'app_id' => $app['app_id'],
64 'feedback' => true,
65 );
66 $app_container = new WPDA_App_Container( $args );
67 ?>
68 <div class="wrap wpda-dashboard-app">
69 <h1 class="wp-heading-inline">
70 <?php echo esc_html( $title ); ?>
71 </h1>
72 <?php $app_container->show(); ?>
73 </div>
74 <style>
75 .wrap.wpda-dashboard-app .pp-container-app {
76 margin: 20px 0 0 0;
77 }
78 </style>
79 <?php
80 }
81 );
82 } else {
83 // Add app to WordPress toolbar
84 $this->wp_admin_toolbar[ $app['app_id'] ][] = array(
85 'menu_id' => $title,
86 'menu_name' => $title,
87 'menu_title' => $title,
88 'page_title' => $title,
89 );
90 }
91 }
92
93 if ( ! is_admin() ) {
94 foreach ( $this->wp_admin_toolbar as $pid => $toolbar ) {
95 foreach ( $toolbar as $key => $menu ) {
96 if ( 0 === $key ) {
97 $this->add_item_to_toolbar( $pid, $menu );
98 }
99 $this->add_item_to_toolbar( $menu['menu_id'], $menu, $pid );
100 }
101 }
102 }
103
104 }
105
106 private function add_item_to_toolbar($pid, $menu, $parent = null ) {
107
108 global $wp_admin_bar;
109 $args = array(
110 'id' => $pid,
111 'title' => null === $parent ? $menu['menu_name'] : $menu['page_title'],
112 'href' => admin_url('admin.php') . '?page=' . $menu['menu_id'],
113 'zindex' => '9999',
114 'meta' =>array(
115 'class' => null === $parent ? 'wpda-wpdp-toolbar' : '',
116 'title' => null === $parent ? $menu['menu_title'] : $menu['page_title'],
117 )
118 );
119 if ( null !== $parent ) {
120 $args['parent'] = $parent;
121 }
122 $wp_admin_bar->add_node( $args );
123
124 }
125
126 }