diff -r 5e1f1e916419 -r 98bbc533541c punbb/include/common_admin.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/punbb/include/common_admin.php Sun Apr 06 00:28:50 2008 -0400 @@ -0,0 +1,203 @@ +auth_level < USER_LEVEL_ADMIN ) +{ + redirect(makeUrlComplete('Special', 'Login/' . $paths->fullpage, 'level=' . $session->user_level, false), 'Permission denied', 'Re-auth needed.', 0); +} + +// +// Display the admin navigation menu +// +function generate_admin_menu() +{ + global $pun_config, $pun_url, $pun_user, $lang_admin, $db_type; + global $db, $session, $paths, $template, $plugins; // Common objects + + $adnav_sublinks = array(); + + if ($session->user_level < USER_LEVEL_ADMIN) + { + $adnav_sublinks[] = '' : ' class="li-first">').''.$lang_admin['Information'].''; + $adnav_sublinks[] = ''.$lang_admin['User search'].''; + $adnav_sublinks[] = '' : '>').''.$lang_admin['Censoring'].''; + $adnav_sublinks[] = '' : '>').''.$lang_admin['Reports'].''; + + if ($pun_user['g_mod_ban_users'] == '1') + $adnav_sublinks[] = '' : '>').''.$lang_admin['Bans'].''; + } + else + { + if (PUN_PAGE_SECTION == 'start') + { + $adnav_sublinks[] = ''.$lang_admin['Information'].''; + $adnav_sublinks[] = ''.$lang_admin['Categories'].''; + $adnav_sublinks[] = ''.$lang_admin['Forums'].''; + } + else if (PUN_PAGE_SECTION == 'users') + { + $adnav_sublinks[] = ''.$lang_admin['Searches'].''; + $adnav_sublinks[] = ''.$lang_admin['Groups'].''; + $adnav_sublinks[] = ''.$lang_admin['Ranks'].''; + $adnav_sublinks[] = ''.$lang_admin['Bans'].''; + } + else if (PUN_PAGE_SECTION == 'options') + { + $adnav_sublinks[] = ''.$lang_admin['Setup'].''; + $adnav_sublinks[] = ''.$lang_admin['Features'].''; + $adnav_sublinks[] = ''.$lang_admin['E-mail'].''; + $adnav_sublinks[] = ''.$lang_admin['Registration'].''; + $adnav_sublinks[] = ''.$lang_admin['Censoring'].''; + } + else if (PUN_PAGE_SECTION == 'management') + { + $adnav_sublinks[] = ''.$lang_admin['Reports'].''; + $adnav_sublinks[] = ''.$lang_admin['Prune topics'].''; + + if ($db_type != 'mysql' && $db_type != 'mysqli') + $adnav_sublinks[] = ''.$lang_admin['Rebuild index'].''; + + $adnav_sublinks[] = ''.$lang_admin['Maintenance mode'].''; + } + else if (PUN_PAGE_SECTION == 'extensions') + { + $adnav_sublinks[] = ''.$lang_admin['Manage extensions'].''; + $adnav_sublinks[] = ''.$lang_admin['Install extensions'].''; + } + } + + ($hook = get_hook('ca_admin_menu_new_sublink')) ? eval($hook) : null; + + if (count($adnav_sublinks) > 1) + $adnav_submenu = "\n\t\t\t\t".'
    '."\n\t\t\t\t\t".implode("\n\t\t\t\t\t", $adnav_sublinks)."\n\t\t\t\t".'
'; + else + $adnav_submenu = ''; + + if ($session->user_level < USER_LEVEL_ADMIN) + $adnav_links[] = '
  • '.$lang_admin['Moderate'].''.$adnav_submenu."\n\t\t\t".'
  • '; + else + { + $adnav_links[] = ''.$lang_admin['Start'].''.(((PUN_PAGE_SECTION == 'start') && ($adnav_submenu != '')) ? $adnav_submenu."\n\t\t\t" : '').''; + $adnav_links[] = ''.$lang_admin['Settings'].''.(((PUN_PAGE_SECTION == 'options') && ($adnav_submenu != '')) ? $adnav_submenu."\n\t\t\t" : '').''; + $adnav_links[] = ''.$lang_admin['Users'].''.(((PUN_PAGE_SECTION == 'users') && ($adnav_submenu != '')) ? $adnav_submenu."\n\t\t\t" : '').''; + $adnav_links[] = ''.$lang_admin['Management'].''.(((PUN_PAGE_SECTION == 'management') && ($adnav_submenu != '')) ? $adnav_submenu."\n\t\t\t" : '').''; + $adnav_links[] = ''.$lang_admin['Extensions'].''.(((PUN_PAGE_SECTION == 'extensions') && ($adnav_submenu != '')) ? $adnav_submenu."\n\t\t\t" : '').''; + } + +?> + + 't.id', + 'FROM' => 'topics AS t', + 'WHERE' => 't.forum_id='.$forum_id + ); + + if ($prune_date != -1) + $query['WHERE'] .= ' AND last_post<'.$prune_date; + if (!$prune_sticky) + $query['WHERE'] .= ' AND sticky=\'0\''; + + ($hook = get_hook('ca_qr_get_topics_to_prune')) ? eval($hook) : null; + $result = $pun_db->query_build($query, true) or error(__FILE__, __LINE__); + + $topic_ids = ''; + while ($row = $pun_db->fetch_row($result)) + $topic_ids .= (($topic_ids != '') ? ',' : '').$row[0]; + + if ($topic_ids != '') + { + // Fetch posts to prune (used lated for updating the search index) + $query = array( + 'SELECT' => 'p.id', + 'FROM' => 'posts AS p', + 'WHERE' => 'p.topic_id IN('.$topic_ids.')' + ); + + ($hook = get_hook('ca_qr_get_posts_to_prune')) ? eval($hook) : null; + $result = $pun_db->query_build($query, true) or error(__FILE__, __LINE__); + + $post_ids = ''; + while ($row = $pun_db->fetch_row($result)) + $post_ids .= (($post_ids != '') ? ',' : '').$row[0]; + + // Delete topics + $query = array( + 'DELETE' => 'topics', + 'WHERE' => 'id IN('.$topic_ids.')' + ); + + ($hook = get_hook('ca_qr_prune_topics')) ? eval($hook) : null; + $pun_db->query_build($query) or error(__FILE__, __LINE__); + + // Delete posts + $query = array( + 'DELETE' => 'posts', + 'WHERE' => 'topic_id IN('.$topic_ids.')' + ); + + ($hook = get_hook('ca_qr_prune_posts')) ? eval($hook) : null; + $pun_db->query_build($query) or error(__FILE__, __LINE__); + + // Delete subscriptions + $query = array( + 'DELETE' => 'subscriptions', + 'WHERE' => 'topic_id IN('.$topic_ids.')' + ); + + ($hook = get_hook('ca_qr_prune_subscriptions')) ? eval($hook) : null; + $pun_db->query_build($query) or error(__FILE__, __LINE__); + + // We removed a bunch of posts, so now we have to update the search index + if ($db_type != 'mysql' && $db_type != 'mysqli') + { + require_once PUN_ROOT.'include/search_idx.php'; + strip_search_index($post_ids); + } + } +} + +($hook = get_hook('ca_new_function')) ? eval($hook) : null;