PageRenderTime 56ms CodeModel.GetById 26ms RepoModel.GetById 1ms app.codeStats 0ms

/core/modcp/index.php

https://gitlab.com/hub/vbulletin
PHP | 395 lines | 361 code | 12 blank | 22 comment | 8 complexity | 5d57c13fb3e7c9bd9b689f4d8b676bb6 MD5 | raw file
Possible License(s): Apache-2.0, Unlicense
  1. <?php
  2. /*======================================================================*\
  3. || #################################################################### ||
  4. || # vBulletin 5.0.0
  5. || # ---------------------------------------------------------------- # ||
  6. || # Copyright ©2000-2013 vBulletin Solutions Inc. All Rights Reserved. ||
  7. || # This file may not be redistributed in whole or significant part. # ||
  8. || # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||
  9. || # http://www.vbulletin.com | http://www.vbulletin.com/license.html # ||
  10. || #################################################################### ||
  11. \*======================================================================*/
  12. // ######################## SET PHP ENVIRONMENT ###########################
  13. error_reporting(E_ALL & ~E_NOTICE);
  14. // ##################### DEFINE IMPORTANT CONSTANTS #######################
  15. define('CVS_REVISION', '$RCSfile$ - $Revision: 70525 $');
  16. // #################### PRE-CACHE TEMPLATES AND DATA ######################
  17. global $phrasegroups, $specialtemplates, $vbulletin, $vbphrase;
  18. $phrasegroups = array('cphome','cpuser');
  19. $specialtemplates = array();
  20. global $DEVDEBUG, $cpnavjs;
  21. // ########################## REQUIRE BACK-END ############################
  22. require_once(dirname(__FILE__) . '/global.php');
  23. // ############################# LOG ACTION ###############################
  24. if (empty($_REQUEST['do']))
  25. {
  26. log_admin_action();
  27. }
  28. // ########################################################################
  29. // ######################### START MAIN SCRIPT ############################
  30. // ########################################################################
  31. $vbulletin->input->clean_array_gpc('r', array('redirect' => vB_Cleaner::TYPE_NOHTML)); # Not sure where this comes from
  32. if (!empty($vbulletin->GPC['redirect']))
  33. {
  34. $redirect = vB_String::parseUrl($vbulletin->GPC['redirect']);
  35. $pathinfo = pathinfo($redirect['path']);
  36. $file = $pathinfo['filename'];
  37. parse_str($redirect['query'], $args);
  38. print_stop_message2('redirecting_please_wait',$file, $args);
  39. }
  40. // #############################################################################
  41. // ############################### LOG OUT OF CP ###############################
  42. // #############################################################################
  43. if ($_REQUEST['do'] == 'cplogout')
  44. {
  45. vbsetcookie('cpsession', '', false, true, true);
  46. $vbulletin->db->query_write("DELETE FROM " . TABLE_PREFIX . "cpsession WHERE userid = " . $vbulletin->userinfo['userid'] . " AND hash = '" . $vbulletin->db->escape_string($vbulletin->GPC[COOKIE_PREFIX . 'cpsession']) . "'");
  47. $sessionurl_js = vB::getCurrentSession()->get('sessionurl_js');
  48. if (!empty($sessionurl_js))
  49. {
  50. exec_header_redirect('index.php?' . $sessionurl_js);
  51. }
  52. else
  53. {
  54. exec_header_redirect('index.php');
  55. }
  56. }
  57. if (empty($_REQUEST['do']))
  58. {
  59. $_REQUEST['do'] = 'frames';
  60. }
  61. // ####################################################################
  62. if ($_REQUEST['do'] == 'frames')
  63. {
  64. $vbulletin->input->clean_array_gpc('r', array(
  65. 'loc' => vB_Cleaner::TYPE_NOHTML
  66. ));
  67. $navframe = '<frame src="index.php?' . vB::getCurrentSession()->get('sessionurl') . "do=nav" . iif($cpnavjs, '&amp;cpnavjs=1') . "\" name=\"nav\" scrolling=\"yes\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" border=\"no\" />\n";
  68. $headframe = '<frame src="index.php?' . vB::getCurrentSession()->get('sessionurl') . "do=head\" name=\"head\" scrolling=\"no\" noresize=\"noresize\" frameborder=\"0\" marginwidth=\"10\" marginheight=\"0\" border=\"no\" />\n";
  69. $mainframe = '<frame src="' . iif(!empty($vbulletin->GPC['loc']) AND !preg_match('#^[a-z]+:#i', $vbulletin->GPC['loc']), create_full_url($vbulletin->GPC['loc']), 'index.php?' . vB::getCurrentSession()->get('sessionurl') . 'do=home') . "\" name=\"main\" scrolling=\"yes\" frameborder=\"0\" marginwidth=\"10\" marginheight=\"10\" border=\"no\" />\n";
  70. ?>
  71. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
  72. <html xmlns="http://www.w3.org/1999/xhtml" dir="<?php echo vB_Template_Runtime::fetchStyleVar('textdirection'); ?>" lang="<?php echo vB_Template_Runtime::fetchStyleVar('languagecode'); ?>">
  73. <head>
  74. <script type="text/javascript">
  75. <!-- // get out of any containing frameset
  76. if (self.parent.frames.length != 0)
  77. {
  78. document.write('<span style="font: bold 10pt verdana,sans-serif">Get me out of this frame set!</span>');
  79. self.parent.location.replace(document.location.href);
  80. }
  81. // -->
  82. </script>
  83. <title><?php echo $vbulletin->options['bbtitle']; ?> <?php echo $vbphrase['moderator_control_panel']; ?></title>
  84. </head>
  85. <?php
  86. if (vB_Template_Runtime::fetchStyleVar('textdirection') == 'ltr')
  87. {
  88. // left-to-right frameset
  89. ?>
  90. <frameset cols="195,*" framespacing="0" border="0" frameborder="0" frameborder="no" border="0">
  91. <?php echo $navframe; ?>
  92. <frameset rows="20,*" framespacing="0" border="0" frameborder="0" frameborder="no" border="0">
  93. <?php echo $headframe; ?>
  94. <?php echo $mainframe; ?>
  95. </frameset>
  96. </frameset>
  97. <?php
  98. }
  99. else
  100. {
  101. // right-to-left frameset
  102. ?>
  103. <frameset cols="*,195" framespacing="0" border="0" frameborder="0" frameborder="no" border="0">
  104. <frameset rows="20,*" framespacing="0" border="0" frameborder="0" frameborder="no" border="0">
  105. <?php echo $headframe; ?>
  106. <?php echo $mainframe; ?>
  107. </frameset>
  108. <?php echo $navframe; ?>
  109. </frameset>
  110. <?php
  111. }
  112. ?>
  113. <noframes>
  114. <body>
  115. <p><?php echo $vbphrase['no_frames_support']; ?></p>
  116. </body>
  117. </noframes>
  118. </html>
  119. <?php
  120. }
  121. // ####################################################################
  122. if ($_REQUEST['do'] == 'head')
  123. {
  124. define('IS_NAV_PANEL', true);
  125. print_cp_header();
  126. $forumhomelink = fetch_seo_url('forumhome|bburl', array());
  127. ?>
  128. <table border="0" width="100%" height="100%">
  129. <tr valign="middle">
  130. <td><b><?php echo $vbphrase['moderator_control_panel']; ?></b> (vBulletin <?php echo $vbulletin->versionnumber; ?>)</td>
  131. <td style="white-space:nowrap; text-align:<?php echo vB_Template_Runtime::fetchStyleVar('right'); ?>; font-weight:bold">
  132. <a href="<?php echo $forumhomelink; ?>" target="_blank"><?php echo $vbphrase['forum_home_page']; ?></a>
  133. |
  134. <a href="index.php?<?php echo vB::getCurrentSession()->get('sessionurl'); ?>do=cplogout" onclick="return confirm('<?php echo $vbphrase['sure_you_want_to_log_out_of_cp']; ?>');" target="_top"><?php echo $vbphrase['log_out']; ?></a>
  135. </td>
  136. </tr>
  137. </table>
  138. <?php
  139. print_cp_footer();
  140. }
  141. // ####################################################################
  142. if ($_REQUEST['do'] == 'home')
  143. {
  144. print_cp_header($vbphrase['welcome_to_the_vbulletin_moderator_control_panel']);
  145. print_form_header('', '');
  146. print_table_header($vbphrase['welcome_to_the_vbulletin_moderator_control_panel']);
  147. print_table_footer();
  148. // *************************************
  149. // QUICK ADMIN LINKS
  150. //$reminders = fetch_reminders_array();
  151. print_table_start();
  152. print_table_header($vbphrase['quick_moderator_links']);
  153. $datecut = TIMENOW - $vbulletin->options['cookietimeout'];
  154. $guestsarry = $vbulletin->db->query_first("SELECT COUNT(host) AS sessions FROM " . TABLE_PREFIX . "session WHERE userid = 0 AND lastactivity > $datecut");
  155. $membersarry = $vbulletin->db->query_read("SELECT DISTINCT userid FROM " . TABLE_PREFIX . "session WHERE userid <> 0 AND lastactivity > $datecut");
  156. $guests = intval($guestsarry['sessions']);
  157. $members = intval($vbulletin->db->num_rows($membersarry));
  158. $is_windows = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN');
  159. $loadavg = array();
  160. if (!$is_windows AND function_exists('exec') AND $stats = @exec('uptime 2>&1') AND trim($stats) != '' AND preg_match('#: ([\d.,]+),?\s+([\d.,]+),?\s+([\d.,]+)$#', $stats, $regs))
  161. {
  162. $loadavg[0] = vb_number_format($regs[1], 2);
  163. $loadavg[1] = vb_number_format($regs[2], 2);
  164. $loadavg[2] = vb_number_format($regs[3], 2);
  165. }
  166. else if (!$is_windows AND @file_exists('/proc/loadavg') AND $stats = @file_get_contents('/proc/loadavg') AND trim($stats) != '')
  167. {
  168. $loadavg = explode(' ', $stats);
  169. $loadavg[0] = vb_number_format($loadavg[0], 2);
  170. $loadavg[1] = vb_number_format($loadavg[1], 2);
  171. $loadavg[2] = vb_number_format($loadavg[2], 2);
  172. }
  173. if (!empty($loadavg))
  174. {
  175. print_label_row($vbphrase['server_load_averages'], "$loadavg[0]&nbsp;&nbsp;$loadavg[1]&nbsp;&nbsp;$loadavg[2] | " . construct_phrase($vbphrase['users_online_x_members_y_guests'], vb_number_format($guests + $members), vb_number_format($members), vb_number_format($guests)), '', 'top', NULL, false);
  176. }
  177. else
  178. {
  179. print_label_row($vbphrase['users_online'], construct_phrase($vbphrase['x_y_members_z_guests'], vb_number_format($guests + $members), vb_number_format($members), vb_number_format($guests)), '', 'top', NULL, false);
  180. }
  181. // Legacy Hook 'mod_index_main' Removed //
  182. print_label_row($vbphrase['quick_user_finder'], '
  183. <form action="user.php?do=findnames" method="post" style="display:inline">
  184. <input type="hidden" name="s" value="' . vB::getCurrentSession()->get('sessionhash') . '" />
  185. <input type="hidden" name="do" value="findnames" />
  186. <input type="text" class="bginput" name="findname" size="30" tabindex="1" />
  187. <input type="submit" class="button" value=" ' . $vbphrase['find'] . ' " tabindex="1" />
  188. <input type="submit" class="button" value="' . $vbphrase['exact_match'] . '" tabindex="1" name="exact" />
  189. </form>
  190. ', '', 'top', NULL, false
  191. );
  192. print_label_row($vbphrase['php_function_lookup'], '
  193. <form action="http://www.ph' . 'p.net/manual-lookup.ph' . 'p" method="get" style="display:inline">
  194. <input type="text" class="bginput" name="function" size="30" tabindex="1" />
  195. <input type="submit" value=" ' . $vbphrase['find'] . ' " class="button" tabindex="1" />
  196. </form>
  197. ', '', 'top', NULL, false
  198. );
  199. print_label_row($vbphrase['mysql_language_lookup'], '
  200. <form action="http://www.mysql.com/search/" method="get" style="display:inline">
  201. <input type="hidden" name="doc" value="1" />
  202. <input type="hidden" name="m" value="o" />
  203. <input type="text" class="bginput" name="q" size="30" tabindex="1" />
  204. <input type="submit" value=" ' . $vbphrase['find'] . ' " class="button" tabindex="1" />
  205. </form>
  206. ', '', 'top', NULL, false
  207. );
  208. print_label_row($vbphrase['useful_links'], '
  209. <form style="display:inline">
  210. <select onchange="if (this.options[this.selectedIndex].value != \'\') { window.open(this.options[this.selectedIndex].value); } return false;" tabindex="1" class="bginput">
  211. <option value="">-- ' . $vbphrase['useful_links'] . ' --</option>' . construct_select_options(array(
  212. 'PHP' => array(
  213. 'http://www.ph' . 'p.net/' => $vbphrase['home_page'] . ' (PHP.net)',
  214. 'http://www.ph' . 'p.net/manual/' => $vbphrase['reference_manual'],
  215. 'http://www.ph' . 'p.net/downloads.ph' . 'p' => $vbphrase['download_latest_version']
  216. ),
  217. 'MySQL' => array(
  218. 'http://www.mysql.com/' => $vbphrase['home_page'] . ' (MySQL.com)',
  219. 'http://www.mysql.com/documentation/' => $vbphrase['reference_manual'],
  220. 'http://www.mysql.com/downloads/' => $vbphrase['download_latest_version'],
  221. )
  222. )) . '</select>
  223. </form>
  224. ', '', 'top', NULL, false
  225. );
  226. print_table_footer(2, '', '', false);
  227. // *************************************
  228. // vBULLETIN CREDITS
  229. require_once(DIR . '/includes/vbulletin_credits.php');
  230. print_cp_footer();
  231. }
  232. // ####################################################################
  233. if ($_REQUEST['do'] == 'nav')
  234. {
  235. require_once(DIR . '/includes/adminfunctions_navpanel.php');
  236. print_cp_header();
  237. ?>
  238. <div>
  239. <img src="../cpstyles/<?php echo $vbulletin->options['cpstylefolder']; ?>/cp_logo.<?php echo $vbulletin->options['cpstyleimageext']; ?>" alt="" border="0" hspace="4" vspace="4" />
  240. <?php
  241. echo "</div>\n\n<div style=\"width:168px; padding: 4px\">\n";
  242. construct_nav_spacer();
  243. // *************************************************
  244. /*
  245. if (can_moderate(0, 'canannounce'))
  246. {
  247. construct_nav_option($vbphrase['post_new_announcement_gcphome'], 'announcement.php?do=add');
  248. construct_nav_option($vbphrase['forum_manager_gcphome'], 'forum.php?do=modify');
  249. construct_nav_group($vbphrase['announcements']);
  250. construct_nav_spacer();
  251. }
  252. */
  253. // *************************************************
  254. $canmoderate = false;
  255. /*
  256. if (can_moderate(0, 'canmoderateposts'))
  257. {
  258. $canmoderate = true;
  259. construct_nav_option($vbphrase['moderate_threads_gcphome'], 'moderate.php?do=posts');
  260. construct_nav_option($vbphrase['moderate_posts_gcphome'], 'moderate.php?do=posts#posts');
  261. }
  262. */
  263. /*
  264. if (can_moderate(0, 'canmoderateattachments'))
  265. {
  266. $canmoderate = true;
  267. construct_nav_option($vbphrase['moderate_attachments_gcphome'], 'moderate.php?do=attachments');
  268. }
  269. */
  270. /*
  271. if (can_moderate_calendar())
  272. {
  273. $canmoderate = true;
  274. construct_nav_option($vbphrase['moderate_events_gcphome'], 'moderate.php?do=events');
  275. }
  276. if (can_moderate(0, 'canmoderatevisitormessages'))
  277. {
  278. $canmoderate = true;
  279. construct_nav_option($vbphrase['moderate_visitor_messages'], 'moderate.php?do=messages');
  280. }
  281. */
  282. if ($canmoderate)
  283. {
  284. construct_nav_group($vbphrase['moderation']);
  285. construct_nav_spacer();
  286. }
  287. // *************************************************
  288. $canuser = false;
  289. if (can_moderate(0, 'canunbanusers') OR can_moderate(0, 'canbanusers') OR can_moderate(0, 'canviewprofile') OR can_moderate(0, 'caneditsigs') OR can_moderate(0, 'caneditavatar'))
  290. {
  291. $canuser = true;
  292. construct_nav_option($vbphrase['search_for_users'],'user.php?do=find');
  293. }
  294. if (can_moderate(0, 'canbanusers'))
  295. {
  296. $canuser = true;
  297. construct_nav_option($vbphrase['ban_user_gcphome'], 'banning.php?do=banuser');
  298. }
  299. if (can_moderate(0, 'canunbanusers') OR can_moderate(0, 'canbanusers'))
  300. {
  301. $canuser = true;
  302. construct_nav_option($vbphrase['view_banned_users'], 'banning.php?do=modify');
  303. }
  304. if (can_moderate(0, 'canviewips'))
  305. {
  306. $canuser = true;
  307. construct_nav_option($vbphrase['search_ip_addresses_gcphome'], 'user.php?do=doips');
  308. }
  309. if ($canuser)
  310. {
  311. construct_nav_group($vbphrase['users']);
  312. construct_nav_spacer();
  313. }
  314. // *************************************************
  315. if ($groupleader = $vbulletin->db->query_first("SELECT userid FROM " . TABLE_PREFIX . "usergroupleader WHERE userid = " . $vbulletin->userinfo['userid']) OR ($permissions['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel']))
  316. {
  317. construct_nav_option($vbphrase['join_requests'], 'user.php?do=viewjoinrequests');
  318. construct_nav_group($vbphrase['usergroups']);
  319. construct_nav_spacer();
  320. }
  321. // *************************************************
  322. /*
  323. $canmass = false;
  324. if (can_moderate(0, 'canmassmove'))
  325. {
  326. $canmass = true;
  327. construct_nav_option($vbphrase['move'], 'thread.php?do=move');
  328. }
  329. if (can_moderate(0, 'canmassprune'))
  330. {
  331. $canmass = true;
  332. construct_nav_option($vbphrase['prune'], 'thread.php?do=prune');
  333. }
  334. if ($canmass)
  335. {
  336. construct_nav_group($vbphrase['thread']);
  337. construct_nav_spacer();
  338. }
  339. */
  340. // Legacy Hook 'mod_index_navigation' Removed //
  341. print_nav_panel();
  342. echo "</div>\n";
  343. // *************************************************
  344. define('NO_CP_COPYRIGHT', true);
  345. unset($DEVDEBUG);
  346. print_cp_footer();
  347. }
  348. /*======================================================================*\
  349. || ####################################################################
  350. || # CVS: $RCSfile$ - $Revision: 70525 $
  351. || ####################################################################
  352. \*======================================================================*/