PluginProbe
WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards / 5.5.22
WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards v5.5.22
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 5.5.42 All 160 releases
wp-data-access / WPDataAccess / Settings / WPDA_Settings_Dashboard.php

WPDA_Settings_Dashboard.php in WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards 5.5.22, at WPDataAccess/Settings/WPDA_Settings_Dashboard.php

244 lines 8.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPDataAccess\Settings {
4
5 use WPDataAccess\Utilities\WPDA_Message_Box;
6 use WPDataAccess\WPDA;
7
8 class WPDA_Settings_Dashboard extends WPDA_Settings {
9
10 const DASHBOARD_ROLES = 'wpda_dashboard_roles';
11 const DASHBOARD_USERS = 'wpda_dashboard_users';
12 const DASHBOARD_ROLES_HIDE_DEFAULT = 'wpda_dashboard_roles_hide_default';
13 const DASHBOARD_USERS_HIDE_DEFAULT = 'wpda_dashboard_users_hide_default';
14 const DASHBOARD_ROLES_CREATE = 'wpda_dashboard_roles_create';
15 const DASHBOARD_USERS_CREATE = 'wpda_dashboard_users_create';
16
17 protected function add_content() {
18 if ( isset( $_REQUEST['action'] ) ) {
19 $action = sanitize_text_field( wp_unslash( $_REQUEST['action'] ) ); // input var okay.
20
21 // Security check.
22 $wp_nonce = isset( $_REQUEST['_wpnonce'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) ) : ''; // input var okay.
23 if ( ! wp_verify_nonce( $wp_nonce, 'wpda-dashboard-settings-' . WPDA::get_current_user_login() ) ) {
24 wp_die( __( 'ERROR: Not authorized', 'wp-data-access' ) );
25 }
26
27 if ( 'save' === $action ) {
28 $this->update( 'dashboard_roles', self::DASHBOARD_ROLES );
29 $this->update( 'dashboard_users', self::DASHBOARD_USERS );
30 $this->update( 'hide_default_roles', self::DASHBOARD_ROLES_HIDE_DEFAULT );
31 $this->update( 'hide_default_users', self::DASHBOARD_USERS_HIDE_DEFAULT );
32 $this->update( 'create_roles', self::DASHBOARD_ROLES_CREATE );
33 $this->update( 'create_users', self::DASHBOARD_USERS_CREATE );
34 } elseif ( 'setdefaults' === $action ) {
35 delete_option( self::DASHBOARD_ROLES );
36 delete_option( self::DASHBOARD_USERS );
37 delete_option( self::DASHBOARD_ROLES_HIDE_DEFAULT );
38 delete_option( self::DASHBOARD_USERS_HIDE_DEFAULT );
39 delete_option( self::DASHBOARD_ROLES_CREATE );
40 delete_option( self::DASHBOARD_USERS_CREATE );
41 }
42
43 $msg = new WPDA_Message_Box(
44 array(
45 'message_text' => __( 'Settings saved', 'wp-data-access' ),
46 )
47 );
48 $msg->box();
49 }
50
51 global $wp_roles;
52 $roles = $wp_roles->roles;
53 unset( $roles['administrator'] );
54
55 $users = get_users();
56
57 $granted_roles = get_option( self::DASHBOARD_ROLES );
58 $granted_users = get_option( self::DASHBOARD_USERS );
59
60 $hide_default_roles = get_option( self::DASHBOARD_ROLES_HIDE_DEFAULT );
61 $hide_default_users = get_option( self::DASHBOARD_USERS_HIDE_DEFAULT );
62
63 $create_roles = get_option( self::DASHBOARD_ROLES_CREATE );
64 $create_users = get_option( self::DASHBOARD_USERS_CREATE );
65 ?>
66 <form id="wpda_settings_dashboard" method="post"
67 action="?page=<?php echo esc_attr( $this->page ); ?>&tab=dashboard">
68 <table class="wpda-table-settings">
69 <tr>
70 <th><?php echo __( 'Dashboard role access', 'wp-data-access' ); ?></th>
71 <td>
72 <div class="wpda_separator_bottom">
73 Select roles to grant dashboard access:
74 </div>
75 <select name="dashboard_roles[]" multiple size="<?php echo esc_attr( min( 5, count( $roles ) ) ); ?>">
76 <?php
77 foreach ( $roles as $key => $role ) {
78 $selected = false !== strpos( $granted_roles, $key ) ? 'selected' : '';
79 ?>
80 <option value="<?php echo esc_attr( $key ); ?>" <?php echo esc_attr( $selected ); ?>>
81 <?php echo esc_attr( $role['name'] ); ?>
82 </option>
83 <?php
84 }
85 ?>
86 </select>
87 <ul>
88 <li>Administrators have access by default</li>
89 <li>Hold the control key to select multiple</li>
90 </ul>
91 </td>
92 </tr>
93 <tr>
94 <th><?php echo __( 'Dashboard user access', 'wp-data-access' ); ?></th>
95 <td>
96 <div class="wpda_separator_bottom">
97 Select users to grant dashboard access:
98 </div>
99 <select name="dashboard_users[]" multiple size="<?php echo esc_attr( min( 5, count( $users ) ) ); ?>">
100 <?php
101 foreach ( $users as $user ) {
102 $selected = false !== strpos( $granted_users, $user->data->user_login ) ? 'selected' : '';
103 ?>
104 <option value="<?php echo esc_attr( $user->data->user_login ); ?>" <?php echo esc_attr( $selected ); ?>>
105 <?php echo esc_attr( $user->data->display_name ); ?>
106 </option>
107 <?php
108 }
109 ?>
110 </select>
111 <ul>
112 <li>No role access needed to grant access to specific users</li>
113 <li>Hold the control key to select multiple</li>
114 </ul>
115 </td>
116 </tr>
117 <tr>
118 <th><?php echo __( 'Hide default tab', 'wp-data-access' ); ?></th>
119 <td>
120 <div class="wpda_separator_bottom">
121 Hide default tab for the following roles:
122 </div>
123 <select name="hide_default_roles[]" multiple size="<?php echo esc_attr( min( 5, count( $roles ) ) ); ?>">
124 <?php
125 foreach ( $roles as $key => $role ) {
126 $selected = false !== strpos( $hide_default_roles, $key ) ? 'selected' : '';
127 ?>
128 <option value="<?php echo esc_attr( $key ); ?>" <?php echo esc_attr( $selected ); ?>>
129 <?php echo esc_attr( $role['name'] ); ?>
130 </option>
131 <?php
132 }
133 ?>
134 </select>
135 <div class="wpda_separator_top wpda_separator_bottom">
136 Hide default tab for the following users:
137 </div>
138 <select name="hide_default_users[]" multiple size="<?php echo esc_attr( min( 5, count( $users ) ) ); ?>">
139 <?php
140 foreach ( $users as $user ) {
141 $selected = false !== strpos( $hide_default_users, $user->data->user_login ) ? 'selected' : '';
142 ?>
143 <option value="<?php echo esc_attr( $user->data->user_login ); ?>" <?php echo esc_attr( $selected ); ?>>
144 <?php echo esc_attr( $user->data->display_name ); ?>
145 </option>
146 <?php
147 }
148 ?>
149 </select>
150 <ul>
151 <li>Widgets currently added the users default tab will not be delete (user can readd them to another tab)</li>
152 </ul>
153 </td>
154 </tr>
155 <tr>
156 <th><?php echo __( 'Create dashboard', 'wp-data-access' ); ?></th>
157 <td>
158 <div class="wpda_separator_bottom">
159 All dashboard users are allowed to create new dashboards by default.
160 Select only roles and users NOT allowed to create dashboards.
161 </div>
162 <div class="wpda_separator_bottom">
163 The following roles are NOT allowed to create dashboards:
164 </div>
165 <select name="create_roles[]" multiple size="<?php echo esc_attr( min( 5, count( $roles ) ) ); ?>">
166 <?php
167 foreach ( $roles as $key => $role ) {
168 $selected = false !== strpos( $create_roles, $key ) ? 'selected' : '';
169 ?>
170 <option value="<?php echo esc_attr( $key ); ?>" <?php echo esc_attr( $selected ); ?>>
171 <?php echo esc_attr( $role['name'] ); ?>
172 </option>
173 <?php
174 }
175 ?>
176 </select>
177 <div class="wpda_separator_top wpda_separator_bottom">
178 The following users are NOT allowed to create dashboards:
179 </div>
180 <select name="create_users[]" multiple size="<?php echo esc_attr( min( 5, count( $users ) ) ); ?>">
181 <?php
182 foreach ( $users as $user ) {
183 $selected = false !== strpos( $create_users, $user->data->user_login ) ? 'selected' : '';
184 ?>
185 <option value="<?php echo esc_attr( $user->data->user_login ); ?>" <?php echo esc_attr( $selected ); ?>>
186 <?php echo esc_attr( $user->data->display_name ); ?>
187 </option>
188 <?php
189 }
190 ?>
191 </select>
192 </td>
193 </tr>
194 </table>
195 <div class="wpda-table-settings-button">
196 <input type="hidden" name="action" value="save"/>
197 <button type="submit" class="button button-primary">
198 <i class="fas fa-check wpda_icon_on_button"></i>
199 <?php echo __( 'Save Dashboard Settings', 'wp-data-access' ); ?>
200 </button>
201 <a href="javascript:void(0)"
202 onclick="if (confirm('<?php echo __( 'Reset to defaults?', 'wp-data-access' ); ?>')) {
203 jQuery('input[name=&quot;action&quot;]').val('setdefaults');
204 jQuery('#wpda_settings_dashboard').trigger('submit')
205 }"
206 class="button">
207 <i class="fas fa-times-circle wpda_icon_on_button"></i>
208 <?php echo __( 'Reset Dashboard Settings To Defaults', 'wp-data-access' ); ?>
209 </a>
210 </div>
211 <?php wp_nonce_field( 'wpda-dashboard-settings-' . WPDA::get_current_user_login(), '_wpnonce', false ); ?>
212 </form>
213 <style>
214 #wpda_settings_dashboard ul {
215 list-style-type: disc;
216 margin-left: 20px;
217 margin-bottom: 0;
218 }
219 #wpda_settings_dashboard ul li {
220 margin-bottom: 0;
221 }
222 </style>
223 <?php
224 }
225
226 private function update( $key, $option ) {
227 if ( isset( $_REQUEST[ $key ] ) ) {
228 $request = isset( $_REQUEST[ $key ] ) ? $_REQUEST[ $key ] : null; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
229 if ( is_array( $request ) ) {
230 $value = sanitize_text_field( wp_unslash( implode( ',', $request ) ) );
231 } else {
232 $value = '';
233 }
234 } else {
235 $value = '';
236 }
237
238 update_option( $option, $value );
239 }
240
241 }
242
243 }
244