punbb/admin/index.php
changeset 6 5e1f1e916419
child 7 98bbc533541c
equal deleted inserted replaced
5:e3d7322305bf 6:5e1f1e916419
       
     1 <?php
       
     2 /***********************************************************************
       
     3 
       
     4   Copyright (C) 2002-2008  PunBB.org
       
     5 
       
     6   This file is part of PunBB.
       
     7 
       
     8   PunBB is free software; you can redistribute it and/or modify it
       
     9   under the terms of the GNU General Public License as published
       
    10   by the Free Software Foundation; either version 2 of the License,
       
    11   or (at your option) any later version.
       
    12 
       
    13   PunBB is distributed in the hope that it will be useful, but
       
    14   WITHOUT ANY WARRANTY; without even the implied warranty of
       
    15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
    16   GNU General Public License for more details.
       
    17 
       
    18   You should have received a copy of the GNU General Public License
       
    19   along with this program; if not, write to the Free Software
       
    20   Foundation, Inc., 59 Temple Place, Suite 330, Boston,
       
    21   MA  02111-1307  USA
       
    22 
       
    23 ************************************************************************/
       
    24 
       
    25 
       
    26 // if (!defined('PUN_ROOT'))
       
    27 // 	define('PUN_ROOT', '../');
       
    28 // require PUN_ROOT.'include/common.php';
       
    29 require PUN_ROOT.'include/common_admin.php';
       
    30 
       
    31 // import globals (I really hope this isn't dangerous)
       
    32 foreach ( $GLOBALS as $key => $_ )
       
    33 {
       
    34   $$key =& $GLOBALS[$key];
       
    35 }
       
    36 
       
    37 $db_name =& $dbname;
       
    38 
       
    39 ($hook = get_hook('ain_start')) ? eval($hook) : null;
       
    40 
       
    41 if (!$pun_user['is_admmod'])
       
    42 	message($lang_common['No permission']);
       
    43 
       
    44 // Load the admin.php language file
       
    45 require PUN_ROOT.'lang/'.$pun_user['language'].'/admin.php';
       
    46 $GLOBALS['lang_admin'] = $lang_admin;
       
    47 
       
    48 // Show phpinfo() output
       
    49 if (isset($_GET['action']) && $_GET['action'] == 'phpinfo' && $pun_user['g_id'] == PUN_ADMIN)
       
    50 {
       
    51 	($hook = get_hook('ain_phpinfo_selected')) ? eval($hook) : null;
       
    52 
       
    53 	// Is phpinfo() a disabled function?
       
    54 	if (strpos(strtolower((string)@ini_get('disable_functions')), 'phpinfo') !== false)
       
    55 		message($lang_admin['phpinfo disabled']);
       
    56 
       
    57 	phpinfo();
       
    58 	exit;
       
    59 }
       
    60 
       
    61 
       
    62 // Generate check for updates text block
       
    63 if ($pun_config['o_check_for_updates'] == '1')
       
    64 	$punbb_updates = $lang_admin['Check for updates enabled'];
       
    65 else
       
    66 {
       
    67 	// Get a list of installed hotfix extensions
       
    68 	$query = array(
       
    69 		'SELECT'	=> 'e.id',
       
    70 		'FROM'		=> 'extensions AS e',
       
    71 		'WHERE'		=> 'e.id LIKE \'hotfix_%\''
       
    72 	);
       
    73 
       
    74 	($hook = get_hook('ain_qr_get_hotfixes')) ? eval($hook) : null;
       
    75 	$result = $pun_db->query_build($query) or error(__FILE__, __LINE__);
       
    76 	$num_hotfixes = $pun_db->num_rows($result);
       
    77 
       
    78 	$hotfixes = array();
       
    79 	for ($i = 0; $i < $num_hotfixes; ++$i)
       
    80 		$hotfixes[] = urlencode($pun_db->result($result, $i));
       
    81 
       
    82 	$punbb_updates = '<a href="http://punbb.org/update/?version='.urlencode($pun_config['o_cur_version']).'&amp;hotfixes='.implode(',', $hotfixes).'">'.$lang_admin['Check for updates manual'].'</a>';
       
    83 }
       
    84 
       
    85 
       
    86 // Get the server load averages (if possible)
       
    87 if (function_exists('sys_getloadavg'))
       
    88 {
       
    89 	$load_averages = sys_getloadavg();
       
    90 	array_walk($load_averages, create_function('&$v', '$v = round($v, 3);'));
       
    91 	$server_load = $load_averages[0].' '.$load_averages[1].' '.$load_averages[2];
       
    92 }
       
    93 else if (@file_exists('/proc/loadavg') && is_readable('/proc/loadavg'))
       
    94 {
       
    95 	// We use @ just in case
       
    96 	$fh = @fopen('/proc/loadavg', 'r');
       
    97 	$load_averages = @fread($fh, 64);
       
    98 	@fclose($fh);
       
    99 
       
   100 	$load_averages = @explode(' ', $load_averages);
       
   101 	$server_load = isset($load_averages[2]) ? $load_averages[0].' '.$load_averages[1].' '.$load_averages[2] : 'Not available';
       
   102 }
       
   103 else if (!in_array(PHP_OS, array('WINNT', 'WIN32')) && preg_match('/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/i', @exec('uptime'), $load_averages))
       
   104 	$server_load = $load_averages[1].' '.$load_averages[2].' '.$load_averages[3];
       
   105 else
       
   106 	$server_load = $lang_admin['Not available'];
       
   107 
       
   108 
       
   109 // Get number of current visitors
       
   110 $query = array(
       
   111 	'SELECT'	=> 'COUNT(o.user_id)',
       
   112 	'FROM'		=> 'online AS o',
       
   113 	'WHERE'		=> 'o.idle=0'
       
   114 );
       
   115 
       
   116 ($hook = get_hook('ain_qr_get_users_online')) ? eval($hook) : null;
       
   117 $result = $pun_db->query_build($query) or error(__FILE__, __LINE__);
       
   118 $num_online = $pun_db->result($result);
       
   119 
       
   120 
       
   121 // Get the database system version
       
   122 switch ($db_type)
       
   123 {
       
   124 	case 'sqlite':
       
   125 		$db_version = 'SQLite '.sqlite_libversion();
       
   126 		break;
       
   127 
       
   128 	default:
       
   129 		$result = $pun_db->query('SELECT VERSION()') or error(__FILE__, __LINE__);
       
   130 		$db_version = $pun_db->result($result);
       
   131 		break;
       
   132 }
       
   133 
       
   134 
       
   135 // Collect some additional info about MySQL
       
   136 if ($db_type == 'mysql' || $db_type == 'mysqli')
       
   137 {
       
   138 	$db_version = 'MySQL '.$db_version;
       
   139   
       
   140 	// Calculate total db size/row count
       
   141 	$result = $pun_db->query('SHOW TABLE STATUS FROM `'.$db_name.'` LIKE \''.$db_prefix.'%\'') or error(__FILE__, __LINE__);
       
   142 
       
   143 	$total_records = $total_size = 0;
       
   144 	while ($status = $pun_db->fetch_assoc($result))
       
   145 	{
       
   146 		$total_records += $status['Rows'];
       
   147 		$total_size += $status['Data_length'] + $status['Index_length'];
       
   148 	}
       
   149 
       
   150 	$total_size = $total_size / 1024;
       
   151 
       
   152 	if ($total_size > 1024)
       
   153 		$total_size = round($total_size / 1024, 2).' MB';
       
   154 	else
       
   155 		$total_size = round($total_size, 2).' KB';
       
   156 }
       
   157 
       
   158 
       
   159 // Check for the existance of various PHP opcode caches/optimizers
       
   160 if (function_exists('mmcache'))
       
   161 	$php_accelerator = '<a href="http://turck-mmcache.sourceforge.net/">Turck MMCache</a>';
       
   162 else if (isset($_PHPA))
       
   163 	$php_accelerator = '<a href="http://www.php-accelerator.co.uk/">ionCube PHP Accelerator</a>';
       
   164 else if (ini_get('apc.enabled'))
       
   165 	$php_accelerator ='<a href="http://www.php.net/apc/">Alternative PHP Cache (APC)</a>';
       
   166 else if (ini_get('zend_optimizer.optimization_level'))
       
   167 	$php_accelerator = '<a href="http://www.zend.com/products/zend_optimizer/">Zend Optimizer</a>';
       
   168 else if (ini_get('eaccelerator.enable'))
       
   169 	$php_accelerator = '<a href="http://eaccelerator.net/">eAccelerator</a>';
       
   170 else if (ini_get('xcache.cacher'))
       
   171 	$php_accelerator = '<a href="http://trac.lighttpd.net/xcache/">XCache</a>';
       
   172 else
       
   173 	$php_accelerator = 'N/A';
       
   174 
       
   175 $pun_page['item_num'] = 0;
       
   176 
       
   177 // Setup breadcrumbs
       
   178 $pun_page['crumbs'] = array(
       
   179 	array($pun_config['o_board_title'], pun_link($pun_url['index'])),
       
   180 	array($lang_admin['Forum administration'], pun_link($pun_url['admin_index'])),
       
   181 	$lang_admin['Information']
       
   182 );
       
   183 
       
   184 ($hook = get_hook('ain_pre_header_load')) ? eval($hook) : null;
       
   185 
       
   186 define('PUN_PAGE_SECTION', 'start');
       
   187 define('PUN_PAGE', 'admin-information');
       
   188 require PUN_ROOT.'header.php';
       
   189 
       
   190 ?>
       
   191 <div id="pun-main" class="main sectioned admin">
       
   192 
       
   193 <?php echo generate_admin_menu(); ?>
       
   194 
       
   195 	<div class="main-head">
       
   196 		<h1><span>{ <?php echo end($pun_page['crumbs']) ?> }</span></h1>
       
   197 	</div>
       
   198 
       
   199 	<div class="main-content frm">
       
   200 		<div class="frm-head">
       
   201 			<h2><span><?php echo $lang_admin['Information head'] ?></span></h2>
       
   202 		</div>
       
   203 		<div class="frm-info">
       
   204 			<p><?php echo $lang_admin['Welcome info'] ?></p>
       
   205 		</div>
       
   206 		<div class="datagrid">
       
   207 <?php ($hook = get_hook('ain_pre_version')) ? eval($hook) : null; ?>
       
   208 			<div class="idx-item databox db<?php echo ++$pun_page['item_num']?>">
       
   209 				<h3 class="legend"><span><?php echo $lang_admin['PunBB version'] ?></span></h3>
       
   210 				<ul class="data">
       
   211 					<li><span>PunBB <?php echo $pun_config['o_cur_version'] ?></span></li>
       
   212 					<li><span>&copy; Copyright 2002-2008 <a href="http://punbb.org/">PunBB.org</a></span></li>
       
   213 					<li><span><?php echo $punbb_updates ?></span></li>
       
   214 				</ul>
       
   215 			</div>
       
   216 <?php ($hook = get_hook('ain_pre_server_load')) ? eval($hook) : null; ?>
       
   217 			<div class="idx-item databox db<?php echo ++$pun_page['item_num']?>">
       
   218 				<h3 class="legend"><span><?php echo $lang_admin['Server load'] ?></span></h3>
       
   219 				<p class="data"><?php echo $server_load ?> (<?php echo $num_online.' '.$lang_admin['users online']?>)</p>
       
   220 			</div>
       
   221 <?php ($hook = get_hook('ain_pre_environment')) ? eval($hook) : null; if ($pun_user['g_id'] == PUN_ADMIN): ?>					<div class="idx-item databox db<?php echo ++$pun_page['item_num']?>">
       
   222 				<h3 class="legend"><span><?php echo $lang_admin['Environment'] ?></span></h3>
       
   223 				<ul class="data">
       
   224 					<li><span><?php echo $lang_admin['Operating system'] ?>: <?php echo PHP_OS ?></span></li>
       
   225 					<li><span>PHP: <?php echo PHP_VERSION ?> - <a href="<?php echo pun_link($pun_url['admin_index']) ?>&amp;action=phpinfo"><?php echo $lang_admin['Show info'] ?></a></span></li>
       
   226 					<li><span><?php echo $lang_admin['Accelerator'] ?>: <?php echo $php_accelerator ?></span></li>
       
   227 				</ul>
       
   228 			</div>
       
   229 <?php ($hook = get_hook('ain_pre_database')) ? eval($hook) : null; ?>
       
   230 			<div class="idx-item databox db<?php echo ++$pun_page['item_num']?>">
       
   231 				<h3 class="legend"><span><?php echo $lang_admin['Database'] ?></span></h3>
       
   232 				<ul class="data">
       
   233 					<li><span><?php echo $db_version ?></span></li>
       
   234 <?php if (isset($total_records) && isset($total_size)): ?>						<li><span><?php echo $lang_admin['Rows'] ?>: <?php echo $total_records ?></span></li>
       
   235 					<li><span><?php echo $lang_admin['Size'] ?>: <?php echo $total_size ?></span></li>
       
   236 				</ul>
       
   237 			</div>
       
   238 <?php endif; endif; ($hook = get_hook('ain_items_end')) ? eval($hook) : null; ?>			</div>
       
   239 	</div>
       
   240 
       
   241 </div>
       
   242 <?php
       
   243 
       
   244 require PUN_ROOT.'footer.php';