*/ if ( !class_exists( 'MenuEditor' ) ) { class MenuEditor extends MenuEditorModel { public $url ; public $menu ; public $submenu ; public function __construct() { $this->url = WP_ADMINIFY_URL . 'Inc/Modules/MenuEditor'; $this->menu_settings = ( new MenuEditorOptions() )->get(); $this->options = (array) AdminSettings::get_instance()->get(); add_filter( 'upload_mimes', [ $this, 'custom_icon_mime_types' ] ); add_action( 'admin_menu', [ $this, 'jltwp_adminify_menu_editor_submenu' ], 51 ); add_filter( 'admin_body_class', [ $this, 'jltwp_adminify_menu_editor_body_class' ] ); add_filter( 'parent_file', [ $this, 'set_menu' ], 800 ); add_filter( 'parent_file', [ $this, 'apply_menu' ], 900 ); add_action( 'wp_ajax_adminify_save_menu_settings', [ $this, 'adminify_save_menu_settings' ] ); add_action( 'wp_ajax_adminify_reset_menu_settings', [ $this, 'adminify_reset_menu_settings' ] ); add_action( 'wp_ajax_adminify_export_menu_settings', [ $this, 'adminify_export_menu_settings' ] ); add_action( 'wp_ajax_adminify_import_menu_settings', [ $this, 'adminify_import_menu_settings' ] ); add_action( 'wp_ajax_adminify_file_upload', [ $this, 'adminify_file_upload_callback' ] ); add_action( 'wp_ajax_adminify_load_custom_icons', [ $this, 'adminify_load_custom_icons_callback' ] ); new MenuEditorAssets(); } public function custom_icon_mime_types( $mimes ) { $mimes['svg'] = 'image/svg+xml'; return $mimes; } public function filter_attachment( $value ) { // return $value->post_title == 'adminify-custom-icon'; return strpos( $value->guid, "adminify-custom-icon" ) !== false; } public function adminify_load_custom_icons_callback() { $result['images'] = null; $query = get_posts( [ 'post_type' => 'attachment', 'numberposts' => -1, ] ); $filtered = array_filter( $query, [ $this, 'filter_attachment' ] ); foreach ( $filtered as $key => $value ) { $result['images'][$value->ID] = $value->guid; } echo wp_json_encode( $result ) ; die; } public function adminify_file_upload_callback() { $result['status'] = false; check_ajax_referer( 'adminify-menu-editor-security-nonce', 'security' ); $upload_dir = wp_upload_dir(); $targeted_dir = $upload_dir['basedir'] . '/adminify-custom-icons'; if ( !is_dir( $targeted_dir ) ) { wp_mkdir_p( $targeted_dir ); } add_filter( 'upload_dir', [ $this, 'adminify_icon_custom_upload_dir' ] ); $files = $_FILES["my_file_upload"]; foreach ( $files['name'] as $key => $value ) { if ( $files['name'][$key] ) { $file = array( 'name' => $files['name'][$key], 'type' => $files['type'][$key], 'tmp_name' => $files['tmp_name'][$key], 'error' => $files['error'][$key], 'size' => $files['size'][$key], ); $_FILES = array( "upload_file" => $file, ); $attachment_id = media_handle_upload( "upload_file", 0 ); if ( is_wp_error( $attachment_id ) ) { // There was an error uploading the image. $result['status'] = false; $result['message'] = 'Error uploading file.'; } else { // The image was uploaded successfully! $result['status'] = true; $result['message'] = 'File Uploaded successfully.'; $result['images'][$attachment_id] = wp_get_attachment_url( $attachment_id ); } } } remove_filter( 'upload_dir', [ $this, 'adminify_icon_custom_upload_dir' ] ); echo wp_json_encode( $result ) ; wp_die(); } public function adminify_icon_custom_upload_dir( $dir_data ) { // $dir_data already you might want to use $custom_dir = 'adminify-custom-icons'; return [ 'path' => $dir_data['basedir'] . '/' . $custom_dir, 'url' => $dir_data['baseurl'] . '/' . $custom_dir, 'subdir' => '/' . $custom_dir, 'basedir' => $dir_data['basedir'], 'baseurl' => $dir_data['baseurl'], 'error' => $dir_data['error'], ]; } // Menu Editor Body Class public function jltwp_adminify_menu_editor_body_class( $classes ) { $classes .= ' adminify_menu_editor '; return $classes; } /** * Sanitises and strips tags of input from ajax * @since 1.0.0 * @variables $values = item to clean (array or string) */ public function clean_ajax_input( $values ) { if ( is_array( $values ) ) { foreach ( $values as $index => $in ) { if ( is_array( $in ) ) { $values[$index] = $this->clean_ajax_input( $in ); } else { $values[$index] = strip_tags( $in ); } } } else { $values = strip_tags( $values ); } return $values; } /** * Returns ajax error * @since 1.4 * @variables $message = error message to send back to user (string) */ public function ajax_error_message( $message ) { $returndata = array(); $returndata['error'] = true; $returndata['error_message'] = $message; return json_encode( $returndata ); } public function adminify_save_menu_settings() { if ( defined( 'DOING_AJAX' ) && DOING_AJAX && check_ajax_referer( 'adminify-menu-editor-security-nonce', 'security' ) > 0 ) { $options = $_POST['options']; $options = $this->clean_ajax_input( $options ); if ( $options == "" || !is_array( $options ) ) { $message = __( "No options supplied to save", 'adminify' ); echo $this->ajax_error_message( $message ) ; die; } if ( is_array( $options ) ) { update_option( $this->prefix, $options ); $returndata = array(); $returndata['success'] = true; $returndata['message'] = __( 'Settings saved', 'adminify' ); echo json_encode( $returndata ) ; die; } else { $message = __( "Something went wrong", 'adminify' ); echo $this->ajax_error_message( $message ) ; die; } } die; } /** * Menu Editor Settings Reset * * @return void */ public function adminify_reset_menu_settings() { if ( defined( 'DOING_AJAX' ) && DOING_AJAX && check_ajax_referer( 'adminify-menu-editor-security-nonce', 'security' ) > 0 ) { update_option( $this->prefix, array() ); $menu_editor_options = get_option( $this->prefix ); if ( !$menu_editor_options ) { $returndata = array(); $returndata['success'] = true; $returndata['message'] = __( 'Settings reset', 'adminify' ); echo json_encode( $returndata ) ; die; } else { $message = __( "Something went wrong", 'adminify' ); echo $this->ajax_error_message( $message ) ; die; } } die; } /** * Export Menu Editor Settings * * @return void */ public function adminify_export_menu_settings() { if ( defined( 'DOING_AJAX' ) && DOING_AJAX && check_ajax_referer( 'adminify-menu-editor-security-nonce', 'security' ) > 0 ) { $menu_editor_options = get_option( $this->prefix ); echo json_encode( $menu_editor_options ) ; } die; } /** * Import Menu Editor Settings * @since 1.0.0 */ public function adminify_import_menu_settings() { if ( defined( 'DOING_AJAX' ) && DOING_AJAX && check_ajax_referer( 'adminify-menu-editor-security-nonce', 'security' ) > 0 ) { $new_options = $this->clean_ajax_input( $_POST['settings'] ); if ( $new_options == "" || !is_array( $new_options ) ) { $message = __( "No options supplied to save", 'adminify' ); echo $this->ajax_error_message( $message ) ; die; } if ( is_array( $new_options ) ) { update_option( $this->prefix, $new_options ); $returndata = array(); $returndata['success'] = true; $returndata['message'] = __( 'Menu Imported', 'adminify' ); echo json_encode( $returndata ) ; die; } else { $message = __( "Something went wrong", 'adminify' ); echo $this->ajax_error_message( $message ) ; die; } } die; } /** * Get menu items * * @param [type] $parent_file * * @return void */ public function set_menu( $parent_file ) { global $menu, $submenu ; $this->menu = $this->sort_menu_settings( $menu ); $this->submenu = $this->sort_sub_menu_settings( $this->menu, $submenu ); return $parent_file; } /** * Sorts Menu's for Option settings */ public function sort_menu_settings( $thismenu ) { $menu_settings = $this->menu_settings; $tempmenu = array(); foreach ( $thismenu as $key => $current_menu_item ) { $next_menu_item = next( $thismenu ); $optiongroup = array(); $order = $key; $separator = 0; $icon = null; $hidden_for = []; if ( !empty($next_menu_item) && strpos( $next_menu_item[2], "separator" ) !== false ) { $separator = 1; } if ( is_array( $menu_settings ) ) { if ( isset( $menu_settings[$current_menu_item[2]] ) ) { $optiongroup = $menu_settings[$current_menu_item[2]]; if ( isset( $optiongroup['order'] ) ) { $order = $optiongroup['order']; } if ( isset( $optiongroup['separator'] ) ) { $separator = $optiongroup['separator']; } if ( !empty($optiongroup['icon']) ) { $icon = $optiongroup['icon']; } if ( !empty($optiongroup['hidden_for']) ) { $hidden_for = $optiongroup['hidden_for']; } } } $current_menu_item['order'] = $order; $current_menu_item['separator'] = $separator; if ( empty($this->options['admin_ui']) ) { if ( $icon !== null ) { if ( str_contains( $icon, 'dashicons ' ) ) { $menu_icon = str_replace( 'dashicons ', '', $icon ); $current_menu_item[6] = $menu_icon; } else { if ( str_contains( $icon, ',' ) ) { $menu_icon = explode( ',', $icon )[1]; } else { $menu_icon = 'dashicons-adminify- ' . $icon; } $current_menu_item[6] = $menu_icon; } } if ( $separator == 1 ) { $current_menu_item[4] = $current_menu_item[4] . ' adminify-menu-separator'; } } array_push( $tempmenu, $current_menu_item ); if ( isset( $menu_settings[$current_menu_item[2]] ) ) { unset( $menu_settings[$current_menu_item[2]] ); } } if ( is_array( $menu_settings ) && !array_key_exists( 0, $menu_settings ) ) { foreach ( $menu_settings as $key => $menu_s ) { $new_array = [ $menu_s['name'], 'read', $menu_s['link'] ?? '', '', 'menu-top menu-icon-custom', $key, $menu_s['icon'] ?? '', 'order' => $menu_s['order'], 'separator' => $menu_s['separator'] ?? 0, 'hidden_for' => $menu_s['hidden_for'] ?? [] ]; if ( empty($this->options['admin_ui']) ) { if ( str_contains( $menu_s['icon'], 'dashicons ' ) ) { $menu_icon = str_replace( 'dashicons ', '', $menu_s['icon'] ); } else { if ( empty($menu_s['icon']) || str_contains( $menu_s['icon'], ',' ) ) { if ( empty($menu_s['icon']) ) { $menu_icon = WP_ADMINIFY_ASSETS_IMAGE . 'logos/menu-icon.svg'; } else { $menu_icon = explode( ',', $menu_s['icon'] )[1]; } } else { $menu_icon = 'dashicons-adminify- ' . $menu_s['icon']; } } if ( $menu_s['separator'] == 1 ) { $new_array[4] = $new_array[4] . ' adminify-menu-separator'; } $new_array[6] = $menu_icon; } array_push( $tempmenu, $new_array ); } } return $this->sort_array( $tempmenu ); } /** * usort function for menu arrays */ public function sort_array_helper( $a, $b ) { $result = 0; if ( !isset( $a['order'] ) ) { return $result; } if ( $a['order'] > $b['order'] ) { $result = 1; } else { if ( $a['order'] < $b['order'] ) { $result = -1; } } return $result; } /** * Sorts arrays by key 'order' */ public function sort_array( $tosort ) { usort( $tosort, [ $this, "sort_array_helper" ] ); return $tosort; } /** * Sorts Sub Menu for settings * @since 1.4 */ public function sort_sub_menu_settings( $themenu, $thesubmenu ) { $menu_settings = $this->menu_settings; $tempsubmenu = array(); foreach ( $themenu as $current_menu_item ) { $optiongroup = array(); $submenu_items = array(); if ( isset( $thesubmenu[$current_menu_item[2]] ) ) { $submenuitems = $thesubmenu[$current_menu_item[2]]; foreach ( $submenuitems as $key => $subitem ) { $subitem['order'] = $key; if ( is_array( $menu_settings ) && isset( $menu_settings[$current_menu_item[2]] ) && isset( $menu_settings[$current_menu_item[2]]['submenu'] ) ) { $submenugroup = $menu_settings[$current_menu_item[2]]['submenu']; if ( isset( $submenugroup[$subitem[2]] ) ) { $itemoptions = $submenugroup[$subitem[2]]; if ( isset( $itemoptions['order'] ) ) { $subitem['order'] = $itemoptions['order']; } } } array_push( $submenu_items, $subitem ); } $submenu_items = $this->sort_array( $submenu_items ); $tempsubmenu[$current_menu_item[2]] = $submenu_items; } } if ( is_array( $menu_settings ) ) { $tmp_menu = []; foreach ( $menu_settings as $key => $menu_s ) { if ( isset( $menu_s['submenu'] ) && is_array( $menu_s['submenu'] ) ) { $tmp_sub_menu = []; $i = 0; foreach ( $menu_s['submenu'] as $k => $sub_menu ) { if ( !str_contains( $k, 'adminify-custom-submenu' ) ) { continue; } $order = $sub_menu['order'] ?? $i; $new_array = [ $sub_menu['name'] ?? '', 'read', $sub_menu['link'] ?? '', 'order' => $order, 'key' => $k, 'hidden_for' => $sub_menu['hidden_for'] ?? [] ]; // processing submenu array $tmp_sub_menu[$order] = $new_array; $i++; } if ( !empty($tmp_sub_menu) ) { // adding submenu into temp variable $tmp_menu[$key] = $tmp_sub_menu; } } } if ( !empty($tmp_menu) ) { $tempsubmenu = array_merge_recursive( $tempsubmenu, $tmp_menu ); } foreach ( $tempsubmenu as $m_k => $m_menu ) { $tempsubmenu[$m_k] = $this->sort_array( $tempsubmenu[$m_k] ); } } return $tempsubmenu; } /** * Applies menu settings */ public function apply_menu( $parent_file ) { global $menu, $submenu ; $tempmenu = array(); $tempsub = array(); $submenu = $this->sort_sub_menu_settings( $menu, $submenu ); if ( $this->menu && is_array( $this->menu ) ) { foreach ( $this->menu as $key => $menu_item ) { if ( empty($menu_item[0]) ) { continue; } if ( strpos( $menu_item[2], "separator" ) !== false && !$menu_item[0] ) { // Build Separator $newitem = $this->apply_separator_settings( $menu_item, $key ); if ( $newitem ) { array_push( $tempmenu, $newitem ); } } else { // Build Top Level $newitem = $this->apply_top_level_settings( $menu_item, $key ); if ( $newitem ) { array_push( $tempmenu, $newitem ); $parent_key = $newitem[2]; if ( str_contains( $newitem[5], 'adminify-custom-menu-' ) ) { $parent_key = $newitem[5]; } if ( isset( $this->submenu[$parent_key] ) ) { $subitem = $this->apply_sub_level_settings( $this->submenu[$parent_key], $parent_key ); if ( $subitem ) { $tempsub[$newitem[2]] = $this->apply_sub_level_settings( $this->submenu[$parent_key], $parent_key ); } } } } } } $submenu = $tempsub; $menu = $this->sort_array( $tempmenu ); return $parent_file; } /** * Applies top level menu item settings * @since 1.4 */ public function apply_sub_level_settings( $subitems, $parentname ) { if ( !is_array( $this->menu_settings ) ) { return $subitems; } if ( !isset( $this->menu_settings[$parentname]['submenu'] ) ) { return $subitems; } $submenu_settings = $this->menu_settings[$parentname]['submenu']; $tempsub = array(); foreach ( $subitems as $current_menu_item ) { if ( empty($current_menu_item[0]) || $current_menu_item[2] === 'wp-adminify-settings-pricing' && jltwp_adminify()->can_use_premium_code__premium_only() ) { continue; } $name = ''; $link = ''; $disabled_for = array(); $optiongroup = array(); ///NO SETTINGS if ( isset( $submenu_settings[$current_menu_item[2]] ) ) { $optiongroup = $submenu_settings[$current_menu_item[2]]; if ( isset( $optiongroup['name'] ) ) { $name = $optiongroup['name']; if ( $name != "" ) { $current_menu_item[0] = $name; } } if ( isset( $optiongroup['link'] ) ) { $link = $optiongroup['link']; if ( $link != "" ) { $current_menu_item[2] = $link; $current_menu_item['link'] = $link; } } if ( isset( $optiongroup['hidden_for'] ) ) { $disabled_for = $optiongroup['hidden_for']; if ( $this->is_hidden( $disabled_for ) ) { $current_menu_item['hidden'] = true; continue; } } } $custom_menu = ( isset( $current_menu_item['key'] ) ? $current_menu_item['key'] : '' ); if ( str_contains( $custom_menu, 'adminify-custom-submenu-' ) ) { if ( isset( $submenu_settings[$current_menu_item['key']]['hidden_for'] ) ) { $disabled_for = $submenu_settings[$current_menu_item['key']]['hidden_for']; } if ( $this->is_hidden( $disabled_for ) ) { $current_menu_item['hidden'] = true; continue; } } array_push( $tempsub, $current_menu_item ); } if ( count( $tempsub ) < 1 ) { return false; } else { return $tempsub; } } /** * Applies top level menu item settings * @since 1.4 */ public function apply_top_level_settings( $current_menu_item, $key ) { $name = ''; $link = ''; $icon = ''; $disabled_for = array(); $optiongroup = array(); $order = $key; if ( is_array( $this->menu_settings ) ) { if ( isset( $this->menu_settings[$current_menu_item[2]] ) ) { $optiongroup = $this->menu_settings[$current_menu_item[2]]; if ( isset( $optiongroup['name'] ) ) { $name = $optiongroup['name']; if ( $name != "" ) { $current_menu_item[0] = $name; } } if ( isset( $optiongroup['link'] ) ) { $link = $optiongroup['link']; if ( $link != "" ) { $current_menu_item[2] = $link; $current_menu_item['link'] = $link; } } if ( isset( $optiongroup['icon'] ) ) { $icon = $optiongroup['icon']; if ( $icon != "" ) { $current_menu_item['icon'] = $icon; } } if ( isset( $optiongroup['order'] ) ) { $order = $optiongroup['order']; } if ( isset( $optiongroup['hidden_for'] ) ) { $disabled_for = $optiongroup['hidden_for']; if ( $this->is_hidden( $disabled_for ) ) { $current_menu_item['hidden'] = true; } } } $custom_menu = ( isset( $current_menu_item[5] ) ? $current_menu_item[5] : '' ); if ( str_contains( $custom_menu, 'adminify-custom-menu-' ) ) { if ( isset( $this->menu_settings[$current_menu_item[5]]['hidden_for'] ) ) { $disabled_for = $this->menu_settings[$current_menu_item[5]]['hidden_for']; } if ( $this->is_hidden( $disabled_for ) ) { $current_menu_item['hidden'] = true; } } } $current_menu_item['order'] = $order; if ( isset( $current_menu_item['hidden'] ) ) { if ( $current_menu_item['hidden'] == true ) { return false; } else { return $current_menu_item; } } else { return $current_menu_item; } } /** * Hidden for method * * @param [type] $disabled_for * * @return boolean */ public function is_hidden( $disabled_for ) { if ( !is_array( $disabled_for ) ) { return false; } $current_user = wp_get_current_user(); $current_name = $current_user->display_name; $current_roles = $current_user->roles; $all_roles = wp_roles()->get_names(); if ( in_array( $current_name, $disabled_for ) ) { return true; } ///MULTISITE SUPER ADMIN if ( is_super_admin() && is_multisite() ) { if ( in_array( 'Super Admin', $disabled_for ) ) { return true; } else { return false; } } ///NORMAL SUPER ADMIN if ( $current_user->ID === 1 ) { if ( in_array( 'Super Admin', $disabled_for ) ) { return true; } else { return false; } } foreach ( $current_roles as $role ) { $role_name = $all_roles[$role]; if ( in_array( $role_name, $disabled_for ) ) { return true; } } } /** * Applies separator menu item settings * @since 1.0.0 */ public function apply_separator_settings( $current_menu_item, $key ) { $name = ''; $disabled_for = array(); $optiongroup = array(); $order = $key; if ( is_array( $this->menu_settings ) ) { if ( isset( $this->menu_settings[$current_menu_item[2]] ) ) { $optiongroup = $this->menu_settings[$current_menu_item[2]]; if ( isset( $optiongroup['name'] ) ) { $name = $optiongroup['name']; if ( $name != "" ) { $current_menu_item['name'] = $name; } } if ( isset( $optiongroup['order'] ) ) { $order = $optiongroup['order']; } if ( isset( $optiongroup['hidden_for'] ) ) { $disabled_for = $optiongroup['hidden_for']; if ( $this->is_hidden( $disabled_for ) ) { $current_menu_item['hidden'] = true; } } } } $current_menu_item['order'] = $order; if ( isset( $current_menu_item['hidden'] ) ) { if ( $current_menu_item['hidden'] == true ) { return false; } else { return $current_menu_item; } } else { return $current_menu_item; } } /** * Menu Editor Menu */ public function jltwp_adminify_menu_editor_submenu() { add_submenu_page( 'wp-adminify-settings', esc_html__( 'Menu Editor by WP Adminify', 'adminify' ), esc_html__( 'Menu Editor', 'adminify' ), apply_filters( 'jltwp_adminify_capability', 'manage_options' ), 'adminify-menu-editor', // Page slug, will be displayed in URL [ $this, 'jltwp_adminify_menu_editor_contents' ] ); } public function get_saved_sub_menu() { $menu_settings = $this->menu_settings; $menu = $this->menu; $submenu = $this->submenu; if ( is_array( $menu_settings ) && !array_key_exists( 0, $menu_settings ) ) { foreach ( $menu as $menu_item ) { if ( isset( $menu_settings[$menu_item[2]] ) ) { unset( $menu_settings[$menu_item[2]] ); } } $tmp_menu = []; foreach ( $menu_settings as $key => $menu_s ) { if ( isset( $menu_s['submenu'] ) && is_array( $menu_s['submenu'] ) ) { $tmp_sub_menu = []; $i = 0; foreach ( $menu_s['submenu'] as $k => $sub_menu ) { $new_array = [ $sub_menu['name'], 'read', $sub_menu['link'], 'order' => $i ]; $tmp_sub_menu[$i] = $new_array; $i++; } if ( !empty($tmp_sub_menu) ) { $tmp_menu[$key] = $tmp_sub_menu; } } } if ( !empty($tmp_menu) ) { $submenu = $submenu + $tmp_menu; } } return $submenu; } /** * Render Menu Editor */ public function render_menu_editor() { global $wp_roles ; $users = get_users(); $this->users = $users; $this->roles = $wp_roles->roles; if ( $this->menu && is_array( $this->menu ) ) { foreach ( $this->menu as $menu_item ) { $next_menu_item = next( $this->menu ); if ( strpos( $menu_item[2], "separator" ) !== false && !$menu_item[0] ) { // Render Separator //$this->render_menu_separator($menu_item); } else { // Render Top Level menu $this->render_top_level_menu_item( $this->menu, $menu_item, $this->submenu, $next_menu_item ); } } $this->render_add_new_menu_item(); ?> menu_settings; if ( !empty($next_menu_item) && strpos( $next_menu_item[2], "separator" ) !== false ) { $separator = 1; } if ( is_array( $menu_options ) ) { if ( isset( $menu_options[$current_menu_item[2]] ) ) { $optiongroup = $menu_options[$current_menu_item[2]]; if ( isset( $optiongroup['name'] ) ) { $name = $optiongroup['name']; } if ( isset( $optiongroup['link'] ) ) { $link = $optiongroup['link']; } if ( isset( $optiongroup['icon'] ) ) { $icon = $optiongroup['icon']; } if ( isset( $optiongroup['hidden_for'] ) ) { $disabled_for = $optiongroup['hidden_for']; } if ( isset( $optiongroup['separator'] ) ) { $separator = $optiongroup['separator']; } } } $name_attr = $current_menu_item[2]; if ( str_contains( $current_menu_item[5], 'adminify-custom-menu-' ) ) { $name_attr = $current_menu_item[5]; $name = $current_menu_item[0]; $link = $current_menu_item[2]; if ( isset( $menu_options[$current_menu_item[5]]['hidden_for'] ) ) { $disabled_for = $menu_options[$current_menu_item[5]]['hidden_for']; } if ( isset( $menu_options[$current_menu_item[5]] ) ) { $optiongroup = $menu_options[$current_menu_item[5]]; } if ( isset( $menu_options[$current_menu_item[5]]['icon'] ) ) { $icon = $menu_options[$current_menu_item[5]]['icon']; } if ( isset( $current_menu_item['separator'] ) ) { $separator = $current_menu_item['separator']; } } if ( !is_array( $disabled_for ) ) { $disabled_for = array(); } /// LIST OF AVAILABLE MENU ICONS $icons = array( 'dashicons-admin-multisite' => 'dashicons dashicons-admin-multisite', 'dashicons-dashboard' => 'dashicons dashicons-dashboard', 'dashicons-admin-post' => 'dashicons dashicons-admin-post', 'dashicons-database' => 'dashicons dashicons-database', 'dashicons-admin-media' => 'dashicons dashicons-admin-media', 'dashicons-admin-page' => 'dashicons dashicons-admin-page', 'dashicons-admin-comments' => 'dashicons dashicons-admin-comments', 'dashicons-admin-appearance' => 'dashicons dashicons-admin-appearance', 'dashicons-admin-plugins' => 'dashicons dashicons-admin-plugins', 'dashicons-admin-users' => 'dashicons dashicons-admin-users', 'dashicons-admin-tools' => 'dashicons dashicons-admin-tools', 'dashicons-chart-bar' => 'dashicons dashicons-chart-bar', 'dashicons-admin-settings' => 'dashicons dashicons-admin-settings', ); $default_icons = ( isset( $current_menu_item ) ? $current_menu_item[6] : 'dashicons dashicons-external' ); ?>
menu_settings; if ( is_array( $menu_options ) ) { if ( isset( $menu_options[$current_menu_item[2]] ) ) { $optiongroup = $menu_options[$current_menu_item[2]]; if ( isset( $optiongroup['name'] ) ) { $name = $optiongroup['name']; } if ( isset( $optiongroup['hidden_for'] ) ) { $disabled_for = $optiongroup['hidden_for']; } } } if ( !is_array( $disabled_for ) ) { $disabled_for = array(); } ?> menu_settings; if ( isset( $optiongroup['submenu'] ) ) { if ( isset( $optiongroup['submenu'][$current_menu_item[2]] ) ) { $suboptiongroup = $optiongroup['submenu'][$current_menu_item[2]]; if ( isset( $suboptiongroup['name'] ) ) { $name = $suboptiongroup['name']; } if ( isset( $suboptiongroup['link'] ) ) { $link = $suboptiongroup['link']; } if ( isset( $suboptiongroup['icon'] ) ) { $icon = $suboptiongroup['icon']; } if ( isset( $suboptiongroup['hidden_for'] ) ) { $disabled_for = $suboptiongroup['hidden_for']; } } } $sub_menu_name_attr = $current_menu_item[2]; if ( isset( $current_menu_item['key'] ) ) { $sub_menu_name_attr = $current_menu_item['key']; } if ( str_contains( $sub_menu_name_attr, 'adminify-custom-submenu-' ) ) { $name = $current_menu_item[0]; $link = $current_menu_item[2]; if ( isset( $optiongroup['submenu'][$sub_menu_name_attr]['hidden_for'] ) ) { $disabled_for = $optiongroup['submenu'][$sub_menu_name_attr]['hidden_for']; } if ( isset( $optiongroup['submenu'][$sub_menu_name_attr]['icon'] ) ) { $icon = $optiongroup['submenu'][$sub_menu_name_attr]['icon']; } } if ( !is_array( $disabled_for ) ) { $disabled_for = array(); } $menu_id = preg_replace( "/[^A-Za-z0-9 ]/", '', $sub_menu_name_attr ); ?> } /** * Menu Editor Header * * @return void */ public function render_menu_editor_header() { ?>