page = sanitize_text_field( wp_unslash( $_REQUEST['page'] ) ); } } private function load_app_css() { // WPDataAccess apps CSS. wp_register_style( 'wpda_apps', plugins_url( '../assets/css/wpda_apps.css', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ) ); } /** * Add stylesheets to back-end * * The following stylesheets are added: * + Plugin stylesheet * + Visual editor stylesheet * * The plugin stylesheet is used to style the setting forms {@see WPDA_Settings}, simple forms * {@see \WPDataAccess\Simple_Form\WPDA_Simple_Form}. * * @since 1.0.0 * * @see WPDA_Settings * @see \WPDataAccess\Simple_Form\WPDA_Simple_Form * @see WP_Data_Access_Public */ public function enqueue_styles() { if ( !WPDA::is_plugin_page( $this->page ) ) { // Admin styles are only added to plugin admin pages. // App pages still require the apps.css file. $apps = WPDA_App_Model::add_to_dashboard_menu(); $css_added = false; for ($i = 0; $i < count( $apps ) && !$css_added; $i++) { $settings = json_decode( $apps[$i]['app_settings'], true ); if ( isset( $settings['settings']['app_menu_title'] ) && $this->page === $settings['settings']['app_menu_title'] ) { $this->load_app_css(); $css_added = true; } } return; } if ( self::PAGE_NAVI === $this->page ) { // WPDataAccess CSS. wp_enqueue_style( 'wpdanavi', plugins_url( '../assets/css/wpda_navi.css', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ) ); } wp_enqueue_style( 'wp-jquery-ui-core' ); wp_enqueue_style( 'wp-jquery-ui-dialog' ); wp_enqueue_style( 'wp-jquery-ui-sortable' ); wp_enqueue_style( 'wp-jquery-ui-tabs' ); $this->load_app_css(); // WPDataAccess CSS. wp_enqueue_style( 'wpdataaccess', plugins_url( '../assets/css/wpda_style.css', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ) ); // WPDataAccess dashboard. wp_register_style( 'wpdataaccess_dashboard', plugins_url( '../assets/css/wpda_dashboard.css', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ) ); // Add WP Data Projects stylesheet. wp_enqueue_style( 'wpdataprojects', plugins_url( '../WPDataProjects/assets/css/wpdp_style.css', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ) ); // Register datetimepicker external library. wp_register_style( 'datetimepicker', plugins_url( '../assets/css/jquery.datetimepicker.min.css', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ) ); // Register JQuery DataTables to use data tables in the dashboard. wp_register_style( 'jquery_datatables', plugins_url( '../assets/css/jquery.dataTables.min.css', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ) ); // Register JQuery DataTables Responsive to use data tables in the dashboard. wp_register_style( 'jquery_datatables_responsive', plugins_url( '../assets/css/responsive.dataTables.min.css', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ) ); if ( self::PAGE_MAIN === $this->page || self::PAGE_APPS === $this->page || self::PAGE_DASHBOARD === $this->page || self::PAGE_PUBLISHER === $this->page || self::PAGE_CHARTS === $this->page ) { // Load UI smoothness theme. wp_enqueue_style( 'wpda_ui_smoothness', plugins_url( '../assets/css/jquery-ui.smoothness.min.css', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ) ); } else { // Load UI darkness theme. wp_enqueue_style( 'wpda_ui_darkness', plugins_url( '../assets/css/jquery-ui.min.css', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ) ); } $hide_button_icons = WPDA::get_option( WPDA::OPTION_BE_HIDE_BUTTON_ICONS ); if ( false !== $hide_button_icons && 'on' !== $hide_button_icons ) { // SAVING SPACE - According to the plugin guidelines it is allowed to include external fonts: // https://developer.wordpress.org/plugins/wordpress-org/detailed-plugin-guidelines/#8-plugins-may-not-send-executable-code-via-third-party-systems . // Load fontawesome icons. // phpcs:disable WordPress.WP.EnqueuedResourceParameters.MissingVersion wp_enqueue_style( 'wpda_fontawesome_icons', WPDA::CDN_FONTAWESOME . 'all.min.css', array(), null, false ); // phpcs:enable WordPress.WP.EnqueuedResourceParameters.MissingVersion } if ( self::PAGE_PUBLISHER === $this->page ) { wp_register_style( 'wpda_datatables_default', plugins_url( '../assets/css/wpda_datatables_default.css', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ) ); // Add jQuery multiselect resources. wp_enqueue_style( 'wpda_jquery_multiselect', plugins_url( '../assets/css/jquery.multiselect.sortable.js.css', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ), false ); } if ( !WPDA::current_user_is_admin() ) { wp_enqueue_style( 'wpda_non_admin', plugins_url( '../assets/css/wpda_non_admin.css', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ) ); } } /** * Remove icons from buttons (if configured) * * @return void */ public function remove_icons() { if ( !WPDA::is_plugin_page( $this->page ) ) { // Only executed on plugin pages. return; } if ( 'on' === WPDA::get_option( WPDA::OPTION_BE_HIDE_BUTTON_ICONS ) ) { echo ' '; } } /** * Add scripts to back-end * * @since 1.0.0 * * @see WP_Data_Access_Public */ public function enqueue_scripts() { if ( !WPDA::is_plugin_page( $this->page ) ) { // Admin styles are only added to plugin admin pages. return; } wp_enqueue_script( 'jquery-ui-core' ); wp_enqueue_script( 'jquery-ui-dialog' ); wp_enqueue_script( 'jquery-ui-tabs' ); wp_enqueue_script( 'jquery-ui-sortable' ); wp_enqueue_script( 'jquery-ui-tooltip' ); wp_enqueue_script( 'jquery-ui-autocomplete' ); // Register wpda rest api. wp_enqueue_script( 'wpda_rest_api', plugins_url( '../assets/js/wpda_rest_api.js', __FILE__ ), array('wp-api'), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ), false ); wp_localize_script( 'wpda_rest_api', 'wpdaApiSettings', array( 'path' => WPDA_API::WPDA_NAMESPACE, ) ); // Register wpda admin functions. wp_enqueue_script( 'wpda_admin_scripts', plugins_url( '../assets/js/wpda_admin.js', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ), false ); wp_localize_script( 'wpda_admin_scripts', 'wpda_admin_vars', array( 'wpda_ajaxurl' => admin_url( 'admin-ajax.php' ), ) ); // Register dashboard. wp_register_script( 'wpdataaccess_dashboard', plugins_url( '../assets/js/wpda_dashboard.js', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ), false ); wp_localize_script( 'wpdataaccess_dashboard', 'wpda_dashboard_vars', array( 'wpda_ajaxurl' => admin_url( 'admin-ajax.php' ), ) ); // Add WP Data Projects JS functions.RESEARCH. wp_enqueue_script( 'wpdataprojects', plugins_url( '../WPDataProjects/assets/js/wpdp_admin.js', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ), false ); // Register jQuery DataTables to use data tables in the dashboard. wp_register_script( 'jquery_datatables', plugins_url( '../assets/js/jquery.dataTables.min.js', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ), false ); // Register jQuery DataTables Responsive to use data tables in the dashboard. wp_register_script( 'jquery_datatables_responsive', plugins_url( '../assets/js/dataTables.responsive.min.js', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ), false ); // Ajax call to WPDA datatables implementation to use data tables in the dashboard. wp_register_script( 'wpda_datatables', plugins_url( '../assets/js/wpda_datatables.js', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ), false ); wp_localize_script( 'wpda_datatables', 'wpda_publication_vars', array( 'wpda_ajaxurl' => admin_url( 'admin-ajax.php' ), ) ); // Register notify external library. wp_enqueue_script( 'wpda_notify', plugins_url( '../assets/js/notify.min.js', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ), false ); // Register datetimepicker external library. wp_register_script( 'datetimepicker', plugins_url( '../assets/js/jquery.datetimepicker.full.min.js', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ), false ); // Register clipboard.js. wp_enqueue_script( 'clipboard' ); if ( self::PAGE_PUBLISHER === $this->page ) { if ( isset( $_REQUEST['action'] ) && in_array( $_REQUEST['action'], array('view', 'new', 'edit'), true ) ) { $json_editing = WPDA::get_option( WPDA::OPTION_DP_JSON_EDITING ); if ( WPDA::OPTION_DP_JSON_EDITING[1] === $json_editing ) { // Register codeEditor to support JSON editing in Data Tables (table options advanced). $cm_settings['codeEditor'] = wp_enqueue_code_editor( array( 'type' => 'application/json', 'codemirror' => array( 'autoRefresh' => true, ), ) ); wp_localize_script( 'wp-theme-plugin-editor', 'cm_settings', $cm_settings ); wp_enqueue_script( 'wp-theme-plugin-editor' ); } // Add jQuery multiselect resources. wp_enqueue_script( 'wpda_jquery_multiselect', plugins_url( '../assets/js/jquery.multiselect.sortable.js', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ), false ); } } if ( self::PAGE_CHARTS === $this->page ) { $this->load_google_charts(); } if ( self::PAGE_DASHBOARD === $this->page ) { $this->load_google_charts(); // Load DBMS panels. wp_enqueue_script( 'wpda_dbms', plugins_url( '../assets/js/wpda_dbms.js', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ), false ); wp_localize_script( 'wpda_dbms', 'wpda_dbms_vars', array( 'wpda_ajaxurl' => admin_url( 'admin-ajax.php' ), ) ); } wp_enqueue_media(); } /** * Load Google Charts resources * * @return void */ private function load_google_charts() { // Load Google Charts. // phpcs:disable WordPress.WP.EnqueuedResourceParameters wp_enqueue_script( 'wpda_google_charts', WPDA::GOOGLE_CHARTS, array(), null, false ); // phpcs:enable WordPress.WP.EnqueuedResourceParameters wp_enqueue_script( 'wpda_google_charts_fnc', plugins_url( '../assets/js/wpda_google_charts.js', __FILE__ ), array(), WPDA::get_option( WPDA::OPTION_WPDA_VERSION ), false ); wp_localize_script( 'wpda_google_charts_fnc', 'wpda_chart_vars', array( 'wpda_ajaxurl' => admin_url( 'admin-ajax.php' ), 'wpda_chartdir' => plugin_dir_url( __FILE__ ) . '../assets/images/google_chart_types/', 'wpda_premium' => ( wpda_freemius()->can_use_premium_code__premium_only() ? 'true' : 'false' ), ) ); } /** * Hide admin notices * * @return void */ public function user_admin_notices() { if ( WPDA::is_plugin_page( $this->page ) && 'on' === WPDA::get_option( WPDA::OPTION_PLUGIN_HIDE_NOTICES ) ) { remove_all_actions( 'admin_notices' ); remove_all_actions( 'all_admin_notices' ); } } /** * Add plugin menu and sub menus * * Adds the following menu and sub menus to the back-end menu: * + WP Data Access * + Data Explorer * + Data Designer * + Data Projects * + Manage Plugin * * @since 1.0.0 */ public function add_menu_items() { if ( WPDA::current_user_is_admin() ) { if ( 'on' === WPDA::get_option( WPDA::OPTION_PLUGIN_HIDE_ADMIN_MENU ) ) { // Show Data Projects. $this->add_data_projects(); // Hide admin menu. return; } // Main menu and items are only available to admin users (set capability to 'manage_options'). add_menu_page( 'WP Data Access', 'WP Data Access', 'manage_options', self::MAIN_PAGE_SLUG, null, 'dashicons-database', 999999999 ); // Add navigator page to WPDA menu. add_submenu_page( self::MAIN_PAGE_SLUG, 'WP Data Access', 'Tool Guide', 'manage_options', self::PAGE_NAVI, array($this, 'data_navi') ); // Add apps to menu. add_submenu_page( self::MAIN_PAGE_SLUG, 'WP Data Access', 'App Builder', 'manage_options', self::PAGE_APPS, array($this, 'data_apps') ); // Add data explorer to WPDA menu. $this->wpda_data_explorer_menu = add_submenu_page( self::MAIN_PAGE_SLUG, 'WP Data Access', 'Data Explorer', 'manage_options', self::PAGE_MAIN, array($this, 'data_explorer_page') ); // Add data explorer to WPDA menu. $this->wpda_table = add_submenu_page( self::PAGE_TABLE, 'WP Data Access', 'Data Explorer', 'manage_options', self::PAGE_TABLE, array($this, 'data_explorer_table_page') ); // Add submenu for Query Builder. $this->wpda_data_publisher_menu = add_submenu_page( self::MAIN_PAGE_SLUG, 'WP Data Access', 'SQL Query Builder', 'manage_options', self::PAGE_QUERY_BUILDER, array($this, 'query_builder') ); // Add submenu for Data Tables. $this->wpda_data_publisher_menu = add_submenu_page( self::MAIN_PAGE_SLUG, 'WP Data Access', 'Table Builder', 'manage_options', self::PAGE_PUBLISHER, array($this, 'data_publisher_page') ); if ( self::PAGE_PUBLISHER === $this->page ) { $this->wpda_data_publisher_view = new WPDA_List_View(array( 'page_hook_suffix' => $this->wpda_data_publisher_menu, 'table_name' => WPDA_Publisher_Model::get_base_table_name(), 'list_table_class' => 'WPDataAccess\\Data_Publisher\\WPDA_Publisher_List_Table', 'edit_form_class' => 'WPDataAccess\\Data_Publisher\\WPDA_Publisher_Form', )); } // Add Data Projects menu. $wpdp = new WPDP(self::MAIN_PAGE_SLUG); $wpdp->add_menu_items(); // Add data designer to WPDA menu. $this->wpda_data_designer_menu = add_submenu_page( self::MAIN_PAGE_SLUG, 'WP Data Access', 'Data Designer', 'manage_options', self::PAGE_DESIGNER, array($this, 'data_designer_page') ); if ( self::PAGE_DESIGNER === $this->page ) { $this->wpda_data_designer_view = new WPDA_List_View(array( 'page_hook_suffix' => $this->wpda_data_designer_menu, 'table_name' => WPDA_Design_Table_Model::get_base_table_name(), 'list_table_class' => 'WPDataAccess\\Design_Table\\WPDA_Design_Table_List_Table', 'edit_form_class' => 'WPDataAccess\\Design_Table\\WPDA_Design_Table_Form', 'subtitle' => '', )); } } else { $this->grant_access_to_dashboard(); $this->grant_access_to_data_publications(); } $this->add_data_projects(); $this->add_apps(); } /** * Remove plugin sub menu items (when in dashboard mode) * * @param mixed $submenu_file Dashboard menu items. * @return mixed */ public function wpda_submenu_filter( $submenu_file ) { if ( WPDA::current_user_is_admin() ) { $hidden_submenus = array( self::PAGE_DASHBOARD, self::PAGE_CHARTS, self::PAGE_PUBLISHER, WPDP::PAGE_MAIN, self::PAGE_DESIGNER, WPDP::PAGE_TEMPLATES, self::MAIN_PAGE_SLUG . '-account', self::MAIN_PAGE_SLUG . '-wp-support-forum' ); foreach ( $hidden_submenus as $submenu ) { remove_submenu_page( self::MAIN_PAGE_SLUG, $submenu ); } } else { global $submenu; $submenu[self::PAGE_MAIN][0][2] = self::PAGE_DASHBOARD; // phpcs:ignore WordPress.WP.GlobalVariablesOverride } return $submenu_file; } /** * Add apps to dashboard menu. * * @return void */ protected function add_apps() { // Add apps to dashbaord menu $apps = new WPDA_Add_App_To_Menu(); $apps->add_apps_to_menu(); } /** * Add Data Projects and Project Templates to plugin navigation * * @return void */ protected function add_data_projects() { // Add Data Projects. $wpdp = new WPDP(); $wpdp->add_projects(); } /** * Allow authorized users to access WP Data Access dashboard * * @return void */ protected function grant_access_to_dashboard() { // Check user role. $user_roles = WPDA::get_current_user_roles(); if ( false === $user_roles || !is_array( $user_roles ) ) { // Cannot determine the user roles (not able to show menus). return; } // Check dashboard role access. $dashboard_roles = get_option( \WPDataAccess\Settings\WPDA_Settings_Legacy_Dashboard::DASHBOARD_ROLES ); $user_has_role = false; foreach ( $user_roles as $user_role ) { if ( false !== strpos( $dashboard_roles, $user_role ) ) { $user_has_role = true; break; } } // Check dashboard user access. $dashboard_users = get_option( \WPDataAccess\Settings\WPDA_Settings_Legacy_Dashboard::DASHBOARD_USERS ); $user_has_access = false !== strpos( $dashboard_users, WPDA::get_current_user_login() ); if ( !$user_has_role && !$user_has_access ) { return; } // User has dashboard access: add menu item. $this->create_non_admin_menu( self::PAGE_DASHBOARD ); add_submenu_page( $this->first_page, 'Dashboard', 'Dashboard', WPDA::get_current_user_capability(), self::PAGE_DASHBOARD, array($this, 'data_dashboard_page') ); } /** * Allow authorized users to access Data Tables * * @return void */ protected function grant_access_to_data_publications() { // Check user role. $user_roles = WPDA::get_current_user_roles(); if ( false === $user_roles || !is_array( $user_roles ) ) { // Cannot determine the user roles (not able to show menus). return; } $publication_roles = WPDA::get_option( WPDA::OPTION_DP_PUBLICATION_ROLES ); if ( '' === $publication_roles || 'administrator' === $publication_roles ) { // No access. return; } $user_has_role = false; foreach ( $user_roles as $user_role ) { if ( false !== stripos( $publication_roles, $user_role ) ) { $user_has_role = true; } } if ( !$user_has_role ) { // No access. return; } // Grant access to main menu. $this->create_non_admin_menu( self::PAGE_PUBLISHER ); // Add submenu for Data Tables. $this->wpda_data_publisher_menu = add_submenu_page( $this->first_page, 'WP Data Access', 'Data Tables', WPDA::get_current_user_capability(), self::PAGE_PUBLISHER, array($this, 'data_publisher_page') ); if ( self::PAGE_PUBLISHER === $this->page ) { global $wpdb; $this->wpda_data_publisher_view = new WPDA_List_View(array( 'page_hook_suffix' => $this->wpda_data_publisher_menu, 'table_name' => $wpdb->prefix . 'wpda_publisher', 'list_table_class' => 'WPDataAccess\\Data_Publisher\\WPDA_Publisher_List_Table', 'edit_form_class' => 'WPDataAccess\\Data_Publisher\\WPDA_Publisher_Form', )); } } /** * Add dashboard page * * @return void */ public function data_dashboard_page() { WPDA_Dashboard::add_dashboard( true ); } public function data_explorer_page() { WPDA_Dashboard::add_dashboard(); if ( isset( $_REQUEST['page_action'] ) && 'wpda_backup' === $_REQUEST['page_action'] ) { $this->backup_page(); } elseif ( isset( $_REQUEST['page_action'] ) && 'wpda_import_csv' === $_REQUEST['page_action'] ) { $this->import_csv(); } elseif ( isset( $_REQUEST['page_action'] ) && 'wpda_global_search' === $_REQUEST['page_action'] ) { $this->advanced_search(); } else { $explorer = new WPDA_Data_Explorer(); $explorer->show(); } } public function data_explorer_table_page() { WPDA_Dashboard::add_dashboard(); if ( !isset( $_POST['dbs'], $_POST['tbl'], $_POST['s'], $_POST['c'] ) ) { wp_die( esc_attr__( 'ERROR: Invalid usage', 'wp-data-access' ) ); } $dbs = WPDA_API_Core::sanitize_db_identifier( sanitize_text_field( wp_unslash( $_POST['dbs'] ) ) ); $tbl = WPDA_API_Core::sanitize_db_identifier( sanitize_text_field( wp_unslash( $_POST['tbl'] ) ) ); $s = WPDA_API_Core::sanitize_db_identifier( sanitize_text_field( wp_unslash( $_POST['s'] ) ) ); $c = WPDA_API_Core::sanitize_db_identifier( sanitize_text_field( wp_unslash( $_POST['c'] ) ) ); $explorer = new WPDA_Table_Container(array( 'dbs' => $dbs, 'tbl' => $tbl, 's' => $s, 'c' => $c, )); $explorer->show(); } public function data_navi() { if ( isset( $_POST['wpda-legacy-tool-status'] ) ) { // Legacy tools update $update_status = json_decode( sanitize_text_field( wp_unslash( $_POST['wpda-legacy-tool-status'] ) ), true ); if ( null !== $update_status ) { if ( isset( $update_status['tables'], $update_status['forms'], $update_status['templates'], $update_status['designer'], $update_status['dashboards'], $update_status['charts'] ) ) { // Get current legacy tool settings $option_legacy_tools = \WPDataAccess\Utilities\WPDA_Legacy_Tool_Visibility::get(); // Update legacy tool settings $option_legacy_tools['tables'][0] = $update_status['tables']; $option_legacy_tools['forms'][0] = $update_status['forms']; $option_legacy_tools['templates'][0] = $update_status['templates']; $option_legacy_tools['designer'][0] = $update_status['designer']; $option_legacy_tools['dashboards'][0] = $update_status['dashboards']; $option_legacy_tools['charts'][0] = $update_status['charts']; // Save legacy tool settings WPDA::set_option( WPDA::OPTION_PLUGIN_LEGACY_TOOLS, $option_legacy_tools ); } } } WPDA_Dashboard::add_dashboard(); $navi = new WPDA_Navi(); $navi->show(); } public function data_apps() { WPDA_Dashboard::add_dashboard(); $wpda_app_builder = new WPDA_App_Builder(); $wpda_app_builder->show(); } public function advanced_search() { $advanced_search = new WPDA_Global_Search(); $advanced_search->show(); } /** * Add Query Builder * * @return void */ public function query_builder() { WPDA_Dashboard::add_dashboard(); $query_builder = new \WPDataAccess\Data_Apps\WPDA_Query_Builder(); $query_builder->show(); } /** * Add CSV page * * @return void */ public function import_csv() { $csv_import = new WPDA_CSV_Import(); $csv_import->show(); } /** * Show data designer main page * * Initialization of $this->wpda_data_designer_view is done earlier in * {@see WP_Data_Access_Admin::add_menu_items()} to support screen options. This method just shows the page * containing the list table. * * @since 1.0.0 * * @see WP_Data_Access_Admin::add_menu_items() */ public function data_designer_page() { WPDA_Dashboard::add_dashboard(); $data_designer_table_found = WPDA_Design_Table_Model::table_exists(); if ( $data_designer_table_found ) { $this->wpda_data_designer_view->show(); } else { $this->data_designer_page_not_found(); } } /** * Data Designer repository table not found */ public function data_designer_page_not_found() { WPDA_Dashboard::add_dashboard(); $wpda_repository = new WPDA_Repository(); $wpda_repository->inform_user(); ?>
wpda_data_publisher_view->show(); } else { $this->data_publisher_page_not_found(); } } public function data_publisher_mngstl() { $mngstl = new WPDAPRO_Data_Publisher_Manage_Styles(); $mngstl->show(); } /** * Add Charts page * * @return void */ public function data_charts_page() { } /** * Data Tables repository table not found */ public function data_publisher_page_not_found() { if ( WPDA::current_user_is_admin() ) { WPDA_Dashboard::add_dashboard(); } $wpda_repository = new WPDA_Repository(); $wpda_repository->inform_user(); ?> create_export( 'add' ); } elseif ( 'add' === $action ) { $wpda_backup->wpda_add_cron_job(); } elseif ( 'remove' === $action ) { $wpda_backup->wpda_remove_cron_job(); } elseif ( 'edit' === $action ) { $wpda_backup->create_export( 'update' ); } elseif ( 'update' === $action ) { $wpda_backup->wpda_update_cron_job(); } } else { $wpda_backup->show_wp_cron(); } } /** * Add main menu for non admin user * * @param string $first_page First plugin page. * @return void */ protected function create_non_admin_menu( $first_page ) { if ( !$this->loaded_user_main_menu ) { add_menu_page( 'WP Data Access', 'WP Data Access', WPDA::get_current_user_capability(), $first_page, function () { }, 'dashicons-database-view', 999999999 ); $this->loaded_user_main_menu = true; $this->first_page = $first_page; } } } // phpcs:enable WordPress.Security.NonceVerification.Recommended, WordPress.Security.NonceVerification.Missing