options = (array) AdminSettings::get_instance()->get();
add_filter('parent_file', [$this, 'render_adminify_admin_menu'], 999);
add_action('adminmenu', [$this, 'render_output_adminify_admin_menu']);
add_filter('admin_body_class', [$this, 'admin_menu_body_class']);
}
// Body Class
public function admin_menu_body_class($classes)
{
$classes .= ' adminify_admin_menu ';
return $classes;
}
/**
* 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;
foreach ($the_menu as $menu_item) {
$menu_name = $menu_item[0];
$menu_link = $menu_item[2];
$divider = false;
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);
$classes = $this->get_menu_clases($menu_item, $submenu);
?>
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;
$currentquery = $_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 (strpos($sub[2], '.php') !== false) {
$link = $sub[2];
$querypieces = explode("?", $link);
$temp = $querypieces[0];
if (!in_array($temp, $files)) {
$link = 'admin.php?page=' . $sub[2];
}
} else {
$link = 'admin.php?page=' . $sub[2];
}
$linkclass = '';
if ($wholestring == $link) {
$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 (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=' . $sub_menu_item[2];
}
} else {
$link = 'admin.php?page=' . $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 (strpos($menu_link, 'admin.php') !== false) {
$link = $menu_link;
} else if (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() . $menu_link)) {
$link = 'admin.php?page=' . $menu_link;
}
}
$querypieces = explode("?", $link);
$temp = $querypieces[0];
if (!in_array($temp, $files)) {
$link = 'admin.php?page=' . $menu_link;
}
} else {
$link = 'admin.php?page=' . $menu_link;
}
if (strpos($menu_link, "/wp-content/") !== false) {
$link = 'admin.php?page=' . $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'])) {
if ($menu_item['icon'] != "") {
?>
original_menu;
$submenu = $this->original_submenu;
}
}