menu_settings = (new MenuEditorOptions())->get();
$this->options = (array) AdminSettings::get_instance()->get();
add_filter('admin_body_class', array($this, 'admin_menu_body_class'));
if (empty($this->options['admin_ui'])) {
return;
}
add_filter('parent_file', array($this, 'render_adminify_admin_menu'), 9999);
add_action('adminmenu', array($this, 'render_output_adminify_admin_menu'));
}
// Body Class
public function admin_menu_body_class($classes)
{
$this->options = (array) AdminSettings::get_instance()->get('menu_layout_settings');
$menu_layout = !empty($this->options['layout_type']) ? sanitize_text_field($this->options['layout_type']) : 'vertical';
$menu_mode = !empty($this->options['menu_mode']) ? sanitize_text_field($this->options['menu_mode']) : 'classic';
$bodyclass = '';
if ($menu_layout == 'vertical' && $menu_mode === 'icon_menu') {
$classes .= ' folded ';
}
$classes .= ' adminify_admin_menu ';
return $classes . $bodyclass;
}
/**
* Render Admin Menu
*
* @package WP Adminify
* @return void
*/
public function render_adminify_admin_menu($parent_file)
{
global $menu, $pagenow, $wp_adminify_menu;
$current_user = wp_get_current_user();
$this->original_menu = $menu;
$this->options = (array) AdminSettings::get_instance()->get();
// Disable Default Menu
$menu = array();
ob_start();
?>
original_submenu = $submenu;
$menu_options = $this->menu_settings;
foreach ($the_menu as $menu_item) {
$menu_name = $menu_item[0];
$menu_link = $menu_item[2];
$divider = false;
$disabled_for = array();
if (is_array($menu_options)) {
if (isset($menu_options[$menu_item[2]])) {
$optiongroup = $menu_options[$menu_item[2]];
if (!empty($optiongroup['hidden_for'])) {
$disabled_for = $this->jltwp_adminify_menu_roles($optiongroup['hidden_for']);
if (Utils::restricted_for($disabled_for)) {
continue;
}
}
}
}
$custom_menu = isset($menu_item[5]) ? $menu_item[5] : '';
if (strpos($custom_menu, 'adminify-custom-menu-') !== false) {
if (isset($menu_options[$menu_item[5]]['hidden_for'])) {
$hidden_for = $menu_options[$menu_item[5]]['hidden_for'];
if (!empty($hidden_for)) {
$disabled_for = $this->jltwp_adminify_menu_roles($hidden_for);
if (Utils::restricted_for($disabled_for)) {
continue;
}
}
}
}
if (strpos($menu_link, 'separator') !== false) {
$divider = true;
// $this->render_divider($menu_item);
continue;
}
if (!$menu_name) {
continue;
}
if (isset($submenu[$menu_link])) {
$sub_menu_items = $submenu[$menu_link];
} else {
$sub_menu_items = false;
}
$link = $this->get_menu_link($menu_item);
if ('edit.php?post_type=elementor_library' === $link) {
$link .= '&tabs_group=library';
}
$classes = $this->get_menu_clases($menu_item, $submenu);
?>
render_divider($menu_item);
}
}
}
/**
* Gets correct classes for top level menu item
*
* @since 1.4
*/
public function get_menu_clases($menu_item, $sub_menu)
{
$menu_link = $menu_item[2];
$classes = $menu_item[4];
if (isset($sub_menu[$menu_link])) {
$classes = $classes . ' wp-has-submenu wp-adminify-parent ';
$classes = $classes . ' ' . $this->check_if_active($menu_item, $sub_menu[$menu_link]);
} else {
$classes = $classes . ' ' . $this->check_if_single_active($menu_item);
}
return $classes;
}
/**
* Checks if we are on an active link or sub link
*
* @since 1.4
*/
public function check_if_active($menu_item, $sub_menu)
{
if (!is_array($sub_menu)) {
return '';
}
global $pagenow;
if (isset($_SERVER['QUERY_STRING'])) {
$currentquery = sanitize_text_field(wp_unslash($_SERVER['QUERY_STRING']));
}
if ($currentquery) {
$currentquery = '?' . $currentquery;
}
$wholestring = $pagenow . $currentquery;
$visibility = 'hidden';
$open = 'wp-not-current-submenu';
$files = $this->files;
foreach ($sub_menu as $sub) {
if ($sub[2] === 'edit-tags.php?taxonomy=elementor_library_category&post_type=elementor_library') {
$link = 'edit-tags.php?taxonomy=elementor_library_category&post_type=elementor_library';
} elseif ($sub[2] === 'edit.php?post_type=elementor_library') {
$link = 'edit.php?post_type=elementor_library';
} elseif (($sub[2] === 'e-landing-page') || ($sub[2] === 'popup_templates')) {
$link = 'edit.php?post_type=elementor_library&page=' . esc_attr($sub[2]);
} elseif ($sub[2] === 'updraftplus') {
$link = 'options-general.php?page=' . esc_attr($sub[2]);
} elseif (strpos($sub[2], '.php') !== false) {
$link = $sub[2];
$querypieces = explode('?', $link);
$temp = $querypieces[0];
if (!in_array($temp, $files)) {
$link = 'admin.php?page=' . esc_attr($sub[2]);
}
} else {
$link = 'admin.php?page=' . esc_attr($sub[2]);
}
$linkclass = '';
if (($wholestring == $link) || ((strpos($wholestring, 'edit.php?post_type=elementor_library') !== false) && (strpos($link, 'edit.php?post_type=elementor_library') !== false))) {
$linkclass = 'wp-has-current-submenu wp-menu-open';
$open = 'wp-adminify-active wp-adminify-open wp-menu-open wp-has-current-submenu';
$visibility = '';
break;
}
}
return $open;
}
/**
* Render Divider
*
* @package WP Adminify
* @return void
*/
public function render_divider($divider)
{
if (isset($divider['name'])) {
?>
files;
if ($sub_menu_item[2] === 'edit-tags.php?taxonomy=elementor_library_category&post_type=elementor_library') {
$link = 'edit-tags.php?taxonomy=elementor_library_category&post_type=elementor_library';
} elseif ($sub_menu_item[2] === 'popup_templates') {
$link = 'edit.php?post_type=elementor_library&page=' . esc_attr($sub_menu_item[2]);
} elseif ($sub_menu_item[2] === 'updraftplus') {
$link = 'options-general.php?page=' . esc_attr($sub_menu_item[2]);
} elseif (strpos($sub_menu_item[2], '.php') !== false) {
$link = $sub_menu_item[2];
$querypieces = explode('?', $link);
$temp = $querypieces[0];
if (!in_array($temp, $files)) {
$link = 'admin.php?page=' . esc_attr($sub_menu_item[2]);
}
} else {
$link = 'admin.php?page=' . esc_attr($sub_menu_item[2]);
}
$linkclass = '';
if ($wholestring == $link) {
$linkclass = 'wp-adminify-active current';
}
return $linkclass;
}
/**
* Scans admin directory for menu links
*
* @since 1.4
*/
public function get_admin_files()
{
$absolutepath = ABSPATH . '/wp-admin' . '/';
$files = array_diff(scandir($absolutepath), array('.', '..'));
if (is_multisite()) {
$pathtonetwork = ABSPATH . '/wp-admin' . '/network/';
$networkfiles = array_diff(scandir($pathtonetwork), array('.', '..'));
$files = array_merge($files, $networkfiles);
}
return $files;
}
/**
* Gets correct link for menu item
*
* @since 1.4
*/
public function get_menu_link($menu_item)
{
$menu_link = $menu_item[2];
$files = $this->get_admin_files();
$this->files = $files;
if ($menu_link == 'woocommerce') {
$menu_link = 'wc-admin';
}
if (($menu_link === 'e-landing-page') || ($menu_link === 'popup_templates')) {
$link = 'edit.php?post_type=elementor_library&page=' . esc_attr($menu_link);
} elseif ($menu_link === 'updraftplus') {
$link = 'options-general.php?page=' . esc_attr($menu_link);
} elseif (strpos($menu_link, 'admin.php') !== false) {
$link = $menu_link;
} elseif (strpos($menu_link, '.php') !== false) {
$link = $menu_link;
if (strpos($menu_link, '/') !== false) {
$pieces = explode('/', $menu_link);
if (strpos($pieces[0], '.php') !== true || !file_exists(get_admin_url() . esc_attr($menu_link))) {
$link = 'admin.php?page=' . esc_attr($menu_link);
}
}
$querypieces = explode('?', $link);
$temp = $querypieces[0];
if (!in_array($temp, $files)) {
$link = 'admin.php?page=' . esc_attr($menu_link);
}
} else {
$link = 'admin.php?page=' . esc_attr($menu_link);
}
if (strpos($menu_link, '/wp-content/') !== false) {
$link = 'admin.php?page=' . esc_attr($menu_link);
}
// CHECK IF INTERNAL URL
if (strpos($menu_link, get_site_url()) !== false) {
$link = $menu_link;
}
// CHECK IF EXTERNAL LINK
if (strpos($menu_link, 'https://') !== false || strpos($menu_link, 'http://') !== false) {
$link = $menu_link;
}
return $link;
}
/**
* Gets top level menu item icon
*
* @since 1.4
*/
public function get_icon($menu_item)
{
// LIST OF AVAILABLE MENU ICONS
$icons = array(
'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',
);
// SET MENU ICON
$theicon = '';
// $wpicon = $menu_item;
$wpicon = (isset($menu_item)) ? $menu_item[6] : '';
if (isset($menu_item['icon']) && !empty($menu_item['icon'])) {
if (preg_match('/http(s?)\:\/\//i', $menu_item['icon'])) {
$icon = explode(',', $menu_item['icon']);
?>
style="background-image: url();" >
original_menu;
$submenu = $this->original_submenu;
}
}