public static function AttachCustomWritePanelMenuItems()
{
global $submenu, $menu, $wp_version;
global $mf_domain, $wpdb;
require_once 'RCCWP_Options.php';
$assignToRole = RCCWP_Options::Get('assign-to-role');
$requiredPostsCap = 'edit_posts';
$requiredPagesCap = 'edit_pages';
$customWritePanels = RCCWP_CustomWritePanel::GetCustomWritePanels();
$new_indicator_text = __('New', $mf_domain);
$edit_indicator_text = __('Manage', $mf_domain);
$new_menu = array();
ksort($menu);
foreach ($menu as $k => $v) {
if ($k > 5) {
break;
}
$new_menu[$k] = $v;
}
$base = 5;
$offset = 0;
$add_post = false;
// fix for WP 3.0
if (substr($wp_version, 0, 3) < 3.0) {
// WP <= 2.9
$page_new = "page-new.php?";
$page_edit = "page.php?";
$page_manage = "edit-pages.php?";
} else {
// WP > 3.0
$page_new = "post-new.php?post_type=page&";
$page_edit = "post.php?";
$page_manage = "edit.php?post_type=page&";
}
// end fix
foreach ($customWritePanels as $panel) {
if ($panel->name != '_Global') {
// traversal: fix to ignore the global group
//exists a single write panel? and if exists this write panel have posts?
if ($panel->single == 1) {
$table_name = $wpdb->prefix . "postmeta";
$sql = $wpdb->prepare("SELECT post_id FROM {$table_name} where meta_key = %s and meta_value = %d ", array("_mf_write_panel_id", $panel->id));
$has_posts = $wpdb->get_var($sql);
if (empty($has_posts)) {
$add_post = true;
} else {
$add_post = false;
}
}
$offset++;
if ($panel->type == "post") {
$type_write_panel = "edit-posts";
} else {
$type_write_panel = "edit-pages";
}
if ($assignToRole == 1) {
$requiredPostsCap = $panel->capability_name;
$requiredPagesCap = $panel->capability_name;
}
require_once 'RCCWP_Options.php';
$condence = RCCWP_Options::Get('condense-menu');
//IF we has unactivated the condenced menu
if (!$condence) {
//adding the top parent menus
$new_menu[$base + $offset] = array(__($panel->name), $type_write_panel, $base + $offset . '.php', '', 'mf-menu-' . sanitize_title_with_dashes($panel->name) . ' menu-top mf-menu-' . $type_write_panel, 'mf-menu-' . $panel->id, 'div');
//adding submenu options (add new and manage for each write panel)
if ($panel->type == "post") {
if ($panel->single == 1) {
//if the post is single
if ($add_post) {
//if the post is single and don't have any related post
add_submenu_page($base + $offset . '.php', __($panel->name), $new_indicator_text, $requiredPostsCap, 'post-new.php?custom-write-panel-id=' . $panel->id);
} else {
//if have one related post we just can edit the post
add_submenu_page($base + $offset . '.php', __($panel->name), "Edit", $requiredPostsCap, 'post.php?action=edit&post=' . $has_posts);
}
} else {
add_submenu_page($base + $offset . '.php', __($panel->name), $edit_indicator_text, $requiredPostsCap, 'edit.php?filter-posts=1&custom-write-panel-id=' . $panel->id);
add_submenu_page($base + $offset . '.php', __($panel->name), $new_indicator_text, $requiredPostsCap, 'post-new.php?custom-write-panel-id=' . $panel->id);
}
} else {
if ($panel->single == 1) {
//if the page is single
if ($add_post) {
//if the page is single and don't have any related post
add_submenu_page($base + $offset . '.php', __($panel->name), $new_indicator_text, $requiredPagesCap, $page_new . 'custom-write-panel-id=' . $panel->id);
} else {
add_submenu_page($base + $offset . '.php', __($panel->name), "Edit", $requiredPagesCap, $page_edit . 'action=edit&post=' . $has_posts);
}
} else {
add_submenu_page($base + $offset . '.php', __($panel->name), $edit_indicator_text, $requiredPagesCap, $page_manage . 'filter-posts=1&custom-write-panel-id=' . $panel->id);
add_submenu_page($base + $offset . '.php', __($panel->name), $new_indicator_text, $requiredPagesCap, $page_new . 'custom-write-panel-id=' . $panel->id);
}
}
} else {
//if condenced is activated
if ($panel->type == "post") {
if ($panel->single == 1) {
//if the post is single
if ($add_post) {
//if the post is single and don't have any related post
add_submenu_page('post-new.php', __($panel->name), __($panel->name), $requiredPostsCap, 'post-new.php?custom-write-panel-id=' . $panel->id);
}
} else {
add_submenu_page('post-new.php', __($panel->name), __($panel->name), $requiredPostsCap, 'post-new.php?custom-write-panel-id=' . $panel->id);
}
} else {
if ($panel->single == 1) {
//if the page is single
if ($add_post) {
//if the page is single and don't have any related post
add_submenu_page('page-new.php', __($panel->name), __($panel->name), $requiredPagesCap, $page_new . 'custom-write-panel-id=' . $panel->id);
} else {
add_submenu_page('page-new.php', __($panel->name), __($panel->name) . " (Edit)", $requiredPagesCap, $page_edit . 'action=edit&post=' . $has_posts);
}
} else {
add_submenu_page('page-new.php', __($panel->name), __($panel->name), $requiredPagesCap, $page_new . 'custom-write-panel-id=' . $panel->id);
}
}
}
}
// traversal: endif '$panel->name == '_Global'
}
foreach ($menu as $k => $v) {
if ($k > 5) {
$new_menu[$k + $offset] = $v;
}
}
global $_wp_last_utility_menu;
$_wp_last_utility_menu += $offset;
$menu = $new_menu;
RCCWP_Menu::SetCurrentCustomWritePanelMenuItem();
}