Compare commits
2 Commits
olympus_mi
...
start
Author | SHA1 | Date | |
---|---|---|---|
|
21828cf760 | ||
|
ad80880502 |
@@ -1,620 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* admin_ban.php
|
||||
* -------------------
|
||||
* begin : Tuesday, Jul 31, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if (!empty($setmodules))
|
||||
{
|
||||
if (!$auth->acl_get('a_ban'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$filename = basename(__FILE__);
|
||||
$module['USER']['BAN_USERS'] = $filename . "$SID&mode=user";
|
||||
$module['USER']['BAN_EMAILS'] = $filename . "$SID&mode=email";
|
||||
$module['USER']['BAN_IPS'] = $filename . "$SID&mode=ip";
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
// Load default header
|
||||
$phpbb_root_path = '../';
|
||||
require($phpbb_root_path . 'extension.inc');
|
||||
require('pagestart.' . $phpEx);
|
||||
|
||||
// Do we have ban permissions?
|
||||
if (!$auth->acl_get('a_ban'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
|
||||
// Mode setting
|
||||
$mode = (isset($_REQUEST['mode'])) ? $_REQUEST['mode'] : '';
|
||||
|
||||
|
||||
$current_time = time();
|
||||
|
||||
|
||||
// Start program
|
||||
if (isset($_REQUEST['bansubmit']))
|
||||
{
|
||||
// Grab the list of entries
|
||||
$ban = (!empty($_REQUEST['ban'])) ? $_REQUEST['ban'] : '';
|
||||
$ban_list = array_unique(explode("\n", $ban));
|
||||
$ban_list_log = implode(', ', $ban_list);
|
||||
|
||||
|
||||
$ban_exclude = (!empty($_POST['banexclude'])) ? 1 : 0;
|
||||
$ban_reason = (isset($_POST['banreason'])) ? $_POST['banreason'] : '';
|
||||
|
||||
|
||||
if (!empty($_POST['banlength']))
|
||||
{
|
||||
if ($_POST['banlength'] != -1 || empty($_POST['banlengthother']))
|
||||
{
|
||||
$ban_end = max($current_time, $current_time + (intval($_POST['banlength']) * 60));
|
||||
}
|
||||
else
|
||||
{
|
||||
$ban_other = explode('-', $_POST['banlengthother']);
|
||||
$ban_end = max($current_time, gmmktime(0, 0, 0, $ban_other[1], $ban_other[2], $ban_other[0]));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$ban_end = 0;
|
||||
}
|
||||
|
||||
|
||||
$banlist = array();
|
||||
|
||||
switch ($mode)
|
||||
{
|
||||
case 'user':
|
||||
$type = 'ban_userid';
|
||||
|
||||
if (in_array('*', $ban_list))
|
||||
{
|
||||
$banlist[] = '*';
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = 'SELECT user_id
|
||||
FROM ' . USERS_TABLE . '
|
||||
WHERE username IN (' . implode(', ', array_diff(preg_replace('#^[\s]*(.*?)[\s]*$#', "'\\1'", $ban_list), array("''"))) . ')';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
$banlist[] = $row['user_id'];
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'ip':
|
||||
$type = 'ban_ip';
|
||||
|
||||
foreach ($ban_list as $ban_item)
|
||||
{
|
||||
if (preg_match('#^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})[ ]*\-[ ]*([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$#', trim($ban_item), $ip_range_explode))
|
||||
{
|
||||
// Don't ask about all this, just don't ask ... !
|
||||
$ip_1_counter = $ip_range_explode[1];
|
||||
$ip_1_end = $ip_range_explode[5];
|
||||
|
||||
while ($ip_1_counter <= $ip_1_end)
|
||||
{
|
||||
$ip_2_counter = ($ip_1_counter == $ip_range_explode[1]) ? $ip_range_explode[2] : 0;
|
||||
$ip_2_end = ($ip_1_counter < $ip_1_end) ? 254 : $ip_range_explode[6];
|
||||
|
||||
if($ip_2_counter == 0 && $ip_2_end == 254)
|
||||
{
|
||||
$ip_2_counter = 256;
|
||||
$ip_2_fragment = 256;
|
||||
|
||||
$banlist[] = "'$ip_1_counter.*'";
|
||||
}
|
||||
|
||||
while ($ip_2_counter <= $ip_2_end)
|
||||
{
|
||||
$ip_3_counter = ($ip_2_counter == $ip_range_explode[2] && $ip_1_counter == $ip_range_explode[1]) ? $ip_range_explode[3] : 0;
|
||||
$ip_3_end = ($ip_2_counter < $ip_2_end || $ip_1_counter < $ip_1_end) ? 254 : $ip_range_explode[7];
|
||||
|
||||
if ($ip_3_counter == 0 && $ip_3_end == 254)
|
||||
{
|
||||
$ip_3_counter = 256;
|
||||
$ip_3_fragment = 256;
|
||||
|
||||
$banlist[] = "'$ip_1_counter.$ip_2_counter.*'";
|
||||
}
|
||||
|
||||
while ($ip_3_counter <= $ip_3_end)
|
||||
{
|
||||
$ip_4_counter = ($ip_3_counter == $ip_range_explode[3] && $ip_2_counter == $ip_range_explode[2] && $ip_1_counter == $ip_range_explode[1]) ? $ip_range_explode[4] : 0;
|
||||
$ip_4_end = ($ip_3_counter < $ip_3_end || $ip_2_counter < $ip_2_end) ? 254 : $ip_range_explode[8];
|
||||
|
||||
if ($ip_4_counter == 0 && $ip_4_end == 254)
|
||||
{
|
||||
$ip_4_counter = 256;
|
||||
$ip_4_fragment = 256;
|
||||
|
||||
$banlist[] = "'$ip_1_counter.$ip_2_counter.$ip_3_counter.*'";
|
||||
}
|
||||
|
||||
while ($ip_4_counter <= $ip_4_end)
|
||||
{
|
||||
$banlist[] = "'$ip_1_counter.$ip_2_counter.$ip_3_counter.$ip_4_counter'";
|
||||
$ip_4_counter++;
|
||||
}
|
||||
$ip_3_counter++;
|
||||
}
|
||||
$ip_2_counter++;
|
||||
}
|
||||
$ip_1_counter++;
|
||||
}
|
||||
}
|
||||
else if (preg_match('#^([\w\-_]\.?){2,}$#is', trim($ban_item)))
|
||||
{
|
||||
$ip_ary = gethostbynamel(trim($ban_item));
|
||||
|
||||
foreach ($ip_ary as $ip)
|
||||
{
|
||||
if (!empty($ip))
|
||||
{
|
||||
$banlist[] = "'" . $ip . "'";
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (preg_match('#^([0-9]{1,3})\.([0-9\*]{1,3})\.([0-9\*]{1,3})\.([0-9\*]{1,3})$#', trim($ban_item)) || preg_match('#^[a-f0-9:]+\*?$#i', trim($ban_item)))
|
||||
{
|
||||
$banlist[] = "'" . trim($ban_item) . "'";
|
||||
}
|
||||
else if (preg_match('#^\*$#', trim($ban_item)))
|
||||
{
|
||||
$banlist[] = "'*'";
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'email':
|
||||
$type = 'ban_email';
|
||||
|
||||
foreach ($ban_list as $ban_item)
|
||||
{
|
||||
if (preg_match('#^.*?@*|(([a-z0-9\-]+\.)+([a-z]{2,3}))$#i', trim($ban_item)))
|
||||
{
|
||||
$banlist[] = "'" . trim($ban_item) . "'";
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
$sql = "SELECT $type
|
||||
FROM " . BANLIST_TABLE . "
|
||||
WHERE $type <> ''
|
||||
AND ban_exclude = $ban_exclude";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$banlist_tmp = array();
|
||||
do
|
||||
{
|
||||
switch ($mode)
|
||||
{
|
||||
case 'user':
|
||||
$banlist_tmp[] = $row['ban_userid'];
|
||||
break;
|
||||
|
||||
case 'ip':
|
||||
$banlist_tmp[] = "'" . $row['ban_ip'] . "'";
|
||||
break;
|
||||
|
||||
case 'email':
|
||||
$banlist_tmp[] = "'" . $row['ban_email'] . "'";
|
||||
break;
|
||||
}
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
|
||||
$banlist = array_unique(array_diff($banlist, $banlist_tmp));
|
||||
unset($banlist_tmp);
|
||||
}
|
||||
|
||||
if (sizeof($banlist))
|
||||
{
|
||||
$sql = '';
|
||||
foreach ($banlist as $ban_entry)
|
||||
{
|
||||
switch (SQL_LAYER)
|
||||
{
|
||||
case 'mysql':
|
||||
case 'mysql4':
|
||||
$sql .= (($sql != '') ? ', ' : '') . "($ban_entry, $current_time, $ban_end, $ban_exclude, '$ban_reason')";
|
||||
break;
|
||||
|
||||
case 'mssql':
|
||||
case 'sqlite':
|
||||
$sql .= (($sql != '') ? ' UNION ALL ' : '') . " SELECT $ban_entry, $current_time, $ban_end, $ban_exclude, '$ban_reason'";
|
||||
break;
|
||||
|
||||
default:
|
||||
$sql = 'INSERT INTO ' . BANLIST_TABLE . " ($type, ban_start, ban_end, ban_exclude, ban_reason)
|
||||
VALUES ($ban_entryx, $current_time, $ban_end, $ban_exclude, '$ban_reason')";
|
||||
$db->sql_query($sql);
|
||||
$sql = '';
|
||||
}
|
||||
}
|
||||
|
||||
if ($sql != '')
|
||||
{
|
||||
$sql = 'INSERT INTO ' . BANLIST_TABLE . " ($type, ban_start, ban_end, ban_exclude, ban_reason)
|
||||
VALUES $sql";
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
if (!$ban_exclude)
|
||||
{
|
||||
$sql = '';
|
||||
switch ($mode)
|
||||
{
|
||||
case 'user':
|
||||
$sql = "WHERE session_user_id IN (" . implode(', ', $banlist) . ")";
|
||||
break;
|
||||
|
||||
case 'ip':
|
||||
$sql = "WHERE session_ip IN (" . implode(', ', $banlist) . ")";
|
||||
break;
|
||||
|
||||
case 'email':
|
||||
$sql = "SELECT user_id
|
||||
FROM " . USERS_TABLE . "
|
||||
WHERE user_email IN (" . implode(', ', $banlist) . ")";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$sql = '';
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
$sql .= (($sql != '') ? ', ' : '') . $row['user_id'];
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
|
||||
$sql = "WHERE session_user_id IN (" . str_replace('*', '%', $sql) . ")";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if ($sql != '')
|
||||
{
|
||||
$sql = "DELETE FROM " . SESSIONS_TABLE . "
|
||||
$sql";
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
}
|
||||
|
||||
// Update log
|
||||
$log_entry = ($ban_exclude) ? 'LOG_BAN_EXCLUDE_' : 'LOG_BAN_';
|
||||
add_log('admin', $log_entry . strtoupper($mode), $ban_reason, $ban_list_log);
|
||||
}
|
||||
|
||||
trigger_error($user->lang['BAN_UPDATE_SUCESSFUL']);
|
||||
|
||||
}
|
||||
else if (isset($_POST['unbansubmit']))
|
||||
{
|
||||
$unban_sql = implode(', ', array_map('intval', $_POST['unban']));
|
||||
|
||||
if ($unban_sql != '')
|
||||
{
|
||||
$l_unban_list = '';
|
||||
// Grab details of bans for logging information later
|
||||
switch ($mode)
|
||||
{
|
||||
case 'user':
|
||||
$sql = "SELECT u.username AS unban_info
|
||||
FROM " . USERS_TABLE . " u, " . BANLIST_TABLE . " b
|
||||
WHERE b.ban_id IN ($unban_sql)
|
||||
AND u.user_id = b.ban_userid";
|
||||
break;
|
||||
|
||||
case 'email':
|
||||
$sql = "SELECT ban_email AS unban_info
|
||||
FROM " . BANLIST_TABLE . "
|
||||
WHERE ban_id IN ($unban_sql)";
|
||||
break;
|
||||
|
||||
case 'ip':
|
||||
$sql = "SELECT ban_ip AS unban_info
|
||||
FROM " . BANLIST_TABLE . "
|
||||
WHERE ban_id IN ($unban_sql)";
|
||||
break;
|
||||
}
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$l_unban_list .= (($l_unban_list != '') ? ', ' : '') . $row['unban_info'];
|
||||
}
|
||||
|
||||
$sql = "DELETE FROM " . BANLIST_TABLE . "
|
||||
WHERE ban_id IN ($unban_sql)";
|
||||
$db->sql_query($sql);
|
||||
|
||||
add_log('admin', 'LOG_UNBAN_' . strtoupper($mode), $l_unban_list);
|
||||
}
|
||||
|
||||
trigger_error($user->lang['BAN_UPDATE_SUCESSFUL']);
|
||||
}
|
||||
|
||||
//
|
||||
// Output relevant entry page
|
||||
//
|
||||
|
||||
//
|
||||
// Remove timed out bans
|
||||
//
|
||||
$sql = "DELETE FROM " . BANLIST_TABLE . "
|
||||
WHERE ban_end < " . time() . "
|
||||
AND ban_end <> 0";
|
||||
$db->sql_query($sql);
|
||||
|
||||
//
|
||||
// Ban length options
|
||||
//
|
||||
$ban_end_text = array(0 => $user->lang['PERMANENT'], 30 => $user->lang['30_MINS'], 60 => $user->lang['1_HOUR'], 360 => $user->lang['6_HOURS'], 1440 => $user->lang['1_DAY'], 10080 => $user->lang['7_DAYS'], 20160 => $user->lang['2_WEEKS'], 40320 => $user->lang['1_MONTH'], -1 => $user->lang['OTHER'] . ' -> ');
|
||||
|
||||
$ban_end_options = '';
|
||||
foreach ($ban_end_text as $length => $text)
|
||||
{
|
||||
$ban_end_options .= '<option value="' . $length . '">' . $text . '</option>';
|
||||
}
|
||||
|
||||
// Title
|
||||
switch ($mode)
|
||||
{
|
||||
case 'user':
|
||||
$l_title = $user->lang['BAN_USERS'];
|
||||
break;
|
||||
case 'email':
|
||||
$l_title = $user->lang['BAN_EMAILS'];
|
||||
break;
|
||||
case 'ip':
|
||||
$l_title = $user->lang['BAN_IPS'];
|
||||
break;
|
||||
}
|
||||
|
||||
// Output page
|
||||
adm_page_header($l_title);
|
||||
|
||||
?>
|
||||
|
||||
<p><?php echo $user->lang['BAN_EXPLAIN']; ?></p>
|
||||
|
||||
<?php
|
||||
|
||||
switch ($mode)
|
||||
{
|
||||
case 'user':
|
||||
|
||||
$field = 'username';
|
||||
$l_ban_title = $user->lang['BAN_USERS'];
|
||||
$l_ban_explain = $user->lang['BAN_USERNAME_EXPLAIN'];
|
||||
$l_ban_exclude_explain = $user->lang['BAN_USER_EXCLUDE_EXPLAIN'];
|
||||
$l_unban_title = $user->lang['UNBAN_USERNAME'];
|
||||
$l_unban_explain = $user->lang['UNBAN_USERNAME_EXPLAIN'];
|
||||
$l_ban_cell = $user->lang['USERNAME'];
|
||||
$l_no_ban_cell = $user->lang['NO_BANNED_USERS'];
|
||||
$s_submit_extra = '<input type="submit" name="usersubmit" value="' . $user->lang['LOOK_UP_USER'] . '" class="btnlite" onclick="window.open(\'../memberlist.' . $phpEx . $SID . '&mode=searchuser&field=ban\', \'_phpbbsearch\', \'HEIGHT=500,resizable=yes,scrollbars=yes,WIDTH=740\');return false;" />';
|
||||
|
||||
$sql = "SELECT b.*, u.user_id, u.username
|
||||
FROM " . BANLIST_TABLE . " b, " . USERS_TABLE . " u
|
||||
WHERE (b.ban_end >= " . time() . "
|
||||
OR b.ban_end = 0)
|
||||
AND u.user_id = b.ban_userid
|
||||
AND b.ban_userid <> 0
|
||||
AND u.user_id <> " . ANONYMOUS . "
|
||||
ORDER BY u.user_id ASC";
|
||||
break;
|
||||
|
||||
case 'ip':
|
||||
|
||||
$field = 'ban_ip';
|
||||
$l_ban_title = $user->lang['BAN_IPS'];
|
||||
$l_ban_explain = $user->lang['BAN_IP_EXPLAIN'];
|
||||
$l_ban_exclude_explain = $user->lang['BAN_IP_EXCLUDE_EXPLAIN'];
|
||||
$l_unban_title = $user->lang['UNBAN_IP'];
|
||||
$l_unban_explain = $user->lang['UNBAN_IP_EXPLAIN'];
|
||||
$l_ban_cell = $user->lang['IP_HOSTNAME'];
|
||||
$l_no_ban_cell = $user->lang['NO_BANNED_IP'];
|
||||
$s_submit_extra = '';
|
||||
|
||||
$sql = "SELECT *
|
||||
FROM " . BANLIST_TABLE . "
|
||||
WHERE (ban_end >= " . time() . "
|
||||
OR ban_end = 0)
|
||||
AND ban_ip <> ''";
|
||||
break;
|
||||
|
||||
case 'email':
|
||||
|
||||
$field = 'ban_email';
|
||||
$l_ban_title = $user->lang['BAN_EMAILS'];
|
||||
$l_ban_explain = $user->lang['BAN_EMAIL_EXPLAIN'];
|
||||
$l_ban_exclude_explain = $user->lang['BAN_EMAIL_EXCLUDE_EXPLAIN'];
|
||||
$l_unban_title = $user->lang['UNBAN_EMAIL'];
|
||||
$l_unban_explain = $user->lang['UNBAN_EMAIL_EXPLAIN'];
|
||||
$l_ban_cell = $user->lang['EMAIL_ADDRESS'];
|
||||
$l_no_ban_cell = $user->lang['NO_BANNED_EMAIL'];
|
||||
$s_submit_extra = '';
|
||||
|
||||
$sql = "SELECT *
|
||||
FROM " . BANLIST_TABLE . "
|
||||
WHERE (ban_end >= " . time() . "
|
||||
OR ban_end = 0)
|
||||
AND ban_email <> ''";
|
||||
break;
|
||||
}
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$banned_options = '';
|
||||
$ban_length = $ban_reasons = array();
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
|
||||
$banned_options .= '<option' . (($row['ban_exclude']) ? ' class="sep"' : '') . ' value="' . $row['ban_id'] . '">' . $row[$field] . '</option>';
|
||||
|
||||
$time_length = (!empty($row['ban_end'])) ? ($row['ban_end'] - $row['ban_start']) / 60 : 0;
|
||||
$ban_length[$row['ban_id']] = (!empty($ban_end_text[$time_length])) ? $ban_end_text[$time_length] : $user->lang['OTHER'] . ' -> ' . gmdate('Y-m-d', $row['ban_end']);
|
||||
|
||||
$ban_reasons[$row['ban_id']] = addslashes($row['ban_reason']);
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $l_ban_title; ?></h1>
|
||||
|
||||
<p><?php echo $l_ban_explain; ?></p>
|
||||
|
||||
<script language="Javascript" type="text/javascript">
|
||||
<!--
|
||||
|
||||
var ban_length = new Array();
|
||||
<?php
|
||||
|
||||
if (sizeof($ban_length))
|
||||
{
|
||||
foreach ($ban_length as $ban_id => $length)
|
||||
{
|
||||
echo "ban_length['$ban_id'] = \"$length\";\n";
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
var ban_reason = new Array();
|
||||
<?php
|
||||
|
||||
if (sizeof($ban_reasons))
|
||||
{
|
||||
foreach ($ban_reasons as $ban_id => $reason)
|
||||
{
|
||||
echo "ban_reason['$ban_id'] = \"$reason\";\n";
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
function display_details(option)
|
||||
{
|
||||
document.forms[0].unbanreason.value = ban_reason[option];
|
||||
document.forms[0].unbanlength.value = ban_length[option];
|
||||
}
|
||||
|
||||
//-->
|
||||
</script>
|
||||
|
||||
<form method="post" action="<?php echo "admin_ban.$phpEx$SID&mode=$mode"; ?>"><table class="bg" width="80%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $l_ban_title; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row2" width="45%"><?php echo $l_ban_cell; ?>: </td>
|
||||
<td class="row1"><textarea cols="40" rows="3" name="ban"></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row2" width="45%"><?php echo $user->lang['BAN_LENGTH']; ?>:</td>
|
||||
<td class="row1"><select name="banlength"><?php echo $ban_end_options; ?></select> <input class="post" type="text" name="banlengthother" maxlength="10" size="10" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row2" width="45%"><?php echo $user->lang['BAN_EXCLUDE']; ?>: <br /><span class="gensmall"><?php echo $l_ban_exclude_explain;;?></span></td>
|
||||
<td class="row1"><input type="radio" name="banexclude" value="1" /> <?php echo $user->lang['YES']; ?> <input type="radio" name="banexclude" value="0" checked="checked" /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row2" width="45%"><?php echo $user->lang['BAN_REASON']; ?>:</td>
|
||||
<td class="row1"><input class="post" type="text" name="banreason" maxlength="255" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"> <input type="submit" name="bansubmit" value="<?php echo $user->lang['SUBMIT']; ?>" class="btnmain" /> <input type="reset" value="<?php echo $user->lang['RESET']; ?>" class="btnlite" /> <?php echo $s_submit_extra; ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h1><?php echo $l_unban_title; ?></h1>
|
||||
|
||||
<p><?php echo $l_unban_explain; ?></p>
|
||||
|
||||
<table class="bg" width="80%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $l_unban_title; ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
if ($banned_options != '')
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row2" width="45%"><?php echo $l_ban_cell; ?>: <br /></td>
|
||||
<td class="row1"> <select name="unban[]" multiple="multiple" size="5" onchange="display_details(this.options[this.selectedIndex].value)"><?php echo $banned_options; ?></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row2" width="45%"><?php echo $user->lang['BAN_REASON']; ?>:</td>
|
||||
<td class="row1"><input class="row1" style="border:0px" type="text" name="unbanreason" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row2" width="45%"><?php echo $user->lang['BAN_LENGTH']; ?>:</td>
|
||||
<td class="row1"><input class="row1" style="border:0px" type="text" name="unbanlength" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><input type="submit" name="unbansubmit" value="<?php echo $user->lang['SUBMIT']; ?>" class="btnmain" /> <input type="reset" value="<?php echo $user->lang['RESET']; ?>" class="btnlite" /></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1" colspan="2" align="center"><?php echo $l_no_ban_cell; ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
?>
|
@@ -1,770 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* admin_board.php
|
||||
* -------------------
|
||||
* begin : Thursday, Jul 12, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if (!empty($setmodules))
|
||||
{
|
||||
$filename = basename(__FILE__);
|
||||
$module['GENERAL']['COOKIE_SETTINGS'] = ($auth->acl_get('a_cookies')) ? "$filename$SID&mode=cookie" : '';
|
||||
$module['GENERAL']['BOARD_DEFAULTS'] = ($auth->acl_get('a_defaults')) ? "$filename$SID&mode=default" : '';
|
||||
$module['GENERAL']['BOARD_SETTINGS'] = ($auth->acl_get('a_board')) ? "$filename$SID&mode=setting" : '';
|
||||
$module['GENERAL']['AVATAR_SETTINGS'] = ($auth->acl_get('a_board')) ? "$filename$SID&mode=avatar" : '';
|
||||
$module['GENERAL']['EMAIL_SETTINGS'] = ($auth->acl_get('a_server')) ? "$filename$SID&mode=email" : '';
|
||||
$module['GENERAL']['SERVER_SETTINGS'] = ($auth->acl_get('a_server')) ? "$filename$SID&mode=server" : '';
|
||||
$module['GENERAL']['AUTH_SETTINGS'] = ($auth->acl_get('a_server')) ? "$filename$SID&mode=auth" : '';
|
||||
$module['GENERAL']['LOAD_SETTINGS'] = ($auth->acl_get('a_server')) ? "$filename$SID&mode=load" : '';
|
||||
$module['USER']['KARMA_SETTINGS'] = ($auth->acl_get('a_users')) ? "$filename$SID&mode=karma" : '';
|
||||
return;
|
||||
}
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
// Load default header
|
||||
$phpbb_root_path = '../';
|
||||
require($phpbb_root_path . 'extension.inc');
|
||||
require('pagestart.' . $phpEx);
|
||||
|
||||
// Get mode
|
||||
$mode = (isset($_REQUEST['mode'])) ? htmlspecialchars($_REQUEST['mode']) : '';
|
||||
$submit = (isset($_POST['submit'])) ? true : false;
|
||||
|
||||
// Check permissions/set title
|
||||
switch ($mode)
|
||||
{
|
||||
case 'cookie':
|
||||
$l_title = 'COOKIE_SETTINGS';
|
||||
$which_auth = 'a_cookies';
|
||||
break;
|
||||
case 'default':
|
||||
$l_title = 'BOARD_DEFAULTS';
|
||||
$which_auth = 'a_defaults';
|
||||
break;
|
||||
case 'avatar':
|
||||
$l_title = 'AVATAR_SETTINGS';
|
||||
$which_auth = 'a_board';
|
||||
break;
|
||||
case 'setting':
|
||||
$l_title = 'BOARD_SETTINGS';
|
||||
$which_auth = 'a_board';
|
||||
break;
|
||||
case 'email':
|
||||
$l_title = 'EMAIL_SETTINGS';
|
||||
$which_auth = 'a_server';
|
||||
break;
|
||||
case 'server':
|
||||
$l_title = 'SERVER_SETTINGS';
|
||||
$which_auth = 'a_server';
|
||||
break;
|
||||
case 'load':
|
||||
$l_title = 'LOAD_SETTINGS';
|
||||
$which_auth = 'a_server';
|
||||
break;
|
||||
case 'auth':
|
||||
$l_title = 'AUTH_SETTINGS';
|
||||
$which_auth = 'a_server';
|
||||
break;
|
||||
case 'karma':
|
||||
$l_title = 'KARMA_SETTINGS';
|
||||
$which_auth = 'a_users';
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
// Check permissions
|
||||
if (!$auth->acl_get($which_auth))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
// Pull all config data
|
||||
$sql = "SELECT *
|
||||
FROM " . CONFIG_TABLE;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$config_name = $row['config_name'];
|
||||
$config_value = $row['config_value'];
|
||||
|
||||
$default_config[$config_name] = $config_value;
|
||||
$new[$config_name] = (isset($_POST[$config_name])) ? $_POST[$config_name] : $default_config[$config_name];
|
||||
|
||||
if ($submit)
|
||||
{
|
||||
set_config($config_name, str_replace('\\\\', '\\', addslashes($new[$config_name])));
|
||||
}
|
||||
}
|
||||
|
||||
if ($submit)
|
||||
{
|
||||
add_log('admin', 'LOG_' . strtoupper($mode) . '_CONFIG');
|
||||
trigger_error($user->lang['CONFIG_UPDATED']);
|
||||
}
|
||||
|
||||
adm_page_header($user->lang[$l_title]);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang[$l_title]; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang[$l_title . '_EXPLAIN']; ?></p>
|
||||
|
||||
<form action="<?php echo "admin_board.$phpEx$SID&mode=$mode"; ?>" method="post"><table class="bg" width="95%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $user->lang[$l_title]; ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
// Output relevant page
|
||||
switch ($mode)
|
||||
{
|
||||
case 'cookie':
|
||||
|
||||
$cookie_secure_yes = ($new['cookie_secure']) ? 'checked="checked"' : '';
|
||||
$cookie_secure_no = (!$new['cookie_secure']) ? 'checked="checked"' : '';
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1" width="50%"><b><?php echo $user->lang['COOKIE_DOMAIN']; ?>: </b></td>
|
||||
<td class="row2"><input class="post" type="text" maxlength="255" name="cookie_domain" value="<?php echo $new['cookie_domain']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['COOKIE_NAME']; ?>: </b></td>
|
||||
<td class="row2"><input class="post" type="text" maxlength="16" name="cookie_name" value="<?php echo $new['cookie_name']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['COOKIE_PATH']; ?>: </b></td>
|
||||
<td class="row2"><input class="post" type="text" maxlength="255" name="cookie_path" value="<?php echo $new['cookie_path']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['COOKIE_SECURE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['COOKIE_SECURE_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="cookie_secure" value="0"<?php echo $cookie_secure_no; ?> /><?php echo $user->lang['DISABLED']; ?> <input type="radio" name="cookie_secure" value="1"<?php echo $cookie_secure_yes; ?> /><?php echo $user->lang['ENABLED']; ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
break;
|
||||
|
||||
case 'avatar':
|
||||
|
||||
$avatars_local_yes = ($new['allow_avatar_local']) ? 'checked="checked"' : '';
|
||||
$avatars_local_no = (!$new['allow_avatar_local']) ? 'checked="checked"' : '';
|
||||
$avatars_remote_yes = ($new['allow_avatar_remote']) ? 'checked="checked"' : '';
|
||||
$avatars_remote_no = (!$new['allow_avatar_remote']) ? 'checked="checked"' : '';
|
||||
$avatars_upload_yes = ($new['allow_avatar_upload']) ? 'checked="checked"' : '';
|
||||
$avatars_upload_no = (!$new['allow_avatar_upload']) ? 'checked="checked"' : '';
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1" width="50%"><b><?php echo $user->lang['ALLOW_LOCAL']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="allow_avatar_local" value="1"<?php echo $avatars_local_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="allow_avatar_local" value="0"<?php echo $avatars_local_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ALLOW_REMOTE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['ALLOW_REMOTE_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="allow_avatar_remote" value="1"<?php echo $avatars_remote_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="allow_avatar_remote" value="0"<?php echo $avatars_remote_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ALLOW_UPLOAD']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="allow_avatar_upload" value="1"<?php echo $avatars_upload_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="allow_avatar_upload" value="0"<?php echo $avatars_upload_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['MAX_FILESIZE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['MAX_FILESIZE_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="4" maxlength="10" name="avatar_filesize" value="<?php echo $new['avatar_filesize']; ?>" /> Bytes</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['MIN_AVATAR_SIZE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['MIN_AVATAR_SIZE_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="3" maxlength="4" name="avatar_min_height" value="<?php echo $new['avatar_min_height']; ?>" /> x <input class="post" type="text" size="3" maxlength="4" name="avatar_min_width" value="<?php echo $new['avatar_min_width']; ?>"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['MAX_AVATAR_SIZE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['MAX_AVATAR_SIZE_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="3" maxlength="4" name="avatar_max_height" value="<?php echo $new['avatar_max_height']; ?>" /> x <input class="post" type="text" size="3" maxlength="4" name="avatar_max_width" value="<?php echo $new['avatar_max_width']; ?>"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['AVATAR_STORAGE_PATH']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['AVATAR_STORAGE_PATH_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="20" maxlength="255" name="avatar_path" value="<?php echo $new['avatar_path']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['AVATAR_GALLERY_PATH']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['AVATAR_GALLERY_PATH_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="20" maxlength="255" name="avatar_gallery_path" value="<?php echo $new['avatar_gallery_path']; ?>" /></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
break;
|
||||
|
||||
case 'default':
|
||||
|
||||
$style_select = style_select($new['default_style'], true);
|
||||
$lang_select = language_select($new['default_lang']);
|
||||
$timezone_select = tz_select($new['board_timezone']);
|
||||
|
||||
$override_user_style_yes = ($new['override_user_style']) ? 'checked="checked"' : '';
|
||||
$override_user_style_no = (!$new['override_user_style']) ? 'checked="checked"' : '';
|
||||
|
||||
$dst_yes = ($new['board_dst']) ? 'checked="checked"' : '';
|
||||
$dst_no = (!$new['board_dst']) ? 'checked="checked"' : '';
|
||||
|
||||
$topic_notify_yes = ($new['allow_topic_notify']) ? 'checked="checked"' : '';
|
||||
$topic_notify_no = (!$new['allow_topic_notify']) ? 'checked="checked"' : '';
|
||||
|
||||
$forum_notify_yes = ($new['allow_forum_notify']) ? 'checked="checked"' : '';
|
||||
$forum_notify_no = (!$new['allow_forum_notify']) ? 'checked="checked"' : '';
|
||||
|
||||
$html_yes = ($new['allow_html']) ? 'checked="checked"' : '';
|
||||
$html_no = (!$new['allow_html']) ? 'checked="checked"' : '';
|
||||
|
||||
$bbcode_yes = ($new['allow_bbcode']) ? 'checked="checked"' : '';
|
||||
$bbcode_no = (!$new['allow_bbcode']) ? 'checked="checked"' : '';
|
||||
|
||||
$smile_yes = ($new['allow_smilies']) ? 'checked="checked"' : '';
|
||||
$smile_no = (!$new['allow_smilies']) ? 'checked="checked"' : '';
|
||||
|
||||
$sig_yes = ($new['allow_sig']) ? 'checked="checked"' : '';
|
||||
$sig_no = (!$new['allow_sig']) ? 'checked="checked"' : '';
|
||||
|
||||
$censors_yes = ($new['allow_nocensors']) ? 'checked="checked"' : '';
|
||||
$censors_no = (!$new['allow_nocensors']) ? 'checked="checked"' : '';
|
||||
|
||||
$namechange_yes = ($new['allow_namechange']) ? 'checked="checked"' : '';
|
||||
$namechange_no = (!$new['allow_namechange']) ? 'checked="checked"' : '';
|
||||
|
||||
$emailreuse_yes = ($new['allow_emailreuse']) ? 'checked="checked"' : '';
|
||||
$emailreuse_no = (!$new['allow_emailreuse']) ? 'checked="checked"' : '';
|
||||
|
||||
$attachments_yes = ($new['allow_attachments']) ? 'checked="checked"' : '';
|
||||
$attachments_no = (!$new['allow_attachments']) ? 'checked="checked"' : '';
|
||||
|
||||
// Caching screws up slashes so we fudge a solution
|
||||
$user_char_ary = array('USERNAME_CHARS_ANY' => '.*', 'USERNAME_ALPHA_ONLY' => '[/w]+', 'USERNAME_ALPHA_SPACERS' => '[/w_/+/. /-/[/]]+');
|
||||
$user_char_options = '';
|
||||
foreach ($user_char_ary as $lang => $value)
|
||||
{
|
||||
$selected = ($new['allow_name_chars'] == $value) ? ' selected="selected"' : '';
|
||||
$user_char_options .= '<option value="' . $value . '"' . $selected . '>' . $user->lang[$lang] . '</option>';
|
||||
}
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1" width="50%"><b><?php echo $user->lang['DEFAULT_STYLE']; ?></td>
|
||||
<td class="row2"><select name="default_style"><?php echo $style_select; ?></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['OVERRIDE_STYLE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['OVERRIDE_STYLE_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="override_user_style" value="1" <?php echo $override_user_style_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="override_user_style" value="0" <?php echo $override_user_style_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['DEFAULT_LANGUAGE']; ?>: </b></td>
|
||||
<td class="row2"><select name="default_lang"><?php echo $lang_select; ?></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['DATE_FORMAT']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['DATE_FORMAT_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" name="default_dateformat" value="<?php echo $new['default_dateformat']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['SYSTEM_TIMEZONE']; ?>: </b></td>
|
||||
<td class="row2"><select name="board_timezone"><?php echo $timezone_select; ?></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['SYSTEM_DST']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="board_dst" value="1" <?php echo $dst_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="board_dst" value="0" <?php echo $dst_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['CHAR_LIMIT']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['CHAR_LIMIT_EXPLAIN']; ?></span</td>
|
||||
<td class="row2"><input class="post" type="text" size="4" maxlength="6" name="max_post_chars" value="<?php echo $new['max_post_chars']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['SMILIES_LIMIT']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['SMILIES_LIMIT_EXPLAIN']; ?></span</td>
|
||||
<td class="row2"><input class="post" type="text" size="4" maxlength="4" name="max_post_smilies" value="<?php echo $new['max_post_smilies']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['QUOTE_DEPTH_LIMIT']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['QUOTE_DEPTH_LIMIT_EXPLAIN']; ?></span</td>
|
||||
<td class="row2"><input class="post" type="text" size="4" maxlength="4" name="max_quote_depth" value="<?php echo $new['max_quote_depth']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ALLOW_TOPIC_NOTIFY']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="allow_topic_notify" value="1" <?php echo $topic_notify_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="allow_topic_notify" value="0" <?php echo $topic_notify_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ALLOW_FORUM_NOTIFY']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="allow_forum_notify" value="1" <?php echo $forum_notify_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="allow_forum_notify" value="0" <?php echo $forum_notify_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ALLOW_NAME_CHANGE']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="allow_namechange" value="1" <?php echo $namechange_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="allow_namechange" value="0" <?php echo $namechange_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['USERNAME_LENGTH']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['USERNAME_LENGTH_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="3" maxlength="3" name="min_name_chars" value="<?php echo $new['min_name_chars']; ?>" /> <?php echo $user->lang['MIN_CHARS']; ?> <input class="post" type="text" size="3" maxlength="3" name="max_name_chars" value="<?php echo $new['max_name_chars']; ?>" /> <?php echo $user->lang['MAX_CHARS']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['USERNAME_CHARS']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['USERNAME_CHARS_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><select name="allow_name_chars"><?php echo $user_char_options; ?></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['PASSWORD_LENGTH']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['PASSWORD_LENGTH_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="3" maxlength="3" name="min_pass_chars" value="<?php echo $new['min_pass_chars']; ?>" /> <?php echo $user->lang['MIN_CHARS']; ?> <input class="post" type="text" size="3" maxlength="3" name="max_pass_chars" value="<?php echo $new['max_pass_chars']; ?>" /> <?php echo $user->lang['MAX_CHARS']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ALLOW_EMAIL_REUSE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['ALLOW_EMAIL_REUSE_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="allow_emailreuse" value="1" <?php echo $emailreuse_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="allow_emailreuse" value="0" <?php echo $emailreuse_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ALLOW_ATTACHMENTS']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="allow_attachments" value="1" <?php echo $attachments_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="allow_attachments" value="0" <?php echo $attachments_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ALLOW_HTML']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="allow_html" value="1" <?php echo $html_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="allow_html" value="0" <?php echo $html_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ALLOWED_TAGS']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['ALLOWED_TAGS_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="30" maxlength="255" name="allow_html_tags" value="<?php echo $new['allow_html_tags']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ALLOW_BBCODE']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="allow_bbcode" value="1" <?php echo $bbcode_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="allow_bbcode" value="0" <?php echo $bbcode_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ALLOW_SMILIES']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="allow_smilies" value="1" <?php echo $smile_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="allow_smilies" value="0" <?php echo $smile_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ALLOW_SIG']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="allow_sig" value="1" <?php echo $sig_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="allow_sig" value="0" <?php echo $sig_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['MAX_SIG_LENGTH']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['MAX_SIG_LENGTH_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="5" maxlength="4" name="max_sig_chars" value="<?php echo $new['max_sig_chars']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ALLOW_NO_CENSORS']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['ALLOW_NO_CENSORS_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="allow_nocensors" value="1" <?php echo $censors_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="allow_nocensors" value="0" <?php echo $censors_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
break;
|
||||
|
||||
case 'setting':
|
||||
|
||||
$disable_board_yes = ($new['board_disable']) ? 'checked="checked"' : '';
|
||||
$disable_board_no = (!$new['board_disable']) ? 'checked="checked"' : '';
|
||||
|
||||
$confirm_enabled = ($new['enable_confirm']) ? 'checked="checked"' : '';
|
||||
$confirm_disabled = (!$new['enable_confirm']) ? 'checked="checked"' : '';
|
||||
|
||||
$coppa_enable_yes = ($new['coppa_enable']) ? 'checked="checked"' : '';
|
||||
$coppa_enable_no = (!$new['coppa_enable']) ? 'checked="checked"' : '';
|
||||
|
||||
$activation_none = ($new['require_activation'] == USER_ACTIVATION_NONE) ? 'checked="checked"' : '';
|
||||
$activation_user = ($new['require_activation'] == USER_ACTIVATION_SELF) ? 'checked="checked"' : '';
|
||||
$activation_admin = ($new['require_activation'] == USER_ACTIVATION_ADMIN) ? 'checked="checked"' : '';
|
||||
$activation_user_admin = ($new['require_activation'] == USER_ACTIVATION_SELF_ADMIN) ? 'checked="checked"' : '';
|
||||
$activation_disable = ($new['require_activation'] == USER_ACTIVATION_DISABLE) ? 'checked="checked"' : '';
|
||||
|
||||
$privmsg_on = (!$new['privmsg_disable']) ? 'checked="checked"' : '';
|
||||
$privmsg_off = ($new['privmsg_disable']) ? 'checked="checked"' : '';
|
||||
|
||||
$prune_yes = ($new['prune_enable']) ? 'checked="checked"' : '';
|
||||
$prune_no = (!$new['prune_enable']) ? 'checked="checked"' : '';
|
||||
|
||||
$display_last_edited_yes = ($new['display_last_edited']) ? 'checked="checked"' : '';
|
||||
$display_last_edited_no = (!$new['display_last_edited']) ? 'checked="checked"' : '';
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1" width="50%"><b><?php echo $user->lang['SITE_NAME']; ?>: </b></td>
|
||||
<td class="row2"><input class="post" type="text" size="40" maxlength="255" name="sitename" value="<?php echo htmlentities($new['sitename']); ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['SITE_DESC']; ?>: </b></td>
|
||||
<td class="row2"><input class="post" type="text" size="40" maxlength="255" name="site_desc" value="<?php echo htmlentities($new['site_desc']); ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['BOARD_DISABLE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['BOARD_DISABLE_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="board_disable" value="1" <?php echo $disable_board_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="board_disable" value="0" <?php echo $disable_board_no; ?> /> <?php echo $user->lang['NO']; ?><br /><input class="post" type="text" name="board_disable_msg" maxlength="255" size="40" value="<?php echo $new['board_disable_msg']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ACC_ACTIVATION']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['ACC_ACTIVATION_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="require_activation" value="<?php echo USER_ACTIVATION_NONE; ?>" <?php echo $activation_none; ?> /> <?php echo $user->lang['ACC_NONE']; ?> <input type="radio" name="require_activation" value="<?php echo USER_ACTIVATION_SELF; ?>" <?php echo $activation_user; ?> /> <?php echo $user->lang['ACC_USER']; ?> <input type="radio" name="require_activation" value="<?php echo USER_ACTIVATION_ADMIN; ?>" <?php echo $activation_admin; ?> /> <?php echo $user->lang['ACC_ADMIN']; ?> <input type="radio" name="require_activation" value="<?php echo USER_ACTIVATION_DISABLE; ?>" <?php echo $activation_disable; ?> /> <?php echo $user->lang['ACC_DISABLE']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['VISUAL_CONFIRM']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['VISUAL_CONFIRM_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="enable_confirm" value="1"<?php echo $confirm_enabled ?> /> <?php echo $user->lang['YES'] ?> <input type="radio" name="enable_confirm" value="0" <?php echo $confirm_disabled ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ENABLE_COPPA']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['ENABLE_COPPA_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="coppa_enable" value="1" <?php echo $coppa_enable_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="coppa_enable" value="0" <?php echo $coppa_enable_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['COPPA_FAX']; ?>: </b></td>
|
||||
<td class="row2"><input class="post" type="text" size="25" maxlength="100" name="coppa_fax" value="<?php echo $new['coppa_fax']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['COPPA_MAIL']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['COPPA_MAIL_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><textarea name="coppa_mail" rows="5" cols="40"><?php echo $new['coppa_mail']; ?></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['BOARD_PM']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['BOARD_PM_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="privmsg_disable" value="0" <?php echo $privmsg_on; ?> /><?php echo $user->lang['ENABLED']; ?> <input type="radio" name="privmsg_disable" value="1" <?php echo $privmsg_off; ?> /><?php echo $user->lang['DISABLED']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['BOXES_MAX']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['BOXES_MAX_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" maxlength="4" size="4" name="pm_max_boxes" value="<?php echo $new['pm_max_boxes']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['BOXES_LIMIT']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['BOXES_LIMIT_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" maxlength="4" size="4" name="pm_max_msgs" value="<?php echo $new['pm_max_msgs']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['EDIT_TIME']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['EDIT_TIME_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" maxlength="3" size="3" name="edit_time" value="<?php echo $new['edit_time']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['DISPLAY_LAST_EDITED']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['DISPLAY_LAST_EDITED_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="display_last_edited" value="1" <?php echo $display_last_edited_yes; ?> /><?php echo $user->lang['YES']; ?> <input type="radio" name="display_last_edited" value="0" <?php echo $display_last_edited_no; ?> /><?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['FLOOD_INTERVAL']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['FLOOD_INTERVAL_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="3" maxlength="4" name="flood_interval" value="<?php echo $new['flood_interval']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['MIN_SEARCH_CHARS']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['MIN_SEARCH_CHARS_EXPLAIN']; ?></span</td>
|
||||
<td class="row2"><input class="post" type="text" size="3" maxlength="3" name="min_search_chars" value="<?php echo $new['min_search_chars']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['MAX_SEARCH_CHARS']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['MAX_SEARCH_CHARS_EXPLAIN']; ?></span</td>
|
||||
<td class="row2"><input class="post" type="text" size="3" maxlength="3" name="max_search_chars" value="<?php echo $new['max_search_chars']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['TOPICS_PER_PAGE']; ?>: </b></td>
|
||||
<td class="row2"><input class="post" type="text" name="topics_per_page" size="3" maxlength="4" value="<?php echo $new['topics_per_page']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['POSTS_PER_PAGE']; ?>: </b></td>
|
||||
<td class="row2"><input class="post" type="text" name="posts_per_page" size="3" maxlength="4" value="<?php echo $new['posts_per_page']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['HOT_THRESHOLD']; ?>: </b></td>
|
||||
<td class="row2"><input class="post" type="text" name="hot_threshold" size="3" maxlength="4" value="<?php echo $new['hot_threshold']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['MAX_POLL_OPTIONS']; ?>: </b></td>
|
||||
<td class="row2"><input class="post" type="text" name="max_poll_options" size="4" maxlength="4" value="<?php echo $new['max_poll_options']; ?>" /></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
break;
|
||||
|
||||
case 'email':
|
||||
|
||||
$email_yes = ($new['email_enable']) ? 'checked="checked"' : '';
|
||||
$email_no = (!$new['email_enable']) ? 'checked="checked"' : '';
|
||||
|
||||
$board_email_form_yes = ($new['board_email_form']) ? 'checked="checked"' : '';
|
||||
$board_email_form_no = (!$new['board_email_form']) ? 'checked="checked"' : '';
|
||||
|
||||
$smtp_yes = ($new['smtp_delivery']) ? 'checked="checked"' : '';
|
||||
$smtp_no = (!$new['smtp_delivery']) ? 'checked="checked"' : '';
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ENABLE_EMAIL']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['ENABLE_EMAIL_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="email_enable" value="1" <?php echo $email_yes; ?> /> <?php echo $user->lang['ENABLED']; ?> <input type="radio" name="email_enable" value="0" <?php echo $email_no; ?> /> <?php echo $user->lang['DISABLED']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['BOARD_EMAIL_FORM']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['BOARD_EMAIL_FORM_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="board_email_form" value="1" <?php echo $board_email_form_yes; ?> /> <?php echo $user->lang['ENABLED']; ?> <input type="radio" name="board_email_form" value="0" <?php echo $board_email_form_no; ?> /> <?php echo $user->lang['DISABLED']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" width="50%"><b><?php echo $user->lang['EMAIL_PACKAGE_SIZE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['EMAIL_PACKAGE_SIZE_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="5" maxlength="5" name="email_package_size" value="<?php echo $new['email_package_size']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" width="50%"><b><?php echo $user->lang['CONTACT_EMAIL']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['CONTACT_EMAIL_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="25" maxlength="100" name="board_contact" value="<?php echo $new['board_contact']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" width="50%"><b><?php echo $user->lang['ADMIN_EMAIL']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['ADMIN_EMAIL_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="25" maxlength="100" name="board_email" value="<?php echo $new['board_email']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['EMAIL_SIG']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['EMAIL_SIG_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><textarea name="board_email_sig" rows="5" cols="30"><?php echo $new['board_email_sig']; ?></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['USE_SMTP']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['USE_SMTP_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="smtp_delivery" value="1" <?php echo $smtp_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="smtp_delivery" value="0" <?php echo $smtp_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['SMTP_SERVER']; ?>: </b></td>
|
||||
<td class="row2"><input class="post" type="text" name="smtp_host" value="<?php echo $new['smtp_host']; ?>" size="25" maxlength="50" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['SMTP_PORT']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['SMTP_PORT_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" name="smtp_port" value="<?php echo $new['smtp_port']; ?>" size="4" maxlength="5" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['SMTP_USERNAME']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['SMTP_USERNAME_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" name="smtp_username" value="<?php echo $new['smtp_username']; ?>" size="25" maxlength="255" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['SMTP_PASSWORD']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['SMTP_PASSWORD_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="password" name="smtp_password" value="<?php echo $new['smtp_password']; ?>" size="25" maxlength="255" /></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
break;
|
||||
|
||||
case 'server':
|
||||
|
||||
$ip_all = ($new['ip_check'] == 4) ? 'checked="checked"' : '';
|
||||
$ip_classc = ($new['ip_check'] == 3) ? 'checked="checked"' : '';
|
||||
$ip_classb = ($new['ip_check'] == 2) ? 'checked="checked"' : '';
|
||||
$ip_none = ($new['ip_check'] == 0) ? 'checked="checked"' : '';
|
||||
|
||||
$browser_yes = ($new['browser_check']) ? 'checked="checked"' : '';
|
||||
$browser_no = (!$new['browser_check']) ? 'checked="checked"' : '';
|
||||
|
||||
$gzip_yes = ($new['gzip_compress']) ? 'checked="checked"' : '';
|
||||
$gzip_no = (!$new['gzip_compress']) ? 'checked="checked"' : '';
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['SERVER_NAME']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['SERVER_NAME_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" maxlength="255" size="40" name="server_name" value="<?php echo $new['server_name']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['SERVER_PORT']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['SERVER_PORT_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" maxlength="5" size="5" name="server_port" value="<?php echo $new['server_port']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['SCRIPT_PATH']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['SCRIPT_PATH_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" maxlength="255" name="script_path" value="<?php echo $new['script_path']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['IP_VALID']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['IP_VALID_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="ip_check" value="4" <?php echo $ip_all; ?> /> <?php echo $user->lang['ALL']; ?> <input type="radio" name="ip_check" value="3" <?php echo $ip_classc; ?> /> <?php echo $user->lang['CLASS_C']; ?> <input type="radio" name="ip_check" value="2" <?php echo $ip_classb; ?> /> <?php echo $user->lang['CLASS_B']; ?> <input type="radio" name="ip_check" value="0" <?php echo $ip_none; ?> /> <?php echo $user->lang['NONE']; ?> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['BROWSER_VALID']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['BROWSER_VALID_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="browser_check" value="1" <?php echo $browser_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="browser_check" value="0" <?php echo $browser_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ENABLE_GZIP']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="gzip_compress" value="1" <?php echo $gzip_yes; ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="gzip_compress" value="0" <?php echo $gzip_no; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['SMILIES_PATH']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['SMILIES_PATH_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="20" maxlength="255" name="smilies_path" value="<?php echo $new['smilies_path']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ICONS_PATH']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['ICONS_PATH_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="20" maxlength="255" name="icons_path" value="<?php echo $new['icons_path']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['RANKS_PATH']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['RANKS_PATH_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="20" maxlength="255" name="ranks_path" value="<?php echo $new['ranks_path']; ?>" /></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
break;
|
||||
|
||||
case 'load':
|
||||
|
||||
$load_db_track_yes = ($new['load_db_track']) ? 'checked="checked"' : '';
|
||||
$load_db_track_no = (!$new['load_db_track']) ? 'checked="checked"' : '';
|
||||
$load_db_lastread_yes = ($new['load_db_lastread']) ? 'checked="checked"' : '';
|
||||
$load_db_lastread_no = (!$new['load_db_lastread']) ? 'checked="checked"' : '';
|
||||
$load_online_yes = ($new['load_online']) ? 'checked="checked"' : '';
|
||||
$load_online_no = (!$new['load_online']) ? 'checked="checked"' : '';
|
||||
$load_onlinetrack_yes = ($new['load_onlinetrack']) ? 'checked="checked"' : '';
|
||||
$load_onlinetrack_no = (!$new['load_onlinetrack']) ? 'checked="checked"' : '';
|
||||
$load_birthdays_yes = ($new['load_birthdays']) ? 'checked="checked"' : '';
|
||||
$load_birthdays_no = (!$new['load_birthdays']) ? 'checked="checked"' : '';
|
||||
$moderators_yes = ($new['load_moderators']) ? 'checked="checked"' : '';
|
||||
$moderators_no = (!$new['load_moderators']) ? 'checked="checked"' : '';
|
||||
$search_yes = ($new['load_search']) ? 'checked="checked"' : '';
|
||||
$search_no = (!$new['load_search']) ? 'checked="checked"' : '';
|
||||
$search_update_yes = ($new['load_search_upd']) ? 'checked="checked"' : '';
|
||||
$search_update_no = (!$new['load_search_upd']) ? 'checked="checked"' : '';
|
||||
$search_phrase_yes = ($new['load_search_phr']) ? 'checked="checked"' : '';
|
||||
$search_phrase_no = (!$new['load_search_phr']) ? 'checked="checked"' : '';
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1" width="50%"><b><?php echo $user->lang['LIMIT_LOAD']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['LIMIT_LOAD_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="4" maxlength="4" name="limit_load" value="<?php echo $new['limit_load']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['SESSION_LENGTH']; ?>: </b></td>
|
||||
<td class="row2"><input class="post" type="text" maxlength="5" size="5" name="session_length" value="<?php echo $new['session_length']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['LIMIT_SESSIONS']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['LIMIT_SESSIONS_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="4" maxlength="4" name="active_sessions" value="<?php echo $new['active_sessions']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['YES_POST_MARKING']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['YES_POST_MARKING_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="load_db_track" value="1"<?php echo $load_db_track_yes ?> /><?php echo $user->lang['YES'] ?> <input type="radio" name="load_db_track" value="0" <?php echo $load_db_track_no ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['YES_READ_MARKING']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['YES_READ_MARKING_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="load_db_lastread" value="1"<?php echo $load_db_lastread_yes ?> /><?php echo $user->lang['YES'] ?> <input type="radio" name="load_db_lastread" value="0" <?php echo $load_db_lastread_no ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['YES_ONLINE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['YES_ONLINE_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="load_online" value="1"<?php echo $load_online_yes ?> /><?php echo $user->lang['YES'] ?> <input type="radio" name="load_online" value="0" <?php echo $load_online_no ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['YES_ONLINE_TRACK']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['YES_ONLINE_TRACK_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="load_onlinetrack" value="1"<?php echo $load_onlinetrack_yes ?> /><?php echo $user->lang['YES'] ?> <input type="radio" name="load_onlinetrack" value="0" <?php echo $load_onlinetrack_no ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['VIEW_ONLINE_TIME']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['VIEW_ONLINE_TIME_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="4" maxlength="3" name="load_online_time" value="<?php echo $new['load_online_time']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['YES_BIRTHDAYS']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="load_birthdays" value="1"<?php echo $load_birthdays_yes ?> /><?php echo $user->lang['YES'] ?> <input type="radio" name="load_birthdays" value="0" <?php echo $load_birthdays_no ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['YES_MODERATORS']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="load_moderators" value="1"<?php echo $moderators_yes ?> /><?php echo $user->lang['YES'] ?> <input type="radio" name="load_moderators" value="0" <?php echo $moderators_no ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['YES_SEARCH']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['YES_SEARCH_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="load_search" value="1"<?php echo $search_yes ?> /><?php echo $user->lang['YES'] ?> <input type="radio" name="load_search" value="0" <?php echo $search_no ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['SEARCH_INTERVAL']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['SEARCH_INTERVAL_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" size="3" maxlength="4" name="search_interval" value="<?php echo $new['search_interval']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['YES_SEARCH_UPDATE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['YES_SEARCH_UPDATE_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="load_search_upd" value="1"<?php echo $search_update_yes ?> /><?php echo $user->lang['YES'] ?> <input type="radio" name="load_search_upd" value="0" <?php echo $search_update_no ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['YES_SEARCH_PHRASE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['YES_SEARCH_PHRASE_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="load_search_phr" value="1"<?php echo $search_phrase_yes ?> /><?php echo $user->lang['YES'] ?> <input type="radio" name="load_search_phr" value="0" <?php echo $search_phrase_no ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
break;
|
||||
|
||||
case 'auth':
|
||||
|
||||
$auth_plugins = array();
|
||||
|
||||
$dp = opendir($phpbb_root_path . 'includes/auth');
|
||||
while ($file = readdir($dp))
|
||||
{
|
||||
if (preg_match('#^auth_(.*?)\.' . $phpEx . '$#', $file))
|
||||
{
|
||||
$auth_plugins[] = preg_replace('#^auth_(.*?)\.' . $phpEx . '$#', '\1', $file);
|
||||
}
|
||||
}
|
||||
|
||||
sort($auth_plugins);
|
||||
|
||||
$auth_select = '';
|
||||
foreach ($auth_plugins as $method)
|
||||
{
|
||||
$selected = ($config['auth_method'] == $method) ? ' selected="selected"' : '';
|
||||
$auth_select .= '<option value="' . $method . '"' . $selected . '>' . ucfirst($method) . '</option>';
|
||||
}
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1" width="50%"><b><?php echo $user->lang['AUTH_METHOD']; ?>: </b></td>
|
||||
<td class="row2"><select name="auth_method"><?php echo $auth_select; ?></select></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
foreach ($auth_plugins as $method)
|
||||
{
|
||||
if ($method && file_exists($phpbb_root_path . 'includes/auth/auth_' . $method . '.' . $phpEx))
|
||||
{
|
||||
include_once($phpbb_root_path . 'includes/auth/auth_' . $method . '.' . $phpEx);
|
||||
|
||||
$method = 'admin_' . $method;
|
||||
if (function_exists($method))
|
||||
{
|
||||
if ($config_fields = $method($new))
|
||||
{
|
||||
// Check if we need to create config fields for this plugin
|
||||
foreach($config_fields as $field)
|
||||
{
|
||||
if (!isset($config[$field]))
|
||||
{
|
||||
set_config($field, '');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unset($config_fields);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'karma':
|
||||
|
||||
$enable_karma_yes = ($new['enable_karma']) ? 'checked="checked"' : '';
|
||||
$enable_karma_no = (!$new['enable_karma']) ? 'checked="checked"' : '';
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['ENABLE_KARMA']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="enable_karma" value="1"<?php echo $enable_karma_yes ?> /><?php echo $user->lang['YES'] ?> <input type="radio" name="enable_karma" value="0" <?php echo $enable_karma_no ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['MIN_RATINGS']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['MIN_RATINGS_EXPLAIN']; ?></span</td>
|
||||
<td class="row2"><input class="post" type="text" size="3" maxlength="5" name="min_ratings" value="<?php echo $new['min_ratings']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['KARMA_HIST_WEIGHT']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['KARMA_HIST_WEIGHT_EXPLAIN']; ?></span</td>
|
||||
<td class="row2"><input class="post" type="text" size="3" maxlength="5" name="karma_hist_weight" value="<?php echo $new['karma_hist_weight']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['KARMA_DAY_WEIGHT']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['KARMA_DAY_WEIGHT_EXPLAIN']; ?></span</td>
|
||||
<td class="row2"><input class="post" type="text" size="3" maxlength="5" name="karma_day_weight" value="<?php echo $new['karma_30_weight']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['KARMA_REG_WEIGHT']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['KARMA_REG_WEIGHT_EXPLAIN']; ?></span</td>
|
||||
<td class="row2"><input class="post" type="text" size="3" maxlength="5" name="karma_reg_weight" value="<?php echo $new['karma_reg_weight']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['KARMA_POST_WEIGHT']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['KARMA_POST_WEIGHT_EXPLAIN']; ?></span</td>
|
||||
<td class="row2"><input class="post" type="text" size="3" maxlength="5" name="karma_post_weight" value="<?php echo $new['karma_post_weight']; ?>" /></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><input type="submit" name="submit" value="<?php echo $user->lang['SUBMIT']; ?>" class="btnmain" /> <input type="reset" value="<?php echo $user->lang['RESET']; ?>" class="btnlite" /></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
?>
|
@@ -1,995 +0,0 @@
|
||||
<?php
|
||||
// -------------------------------------------------------------
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// FILENAME : admin_database.php
|
||||
// STARTED : Thu May 31, 2001
|
||||
// COPYRIGHT : <20> 2003 phpBB Group
|
||||
// WWW : http://www.phpbb.com/
|
||||
// LICENCE : GPL vs2.0 [ see /docs/COPYING ]
|
||||
//
|
||||
// -------------------------------------------------------------
|
||||
|
||||
if (!empty($setmodules))
|
||||
{
|
||||
$filename = basename(__FILE__);
|
||||
$module['DB']['DB_BACKUP'] = ($auth->acl_get('a_backup')) ? $filename . "$SID&mode=backup" : '';
|
||||
|
||||
$file_uploads = @ini_get('file_uploads');
|
||||
if (!empty($file_uploads) && $file_uploads !== 0 && strtolower($file_uploads) != 'off' && $auth->acl_get('a_restore'))
|
||||
{
|
||||
$module['DB']['DB_RESTORE'] = "$filenamex$SID&mode=restore";
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
// Load default header
|
||||
$phpbb_root_path = '../';
|
||||
require($phpbb_root_path . 'extension.inc');
|
||||
require('pagestart.' . $phpEx);
|
||||
include($phpbb_root_path . 'functions_compress.'.$phpEx);
|
||||
|
||||
@set_time_limit(1200);
|
||||
|
||||
|
||||
// Get some vars
|
||||
$mode = (isset($_GET['mode'])) ? htmlspecialchars($_GET['mode']) : '';
|
||||
$action = (isset($_REQUEST['action'])) ? htmlspecialchars($_REQUEST['action']) : '';
|
||||
|
||||
|
||||
// --------------------
|
||||
// Begin program proper
|
||||
// --------------------
|
||||
switch($mode)
|
||||
{
|
||||
case 'backup':
|
||||
if (!$auth->acl_get('a_backup'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
$db_type = '';
|
||||
switch (SQL_LAYER)
|
||||
{
|
||||
case 'oracle':
|
||||
$db_type = 'Oracle';
|
||||
break;
|
||||
case 'odbc':
|
||||
$db_type = 'ODBC';
|
||||
break;
|
||||
case 'mssql':
|
||||
$db_type = 'MSSQL';
|
||||
break;
|
||||
}
|
||||
|
||||
if ($db_type)
|
||||
{
|
||||
trigger_error($user->lang['Backups_not_supported']);
|
||||
}
|
||||
|
||||
$additional_tables = (isset($_REQUEST['tables'])) ? htmlspecialchars($_REQUEST['tables']) : '';
|
||||
$backup_type = (isset($_REQUEST['type'])) ? intval($_REQUEST['type']) : false;
|
||||
$search = (!empty($_REQUEST['search'])) ? true : false;
|
||||
$store = (!empty($_REQUEST['store'])) ? true : false;
|
||||
$compress = (isset($_REQUEST['compress'])) ? htmlspecialchars($_REQUEST['compress']) : '';
|
||||
|
||||
if (!isset($_POST['backupstart']) && !isset($_GET['backupstart']))
|
||||
{
|
||||
adm_page_header($user->lang['DB_BACKUP']);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['DB_BACKUP']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['Backup_explain']; ?></p>
|
||||
|
||||
<form method="post" action="<?php echo "admin_database.$phpEx$SID&mode=$mode"; ?>"><table class="bg" width="95%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $user->lang['Backup_options']; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" width="40%"><b><?php echo $user->lang['Backup_type']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="type" value="full" checked="checked" /> <?php echo $user->lang['Full_backup']; ?> <input type="radio" name="type" value="structure" /> <?php echo $user->lang['Structure_only']; ?> <input type="radio" name="type" value="data" /> <?php echo $user->lang['Data_only']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['Additional_tables']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['Additional_tables_explain']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" name="tables" maxlength="255" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['INC_SEARCH_INDEX']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['INC_SEARCH_INDEX_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="search" value="1" checked="checked" /> <?php echo $user->lang['YES']; ?> <input type="radio" name="search" value="0" /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['DOWNLOAD_STORE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['DOWNLOAD_STORE_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="store" value="0" checked="checked" /> <?php echo $user->lang['EXPORT_DOWNLOAD']; ?> <input type="radio" name="store" value="1" /> <?php echo $user->lang['EXPORT_STORE']; ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
if (@extension_loaded('zlib') || extension_loaded('bz2'))
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['Compress_file']; ?>: </b></td>
|
||||
<td class="row2"><input type="radio" name="compress" value="none" checked="checked" /> <?php echo $user->lang['NONE']; ?><?php
|
||||
|
||||
if (extension_loaded('zlib'))
|
||||
{
|
||||
|
||||
|
||||
?> <input type="radio" name="compress" value="gzip" />.gz <input type="radio" name="compress" value="zip" />.zip<?php
|
||||
|
||||
}
|
||||
|
||||
if (extension_loaded('bz2'))
|
||||
{
|
||||
|
||||
?> <input type="radio" name="compress" value="bzip" />.bz2<?php
|
||||
|
||||
}
|
||||
|
||||
?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><input type="submit" name="backupstart" value="<?php echo $user->lang['Start_backup']; ?>" class="btnmain" /></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
break;
|
||||
}
|
||||
else if (!isset($_POST['startdownload']) && !isset($_GET['startdownload']))
|
||||
{
|
||||
$meta = "<meta http-equiv=\"refresh\" content=\"0;url=admin_database.$phpEx?mode=backup&type=$backup_type&tables=" . quotemeta($additional_tables) . "&search=$search&store=" . quotemeta($store_path) . "&compress=$compress&backupstart=1&startdownload=1\">";
|
||||
|
||||
$message = (empty($store_path)) ? $user->lang['Backup_download'] : $user->lang['Backup_writing'];
|
||||
|
||||
adm_page_header($user->lang['DB_Backup'], $meta);
|
||||
page_message($user->lang['DB_Backup'], $message);
|
||||
adm_page_footer();
|
||||
}
|
||||
|
||||
$tables = (SQL_LAYER != 'postgresql') ? mysql_get_tables() : pg_get_tables();
|
||||
@sort($tables);
|
||||
|
||||
if (!empty($additional_tables))
|
||||
{
|
||||
$additional_tables = explode(',', $additional_tables);
|
||||
|
||||
for($i = 0; $i < count($additional_tables); $i++)
|
||||
{
|
||||
$tables[] = trim($additional_tables[$i]);
|
||||
}
|
||||
unset($additional_tables);
|
||||
}
|
||||
|
||||
// Enable output buffering
|
||||
@ob_start();
|
||||
@ob_implicit_flush(0);
|
||||
|
||||
// Build the sql script file...
|
||||
echo "#\n";
|
||||
echo "# phpBB Backup Script\n";
|
||||
echo "# Dump of tables for $dbname\n";
|
||||
echo "#\n# DATE : " . gmdate("d-m-Y H:i:s", time()) . " GMT\n";
|
||||
echo "#\n";
|
||||
|
||||
if (SQL_LAYER == 'postgresql')
|
||||
{
|
||||
echo "\n" . pg_get_sequences("\n", $backup_type);
|
||||
}
|
||||
|
||||
for($i = 0; $i < count($tables); $i++)
|
||||
{
|
||||
$table_name = $tables[$i];
|
||||
|
||||
if (SQL_LAYER != 'mysql4')
|
||||
{
|
||||
$table_def_function = "get_table_def_" . SQL_LAYER;
|
||||
$table_content_function = "get_table_content_" . SQL_LAYER;
|
||||
}
|
||||
else
|
||||
{
|
||||
$table_def_function = "get_table_def_mysql";
|
||||
$table_content_function = "get_table_content_mysql";
|
||||
}
|
||||
|
||||
if ($backup_type != 'data')
|
||||
{
|
||||
echo "#\n# TABLE: " . $table_name . "\n#\n";
|
||||
echo $table_def_function($table_name, "\n") . "\n";
|
||||
}
|
||||
|
||||
if ($backup_type != 'structure')
|
||||
{
|
||||
//
|
||||
// Skip search table data?
|
||||
//
|
||||
if ($search || (!$search && !preg_match('/search_word/', $table_name)))
|
||||
{
|
||||
$table_content_function($table_name, "output_table_content");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Flush the buffer, send the file
|
||||
switch ($compress)
|
||||
{/*
|
||||
case 'gzip':
|
||||
$extension = 'sql.gz';
|
||||
$contents = gzencode(ob_get_contents());
|
||||
ob_end_clean();
|
||||
break;
|
||||
|
||||
case 'zip':
|
||||
$extension = 'zip';
|
||||
$zip = new zipfile;
|
||||
$zip->add_file(ob_get_contents(), "phpbb_db_backup.sql", time());
|
||||
ob_end_clean();
|
||||
$contents = $zip->file();
|
||||
break;
|
||||
|
||||
case 'bzip':
|
||||
$extension = 'bz2';
|
||||
$contents = bzcompress(ob_get_contents());
|
||||
ob_end_clean();
|
||||
break;*/
|
||||
|
||||
default:
|
||||
$extension = 'sql';
|
||||
$contents = ob_get_contents();
|
||||
ob_end_clean();
|
||||
}
|
||||
|
||||
add_log('admin', 'log_db_backup');
|
||||
|
||||
if (empty($store_path))
|
||||
{
|
||||
header("Pragma: no-cache");
|
||||
header("Content-Type: text/x-delimtext; name=\"phpbb_db_backup.$extension\"");
|
||||
header("Content-disposition: attachment; filename=phpbb_db_backup.$extension");
|
||||
|
||||
echo $contents;
|
||||
unset($contents);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!($fp = fopen('./../' . $store_path . "/phpbb_db_backup.$extension", 'wb')))
|
||||
{
|
||||
message_die(ERROR, 'Could not open backup file');
|
||||
}
|
||||
|
||||
if (!fwrite($fp, $contents))
|
||||
{
|
||||
message_die(ERROR, 'Could not write backup file content');
|
||||
}
|
||||
|
||||
fclose($fp);
|
||||
unset($contents);
|
||||
|
||||
trigger_error($user->lang['Backup_success']);
|
||||
}
|
||||
|
||||
exit;
|
||||
break;
|
||||
|
||||
case 'restore':
|
||||
if (!$auth->acl_get('a_restore'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
if (isset($_POST['restorestart']))
|
||||
{
|
||||
// Handle the file upload ....
|
||||
// If no file was uploaded report an error...
|
||||
if (!empty($_POST['local']))
|
||||
{
|
||||
$file_tmpname = './../' . str_replace('\\\\', '/', $_POST['local']);
|
||||
$filename = substr($file_tmpname, strrpos($file_tmpname, '/'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$filename = (!empty($_POST['backup_file']['name'])) ? $HTTP_POST_FILES['backup_file']['name'] : '';
|
||||
$file_tmpname = ($HTTP_POST_FILES['backup_file']['tmp_name'] != 'none') ? $HTTP_POST_FILES['backup_file']['tmp_name'] : '';
|
||||
}
|
||||
|
||||
if ($file_tmpname == '' || $filename == '' || !file_exists($file_tmpname))
|
||||
{
|
||||
trigger_error($user->lang['Restore_Error_no_file']);
|
||||
}
|
||||
|
||||
$ext = substr($filename, strrpos($filename, '.') + 1);
|
||||
|
||||
if (!preg_match('/^(sql|gz|bz2)$/', $ext))
|
||||
{
|
||||
trigger_error($user->lang['Restore_Error_filename']);
|
||||
}
|
||||
|
||||
if ((!extension_loaded('zlib') && $ext == 'gz') || (!extension_loaded('zip') && $ext == 'zip') || ($ext == 'bz2' && !extension_loaded('bz2')))
|
||||
{
|
||||
trigger_error($user->lang['Compress_unsupported']);
|
||||
}
|
||||
|
||||
$sql_query = '';
|
||||
switch ($ext)
|
||||
{
|
||||
case 'gz':
|
||||
$fp = gzopen($file_tmpname, 'rb');
|
||||
while (!gzeof($fp))
|
||||
{
|
||||
$sql_query .= gzgets($fp, 100000);
|
||||
}
|
||||
gzclose($fp);
|
||||
break;
|
||||
|
||||
case 'bz2':
|
||||
$sql_query = bzdecompress(fread(fopen($file_tmpname, 'rb'), filesize($file_tmpname)));
|
||||
break;
|
||||
|
||||
case 'zip':
|
||||
|
||||
|
||||
default;
|
||||
$sql_query = fread(fopen($file_tmpname, 'r'), filesize($file_tmpname));
|
||||
}
|
||||
|
||||
if ($sql_query != '')
|
||||
{
|
||||
// Strip out sql comments...
|
||||
$sql_query = remove_remarks($sql_query);
|
||||
$pieces = split_sql_file($sql_query, ';');
|
||||
|
||||
$sql_count = count($pieces);
|
||||
for($i = 0; $i < $sql_count; $i++)
|
||||
{
|
||||
$sql = trim($pieces[$i]);
|
||||
|
||||
if (!empty($sql) && $sql[0] != '#')
|
||||
{
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
add_log('admin', 'log_db_restore');
|
||||
|
||||
trigger_error($user->lang['Restore_success']);
|
||||
}
|
||||
|
||||
//
|
||||
// Restore page
|
||||
//
|
||||
adm_page_header($user->lang['DB_RESTORE']);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['DB_RESTORE']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['Restore_explain']; ?></p>
|
||||
|
||||
<form enctype="multipart/form-data" method="post" action="<?php echo "admin_database.$phpEx$SID&mode=$mode"; ?>"><table class="bg" width="80%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<th colspan="2"><?php echo $user->lang['Select_file']; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang['Upload_file']; ?>: <br /><span class="gensmall"><?php
|
||||
|
||||
echo $user->lang['Supported_extensions'];
|
||||
|
||||
$types = ': <u>sql</u>';
|
||||
if (extension_loaded('zlib'))
|
||||
{
|
||||
$types .= ', <u>sql.gz</u>';
|
||||
}
|
||||
if (extension_loaded('bz2'))
|
||||
{
|
||||
$types .= ', <u>bz2</u>';
|
||||
}
|
||||
|
||||
echo $types;
|
||||
|
||||
?></span></td>
|
||||
<td class="row2"><input type="file" name="backup_file" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang['Local_backup_file']; ?>: <br /><span class="gensmall"><?php echo $user->lang['Local_backup_file_explain']; ?></span></td>
|
||||
<td class="row2"><input type="text" name="local" size="40" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><input type="submit" name="restorestart" value="<?php echo $user->lang['Start_Restore']; ?>" class="btnmain" /></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
trigger_error($user->lang['No_admin']);
|
||||
exit;
|
||||
|
||||
}
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
// -----------------------------------------------
|
||||
// Begin Functions
|
||||
//
|
||||
|
||||
//
|
||||
// Table defns (not from phpMyAdmin)
|
||||
//
|
||||
function mysql_get_tables()
|
||||
{
|
||||
global $db, $table_prefix;
|
||||
|
||||
$tables = array();
|
||||
|
||||
$result = mysql_list_tables($db->dbname, $db->db_connect_id);
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
if (preg_match('/^' . $table_prefix . '/', $row[0]))
|
||||
{
|
||||
$tables[] = $row[0];
|
||||
}
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
|
||||
return $tables;
|
||||
}
|
||||
|
||||
//
|
||||
// The following functions are adapted from phpMyAdmin and upgrade_20.php
|
||||
//
|
||||
// This function is used for grabbing the sequences for postgres...
|
||||
//
|
||||
function pg_get_sequences($crlf, $backup_type)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$get_seq_sql = "SELECT relname FROM pg_class WHERE NOT relname ~ 'pg_.*'
|
||||
AND relkind = 'S' ORDER BY relname";
|
||||
|
||||
$seq = $db->sql_query($get_seq_sql);
|
||||
|
||||
if (!$num_seq = $db->sql_numrows($seq))
|
||||
{
|
||||
|
||||
$return_val = "# No Sequences Found $crlf";
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
$return_val = "# Sequences $crlf";
|
||||
$i_seq = 0;
|
||||
|
||||
while($i_seq < $num_seq)
|
||||
{
|
||||
$row = $db->sql_fetchrow($seq);
|
||||
$sequence = $row['relname'];
|
||||
|
||||
$get_props_sql = "SELECT * FROM $sequence";
|
||||
$seq_props = $db->sql_query($get_props_sql);
|
||||
|
||||
if ($db->sql_numrows($seq_props) > 0)
|
||||
{
|
||||
$row1 = $db->sql_fetchrow($seq_props);
|
||||
|
||||
if ($backup_type == 'structure')
|
||||
{
|
||||
$row['last_value'] = 1;
|
||||
}
|
||||
|
||||
$return_val .= "CREATE SEQUENCE $sequence start " . $row['last_value'] . ' increment ' . $row['increment_by'] . ' maxvalue ' . $row['max_value'] . ' minvalue ' . $row['min_value'] . ' cache ' . $row['cache_value'] . "; $crlf";
|
||||
|
||||
} // End if numrows > 0
|
||||
|
||||
if (($row['last_value'] > 1) && ($backup_type != 'structure'))
|
||||
{
|
||||
$return_val .= "SELECT NEXTVALE('$sequence'); $crlf";
|
||||
unset($row['last_value']);
|
||||
}
|
||||
|
||||
$i_seq++;
|
||||
|
||||
} // End while..
|
||||
|
||||
} // End else...
|
||||
|
||||
return $returnval;
|
||||
|
||||
} // End function...
|
||||
|
||||
//
|
||||
// The following functions will return the "CREATE TABLE syntax for the
|
||||
// varying DBMS's
|
||||
//
|
||||
// This function returns, will return the table def's for postgres...
|
||||
//
|
||||
function get_table_def_postgresql($table, $crlf)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$schema_create = "";
|
||||
//
|
||||
// Get a listing of the fields, with their associated types, etc.
|
||||
//
|
||||
|
||||
$field_query = "SELECT a.attnum, a.attname AS field, t.typname as type, a.attlen AS length, a.atttypmod as lengthvar, a.attnotnull as notnull
|
||||
FROM pg_class c, pg_attribute a, pg_type t
|
||||
WHERE c.relname = '$table'
|
||||
AND a.attnum > 0
|
||||
AND a.attrelid = c.oid
|
||||
AND a.atttypid = t.oid
|
||||
ORDER BY a.attnum";
|
||||
$result = $db->sql_query($field_query);
|
||||
|
||||
if (!$result)
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Failed in get_table_def (show fields)", "", __LINE__, __FILE__, $field_query);
|
||||
} // end if..
|
||||
|
||||
$schema_create .= "DROP TABLE $table;$crlf";
|
||||
|
||||
//
|
||||
// Ok now we actually start building the SQL statements to restore the tables
|
||||
//
|
||||
|
||||
$schema_create .= "CREATE TABLE $table($crlf";
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
//
|
||||
// Get the data from the table
|
||||
//
|
||||
$sql_get_default = "SELECT d.adsrc AS rowdefault
|
||||
FROM pg_attrdef d, pg_class c
|
||||
WHERE (c.relname = '$table')
|
||||
AND (c.oid = d.adrelid)
|
||||
AND d.adnum = " . $row['attnum'];
|
||||
$def_res = $db->sql_query($sql_get_default);
|
||||
|
||||
if (!$def_res)
|
||||
{
|
||||
unset($row['rowdefault']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$row['rowdefault'] = @pg_result($def_res, 0, 'rowdefault');
|
||||
}
|
||||
|
||||
if ($row['type'] == 'bpchar')
|
||||
{
|
||||
// Internally stored as bpchar, but isn't accepted in a CREATE TABLE statement.
|
||||
$row['type'] = 'char';
|
||||
}
|
||||
|
||||
$schema_create .= ' ' . $row['field'] . ' ' . $row['type'];
|
||||
|
||||
if (eregi('char', $row['type']))
|
||||
{
|
||||
if ($row['lengthvar'] > 0)
|
||||
{
|
||||
$schema_create .= '(' . ($row['lengthvar'] -4) . ')';
|
||||
}
|
||||
}
|
||||
|
||||
if (eregi('numeric', $row['type']))
|
||||
{
|
||||
$schema_create .= '(';
|
||||
$schema_create .= sprintf("%s,%s", (($row['lengthvar'] >> 16) & 0xffff), (($row['lengthvar'] - 4) & 0xffff));
|
||||
$schema_create .= ')';
|
||||
}
|
||||
|
||||
if (!empty($row['rowdefault']))
|
||||
{
|
||||
$schema_create .= ' DEFAULT ' . $row['rowdefault'];
|
||||
}
|
||||
|
||||
if ($row['notnull'] == 't')
|
||||
{
|
||||
$schema_create .= ' NOT NULL';
|
||||
}
|
||||
|
||||
$schema_create .= ",$crlf";
|
||||
|
||||
}
|
||||
//
|
||||
// Get the listing of primary keys.
|
||||
//
|
||||
|
||||
$sql_pri_keys = "SELECT ic.relname AS index_name, bc.relname AS tab_name, ta.attname AS column_name, i.indisunique AS unique_key, i.indisprimary AS primary_key
|
||||
FROM pg_class bc, pg_class ic, pg_index i, pg_attribute ta, pg_attribute ia
|
||||
WHERE (bc.oid = i.indrelid)
|
||||
AND (ic.oid = i.indexrelid)
|
||||
AND (ia.attrelid = i.indexrelid)
|
||||
AND (ta.attrelid = bc.oid)
|
||||
AND (bc.relname = '$table')
|
||||
AND (ta.attrelid = i.indrelid)
|
||||
AND (ta.attnum = i.indkey[ia.attnum-1])
|
||||
ORDER BY index_name, tab_name, column_name ";
|
||||
$result = $db->sql_query($sql_pri_keys);
|
||||
|
||||
if (!$result)
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Failed in get_table_def (show fields)", "", __LINE__, __FILE__, $sql_pri_keys);
|
||||
}
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
if ($row['primary_key'] == 't')
|
||||
{
|
||||
if (!empty($primary_key))
|
||||
{
|
||||
$primary_key .= ', ';
|
||||
}
|
||||
|
||||
$primary_key .= $row['column_name'];
|
||||
$primary_key_name = $row['index_name'];
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
// We have to store this all this info because it is possible to have a multi-column key...
|
||||
// we can loop through it again and build the statement
|
||||
//
|
||||
$index_rows[$row['index_name']]['table'] = $table;
|
||||
$index_rows[$row['index_name']]['unique'] = ($row['unique_key'] == 't') ? ' UNIQUE ' : '';
|
||||
$index_rows[$row['index_name']]['column_names'] .= $row['column_name'] . ', ';
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($index_rows))
|
||||
{
|
||||
while(list($idx_name, $props) = each($index_rows))
|
||||
{
|
||||
$props['column_names'] = ereg_replace(", $", "" , $props['column_names']);
|
||||
$index_create .= 'CREATE ' . $props['unique'] . " INDEX $idx_name ON $table (" . $props['column_names'] . ");$crlf";
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($primary_key))
|
||||
{
|
||||
$schema_create .= " CONSTRAINT $primary_key_name PRIMARY KEY ($primary_key),$crlf";
|
||||
}
|
||||
|
||||
//
|
||||
// Generate constraint clauses for CHECK constraints
|
||||
//
|
||||
$sql_checks = "SELECT rcname as index_name, rcsrc
|
||||
FROM pg_relcheck, pg_class bc
|
||||
WHERE rcrelid = bc.oid
|
||||
AND bc.relname = '$table'
|
||||
AND NOT EXISTS (
|
||||
SELECT *
|
||||
FROM pg_relcheck as c, pg_inherits as i
|
||||
WHERE i.inhrelid = pg_relcheck.rcrelid
|
||||
AND c.rcname = pg_relcheck.rcname
|
||||
AND c.rcsrc = pg_relcheck.rcsrc
|
||||
AND c.rcrelid = i.inhparent
|
||||
)";
|
||||
$result = $db->sql_query($sql_checks);
|
||||
|
||||
if (!$result)
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Failed in get_table_def (show fields)", "", __LINE__, __FILE__, $sql_checks);
|
||||
}
|
||||
|
||||
//
|
||||
// Add the constraints to the sql file.
|
||||
//
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$schema_create .= ' CONSTRAINT ' . $row['index_name'] . ' CHECK ' . $row['rcsrc'] . ",$crlf";
|
||||
}
|
||||
|
||||
$schema_create = ereg_replace(',' . $crlf . '$', '', $schema_create);
|
||||
$index_create = ereg_replace(',' . $crlf . '$', '', $index_create);
|
||||
|
||||
$schema_create .= "$crlf);$crlf";
|
||||
|
||||
if (!empty($index_create))
|
||||
{
|
||||
$schema_create .= $index_create;
|
||||
}
|
||||
|
||||
//
|
||||
// Ok now we've built all the sql return it to the calling function.
|
||||
//
|
||||
return (stripslashes($schema_create));
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
// This function returns the "CREATE TABLE" syntax for mysql dbms...
|
||||
//
|
||||
function get_table_def_mysql($table, $crlf)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$schema_create = "";
|
||||
$field_query = "SHOW FIELDS FROM $table";
|
||||
$key_query = "SHOW KEYS FROM $table";
|
||||
|
||||
// If the user has selected to drop existing tables when doing a restore.
|
||||
// Then we add the statement to drop the tables....
|
||||
$schema_create .= "DROP TABLE IF EXISTS $table;$crlf";
|
||||
$schema_create .= "CREATE TABLE $table($crlf";
|
||||
|
||||
// Ok lets grab the fields...
|
||||
$result = $db->sql_query($field_query);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$schema_create .= ' ' . $row['Field'] . ' ' . $row['Type'];
|
||||
|
||||
if (!empty($row['Default']))
|
||||
{
|
||||
$schema_create .= ' DEFAULT \'' . $row['Default'] . '\'';
|
||||
}
|
||||
|
||||
if ($row['Null'] != "YES")
|
||||
{
|
||||
$schema_create .= ' NOT NULL';
|
||||
}
|
||||
|
||||
if ($row['Extra'] != "")
|
||||
{
|
||||
$schema_create .= ' ' . $row['Extra'];
|
||||
}
|
||||
|
||||
$schema_create .= ",$crlf";
|
||||
}
|
||||
//
|
||||
// Drop the last ',$crlf' off ;)
|
||||
//
|
||||
$schema_create = ereg_replace(',' . $crlf . '$', "", $schema_create);
|
||||
|
||||
//
|
||||
// Get any Indexed fields from the database...
|
||||
//
|
||||
$result = $db->sql_query($key_query);
|
||||
|
||||
while($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$kname = $row['Key_name'];
|
||||
|
||||
if (($kname != 'PRIMARY') && ($row['Non_unique'] == 0))
|
||||
{
|
||||
$kname = "UNIQUE|$kname";
|
||||
}
|
||||
|
||||
if (!is_array($index[$kname]))
|
||||
{
|
||||
$index[$kname] = array();
|
||||
}
|
||||
|
||||
$index[$kname][] = $row['Column_name'];
|
||||
}
|
||||
|
||||
foreach ($index as $x => $columns)
|
||||
{
|
||||
$schema_create .= ", $crlf";
|
||||
|
||||
if ($x == 'PRIMARY')
|
||||
{
|
||||
$schema_create .= ' PRIMARY KEY (' . implode($columns, ', ') . ')';
|
||||
}
|
||||
elseif (substr($x,0,6) == 'UNIQUE')
|
||||
{
|
||||
$schema_create .= ' UNIQUE ' . substr($x,7) . ' (' . implode($columns, ', ') . ')';
|
||||
}
|
||||
else
|
||||
{
|
||||
$schema_create .= " KEY $x (" . implode($columns, ', ') . ')';
|
||||
}
|
||||
}
|
||||
|
||||
$schema_create .= "$crlf);";
|
||||
|
||||
if (get_magic_quotes_runtime())
|
||||
{
|
||||
return(stripslashes($schema_create));
|
||||
}
|
||||
else
|
||||
{
|
||||
return($schema_create);
|
||||
}
|
||||
|
||||
} // End get_table_def_mysql
|
||||
|
||||
|
||||
//
|
||||
// This fuction will return a tables create definition to be used as an sql
|
||||
// statement.
|
||||
//
|
||||
//
|
||||
// The following functions Get the data from the tables and format it as a
|
||||
// series of INSERT statements, for each different DBMS...
|
||||
// After every row a custom callback function $handler gets called.
|
||||
// $handler must accept one parameter ($sql_insert);
|
||||
//
|
||||
//
|
||||
// Here is the function for postgres...
|
||||
//
|
||||
function get_table_content_postgresql($table, $handler)
|
||||
{
|
||||
global $db;
|
||||
|
||||
// Grab all of the data from current table.
|
||||
$result = $db->sql_query("SELECT * FROM $table");
|
||||
|
||||
$i_num_fields = $db->sql_numfields($result);
|
||||
|
||||
for ($i = 0; $i < $i_num_fields; $i++)
|
||||
{
|
||||
$aryType[] = $db->sql_fieldtype($i, $result);
|
||||
$aryName[] = $db->sql_fieldname($i, $result);
|
||||
}
|
||||
|
||||
$iRec = 0;
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
unset($schema_vals);
|
||||
unset($schema_fields);
|
||||
unset($schema_insert);
|
||||
|
||||
// Build the SQL statement to recreate the data.
|
||||
for($i = 0; $i < $i_num_fields; $i++)
|
||||
{
|
||||
$strVal = $row[$aryName[$i]];
|
||||
if (preg_match('#char|text|bool#i', $aryType[$i]))
|
||||
{
|
||||
$strQuote = "'";
|
||||
$strEmpty = "";
|
||||
$strVal = addslashes($strVal);
|
||||
}
|
||||
elseif (preg_match('#date|timestamp#i', $aryType[$i]))
|
||||
{
|
||||
if ($empty($strVal))
|
||||
{
|
||||
$strQuote = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
$strQuote = "'";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$strQuote = "";
|
||||
$strEmpty = "NULL";
|
||||
}
|
||||
|
||||
if (empty($strVal) && $strVal != "0")
|
||||
{
|
||||
$strVal = $strEmpty;
|
||||
}
|
||||
|
||||
$schema_vals .= " $strQuote$strVal$strQuote,";
|
||||
$schema_fields .= " $aryName[$i],";
|
||||
}
|
||||
|
||||
$schema_vals = preg_replace('#,$#', '', $schema_vals);
|
||||
$schema_vals = preg_replace('#^ #', '', $schema_vals);
|
||||
$schema_fields = preg_replace('#,$#', '', $schema_fields);
|
||||
$schema_fields = preg_replace('#^ #', '', $schema_fields);
|
||||
|
||||
// Take the ordered fields and their associated data and build it
|
||||
// into a valid sql statement to recreate that field in the data.
|
||||
$schema_insert = "INSERT INTO $table ($schema_fields) VALUES($schema_vals);";
|
||||
|
||||
$handler(trim($schema_insert));
|
||||
}
|
||||
|
||||
return(true);
|
||||
|
||||
}// end function get_table_content_postgres...
|
||||
|
||||
//
|
||||
// This function is for getting the data from a mysql table.
|
||||
//
|
||||
|
||||
function get_table_content_mysql($table, $handler)
|
||||
{
|
||||
global $db;
|
||||
|
||||
// Grab the data from the table.
|
||||
$result = $db->sql_query("SELECT * FROM $table");
|
||||
|
||||
// Loop through the resulting rows and build the sql statement.
|
||||
$schema_insert = "";
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$schema_insert = "\n#\n# Table Data for $table\n#\n";
|
||||
|
||||
$handler($schema_insert);
|
||||
|
||||
do
|
||||
{
|
||||
$table_list = '(';
|
||||
$num_fields = $db->sql_numfields($result);
|
||||
//
|
||||
// Grab the list of field names.
|
||||
//
|
||||
for ($j = 0; $j < $num_fields; $j++)
|
||||
{
|
||||
$table_list .= $db->sql_fieldname($j, $result) . ', ';
|
||||
}
|
||||
//
|
||||
// Get rid of the last comma
|
||||
//
|
||||
$table_list = preg_replace('#, $#', '', $table_list);
|
||||
$table_list .= ')';
|
||||
//
|
||||
// Start building the SQL statement.
|
||||
//
|
||||
$schema_insert = "INSERT INTO $table $table_list VALUES(";
|
||||
//
|
||||
// Loop through the rows and fill in data for each column
|
||||
//
|
||||
for ($j = 0; $j < $num_fields; $j++)
|
||||
{
|
||||
if (!isset($row[$j]))
|
||||
{
|
||||
//
|
||||
// If there is no data for the column set it to null.
|
||||
// There was a problem here with an extra space causing the
|
||||
// sql file not to reimport if the last column was null in
|
||||
// any table. Should be fixed now :) JLH
|
||||
//
|
||||
$schema_insert .= ' NULL,';
|
||||
}
|
||||
elseif ($row[$j] != '')
|
||||
{
|
||||
$schema_insert .= ' \'' . addslashes($row[$j]) . '\',';
|
||||
}
|
||||
else
|
||||
{
|
||||
$schema_insert .= '\'\',';
|
||||
}
|
||||
}
|
||||
//
|
||||
// Get rid of the the last comma.
|
||||
//
|
||||
$schema_insert = preg_replace('#,$#', '', $schema_insert);
|
||||
$schema_insert .= ');';
|
||||
//
|
||||
// Go ahead and send the insert statement to the handler function.
|
||||
//
|
||||
$handler(trim($schema_insert));
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function output_table_content($content)
|
||||
{
|
||||
global $tempfile;
|
||||
|
||||
//fwrite($tempfile, $content . "\n");
|
||||
//$backup_sql .= $content . "\n";
|
||||
echo $content ."\n";
|
||||
return;
|
||||
}
|
||||
//
|
||||
// End Functions
|
||||
// -----------------------------------------------
|
||||
|
||||
?>
|
@@ -1,166 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* admin_disallow.php
|
||||
* -------------------
|
||||
* begin : Tuesday, Oct 05, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if (!empty($setmodules))
|
||||
{
|
||||
if (!$auth->acl_get('a_names'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$module['USER']['DISALLOW'] = basename(__FILE__) . $SID;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
// Include files
|
||||
$phpbb_root_path = '../';
|
||||
require($phpbb_root_path . 'extension.inc');
|
||||
require('pagestart.' . $phpEx);
|
||||
require($phpbb_root_path . 'includes/functions_user.'.$phpEx);
|
||||
|
||||
// Check permissions
|
||||
if (!$auth->acl_get('a_names'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
if (isset($_POST['disallow']))
|
||||
{
|
||||
$disallowed_user = (isset($_REQUEST['disallowed_user'])) ? htmlspecialchars($_REQUEST['disallowed_user']) : '';
|
||||
$disallowed_user = str_replace('*', '%', $disallowed_user);
|
||||
|
||||
if (validate_username($disallowed_user))
|
||||
{
|
||||
$message = $user->lang['Disallowed_already'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = 'INSERT INTO ' . DISALLOW_TABLE . " (disallow_username)
|
||||
VALUES('" . $db->sql_escape(stripslashes($disallowed_user)) . "')";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$message = $user->lang['Disallow_successful'];
|
||||
}
|
||||
|
||||
add_log('admin', 'log_disallow_add', str_replace('%', '*', $disallowed_user));
|
||||
|
||||
trigger_error($message);
|
||||
}
|
||||
else if (isset($_POST['allow']))
|
||||
{
|
||||
$disallowed_id = (isset($_REQUEST['disallowed_id'])) ? intval($_REQUEST['disallowed_id']) : '';
|
||||
|
||||
if (empty($disallowed_id))
|
||||
{
|
||||
trigger_error($user->lang['No_user_selected']);
|
||||
}
|
||||
|
||||
$sql = 'DELETE FROM ' . DISALLOW_TABLE . "
|
||||
WHERE disallow_id = $disallowed_id";
|
||||
$db->sql_query($sql);
|
||||
|
||||
add_log('admin', 'log_disallow_delete');
|
||||
|
||||
trigger_error($user->lang['Disallowed_deleted']);
|
||||
}
|
||||
|
||||
// Grab the current list of disallowed usernames...
|
||||
$sql = 'SELECT *
|
||||
FROM ' . DISALLOW_TABLE;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$disallow_select = '';
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
$disallow_select .= '<option value="' . $row['disallow_id'] . '">' . str_replace('%', '*', $row['disallow_username']) . '</option>';
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
|
||||
// Output page
|
||||
adm_page_header($user->lang['DISALLOW']);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['DISALLOW']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['Disallow_explain']; ?></p>
|
||||
|
||||
<form method="post" action="<?php echo "admin_disallow.$phpEx$SID"; ?>"><table class="bg" width="80%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $user->lang['Add_disallow_title']; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang['USERNAME']; ?><br /><span class="gensmall"><?php echo $user->lang['Add_disallow_explain']; ?></span></td>
|
||||
<td class="row2"><input class="post" type="text" name="disallowed_user" size="30" /> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><input class="btnmain" type="submit" name="disallow" value="<?php echo $user->lang['SUBMIT']; ?>" /> <input class="btnlite" type="reset" value="<?php echo $user->lang['RESET']; ?>" />
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h1><?php echo $user->lang['Delete_disallow_title']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['Delete_disallow_explain']; ?></p>
|
||||
|
||||
<table class="bg" width="80%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $user->lang['Delete_disallow_title']; ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
if ($disallow_select != '')
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang['USERNAME']; ?></td>
|
||||
<td class="row2"><select class="post" name="disallowed_id"><?php echo $disallow_select; ?></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><input class="btnmain" type="submit" name="allow" value="<?php echo $user->lang['SUBMIT']; ?>" /> <input class="btnlite" type="reset" value="<?php echo $user->lang['RESET']; ?>" />
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1" colspan="2" align="center"><?php echo $user->lang['No_disallowed']; ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
?>
|
@@ -1,223 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* admin_email.php
|
||||
* -------------------
|
||||
* begin : Thu May 31, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if (!empty($setmodules))
|
||||
{
|
||||
$file = basename(__FILE__);
|
||||
$module['GENERAL']['MASS_EMAIL'] = ($auth->acl_get('a_email')) ? "$file$SID" : '';
|
||||
return;
|
||||
}
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
// Include files
|
||||
$phpbb_root_path = '../';
|
||||
require($phpbb_root_path . 'extension.inc');
|
||||
require('pagestart.' . $phpEx);
|
||||
|
||||
// Check permissions
|
||||
if (!$auth->acl_get('a_email'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
// Set some vars
|
||||
$message = $subject = $group_id = '';
|
||||
|
||||
// Do the job ...
|
||||
if (isset($_POST['submit']))
|
||||
{
|
||||
// Increase maximum execution time in case of a lot of users, but don't complain
|
||||
// about it if it isn't allowed.
|
||||
@set_time_limit(1200);
|
||||
|
||||
// Error checking needs to go here ... if no subject and/or no message then skip
|
||||
// over the send and return to the form
|
||||
$group_id = (isset($_POST['g'])) ? intval($_POST['g']) : 0;
|
||||
$subject = (!empty($_POST['subject'])) ? stripslashes(trim($_POST['subject'])) : '';
|
||||
$message = (!empty($_POST['message'])) ? stripslashes(trim($_POST['message'])) : '';
|
||||
|
||||
$error = array();
|
||||
if ($subject == '')
|
||||
{
|
||||
$error[] = $user->lang['NO_EMAIL_SUBJECT'];
|
||||
}
|
||||
|
||||
if ($message == '')
|
||||
{
|
||||
$error[] = $user->lang['NO_EMAIL_MESSAGE'];
|
||||
}
|
||||
|
||||
if (!sizeof($error))
|
||||
{
|
||||
$sql = ($group_id) ? 'SELECT u.user_email, u.username, u.user_lang FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . " ug WHERE ug.group_id = $group_id AND ug.user_pending <> 1 AND u.user_id = ug.user_id AND u.user_allow_massemail = 1" : 'SELECT user_email FROM ' . USERS_TABLE . ' WHERE user_allow_massemail = 1';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if (!($row = $db->sql_fetchrow($result)))
|
||||
{
|
||||
trigger_error($user->lang['NO_USER']);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$i = 0;
|
||||
$email_list = array();
|
||||
do
|
||||
{
|
||||
$email_list[$row['user_lang']][$i]['email'] = $row['user_email'];
|
||||
$email_list[$row['user_lang']][$i]['name'] = $row['username'];
|
||||
$i++;
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
|
||||
// Let's do some checking to make sure that mass mail functions are working in win32 versions of php.
|
||||
if (preg_match('#^[c-z]:\\\#i', getenv('PATH')) && !$config['smtp_delivery'] && phpversion() < '4.3')
|
||||
{
|
||||
// We are running on windows, force delivery to use our smtp functions since
|
||||
// php's are broken by default
|
||||
$config['smtp_delivery'] = 1;
|
||||
$config['smtp_host'] = @ini_get('SMTP');
|
||||
}
|
||||
|
||||
|
||||
include($phpbb_root_path . 'includes/emailer.'.$phpEx);
|
||||
$emailer = new emailer(true);
|
||||
|
||||
$extra_headers = 'X-AntiAbuse: Board servername - ' . $config['server_name'] . "\n";
|
||||
$extra_headers .= 'X-AntiAbuse: User_id - ' . $user->data['user_id'] . "\n";
|
||||
$extra_headers .= 'X-AntiAbuse: Username - ' . $user->data['username'] . "\n";
|
||||
$extra_headers .= 'X-AntiAbuse: User IP - ' . $user->ip . "\n";
|
||||
|
||||
foreach ($email_list as $lang => $to_ary)
|
||||
{
|
||||
foreach ($to_ary as $to)
|
||||
{
|
||||
$emailer->template('admin_send_email', $lang);
|
||||
|
||||
$emailer->subject($subject);
|
||||
$emailer->headers($extra_headers);
|
||||
|
||||
$emailer->replyto($config['board_email']);
|
||||
$emailer->to($to['email'], $to['name']);
|
||||
|
||||
$emailer->assign_vars(array(
|
||||
'SITENAME' => $config['sitename'],
|
||||
'CONTACT_EMAIL' => $config['board_contact'],
|
||||
'MESSAGE' => $message)
|
||||
);
|
||||
|
||||
$emailer->send();
|
||||
$emailer->reset();
|
||||
}
|
||||
}
|
||||
|
||||
$emailer->mail_queue->save();
|
||||
unset($email_list);
|
||||
|
||||
if ($group_id)
|
||||
{
|
||||
$sql = 'SELECT group_name
|
||||
FROM ' . GROUPS_TABLE . "
|
||||
WHERE group_id = $group_id";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
extract($row);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Not great but the logging routine doesn't cope well with localising
|
||||
// on the fly
|
||||
$group_name = $user->lang['ALL_USERS'];
|
||||
}
|
||||
|
||||
add_log('admin', 'LOG_MASS_EMAIL', $group_name);
|
||||
trigger_error($user->lang['EMAIL_SENT']);
|
||||
}
|
||||
}
|
||||
|
||||
// Initial selection
|
||||
$sql = 'SELECT group_id, group_type, group_name
|
||||
FROM ' . GROUPS_TABLE . '
|
||||
ORDER BY group_type DESC, group_name ASC';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$select_list = '<option value="0"' . ((!$group_id) ? ' selected="selected"' : '') . '>' . $user->lang['ALL_USERS'] . '</option>';
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
$selected = ($group_id == $row['group_id']) ? ' selected="selected"' : '';
|
||||
$select_list .= '<option value = "' . $row['group_id'] . '"' . (($row['group_type'] == GROUP_SPECIAL) ? ' class="blue"' : '') . $selected . '>' . (($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name']) . '</option>';
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
adm_page_header($user->lang['MASS_EMAIL']);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['MASS_EMAIL']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['MASS_EMAIL_EXPLAIN']; ?></p>
|
||||
|
||||
<form method="post" action="admin_email.<?php echo $phpEx.$SID; ?>"><table class="bg" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $user->lang['COMPOSE']; ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
if (sizeof($error))
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row3" colspan="2" align="center"><span class="error"><?php echo implode('<br />', $error); ?></span></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1" align="right"><b><?php echo $user->lang['RECIPIENTS']; ?></b></td>
|
||||
<td class="row2" align="left"><select name="g"><?php echo $select_list; ?></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" align="right"><b><?php echo $user->lang['SUBJECT']; ?></b></td>
|
||||
<td class="row2"><input class="post" type="text" name="subject" size="45" maxlength="100" tabindex="2" value="<?php echo $subject; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" align="right" valign="top"><span class="gen"><b><?php echo $user->lang['MESSAGE']; ?></b></span>
|
||||
<td class="row2"><textarea class="post" name="message" rows="10" cols="76" wrap="virtual" tabindex="3"><?php echo $message; ?></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><input type="submit" value="<?php echo $user->lang['EMAIL']; ?>" name="submit" class="btnmain" /></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
?>
|
@@ -1,759 +0,0 @@
|
||||
<?php
|
||||
// -------------------------------------------------------------
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// FILENAME : admin_groups.php
|
||||
// STARTED : Sat Feb 13, 2001
|
||||
// COPYRIGHT : <20> 2001,2003 phpBB Group
|
||||
// WWW : http://www.phpbb.com/
|
||||
// LICENCE : GPL vs2.0 [ see /docs/COPYING ]
|
||||
//
|
||||
// -------------------------------------------------------------
|
||||
|
||||
if (!empty($setmodules))
|
||||
{
|
||||
if (!$auth->acl_get('a_group'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$module['GROUP']['MANAGE'] = basename(__FILE__) . "$SID&mode=manage";
|
||||
$module['GROUP']['GROUP_PREFS'] = basename(__FILE__) . "$SID&mode=prefs";
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
// Include files
|
||||
$phpbb_root_path = '../';
|
||||
$phpEx = substr(strrchr(__FILE__, '.'), 1);
|
||||
require('pagestart.' . $phpEx);
|
||||
include($phpbb_root_path . 'includes/functions_user.'.$phpEx);
|
||||
|
||||
// Do we have general permissions?
|
||||
if (!$auth->acl_get('a_group') )
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
// Check and set some common vars
|
||||
$update = (isset($_POST['update'])) ? true : false;
|
||||
$mode = (isset($_REQUEST['mode'])) ? htmlspecialchars($_REQUEST['mode']) : false;
|
||||
$group_id = (isset($_REQUEST['g'])) ? intval($_REQUEST['g']) : false;
|
||||
$mark_ary = (!empty($_POST['mark'])) ? array_map('intval', $_POST['mark']) : false;
|
||||
$name_ary = (!empty($_POST['usernames'])) ? array_unique(explode("\n", $_POST['usernames'])) : false;
|
||||
$start = (isset($_GET['start']) && $action == 'member') ? intval($_GET['start']) : 0;
|
||||
$start_mod = (isset($_GET['start']) && $action == 'leader') ? intval($_GET['start']) : 0;
|
||||
$group_type = $group_name = $group_desc = $group_colour = $group_rank = $group_avatar = false;
|
||||
|
||||
if (isset($_POST['add']))
|
||||
{
|
||||
$action = 'add';
|
||||
}
|
||||
else if (isset($_POST['addleaders']) || isset($_POST['addusers']))
|
||||
{
|
||||
$action = (isset($_POST['addleaders'])) ? 'addleaders' : 'addusers';
|
||||
}
|
||||
else
|
||||
{
|
||||
$action = (isset($_REQUEST['action'])) ? htmlspecialchars($_REQUEST['action']) : '';
|
||||
}
|
||||
|
||||
// Grab basic data for group, if group_id is set and exists
|
||||
if ($group_id)
|
||||
{
|
||||
$sql = 'SELECT *
|
||||
FROM ' . GROUPS_TABLE . "
|
||||
WHERE group_id = $group_id";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if (!extract($db->sql_fetchrow($result)))
|
||||
{
|
||||
trigger_error($user->lang['NO_GROUP']);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
|
||||
switch ($mode)
|
||||
{
|
||||
case 'manage':
|
||||
// Page header
|
||||
adm_page_header($user->lang['MANAGE']);
|
||||
|
||||
// Which page?
|
||||
switch ($action)
|
||||
{
|
||||
case 'approve':
|
||||
if (!$group_id)
|
||||
{
|
||||
trigger_error($user->lang['NO_GROUP']);
|
||||
}
|
||||
|
||||
approve_user($group_id, $mark_ary, false, $group_name);
|
||||
trigger_error($user->lang['USERS_APPROVED']);
|
||||
break;
|
||||
|
||||
case 'default':
|
||||
if (!$group_id)
|
||||
{
|
||||
trigger_error($user->lang['NO_GROUP']);
|
||||
}
|
||||
|
||||
set_default_group($group_id, $mark_ary, false, $group_name, $group_colour, $group_rank, false, false);
|
||||
trigger_error($user->lang['GROUP_DEFS_UPDATED']);
|
||||
break;
|
||||
|
||||
case 'delete':
|
||||
case 'deleteusers':
|
||||
case 'demote':
|
||||
if (!$group_id)
|
||||
{
|
||||
trigger_error($user->lang['NO_GROUP']);
|
||||
}
|
||||
|
||||
if ($error = remove_from_group($action, $group_id, $mark_ary, false, $group_name))
|
||||
{
|
||||
trigger_error($user->lang[$error]);
|
||||
}
|
||||
|
||||
$message = ($action == 'demote') ? 'GROUP_MODS_DEMOTED' : (($action == 'deleteusers') ? 'GROUP_USERS_REMOVE' : 'GROUP_DELETED');
|
||||
trigger_error($user->lang[$message]);
|
||||
break;
|
||||
|
||||
case 'addleaders':
|
||||
case 'addusers':
|
||||
if (!$group_id)
|
||||
{
|
||||
trigger_error($user->lang['NO_GROUP']);
|
||||
}
|
||||
|
||||
if (!$name_ary)
|
||||
{
|
||||
trigger_error($user->lang['NO_USERS']);
|
||||
}
|
||||
|
||||
// Add user/s to group
|
||||
if ($error = add_to_group($action, $group_id, false, $name_ary, $group_colour, $group_rank, $group_avatar, $group_avatar_type))
|
||||
{
|
||||
trigger_error($user->lang[$error]);
|
||||
}
|
||||
|
||||
$message = ($action == 'addleaders') ? 'GROUP_MODS_ADDED' : 'GROUP_USERS_ADDED';
|
||||
trigger_error($user->lang[$message]);
|
||||
break;
|
||||
|
||||
case 'edit':
|
||||
case 'add':
|
||||
if ($action == 'edit' && !$group_id)
|
||||
{
|
||||
trigger_error($user->lang['NO_GROUP']);
|
||||
}
|
||||
|
||||
// Did we submit?
|
||||
if ($update)
|
||||
{
|
||||
if (!($error = create_group($action, $group_id, $group_type, $group_name, $group_description, $group_colour, $group_rank, $group_avatar)))
|
||||
{
|
||||
$message = ($action == 'edit') ? 'GROUP_UPDATED' : 'GROUP_CREATED';
|
||||
trigger_error($message);
|
||||
}
|
||||
}
|
||||
else if (!$group_id)
|
||||
{
|
||||
$group_name = (!empty($_POST['group_name'])) ? stripslashes(htmlspecialchars($_POST['group_name'])) : '';
|
||||
$group_description = $group_colour = $group_avatar = '';
|
||||
$group_type = GROUP_FREE;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['MANAGE']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['GROUP_EDIT_EXPLAIN']; ?></p>
|
||||
|
||||
<?php
|
||||
|
||||
$sql = 'SELECT *
|
||||
FROM ' . RANKS_TABLE . '
|
||||
WHERE rank_special = 1
|
||||
ORDER BY rank_title';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$rank_options = '<option value="-1"' . ((empty($group_rank)) ? 'selected="selected" ' : '') . '>' . $user->lang['USER_DEFAULT'] . '</option>';
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
$selected = (!empty($group_rank) && $row['rank_id'] == $group_rank) ? ' selected="selected"' : '';
|
||||
$rank_options .= '<option value="' . $row['rank_id'] . '"' . $selected . '>' . $row['rank_title'] . '</option>';
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$type_free = ($group_type == GROUP_FREE) ? ' checked="checked"' : '';
|
||||
$type_open = ($group_type == GROUP_OPEN) ? ' checked="checked"' : '';
|
||||
$type_closed = ($group_type == GROUP_CLOSED) ? ' checked="checked"' : '';
|
||||
$type_hidden = ($group_type == GROUP_HIDDEN) ? ' checked="checked"' : '';
|
||||
|
||||
?>
|
||||
|
||||
<script language="javascript" type="text/javascript">
|
||||
<!--
|
||||
|
||||
function swatch()
|
||||
{
|
||||
window.open('./swatch.<?php echo $phpEx; ?>?form=settings&name=group_colour', '_swatch', 'HEIGHT=115,resizable=yes,scrollbars=no,WIDTH=636');
|
||||
return false;
|
||||
}
|
||||
|
||||
//-->
|
||||
</script>
|
||||
|
||||
<form name="settings" method="post" action="admin_groups.<?php echo "$phpEx$SID&mode=$mode&action=$action&g=$group_id"; ?>"><table class="bg" width="95%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $user->lang['GROUP_DETAILS']; ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
if (sizeof($error))
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1" colspan="2" align="center"><span style="color:red"><?php echo implode('<br />', $error); ?></span></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row2" width="40%"><b><?php echo $user->lang['GROUP_NAME']; ?>:</b></td>
|
||||
<td class="row1"><?php
|
||||
|
||||
if ($group_type != GROUP_SPECIAL)
|
||||
{
|
||||
|
||||
?><input class="post" type="text" name="group_name" value="<?php echo (!empty($group_name)) ? $group_name : ''; ?>" size="40" maxlength="40" /><?php
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
?><b><?php echo ($group_type == GROUP_SPECIAL) ? $user->lang['G_' . $group_name] : $group_name; ?></b><?php
|
||||
|
||||
}
|
||||
|
||||
?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row2"><b><?php echo $user->lang['GROUP_DESC']; ?>:</b></td>
|
||||
<td class="row1"><input class="post" type="text" name="group_description" value="<?php echo (!empty($group_description)) ? $group_description : ''; ?>" size="40" maxlength="255" /></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
if ($group_type != GROUP_SPECIAL)
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row2"><b><?php echo $user->lang['GROUP_TYPE']; ?>:</b><br /><span class="gensmall"><?php echo $user->lang['GROUP_TYPE_EXPLAIN']; ?></span></td>
|
||||
<td class="row1" nowrap="nowrap"><input type="radio" name="group_type" value="<?php echo GROUP_FREE . '"' . $type_free; ?> /> <?php echo $user->lang['GROUP_OPEN']; ?> <input type="radio" name="group_type" value="<?php echo GROUP_OPEN . '"' . $type_open; ?> /> <?php echo $user->lang['GROUP_REQUEST']; ?> <input type="radio" name="group_type" value="<?php echo GROUP_CLOSED . '"' . $type_closed; ?> /> <?php echo $user->lang['GROUP_CLOSED']; ?> <input type="radio" name="group_type" value="<?php echo GROUP_HIDDEN . '"' . $type_hidden; ?>" /> <?php echo $user->lang['GROUP_HIDDEN']; ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $user->lang['GROUP_SETTINGS_SAVE']; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row2"><b><?php echo $user->lang['GROUP_COLOR']; ?>:</b><br /><span class="gensmall"><?php echo $user->lang['GROUP_COLOR_EXPLAIN']; ?></span></td>
|
||||
<td class="row1" nowrap="nowrap"><input class="post" type="text" name="group_colour" value="<?php echo (!empty($group_colour)) ? $group_colour : ''; ?>" size="6" maxlength="6" /> [ <a href="<?php echo "swatch.$phpEx"; ?>" onclick="swatch();return false" target="_swatch"><?php echo $user->lang['COLOUR_SWATCH']; ?></a> ]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row2"><b><?php echo $user->lang['GROUP_RANK']; ?>:</b></td>
|
||||
<td class="row1"><select name="group_rank"><?php echo $rank_options; ?></select></td>
|
||||
</tr>
|
||||
<!-- tr>
|
||||
<th colspan="2"><?php echo $user->lang['GROUP_AVATAR']; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row2"><b><?php echo $user->lang['GROUP_AVATAR']; ?>:</b><br /><span class="gensmall"><?php echo $user->lang['GROUP_AVATAR_EXPLAIN']; ?></span></td>
|
||||
<td class="row1"> </td>
|
||||
</tr -->
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><input class="btnmain" type="submit" name="update" value="<?php echo $user->lang['SUBMIT']; ?>" /> <input class="btnlite" type="reset" value="<?php echo $user->lang['RESET']; ?>" /></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
<?php
|
||||
|
||||
break;
|
||||
|
||||
// Show list of leaders, existing and pending members
|
||||
case 'list':
|
||||
if (!$group_id)
|
||||
{
|
||||
trigger_error($user->lang['NO_GROUP']);
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['GROUP_MEMBERS']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['GROUP_MEMBERS_EXPLAIN']; ?></p>
|
||||
|
||||
<?php
|
||||
|
||||
// Total number of group leaders
|
||||
$sql = 'SELECT COUNT(user_id) AS total_leaders
|
||||
FROM ' . USER_GROUP_TABLE . "
|
||||
WHERE group_id = $group_id
|
||||
AND group_leader = 1";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$total_leaders = ($row = $db->sql_fetchrow($result)) ? $row['total_leaders'] : 0;
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
// Total number of group members (non-leaders)
|
||||
$sql = 'SELECT COUNT(user_id) AS total_members
|
||||
FROM ' . USER_GROUP_TABLE . "
|
||||
WHERE group_id = $group_id
|
||||
AND group_leader <> 1";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$total_members = ($row = $db->sql_fetchrow($result)) ? $row['total_members'] : 0;
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
// Grab the members
|
||||
$sql = 'SELECT u.user_id, u.username, u.user_regdate, u.user_posts, u.group_id, ug.group_leader, ug.user_pending
|
||||
FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . " ug
|
||||
WHERE ug.group_id = $group_id
|
||||
AND u.user_id = ug.user_id
|
||||
ORDER BY ug.group_leader DESC, ug.user_pending DESC, u.username
|
||||
LIMIT $start, " . $config['topics_per_page'];
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$leader = $member = 0;
|
||||
$group_data = array();
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
$type = ($row['group_leader']) ? 'leader' : 'member';
|
||||
|
||||
$group_data[$type][$$type]['user_id'] = $row['user_id'];
|
||||
$group_data[$type][$$type]['group_id'] = $row['group_id'];
|
||||
$group_data[$type][$$type]['username'] = $row['username'];
|
||||
$group_data[$type][$$type]['user_regdate'] = $row['user_regdate'];
|
||||
$group_data[$type][$$type]['user_posts'] = $row['user_posts'];
|
||||
$group_data[$type][$$type]['user_pending'] = $row['user_pending'];
|
||||
|
||||
$$type++;
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if ($group_type != GROUP_SPECIAL)
|
||||
{
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['GROUP_MODS']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['GROUP_MODS_EXPLAIN']; ?></p>
|
||||
|
||||
<form name="mod" method="post" action="<?php echo "admin_groups.$phpEx$SID&mode=$mode&g=$group_id"; ?>"><table class="bg" width="95%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th width="55%"><?php echo $user->lang['USERNAME']; ?></th>
|
||||
<th width="3%" nowrap="nowrap">Default</th>
|
||||
<th width="20%"><?php echo $user->lang['JOINED']; ?></th>
|
||||
<th width="20%"><?php echo $user->lang['POSTS']; ?></th>
|
||||
<th width="2%"><?php echo $user->lang['MARK']; ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
if (sizeof($group_data['leader']))
|
||||
{
|
||||
foreach ($group_data['leader'] as $row)
|
||||
{
|
||||
$row_class = ($row_class == 'row1') ? 'row2' : 'row1';
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="<?php echo $row_class; ?>"><a href="<?php echo "admin_users.$phpEx$SID&mode=edit&u=" . $row['user_id']; ?>"><?php echo $row['username']; ?></a></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo ($row['group_id'] == $group_id) ? $user->lang['YES'] : $user->lang['NO']; ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo $user->format_date($row['user_regdate'], $user->lang['DATE_FORMAT']); ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo $row['user_posts']; ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><input class="checkbox" type="checkbox" name="mark[]" value="<?php echo $row['user_id']; ?>" /></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1" colspan="5" align="center"><?php echo $user->lang['GROUPS_NO_MODS']; ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<tr>
|
||||
<td class="cat" colspan="5" align="right">Select option: <select name="action"><option value="default">Default</option><option value="demote">Demote</option><option value="delete">Delete</option></select> <input class="btnmain" type="submit" name="update" value="<?php echo $user->lang['UPDATE']; ?>" /> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table width="95%" cellspacing="1" cellpadding="1" border="0" align="center">
|
||||
<tr>
|
||||
<td valign="top"><?php echo on_page($total_moderators, $config['topics_per_page'], $start_mod); ?></td>
|
||||
<td align="right"><b><span class="gensmall"><a href="javascript:marklist('mod', true);" class="gensmall"><?php echo $user->lang['MARK_ALL']; ?></a> :: <a href="javascript:marklist('mod', false);" class="gensmall"><?php echo $user->lang['UNMARK_ALL']; ?></a></span></b> <br /><span class="nav"><?php echo generate_pagination("admin_groups.$phpEx$SID&action=list&mode=mod&g=$group_id", $total_members, $config['topics_per_page'], $start); ?></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br clear="all" />
|
||||
|
||||
<table class="bg" width="95%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $user->lang['ADD_USERS']; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" width="40%"><b><?php echo $user->lang['USER_GETS_GROUP_SET']; ?>:</b> <br /><span class="gensmall"><?php echo $user->lang['USER_GETS_GROUP_SET_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="default" value="1" /> <?php echo $user->lang['YES']; ?> <input type="radio" name="default" value="0" checked="checked" /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" width="40%"><b><?php echo $user->lang['USERNAME']; ?>:</b><br /><span class="gensmall"><?php echo $user->lang['USERNAMES_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><textarea name="usernames" cols="40" rows="5"></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><input class="btnmain" type="submit" name="addleaders" value="<?php echo $user->lang['SUBMIT']; ?>" /> <input class="btnlite" type="submit" value="<?php echo $user->lang['FIND_USERNAME']; ?>" onclick="window.open('<?php echo "../memberlist.$phpEx$SID"; ?>&mode=searchuser&form=mod&field=usernames', '_phpbbsearch', 'HEIGHT=500,resizable=yes,scrollbars=yes,WIDTH=740');return false;" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
// Existing members
|
||||
|
||||
?>
|
||||
<h1><?php echo $user->lang['GROUP_LIST']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['GROUP_LIST_EXPLAIN']; ?></p>
|
||||
|
||||
<form name="list" method="post" action="<?php echo "admin_groups.$phpEx$SID&mode=$mode&g=$group_id"; ?>"><table class="bg" width="95%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th width="55%"><?php echo $user->lang['USERNAME']; ?></th>
|
||||
<th width="3%" nowrap="nowrap">Default</th>
|
||||
<th width="20%"><?php echo $user->lang['JOINED']; ?></th>
|
||||
<th width="20%"><?php echo $user->lang['POSTS']; ?></th>
|
||||
<th width="2%"><?php echo $user->lang['MARK']; ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
|
||||
if (sizeof($group_data['member']))
|
||||
{
|
||||
$pending = $group_data['member'][0]['user_pending'];
|
||||
|
||||
foreach ($group_data['member'] as $row)
|
||||
{
|
||||
if ($row['user_pending'] != $pending)
|
||||
{
|
||||
$pending = $row['user_pending'];
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row3" colspan="5"><b>Approved Members</b></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
if ($pending)
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row3" colspan="5"><b>Pending Members</b></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
$row_class = ($row_class == 'row1') ? 'row2' : 'row1';
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="<?php echo $row_class; ?>"><a href="<?php echo "admin_users.$phpEx$SID&mode=edit&u=" . $row['user_id']; ?>"><?php echo $row['username']; ?></a></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo ($row['group_id'] == $group_id) ? $user->lang['YES'] : $user->lang['NO']; ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo $user->format_date($row['user_regdate'], $user->lang['DATE_FORMAT']); ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo $row['user_posts']; ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><input class="checkbox" type="checkbox" name="mark[]" value="<?php echo $row['user_id']; ?>" /></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1" colspan="5" align="center"><?php echo $user->lang['GROUPS_NO_MEMBERS']; ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="cat" colspan="5" align="right">Select option: <select name="action"><option value="approve">Approve</option><option value="default">Default</option><option value="delete">Delete</option></select> <input class="btnmain" type="submit" name="update" value="<?php echo $user->lang['UPDATE']; ?>" /> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table width="95%" cellspacing="1" cellpadding="1" border="0" align="center">
|
||||
<tr>
|
||||
<td valign="top"><?php echo on_page($total_members, $config['topics_per_page'], $start); ?></td>
|
||||
<td align="right"><b><span class="gensmall"><a href="javascript:marklist('list', true);" class="gensmall"><?php echo $user->lang['MARK_ALL']; ?></a> :: <a href="javascript:marklist('list', false);" class="gensmall"><?php echo $user->lang['UNMARK_ALL']; ?></a></span></b> <br /><span class="nav"><?php echo generate_pagination("admin_groups.$phpEx$SID&action=list&mode=member&g=$group_id", $total_members, $config['topics_per_page'], $start); ?></span></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br clear="all" />
|
||||
|
||||
<table class="bg" width="95%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $user->lang['ADD_USERS']; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['USER_GETS_GROUP_SET']; ?>:</b> <br /><span class="gensmall"><?php echo $user->lang['USER_GETS_GROUP_SET_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="default" value="1" /> <?php echo $user->lang['YES']; ?> <input type="radio" name="default" value="0" checked="checked" /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['USERNAME']; ?>:</b><br /><span class="gensmall"><?php echo $user->lang['USERNAMES_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><textarea name="usernames" cols="40" rows="5"></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><input class="btnmain" type="submit" name="addusers" value="<?php echo $user->lang['SUBMIT']; ?>" /> <input class="btnlite" type="submit" value="<?php echo $user->lang['FIND_USERNAME']; ?>" onclick="window.open('<?php echo "../memberlist.$phpEx$SID"; ?>&mode=searchuser&form=mod&field=usernames', '_phpbbsearch', 'HEIGHT=500,resizable=yes,scrollbars=yes,WIDTH=740');return false;" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
|
||||
<?php
|
||||
|
||||
break;
|
||||
|
||||
// Management front end
|
||||
default:
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['MANAGE']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['GROUP_MANAGE_EXPLAIN']; ?></p>
|
||||
|
||||
<h1><?php echo $user->lang['USER_DEF_GROUPS']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['USER_DEF_GROUPS_EXPLAIN']; ?></p>
|
||||
|
||||
<form method="post" action="<?php echo "admin_groups.$phpEx$SID&mode=$mode"; ?>"><table class="bg" width="95%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th width="95%"><?php echo $user->lang['MANAGE']; ?></th>
|
||||
<th nowrap="nowrap"><?php echo $user->lang['TOTAL_MEMBERS']; ?></th>
|
||||
<th colspan="3"><?php echo $user->lang['OPTIONS']; ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
$sql = 'SELECT g.group_id, g.group_name, g.group_type, COUNT(ug.user_id) AS total_members
|
||||
FROM (' . GROUPS_TABLE . ' g
|
||||
LEFT JOIN ' . USER_GROUP_TABLE . ' ug USING (group_id))
|
||||
GROUP BY g.group_id
|
||||
ORDER BY g.group_type ASC, g.group_name';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$special = $normal = 0;
|
||||
$group_ary = array();
|
||||
while ($row = $db->sql_fetchrow($result) )
|
||||
{
|
||||
$type = ($row['group_type'] == GROUP_SPECIAL) ? 'special' : 'normal';
|
||||
|
||||
$group_ary[$type][$$type]['group_id'] = $row['group_id'];
|
||||
$group_ary[$type][$$type]['group_name'] = $row['group_name'];
|
||||
$group_ary[$type][$$type]['group_type'] = $row['group_type'];
|
||||
$group_ary[$type][$$type]['total_members'] = $row['total_members'];
|
||||
|
||||
$$type++;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$special_toggle = false;
|
||||
foreach ($group_ary as $type => $row_ary)
|
||||
{
|
||||
if ($type == 'special')
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="cat" colspan="5" align="right">Create new group: <input class="post" type="text" name="group_name" maxlength="30" /> <input class="btnmain" type="submit" name="add" value="<?php echo $user->lang['SUBMIT']; ?>" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h1><?php echo $user->lang['SPECIAL_GROUPS']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['SPECIAL_GROUPS_EXPLAIN']; ?></p>
|
||||
|
||||
<table class="bg" width="95%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th width="95%"><?php echo $user->lang['MANAGE']; ?></th>
|
||||
<th><?php echo $user->lang['TOTAL_MEMBERS']; ?></th>
|
||||
<th colspan="3"><?php echo $user->lang['OPTIONS']; ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
foreach ($row_ary as $row)
|
||||
{
|
||||
$row_class = ($row_class != 'row1') ? 'row1' : 'row2';
|
||||
|
||||
$group_id = $row['group_id'];
|
||||
$group_name = (!empty($user->lang['G_' . $row['group_name']]))? $user->lang['G_' . $row['group_name']] : $row['group_name'];
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td width="95%" class="<?php echo $row_class; ?>"><a href="admin_groups.<?php echo "$phpEx$SID&mode=$mode&action=list&g=$group_id"; ?>"><?php echo $group_name;?></a></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center" nowrap="nowrap"> <?php echo $row['total_members']; ?> </td>
|
||||
<td class="<?php echo $row_class; ?>" align="center" nowrap="nowrap"> <a href="<?php echo "admin_groups.$phpEx$SID&mode=$mode&action=default&g=$group_id"; ?>">Default<?php echo $user->lang['']; ?></a> </td>
|
||||
<td class="<?php echo $row_class; ?>" align="center" nowrap="nowrap"> <a href="<?php echo "admin_groups.$phpEx$SID&mode=$mode&action=edit&g=$group_id"; ?>"><?php echo $user->lang['EDIT']; ?></a> </td>
|
||||
<td class="<?php echo $row_class; ?>" align="center" nowrap="nowrap"> <?php
|
||||
|
||||
echo ($row['group_type'] != GROUP_SPECIAL) ? "<a href=\"admin_groups.$phpEx$SID&mode=$mode&action=delete&g=$group_id\">" . $user->lang['DELETE'] . '</a>' : $user->lang['DELETE'];
|
||||
|
||||
?> </td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="cat" colspan="5"> </td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
break;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Common javascript
|
||||
?>
|
||||
|
||||
<script language="Javascript" type="text/javascript">
|
||||
<!--
|
||||
function marklist(match, status)
|
||||
{
|
||||
len = eval('document.' + match + '.length');
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
eval('document.' + match + '.elements[i].checked = ' + status);
|
||||
}
|
||||
}
|
||||
|
||||
function getElement(id)
|
||||
{
|
||||
return document.getElementById ? document.getElementById(id) : document.all ? document.all(id) : null;
|
||||
}
|
||||
|
||||
function showbox(id)
|
||||
{
|
||||
var el = getElement(id);
|
||||
if (el && el.style)
|
||||
el.style.display = '';
|
||||
}
|
||||
|
||||
function hidebox(id)
|
||||
{
|
||||
var el = getElement(id);
|
||||
if (el && el.style)
|
||||
el.style.display = 'none';
|
||||
}
|
||||
|
||||
//-->
|
||||
</script>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
break;
|
||||
|
||||
// Setting groupwide preferences
|
||||
case 'prefs':
|
||||
adm_page_header($user->lang['GROUP_PREFS']);
|
||||
|
||||
if ($update)
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
$user_lang = (!empty($_POST['user_lang'])) ? htmlspecialchars($_POST['user_lang']) : '';
|
||||
$user_tz = (isset($_POST['user_tz'])) ? doubleval($_POST['user_tz']) : '';
|
||||
$user_dst = (isset($_POST['user_dst'])) ? intval($_POST['user_dst']) : '';
|
||||
}
|
||||
|
||||
?>
|
||||
<h1><?php echo $user->lang['GROUP_SETTINGS']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['GROUP_SETTINGS_EXPLAIN']; ?></p>
|
||||
|
||||
<form method="post" action="admin_groups.<?php echo "$phpEx$SID&action=edit&g=$group_id"; ?>"><table class="bg" width="90%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $user->lang['GROUP_SETTINGS']; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row2"><?php echo $user->lang['GROUP_LANG']; ?>:</td>
|
||||
<td class="row1"><select name="user_lang"><?php echo '<option value="-1" selected="selected">' . $user->lang['USER_DEFAULT'] . '</option>' . language_select(); ?></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row2"><?php echo $user->lang['GROUP_TIMEZONE']; ?>:</td>
|
||||
<td class="row1"><select name="user_tz"><?php echo '<option value="-14" selected="selected">' . $user->lang['USER_DEFAULT'] . '</option>' . tz_select(); ?></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row2"><?php echo $user->lang['GROUP_DST']; ?>:</td>
|
||||
<td class="row1" nowrap="nowrap"><input type="radio" name="user_dst" value="0" /> <?php echo $user->lang['DISABLED']; ?> <input type="radio" name="user_dst" value="1" /> <?php echo $user->lang['ENABLED']; ?> <input type="radio" name="user_dst" value="-1" checked="checked" /> <?php echo $user->lang['USER_DEFAULT']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><input class="btnmain" type="submit" name="submitprefs" value="<?php echo $user->lang['SUBMIT']; ?>" /> <input class="btnlite" type="reset" value="<?php echo $user->lang['RESET']; ?>" /></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
break;
|
||||
|
||||
default:
|
||||
trigger_error($user->lang['NO_MODE']);
|
||||
}
|
||||
|
||||
exit;
|
||||
|
||||
?>
|
@@ -1,727 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* admin_icons.php
|
||||
* -------------------
|
||||
* begin : Thu May 31, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if (!empty($setmodules))
|
||||
{
|
||||
if (!$auth->acl_get('a_icons'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$filename = basename(__FILE__);
|
||||
$module['POST']['SMILE'] = $filename . $SID . '&mode=emoticons';
|
||||
$module['POST']['ICONS'] = $filename . $SID . '&mode=icons';
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
// Include files
|
||||
$phpbb_root_path = '../';
|
||||
require($phpbb_root_path . 'extension.inc');
|
||||
require('pagestart.' . $phpEx);
|
||||
|
||||
// Do we have general permissions?
|
||||
if (!$auth->acl_get('a_icons'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
// Grab some basic parameters
|
||||
$mode = (!empty($_REQUEST['mode'])) ? $_REQUEST['mode'] : '';
|
||||
$action = (!empty($_REQUEST['action'])) ? $_REQUEST['action'] : ((isset($_POST['add'])) ? 'add' : '');
|
||||
$id = (isset($_GET['id'])) ? intval($_GET['id']) : false;
|
||||
|
||||
// What are we working on?
|
||||
switch ($mode)
|
||||
{
|
||||
case 'emoticons':
|
||||
$table = SMILIES_TABLE;
|
||||
$lang = 'SMILE';
|
||||
$fields = 'smile';
|
||||
$img_path = $config['smilies_path'];
|
||||
break;
|
||||
|
||||
case 'icons':
|
||||
$table = ICONS_TABLE;
|
||||
$lang = 'ICONS';
|
||||
$fields = 'icons';
|
||||
$img_path = $config['icons_path'];
|
||||
break;
|
||||
}
|
||||
|
||||
// Clear some arrays
|
||||
$_images = $_paks = array();
|
||||
|
||||
|
||||
|
||||
// Grab file list of paks and images
|
||||
if ($action == 'edit' || $action == 'add' || $action == 'import')
|
||||
{
|
||||
$dir = @opendir($phpbb_root_path . $img_path);
|
||||
while ($file = @readdir($dir))
|
||||
{
|
||||
if (is_file($phpbb_root_path . $img_path . '/' . $file))
|
||||
{
|
||||
$img_size = @getimagesize($phpbb_root_path . $img_path . '/' . $file);
|
||||
|
||||
if (preg_match('#\.(gif|png|jpg)$#i', $file) || (!empty($img_size[0]) && !empty($img_size[1])))
|
||||
{
|
||||
$_images[] = $file;
|
||||
}
|
||||
elseif (preg_match('#\.pak$#i', $file))
|
||||
{
|
||||
$_paks[] = $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
@closedir($dir);
|
||||
}
|
||||
|
||||
|
||||
// What shall we do today? Oops, I believe that's trademarked ...
|
||||
switch ($action)
|
||||
{
|
||||
case 'delete':
|
||||
|
||||
$db->sql_query('DELETE FROM ' . $table . '
|
||||
WHERE ' . $fields . '_id = ' . intval($_GET['id']));
|
||||
|
||||
switch ($mode)
|
||||
{
|
||||
case 'emoticons':
|
||||
break;
|
||||
|
||||
case 'icons':
|
||||
// Reset appropriate icon_ids
|
||||
$db->sql_query('UPDATE ' . TOPICS_TABLE . '
|
||||
SET icon_id = 0
|
||||
WHERE icon_id = ' . intval($_GET['id']));
|
||||
$db->sql_query('UPDATE ' . POSTS_TABLE . '
|
||||
SET icon_id = 0
|
||||
WHERE icon_id = ' . intval($_GET['id']));
|
||||
break;
|
||||
}
|
||||
|
||||
trigger_error($user->lang[$lang . '_DELETED']);
|
||||
break;
|
||||
|
||||
case 'edit':
|
||||
case 'add':
|
||||
|
||||
$order_list = '';
|
||||
$existing_imgs = array();
|
||||
$result = $db->sql_query('SELECT *
|
||||
FROM ' . $table . '
|
||||
ORDER BY ' . $fields . '_order DESC');
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
$existing_imgs[] = $row[$fields . '_url'];
|
||||
|
||||
if ($row[$fields . '_id'] == $id)
|
||||
{
|
||||
$after = TRUE;
|
||||
$data = $row;
|
||||
}
|
||||
else
|
||||
{
|
||||
$selected = '';
|
||||
if (!empty($after))
|
||||
{
|
||||
$selected = ' selected="selected"';
|
||||
$after = FALSE;
|
||||
}
|
||||
|
||||
$after_txt = ($mode == 'emoticons') ? $row['code'] : $row['icons_url'];
|
||||
$order_list = '<option value="' . ($row[$fields . '_order']) . '"' . $selected . '>' . sprintf($user->lang['AFTER_' . $lang], ' -> ' . htmlspecialchars($after_txt)) . '</option>' . $order_list;
|
||||
}
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$order_list = '<option value="1"' . ((!isset($after)) ? ' selected="selected"' : '') . '>' . $user->lang['FIRST'] . '</option>' . $order_list;
|
||||
|
||||
$imglist = filelist($phpbb_root_path . $img_path, '');
|
||||
|
||||
$filename_list = '';
|
||||
foreach ($imglist as $path => $img_ary)
|
||||
{
|
||||
foreach ($img_ary as $img)
|
||||
{
|
||||
$img = "$path$img";
|
||||
|
||||
if (!in_array($img, $existing_imgs) || $action == 'edit')
|
||||
{
|
||||
if ((isset($data) && $img == $data[$fields . '_url']) ||
|
||||
(!isset($data) && !isset($edit_img)))
|
||||
{
|
||||
$selected = ' selected="selected"';
|
||||
$edit_img = $img;
|
||||
}
|
||||
else
|
||||
{
|
||||
$selected = '';
|
||||
}
|
||||
|
||||
$filename_list .= '<option value="' . $img . '"' . htmlspecialchars($img) . $selected . '>' . $img . '</option>';
|
||||
}
|
||||
}
|
||||
}
|
||||
unset($existing_imgs);
|
||||
unset($imglist);
|
||||
|
||||
adm_page_header($user->lang[$lang]);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang[$lang]; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang[$lang .'_EXPLAIN']; ?></p>
|
||||
|
||||
<script language="javascript" type="text/javascript" defer="defer">
|
||||
<!--
|
||||
|
||||
function update_image(newimage)
|
||||
{
|
||||
document.image.src = "<?php echo $phpbb_root_path . $img_path ?>/" + newimage;
|
||||
}
|
||||
|
||||
function update_image_dimensions()
|
||||
{
|
||||
if (document.image.height)
|
||||
{
|
||||
document.forms[0].height.value = document.image.height;
|
||||
document.forms[0].width.value = document.image.width;
|
||||
}
|
||||
}
|
||||
|
||||
//-->
|
||||
</script>
|
||||
|
||||
<form method="post" action="admin_icons.<?php echo $phpEx . $SID . "&mode=$mode&action=" . (($action == 'add') ? 'create' : 'modify'); ?>"><table class="bg" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $user->lang[$lang . '_CONFIG'] ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang[$lang . '_URL'] ?></td>
|
||||
<td class="row2"><select name="img" onchange="update_image(this.options[selectedIndex].value);"><?php echo $filename_list ?></select> <img src="<?php echo $phpbb_root_path . $img_path . '/' . $edit_img ?>" name="image" border="0" alt="" title="" onload="update_image_dimensions()" /> </td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
if ($mode == 'emoticons')
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang[$lang . '_CODE'] ?></td>
|
||||
<td class="row2"><input class="post" type="text" name="code" value="<?php echo (!empty($data['code'])) ? $data['code'] : '' ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang[$lang . '_EMOTION'] ?></td>
|
||||
<td class="row2"><input class="post" type="text" name="emotion" value="<?php echo (!empty($data['emoticon'])) ? $data['emoticon'] : '' ?>" /></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang[$lang . '_WIDTH'] ?></td>
|
||||
<td class="row2"><input class="post" type="text" size="3" name="width" value="<?php echo (!empty($data[$fields .'_width'])) ? $data[$fields .'_width'] : '' ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang[$lang . '_HEIGHT'] ?></td>
|
||||
<td class="row2"><input class="post" type="text" size="3" name="height" value="<?php echo (!empty($data[$fields .'_height'])) ? $data[$fields .'_height'] : '' ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang['DISPLAY_ON_POSTING'] ?></td>
|
||||
<td class="row2"><input type="checkbox" name="display_on_posting" <?php echo (!empty($data['display_on_posting']) || !isset($data)) ? ' checked="checked"' : '' ?>/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang[$lang . '_ORDER'] ?></td>
|
||||
<td class="row2"><select name="order"><?php echo $order_list ?></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><?php
|
||||
|
||||
if (!empty($data))
|
||||
{
|
||||
|
||||
?><input type="hidden" name="id" value="<?php echo $data[$fields . '_id'] ?>" /><?php
|
||||
|
||||
}
|
||||
|
||||
?><input class="btnmain" type="submit" value="<?php echo $user->lang['SUBMIT'] ?>" /></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
break;
|
||||
|
||||
case 'create':
|
||||
case 'modify':
|
||||
|
||||
$image_id = intval($_POST['id']);
|
||||
$img = stripslashes($_POST['img']);
|
||||
$image_order = intval($_POST['order']);
|
||||
$image_width = intval($_POST['width']);
|
||||
$image_height = intval($_POST['height']);
|
||||
|
||||
if ($image_width == 0 || $image_height == 0)
|
||||
{
|
||||
$img_size = @getimagesize($phpbb_root_path . $img_path . '/' . $img);
|
||||
$smile_width = $img_size[0];
|
||||
$smile_height = $img_size[1];
|
||||
}
|
||||
|
||||
$img_sql = array(
|
||||
$fields . '_url' => $img,
|
||||
$fields . '_width' => $image_width,
|
||||
$fields . '_height' => $image_height,
|
||||
$fields . '_order' => $image_order,
|
||||
'display_on_posting'=> (!empty($_POST['display_on_posting'])) ? 1 : 0
|
||||
);
|
||||
if ($mode == 'emoticons')
|
||||
{
|
||||
$img_sql = array_merge($sql, array(
|
||||
'emoticon' => stripslashes($_POST['emotion']),
|
||||
'code' => htmlspecialchars(stripslashes($_POST['code']))
|
||||
));
|
||||
}
|
||||
|
||||
if ($action == 'modify')
|
||||
{
|
||||
$result = $db->sql_query('SELECT ' . $fields . '_order
|
||||
FROM ' . $table . '
|
||||
WHERE ' . $fields . "_id = $image_id");
|
||||
$order_old = $db->sql_fetchfield($fields . '_order', 0, $result);
|
||||
|
||||
if ($order_old == $smile_order)
|
||||
{
|
||||
$no_update = TRUE;
|
||||
}
|
||||
|
||||
if ($order_old > $smile_order)
|
||||
{
|
||||
$sign = '+';
|
||||
$where = $fields . "_order >= $image_order AND " . $fields . "_order < $order_old";
|
||||
}
|
||||
else
|
||||
{
|
||||
$sign = '-';
|
||||
$where = $fields . "_order > $order_old AND " . $fields . "_order < $image_order";
|
||||
$sql[$fields . '_order'] = $smile_order - 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$sign = '+';
|
||||
$where = $fields . "_order > $image_order";
|
||||
}
|
||||
|
||||
if (empty($no_update))
|
||||
{
|
||||
$sql = 'UPDATE ' . $table . '
|
||||
SET ' . $fields . '_order = ' . $fields . "_order $sign 1
|
||||
WHERE $where";
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
if ($action == 'modify')
|
||||
{
|
||||
$db->sql_query('UPDATE ' . $table . '
|
||||
SET ' . $db->sql_build_array('UPDATE', $img_sql) . "
|
||||
WHERE " . $fields . "_id = $image_id");
|
||||
$cache->destroy('icons');
|
||||
|
||||
trigger_error($user->lang[$lang . '_EDITED']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$db->sql_query('INSERT INTO ' . $table . ' ' . $db->sql_build_array('INSERT', $img_sql));
|
||||
$cache->destroy('icons');
|
||||
|
||||
trigger_error($user->lang[$lang . '_ADDED']);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'import':
|
||||
|
||||
if (!empty($_POST['pak']))
|
||||
{
|
||||
$order = 0;
|
||||
|
||||
// The user has already selected a smilies_pak file
|
||||
if ($_POST['current'] == 'delete')
|
||||
{
|
||||
$db->sql_query('TRUNCATE ' . $table);
|
||||
|
||||
switch ($mode)
|
||||
{
|
||||
case 'emoticons':
|
||||
break;
|
||||
|
||||
case 'icons':
|
||||
// Reset all icon_ids
|
||||
$db->sql_query('UPDATE ' . TOPICS_TABLE . '
|
||||
SET icon_id = 0');
|
||||
$db->sql_query('UPDATE ' . POSTS_TABLE . '
|
||||
SET icon_id = 0');
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$cur_img = array();
|
||||
|
||||
$field_sql = ($mode == 'emoticons') ? 'code' : 'icons_url';
|
||||
$result = $db->sql_query('SELECT ' . $field_sql . '
|
||||
FROM ' . $table);
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
++$order;
|
||||
$cur_img[$row[$field_sql]] = 1;
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
|
||||
if (!($pak_ary = @file($phpbb_root_path . $img_path . '/'. stripslashes($_POST['pak']))))
|
||||
{
|
||||
trigger_error('Could not read smiley pak file', E_USER_ERROR);
|
||||
}
|
||||
|
||||
foreach ($pak_ary as $pak_entry)
|
||||
{
|
||||
$data = array();
|
||||
if (preg_match_all("#'(.*?)', #", $pak_entry, $data))
|
||||
{
|
||||
if ((sizeof($data[1]) == 5 && $mode == 'icons') ||
|
||||
(sizeof($data[1]) != 5 && $mode == 'emoticons'))
|
||||
{
|
||||
trigger_error($user->lang['WRONG_PAK_TYPE']);
|
||||
}
|
||||
|
||||
$img = stripslashes($data[1][0]);
|
||||
$width = stripslashes($data[1][1]);
|
||||
$height = stripslashes($data[1][2]);
|
||||
if (isset($data[1][3]) && isset($data[1][4]))
|
||||
{
|
||||
$emotion = stripslashes($data[1][3]);
|
||||
$code = htmlentities(stripslashes($data[1][4]));
|
||||
}
|
||||
|
||||
if ($_POST['current'] == 'replace' &&
|
||||
(($mode == 'emoticons' && !empty($cur_img[$code])) ||
|
||||
($mode == 'icons' && !empty($cur_img[$img]))))
|
||||
{
|
||||
$replace_sql = ($mode == 'emoticons') ? $code : $img;
|
||||
$sql = array(
|
||||
$fields . '_url' => $img,
|
||||
$fields . '_height' => intval($height),
|
||||
$fields . '_width' => intval($width),
|
||||
);
|
||||
if ($mode == 'emoticons')
|
||||
{
|
||||
$sql = array_merge($sql, array(
|
||||
'emoticon' => $emotion
|
||||
));
|
||||
}
|
||||
|
||||
$db->sql_query("UPDATE $table SET " . $db->sql_build_array('UPDATE', $sql) . "
|
||||
WHERE $field_sql = '" . $db->sql_escape($replace_sql) . "'");
|
||||
}
|
||||
else
|
||||
{
|
||||
++$order;
|
||||
|
||||
$sql = array(
|
||||
$fields . '_url' => $img,
|
||||
$fields . '_height' => intval($height),
|
||||
$fields . '_width' => intval($width),
|
||||
$fields . '_order' => intval($order),
|
||||
);
|
||||
if ($mode == 'emoticons')
|
||||
{
|
||||
$sql = array_merge($sql, array(
|
||||
'code' => $code,
|
||||
'emoticon' => $emotion
|
||||
));
|
||||
}
|
||||
$db->sql_query("INSERT INTO $table " . $db->sql_build_array('INSERT', $sql));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
$cache->destroy('icons');
|
||||
|
||||
trigger_error($user->lang[$lang . '_IMPORT_SUCCESS']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$paklist = filelist($phpbb_root_path . $img_path, '', 'pak');
|
||||
|
||||
$pak_options = '';
|
||||
if (count($paklist))
|
||||
{
|
||||
foreach ($paklist as $pak)
|
||||
{
|
||||
$pak = substr($pak['path'], 1) . (($pak['path'] != '') ? '/' : '') . $pak['file'];
|
||||
|
||||
$pak_options .= '<option>' . htmlspecialchars($pak) . '</option>';
|
||||
}
|
||||
}
|
||||
|
||||
adm_page_header($user->lang[$lang]);
|
||||
|
||||
?>
|
||||
<h1><?php echo $user->lang[$lang] ?></h1>
|
||||
|
||||
<p><?php echo $user->lang[$lang .'_EXPLAIN'] ?></p>
|
||||
|
||||
<form method="post" action="admin_icons.<?php echo $phpEx . $SID . '&mode=' . $mode . '&action=import'; ?>"><table class="bg" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $user->lang[$lang . '_IMPORT'] ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
if ($pak_options == '')
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1" colspan="2"><?php echo $user->lang['NO_' . $lang . '_PAK']; ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row2"><?php echo $user->lang['SELECT_PACKAGE'] ?></td>
|
||||
<td class="row1"><select name="pak"><?php echo $pak_options ?></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row2"><?php echo $user->lang['CURRENT_' . $lang] ?><br /><span class="gensmall"><?php echo $user->lang['CURRENT_' . $lang . '_EXPLAIN'] ?></span></td>
|
||||
<td class="row1"><input type="radio" name="current" value="keep" checked="checked" /> <?php echo $user->lang['KEEP_ALL'] ?> <input type="radio" name="current" value="replace" /> <?php echo $user->lang['REPLACE_MATCHES'] ?> <input type="radio" name="current" value="delete" /> <?php echo $user->lang['DELETE_ALL'] ?> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><input class="btnmain" name="import" type="submit" value="<?php echo $user->lang['IMPORT_' . $lang] ?>" /></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
</table></form>
|
||||
<?php
|
||||
adm_page_footer();
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case 'export':
|
||||
|
||||
adm_page_header($user->lang['EXPORT_' . $lang]);
|
||||
trigger_error(sprintf($user->lang['EXPORT_' . $lang . '_EXPLAIN'], '<a href="admin_icons.' . $phpEx . $SID . '&mode=' . $mode . '&action=send">', '</a>'));
|
||||
break;
|
||||
|
||||
case 'send':
|
||||
|
||||
$result = $db->sql_query('SELECT *
|
||||
FROM ' . $table . "
|
||||
ORDER BY {$fields}_order");
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
$pak .= "'" . addslashes($row[$fields . '_url']) . "', ";
|
||||
$pak .= "'" . addslashes($row[$fields . '_height']) . "', ";
|
||||
$pak .= "'" . addslashes($row[$fields . '_width']) . "', ";
|
||||
if ($mode == 'emoticons')
|
||||
{
|
||||
$pak .= "'" . addslashes($row['emoticon']) . "', ";
|
||||
$pak .= "'" . addslashes($row['code']) . "', ";
|
||||
}
|
||||
$pak .= "\n";
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if ($pak != '')
|
||||
{
|
||||
$db->sql_close();
|
||||
|
||||
header('Content-Type: text/x-delimtext; name="' . $fields . '.pak"');
|
||||
header('Content-disposition: attachment; filename=' . $fields . '.pak"');
|
||||
echo $pak;
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
trigger_error($user->lang['NO_' . $fields . '_EXPORT']);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'move_up':
|
||||
case 'move_down':
|
||||
$image_order = intval($_GET['order']);
|
||||
$order_total = $image_order * 2 + (($action == 'move_up') ? -1 : 1);
|
||||
|
||||
$sql = 'UPDATE ' . $table . '
|
||||
SET ' . $fields . "_order = $order_total - " . $fields . '_order
|
||||
WHERE ' . $fields . "_order IN ($image_order, " . (($action == 'move_up') ? $image_order - 1 : $image_order + 1) . ')';
|
||||
$db->sql_query($sql);
|
||||
|
||||
$cache->destroy('icons');
|
||||
|
||||
// No break; here, display the smilies admin back
|
||||
|
||||
default:
|
||||
|
||||
// By default, check that smile_order is valid and fix it if necessary
|
||||
$result = $db->sql_query('SELECT * FROM ' . $table . ' ORDER BY ' . $fields . '_order');
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$order = 0;
|
||||
do
|
||||
{
|
||||
++$order;
|
||||
if ($row[$fields . '_order'] != $order)
|
||||
{
|
||||
$db->sql_query('UPDATE ' . $table . '
|
||||
SET ' . $fields . '_order = ' . $order . '
|
||||
WHERE ' . $fields . '_id = ' . $row[$fields . '_id']);
|
||||
}
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
// Output the page
|
||||
adm_page_header($user->lang[$lang]);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang[$lang]; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang[$lang .'_EXPLAIN']; ?></p>
|
||||
|
||||
<form method="post" action="admin_icons.<?php echo $phpEx . $SID . '&mode=' . $mode ?>"><table cellspacing="1" cellpadding="0" border="0" align="center">
|
||||
<tr>
|
||||
<td align="right"> <a href="admin_icons.<?php echo $phpEx . $SID . '&mode=' . $mode . '&action=import'; ?>"><?php echo $user->lang['IMPORT_' . $lang]; ?></a> | <a href="admin_icons.<?php echo $phpEx . $SID . '&mode=' . $mode . '&action=export'; ?>"><?php echo $user->lang['EXPORT_' . $lang]; ?></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><table class="bg" width="100%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th><?php echo $user->lang[$lang]; ?></th>
|
||||
<?php
|
||||
|
||||
if ($mode == 'emoticons')
|
||||
{
|
||||
|
||||
?>
|
||||
<th><?php echo $user->lang['CODE']; ?></th>
|
||||
<th><?php echo $user->lang['EMOTION']; ?></th>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
<th><?php echo $user->lang['ACTION']; ?></th>
|
||||
<th><?php echo $user->lang['REORDER']; ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
$spacer = FALSE;
|
||||
|
||||
$sql = 'SELECT *
|
||||
FROM ' . $table . '
|
||||
ORDER BY display_on_posting DESC, ' . $fields . '_order ASC';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
if (!$spacer && !$row['display_on_posting'])
|
||||
{
|
||||
$spacer = TRUE;
|
||||
?>
|
||||
<tr>
|
||||
<td class="row3" colspan="<?php echo ($mode == 'emoticons') ? 5 : 3; ?>" align="center"><?php echo $user->lang[$lang . '_NOT_DISPLAYED'] ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
|
||||
$row_class = ($row_class != 'row1') ? 'row1' : 'row2';
|
||||
|
||||
$alt_text = ($mode == 'emoticon') ? htmlspecialchars($row['code']) : '';
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><img src="<?php echo './../' . $img_path . '/' . $row[$fields . '_url']; ?>" width="<?php echo $row[$fields . '_width']; ?>" height="<?php echo $row[$fields . '_height']; ?>" alt="<?php echo $alt_text; ?>" title="<?php echo $alt_text; ?>" /></td>
|
||||
<?php
|
||||
|
||||
if ($mode == 'emoticons')
|
||||
{
|
||||
|
||||
?>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo htmlspecialchars($row['code']); ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo $row['emoticon']; ?></td>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><a href="<?php echo "admin_icons.$phpEx$SID&mode=$mode&action=edit&id=" . $row[$fields . '_id']; ?>"><?php echo $user->lang['EDIT']; ?></a> | <a href="<?php echo "admin_icons.$phpEx$SID&mode=$mode&action=delete&id=" . $row[$fields . '_id']; ?>"><?php echo $user->lang['DELETE']; ?></a></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><a href="<?php echo "admin_icons.$phpEx$SID&mode=$mode&action=move_up&order=" . $row[$fields . '_order']; ?>"><?php echo $user->lang['MOVE_UP']; ?></a> <br /> <a href="<?php echo "admin_icons.$phpEx$SID&mode=$mode&action=move_down&order=" . $row[$fields . '_order']; ?>"><?php echo $user->lang['MOVE_DOWN']; ?></a></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="cat" colspan="<?php echo ($mode == 'emoticons') ? 5 : 3; ?>" align="center"><input type="submit" name="add" value="<?php echo $user->lang['ADD_' . $lang]; ?>" class="btnmain" /></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
?>
|
@@ -1,94 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* admin_board.php
|
||||
* -------------------
|
||||
* begin : Thursday, Jul 12, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if (!empty($setmodules))
|
||||
{
|
||||
$module['GENERAL']['PHP_INFO'] = ($auth->acl_get('a_server')) ? basename(__FILE__) . $SID : '';
|
||||
return;
|
||||
}
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
// Load default header
|
||||
$phpbb_root_path = '../';
|
||||
require($phpbb_root_path . 'extension.inc');
|
||||
require('pagestart.' . $phpEx);
|
||||
|
||||
|
||||
// Check permissions
|
||||
if (!$auth->acl_get('a_server'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
ob_start();
|
||||
phpinfo(INFO_GENERAL | INFO_CONFIGURATION | INFO_MODULES | INFO_VARIABLES);
|
||||
$phpinfo = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
// Get used layout
|
||||
$layout = (preg_match('#bgcolor#i', $phpinfo)) ? 'old' : 'new';
|
||||
|
||||
// Here we play around a little with the PHP Info HTML to try and stylise
|
||||
// it along phpBB's lines ... hopefully without breaking anything. The idea
|
||||
// for this was nabbed from the PHP annotated manual
|
||||
preg_match_all('#<body[^>]*>(.*)</body>#siU', $phpinfo, $output);
|
||||
|
||||
switch ($layout)
|
||||
{
|
||||
case 'old':
|
||||
$output = preg_replace('#<table#', '<table class="bg"', $output[1][0]);
|
||||
$output = preg_replace('# bgcolor="\#(\w){6}"#', '', $output);
|
||||
$output = preg_replace('#(\w),(\w)#', '\1, \2', $output);
|
||||
$output = preg_replace('#border="0" cellpadding="3" cellspacing="1" width="600"#', 'border="0" cellspacing="1" cellpadding="4" width="95%"', $output);
|
||||
$output = preg_replace('#<tr valign="top"><td align="left">(.*?<a .*?</a>)(.*?)</td></tr>#s', '<tr class="row1"><td style="{background-color: #9999cc;}"><table width="100%" cellspacing="0" cellpadding="0" border="0"><tr><td style="{background-color: #9999cc;}">\2</td><td style="{background-color: #9999cc;}">\1</td></tr></table></td></tr>', $output);
|
||||
$output = preg_replace('#<tr valign="baseline"><td[ ]{0,1}><b>(.*?)</b>#', '<tr><td class="row1" nowrap="nowrap">\1', $output);
|
||||
$output = preg_replace('#<td align="(center|left)">#', '<td class="row2">', $output);
|
||||
$output = preg_replace('#<td>#', '<td class="row2">', $output);
|
||||
$output = preg_replace('#valign="middle"#', '', $output);
|
||||
$output = preg_replace('#<tr >#', '<tr>', $output);
|
||||
$output = preg_replace('#<hr(.*?)>#', '', $output);
|
||||
$output = preg_replace('#<h1 align="center">#i', '<h1>', $output);
|
||||
$output = preg_replace('#<h2 align="center">#i', '<h2>', $output);
|
||||
break;
|
||||
case 'new':
|
||||
$output = preg_replace('#<table#', '<table class="bg" align="center"', $output[1][0]);
|
||||
$output = preg_replace('#(\w),(\w)#', '\1, \2', $output);
|
||||
$output = preg_replace('#border="0" cellpadding="3" width="600"#', 'border="0" cellspacing="1" cellpadding="4" width="95%"', $output);
|
||||
$output = preg_replace('#<tr class="v"><td>(.*?<a .*?</a>)(.*?)</td></tr>#s', '<tr class="row1"><td><table width="100%" cellspacing="0" cellpadding="0" border="0"><tr><td>\2</td><td>\1</td></tr></table></td></tr>', $output);
|
||||
$output = preg_replace('#<td>#', '<td style="{background-color: #9999cc;}">', $output);
|
||||
$output = preg_replace('#class="e"#', 'class="row1" nowrap="nowrap"', $output);
|
||||
$output = preg_replace('#class="v"#', 'class="row2"', $output);
|
||||
$output = preg_replace('# class="h"#', '', $output);
|
||||
$output = preg_replace('#<hr />#', '', $output);
|
||||
preg_match_all('#<div class="center">(.*)</div>#siU', $output, $output);
|
||||
$output = $output[1][0];
|
||||
break;
|
||||
}
|
||||
|
||||
adm_page_header($user->lang['PHP_INFO']);
|
||||
|
||||
echo '<h1>' . $user->lang['PHP_INFO'] . '</h1>';
|
||||
echo '<p>' . $user->lang['PHP_INFO_EXPLAIN'] . '</p>';
|
||||
echo $output;
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
?>
|
@@ -1,233 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* admin_prune.php
|
||||
* -------------------
|
||||
* begin : Mon Jul 31, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if (!empty($setmodules))
|
||||
{
|
||||
if (!$auth->acl_get('a_prune'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$module['FORUM']['PRUNE'] = basename(__FILE__) . $SID . '&mode=forums';
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
// Include files
|
||||
$phpbb_root_path = '../';
|
||||
require($phpbb_root_path . 'extension.inc');
|
||||
require('pagestart.' . $phpEx);
|
||||
|
||||
// Do we have permission?
|
||||
if (!$auth->acl_get('a_prune'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
// Get the forum ID for pruning
|
||||
$forum_id = (isset($_REQUEST['f'])) ? array_map('intval', $_REQUEST['f']) : 0;
|
||||
|
||||
// Check for submit to be equal to Prune. If so then proceed with the pruning.
|
||||
if (isset($_POST['submit']))
|
||||
{
|
||||
$prunedays = (isset($_POST['prunedays'])) ? intval($_POST['prunedays']) : 0;
|
||||
$prune_flags = 0;
|
||||
$prune_flags += (!empty($_POST['prune_old_polls'])) ? 2 : 0;
|
||||
$prune_flags += (!empty($_POST['prune_announce'])) ? 4 : 0;
|
||||
$prune_flags += (!empty($_POST['prune_sticky'])) ? 8 : 0;
|
||||
|
||||
// Convert days to seconds for timestamp functions...
|
||||
$prunedate = time() - ($prunedays * 86400);
|
||||
|
||||
adm_page_header($user->lang['PRUNE']);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['PRUNE']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['PRUNE_SUCCESS']; ?></p>
|
||||
|
||||
<table class="bg" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th><?php echo $user->lang['FORUM']; ?></th>
|
||||
<th><?php echo $user->lang['TOPICS_PRUNED']; ?></th>
|
||||
<th><?php echo $user->lang['POSTS_PRUNED']; ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
$sql_forum = ($forum_id) ? ' AND forum_id IN (' . implode(', ', $forum_id) . ')' : '';
|
||||
|
||||
// Get a list of forum's or the data for the forum that we are pruning.
|
||||
$sql = 'SELECT forum_id, forum_name
|
||||
FROM ' . FORUMS_TABLE . '
|
||||
WHERE forum_type = ' . FORUM_POST . "
|
||||
$sql_forum
|
||||
ORDER BY left_id ASC";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$prune_ids = array();
|
||||
$log_data = '';
|
||||
do
|
||||
{
|
||||
if ($auth->acl_get('f_list', $row['forum_id']))
|
||||
{
|
||||
$p_result = prune($row['forum_id'], $prunedate, $prune_flags, FALSE);
|
||||
$prune_ids[] = $row['forum_id'];
|
||||
|
||||
$row_class = ($row_class == 'row1') ? 'row2' : 'row1';
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo $row['forum_name']; ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo $p_result['topics']; ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo $p_result['posts']; ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
$log_data .= (($log_data != '') ? ', ' : '') . $row['forum_name'];
|
||||
}
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
|
||||
// Sync all pruned forums at once
|
||||
sync('forum', 'forum_id', $prune_ids, TRUE);
|
||||
|
||||
add_log('admin', 'LOG_PRUNE', $log_data);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1" align="center"><?php echo $user->lang['NO_PRUNE']; ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
?>
|
||||
</table>
|
||||
|
||||
<br clear="all" />
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
}
|
||||
|
||||
adm_page_header($user->lang['PRUNE']);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['PRUNE']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['FORUM_PRUNE_EXPLAIN']; ?></p>
|
||||
|
||||
<?php
|
||||
|
||||
// If they haven't selected a forum for pruning yet then
|
||||
// display a select box to use for pruning.
|
||||
if (!$forum_id)
|
||||
{
|
||||
|
||||
?>
|
||||
|
||||
<form method="post" action="<?php echo "admin_prune.$phpEx$SID"; ?>"><table class="bg" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th align="center"><?php echo $user->lang['SELECT_FORUM']; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" align="center"><select name="f[]" multiple="true" size="5"><?php echo make_forum_select(false, false, false); ?></select></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" align="center"><input class="btnmain" type="submit" value="<?php echo $user->lang['LOOK_UP_FORUM']; ?>" /> <input type="reset" value="<?php echo $user->lang['RESET']; ?>" class="btnlite" /></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = 'SELECT forum_id, forum_name
|
||||
FROM ' . FORUMS_TABLE . '
|
||||
WHERE forum_id IN (' . implode(', ', $forum_id) . ')';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if (!($row = $db->sql_fetchrow($result)))
|
||||
{
|
||||
trigger_error($user->lang['NO_FORUM']);
|
||||
}
|
||||
|
||||
$forum_list = $s_hidden_fields = '';
|
||||
do
|
||||
{
|
||||
$forum_list .= (($forum_list != '') ? ', ' : '') . '<b>' . $row['forum_name'] . '</b>';
|
||||
$s_hidden_fields .= '<input type="hidden" name="f[]" value="' . $row['forum_id'] . '" />';
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$l_selected_forums = (sizeof($forum_id) == 1) ? 'SELECTED_FORUM' : 'SELECTED_FORUMS';
|
||||
|
||||
?>
|
||||
|
||||
<h2><?php echo $user->lang['FORUM']; ?></h2>
|
||||
|
||||
<p><?php echo $user->lang[$l_selected_forums] . ': ' . $forum_list; ?></p>
|
||||
|
||||
<form method="post" action="<?php echo "admin_prune.$phpEx$SID"; ?>"><table class="bg" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $user->lang['FORUM_PRUNE']; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang['PRUNE_NOT_POSTED']; ?></td>
|
||||
<td class="row2"><input type="text" name="prune_days" size="4" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang['PRUNE_OLD_POLLS'] ?>: <br /><span class="gensmall"><?php echo $user->lang['PRUNE_OLD_POLLS_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="prune_old_polls" value="1" /> <?php echo $user->lang['YES']; ?> <input type="radio" name="prune_old_polls" value="0" checked="checked" /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang['PRUNE_ANNOUNCEMENTS'] ?>: </td>
|
||||
<td class="row2"><input type="radio" name="prune_announce" value="1" /> <?php echo $user->lang['YES']; ?> <input type="radio" name="prune_announce" value="0" checked="checked" /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang['PRUNE_STICKY'] ?>: </td>
|
||||
<td class="row2"><input type="radio" name="prune_sticky" value="1" /> <?php echo $user->lang['YES']; ?> <input type="radio" name="prune_sticky" value="0" checked="checked" /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><input type="submit" name="submit" value="<?php echo $user->lang['SUBMIT']; ?>" class="btnmain"></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
?>
|
@@ -1,263 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* admin_prune_users.php
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if (!empty($setmodules))
|
||||
{
|
||||
if (!$auth->acl_get('a_userdel'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$module['USER']['PRUNE_USERS'] = basename(__FILE__) . $SID;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
// Include files
|
||||
$phpbb_root_path = '../';
|
||||
require($phpbb_root_path . 'extension.inc');
|
||||
require('pagestart.' . $phpEx);
|
||||
|
||||
// Do we have forum admin permissions?
|
||||
if (!$auth->acl_get('a_userdel'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
// Set mode
|
||||
$mode = (isset($_REQUEST['mode'])) ? htmlspecialchars($_REQUEST['mode']) : '';
|
||||
|
||||
// Do prune
|
||||
if (isset($_POST['prune']))
|
||||
{
|
||||
if (empty($_POST['confirm']))
|
||||
{
|
||||
$values = array('prune', 'deactivate', 'delete', 'users', 'username', 'email', 'joined_select', 'active_select', 'count_select', 'joined', 'active', 'count', 'deleteposts');
|
||||
|
||||
$l_message = '<form method="post" action="admin_prune_users.' . $phpEx . $SID . '">' . $user->lang['Confirm_prune_users'] . '<br /><br /><input class="btnlite" type="submit" name="confirm" value="' . $user->lang['Yes'] . '" /> <input class="btnlite" type="submit" name="cancel" value="' . $user->lang['No'] . '" />';
|
||||
|
||||
foreach ($values as $field)
|
||||
{
|
||||
$l_message .= (!empty($_POST[$field])) ? '<input type="hidden" name="' . $field . '" value="' . urlencode($_POST[$field]) . '" />' : '';
|
||||
}
|
||||
|
||||
$l_message .= '</form>';
|
||||
|
||||
adm_page_header($user->lang['Prune_users']);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['PRUNE_USERS']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['PRUNE_USERS_EXPLAIN']; ?></p>
|
||||
|
||||
<?php
|
||||
|
||||
page_message($user->lang['CONFIRM'], $l_message, false);
|
||||
adm_page_footer();
|
||||
|
||||
}
|
||||
else if (isset($_POST['confirm']))
|
||||
{
|
||||
if (!empty($_POST['users']))
|
||||
{
|
||||
$users = explode("\n", urldecode($_POST['users']));
|
||||
|
||||
$where_sql = '';
|
||||
foreach ($users as $username)
|
||||
{
|
||||
$where_sql .= (($where_sql != '') ? ', ' : '') . '\'' . trim($username) . '\'';
|
||||
}
|
||||
$where_sql = " AND username IN ($where_sql)";
|
||||
}
|
||||
else
|
||||
{
|
||||
$username = (!empty($_POST['username'])) ? urldecode($_POST['username']) : '';
|
||||
$email = (!empty($_POST['email'])) ? urldecode($_POST['email']) : '';
|
||||
|
||||
$joined_select = (!empty($_POST['joined_select'])) ? $_POST['joined_select'] : 'lt';
|
||||
$active_select = (!empty($_POST['active_select'])) ? $_POST['active_select'] :'lt';
|
||||
$count_select = (!empty($_POST['count_select'])) ? $_POST['count_select'] : 'eq';
|
||||
$joined = (!empty($_POST['joined'])) ? explode('-', $_POST['joined']) : array();
|
||||
$active = (!empty($_POST['active'])) ? explode('-', $_POST['active']) :array();
|
||||
$count = (!empty($_POST['count'])) ? intval($_POST['count']) : '';
|
||||
|
||||
$key_match = array('lt' => '<', 'gt' => '>', 'eq' => '=');
|
||||
$sort_by_types = array('username', 'user_email', 'user_posts', 'user_regdate', 'user_lastvisit');
|
||||
|
||||
$where_sql = '';
|
||||
$where_sql .= ($username) ? " AND username LIKE '" . str_replace('*', '%', $username) ."'" : '';
|
||||
$where_sql .= ($email) ? " AND user_email LIKE '" . str_replace('*', '%', $email) ."' " : '';
|
||||
$where_sql .= ($joined) ? " AND user_regdate " . $key_match[$joined_select] . " " . gmmktime(0, 0, 0, intval($joined[1]), intval($joined[2]), intval($joined[0])) : '';
|
||||
$where_sql .= ($count) ? " AND user_posts " . $key_match[$count_select] . " $count " : '';
|
||||
$where_sql .= ($active) ? " AND user_lastvisit " . $key_match[$active_select] . " " . gmmktime(0, 0, 0, $active[1], intval($active[2]), intval($active[0])) : '';
|
||||
}
|
||||
|
||||
$sql = 'SELECT username, user_id FROM ' . USERS_TABLE . '
|
||||
WHERE user_id <> ' . ANONYMOUS . "
|
||||
$where_sql";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$where_sql = '';
|
||||
$user_ids = array();
|
||||
$usernames = array();
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
$where_sql .= (($where_sql != '') ? ', ' : '') . $row['user_id'];
|
||||
$user_ids[] = $row['user_id'];
|
||||
$usernames[] = $row['username'];
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
|
||||
$where_sql = " AND user_id IN ($where_sql)";
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if ($where_sql != '')
|
||||
{
|
||||
$sql = '';
|
||||
if (!empty($_POST['delete']))
|
||||
{
|
||||
if (!empty($_POST['deleteposts']))
|
||||
{
|
||||
// Call unified post deletion routine?
|
||||
|
||||
$l_log = 'LOG_PRUNE_USER_DEL_DEL';
|
||||
}
|
||||
else
|
||||
{
|
||||
for($i = 0; $i < sizeof($user_ids); $i++)
|
||||
{
|
||||
$sql = 'UPDATE ' . POSTS_TABLE . '
|
||||
SET poster_id = ' . ANONYMOUS . ", post_username = '" . $usernames[$i] . "'
|
||||
WHERE user_id = " . $userids[$i];
|
||||
// $db->sql_query($sql);
|
||||
}
|
||||
|
||||
$l_log = 'LOG_PRUNE_USER_DEL_ANON';
|
||||
}
|
||||
|
||||
$sql = 'DELETE FROM ' . USERS_TABLE;
|
||||
}
|
||||
else if (!empty($_POST['deactivate']))
|
||||
{
|
||||
$sql = 'UPDATE ' . USERS_TABLE . "
|
||||
SET user_active = 0";
|
||||
|
||||
$l_log = 'LOG_PRUNE_USER_DEAC';
|
||||
}
|
||||
|
||||
$sql .= ' WHERE user_id <> ' . ANONYMOUS . "
|
||||
$where_sql";
|
||||
// $db->sql_query($sql);
|
||||
|
||||
add_log('admin', $l_log, implode(', ', $usernames));
|
||||
|
||||
unset($user_ids);
|
||||
unset($usernames);
|
||||
}
|
||||
|
||||
trigger_error($user->lang['SUCCESS_USER_PRUNE']);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Front end
|
||||
$find_count = array('lt' => $user->lang['LESS_THAN'], 'eq' => $user->lang['EQUAL_TO'], 'gt' => $user->lang['MORE_THAN']);
|
||||
$s_find_count = '';
|
||||
foreach ($find_count as $key => $value)
|
||||
{
|
||||
$selected = ($key == 'eq') ? ' selected="selected"' : '';
|
||||
$s_find_count .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>';
|
||||
}
|
||||
|
||||
$find_time = array('lt' => $user->lang['BEFORE'], 'gt' => $user->lang['AFTER']);
|
||||
$s_find_join_time = '';
|
||||
foreach ($find_time as $key => $value)
|
||||
{
|
||||
$s_find_join_time .= '<option value="' . $key . '">' . $value . '</option>';
|
||||
}
|
||||
$s_find_active_time = '';
|
||||
foreach ($find_time as $key => $value)
|
||||
{
|
||||
$s_find_active_time .= '<option value="' . $key . '">' . $value . '</option>';
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
adm_page_header($user->lang['PRUNE_USERS']);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['PRUNE_USERS']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['PRUNE_USERS_EXPLAIN']; ?></p>
|
||||
|
||||
<form method="post" name="post" action="<?php echo "admin_prune_users.$phpEx$SID"; ?>"><table class="bg" width="95%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $user->lang['PRUNE_USERS']; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" width="40%"><b><?php echo $user->lang['USERNAME']; ?>: </b></td>
|
||||
<td class="row2"><input class="post" type="text" name="username" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['EMAIL']; ?>: </b></td>
|
||||
<td class="row2"><input class="post" type="text" name="email" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['JOINED']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['Joined_explain']; ?></span></td>
|
||||
<td class="row2"><select name="joined_select"><?php echo $s_find_join_time; ?></select> <input class="post" type="text" name="joined" maxlength="10" size="10" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['LAST_ACTIVE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['Last_active_explain']; ?></span></td>
|
||||
<td class="row2"><select name="active_select"><?php echo $s_find_active_time; ?></select> <input class="post" type="text" name="active" maxlength="10" size="10" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['POSTS']; ?>: </b></td>
|
||||
<td class="row2"><select name="count_select"><?php echo $s_find_count; ?></select> <input class="post" type="text" name="count" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['PRUNE_USERS']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['SELECT_USERS_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><textarea name="users" cols="40" rows="5"></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['DELETE_USER_POSTS']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['DELETE_USER_POSTS_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="deleteposts" value="1" /> <?php echo $user->lang['YES']; ?> <input type="radio" name="deleteposts" value="0" checked="checked" /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><b><?php echo $user->lang['DEACTIVATE_DELETE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['DEACTIVATE_DELETE_EXPLAIN']; ?></span></td>
|
||||
<td class="row2"><input type="radio" name="action" value="delete" /> <?php echo $user->lang['DELETE_USERS']; ?> <input type="radio" name="action" value="deactivate" checked="checked" /> <?php echo $user->lang['DEACTIVATE']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><input class="btnlite" type="submit" name="update" value="<?php echo $user->lang['SUBMIT']; ?>" /> <input type="submit" name="usersubmit" value="<?php echo $user->lang['FIND_USERNAME']; ?>" class="btnlite" onClick="window.open('<?php echo "../search.$phpEx$SID&mode=searchuser&field=users"; ?>', '_phpbbsearch', 'HEIGHT=500,resizable=yes,scrollbars=yes,WIDTH=650');return false;" /><input type="hidden" name="prune" value="1" /></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
?>
|
@@ -1,333 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* admin_ranks.php
|
||||
* -------------------
|
||||
* begin : Thursday, Jul 12, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if (!empty($setmodules))
|
||||
{
|
||||
if (!$auth->acl_get('a_ranks'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$module['USER']['RANKS'] = basename(__FILE__) . $SID;
|
||||
return;
|
||||
}
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
// Let's set the root dir for phpBB
|
||||
$phpbb_root_path = '../';
|
||||
require($phpbb_root_path . 'extension.inc');
|
||||
require('pagestart.' . $phpEx);
|
||||
|
||||
// Do we have permission?
|
||||
if (!$auth->acl_get('a_ranks'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
// Check mode
|
||||
if (isset($_REQUEST['mode']))
|
||||
{
|
||||
$mode = $_REQUEST['mode'];
|
||||
}
|
||||
else
|
||||
{
|
||||
// These could be entered via a form button
|
||||
if (isset($_POST['add']))
|
||||
{
|
||||
$mode = 'add';
|
||||
}
|
||||
else if (isset($_POST['save']))
|
||||
{
|
||||
$mode = 'save';
|
||||
}
|
||||
else
|
||||
{
|
||||
$mode = '';
|
||||
}
|
||||
}
|
||||
|
||||
$rank_id = (isset($_GET['id'])) ? intval($_GET['id']) : 0;
|
||||
|
||||
|
||||
//
|
||||
switch ($mode)
|
||||
{
|
||||
case 'edit':
|
||||
case 'add':
|
||||
|
||||
$data = $ranks = $existing_imgs = array();
|
||||
$result = $db->sql_query('SELECT *
|
||||
FROM ' . RANKS_TABLE . '
|
||||
ORDER BY rank_special DESC, rank_min DESC');
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
$existing_imgs[] = $row['rank_image'];
|
||||
if ($mode == 'edit' && $rank_id == $row['rank_id'])
|
||||
{
|
||||
$ranks = $row;
|
||||
}
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$imglist = filelist($phpbb_root_path . $config['ranks_path'], '');
|
||||
|
||||
$edit_img = $filename_list = '';
|
||||
foreach ($imglist as $path => $img_ary)
|
||||
{
|
||||
foreach ($img_ary as $img)
|
||||
{
|
||||
$img = substr($path, 1) . (($path != '') ? '/' : '') . $img;
|
||||
|
||||
if (!in_array($img, $existing_imgs) || $mode == 'edit')
|
||||
{
|
||||
if ($ranks && $img == $ranks['rank_image'])
|
||||
{
|
||||
$selected = ' selected="selected"';
|
||||
$edit_img = $img;
|
||||
}
|
||||
else
|
||||
{
|
||||
$selected = '';
|
||||
}
|
||||
|
||||
$filename_list .= '<option value="' . htmlspecialchars($img) . '"' . $selected . '>' . $img . '</option>';
|
||||
}
|
||||
}
|
||||
}
|
||||
$filename_list = '<option value=""' . (($edit_img == '') ? ' selected="selected"' : '') . '>----------</option>' . $filename_list;
|
||||
unset($existing_imgs);
|
||||
unset($imglist);
|
||||
|
||||
// They want to add a new rank, show the form.
|
||||
$s_hidden_fields = '<input type="hidden" name="mode" value="save" />';
|
||||
|
||||
adm_page_header($user->lang['RANKS']);
|
||||
|
||||
?>
|
||||
|
||||
<script language="javascript" type="text/javascript" defer="defer">
|
||||
<!--
|
||||
|
||||
function update_image(newimage)
|
||||
{
|
||||
document.image.src = (newimage) ? "<?php echo $phpbb_root_path . $config['ranks_path']; ?>/" + newimage : "../images/spacer.gif";
|
||||
}
|
||||
|
||||
function update_image_dimensions()
|
||||
{
|
||||
if (document.image.height && document.forms[0].height)
|
||||
{
|
||||
document.forms[0].height.value = document.image.height;
|
||||
document.forms[0].width.value = document.image.width;
|
||||
}
|
||||
}
|
||||
|
||||
//-->
|
||||
</script>
|
||||
|
||||
<h1><?php echo $user->lang['RANKS']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['RANKS_EXPLAIN']; ?></p>
|
||||
|
||||
<form method="post" action="<?php echo "admin_ranks.$phpEx$SID&id=$rank_id"; ?>"><table class="bg" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $user->lang['RANKS']; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" width="40%"><?php echo $user->lang['RANK_TITLE']; ?>: </td>
|
||||
<td class="row2"><input class="post" type="text" name="title" size="25" maxlength="40" value="<?php echo $ranks['rank_title']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" width="40%"><?php echo $user->lang['RANK_IMAGE']; ?>:</td>
|
||||
<td class="row2"><table width="100%" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td valign="middle"><select name="rank_image" onchange="update_image(this.options[selectedIndex].value);"><?php echo $filename_list ?></select></td>
|
||||
<td> </td>
|
||||
<td valign="middle"><img src="<?php echo ($edit_img) ? $phpbb_root_path . $config['ranks_path'] . '/' . $edit_img : '../images/spacer.gif' ?>" name="image" border="0" alt="" title="" onload="update_image_dimensions()" /></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang['RANK_SPECIAL']; ?>: </td>
|
||||
<td class="row2"><input type="radio" name="special_rank" value="1"<?php echo ($ranks['rank_special']) ? ' checked="checked"' : ''; ?> /><?php echo $user->lang['YES']; ?> <input type="radio" name="special_rank" value="0"<?php echo (!$ranks['rank_special']) ? ' checked="checked"' : ''; ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang['RANK_MINIMUM']; ?>: </td>
|
||||
<td class="row2"><input class="post" type="text" name="min_posts" size="5" maxlength="10" value="<?php echo ($ranks['rank_special']) ? '' : $ranks['rank_min']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><?php echo $s_hidden_fields; ?><input type="submit" name="submit" value="<?php echo $user->lang['SUBMIT']; ?>" class="btnmain" /> <input type="reset" value="<?php echo $user->lang['RESET']; ?>" class="btnlite" /></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
break;
|
||||
|
||||
case 'save':
|
||||
|
||||
//
|
||||
// Ok, they sent us our info, let's update it.
|
||||
//
|
||||
|
||||
$rank_id = (isset($_REQUEST['id'])) ? intval($_REQUEST['id']) : 0;
|
||||
$rank_title = (isset($_POST['title'])) ? trim($_POST['title']) : '';
|
||||
$special_rank = (!empty($_POST['special_rank'])) ? 1 : 0;
|
||||
$min_posts = (isset($_POST['min_posts'])) ? intval($_POST['min_posts']) : -1;
|
||||
$rank_image = (isset($_POST['rank_image'])) ? trim(htmlspecialchars($_POST['rank_image'])) : '';
|
||||
|
||||
if ($special_rank == 1)
|
||||
{
|
||||
$min_posts = -1;
|
||||
}
|
||||
|
||||
// The rank image has to be a jpg, gif or png
|
||||
if ($rank_image != '' && !preg_match('#(\.gif|\.png|\.jpg|\.jpeg)$#i', $rank_image))
|
||||
{
|
||||
$rank_image = '';
|
||||
}
|
||||
|
||||
if ($rank_id)
|
||||
{
|
||||
$sql = "UPDATE " . RANKS_TABLE . "
|
||||
SET rank_title = '" . $db->sql_escape($rank_title) . "', rank_special = $special_rank, rank_min = $min_posts, rank_image = '" . $db->sql_escape($rank_image) . "'
|
||||
WHERE rank_id = $rank_id";
|
||||
|
||||
$message = $user->lang['RANK_UPDATED'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = "INSERT INTO " . RANKS_TABLE . " (rank_title, rank_special, rank_min, rank_image)
|
||||
VALUES ('" . $db->sql_escape($rank_title) . "', $special_rank, $min_posts, '" . $db->sql_escape($rank_image) . "')";
|
||||
|
||||
$message = $user->lang['RANK_ADDED'];
|
||||
}
|
||||
$db->sql_query($sql);
|
||||
|
||||
$cache->destroy('ranks');
|
||||
|
||||
trigger_error($message);
|
||||
|
||||
break;
|
||||
|
||||
case 'delete':
|
||||
|
||||
// Ok, they want to delete their rank
|
||||
$rank_id = (isset($_REQUEST['id'])) ? intval($_REQUEST['id']) : 0;
|
||||
|
||||
if ($rank_id)
|
||||
{
|
||||
$sql = "DELETE FROM " . RANKS_TABLE . "
|
||||
WHERE rank_id = $rank_id";
|
||||
$db->sql_query($sql);
|
||||
|
||||
$sql = "UPDATE " . USERS_TABLE . "
|
||||
SET user_rank = 0
|
||||
WHERE user_rank = $rank_id";
|
||||
$db->sql_query($sql);
|
||||
|
||||
$cache->destroy('ranks');
|
||||
|
||||
trigger_error($user->lang['RANK_REMOVED']);
|
||||
}
|
||||
else
|
||||
{
|
||||
trigger_error($user->lang['MUST_SELECT_RANK']);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
adm_page_header($user->lang['RANKS']);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['RANKS']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['RANKS_EXPLAIN']; ?></p>
|
||||
|
||||
<form method="post" action="<?php echo "admin_ranks.$phpEx$SID"; ?>"><table class="bg" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th><?php echo $user->lang['RANK_IMAGE']; ?></th>
|
||||
<th><?php echo $user->lang['RANK_TITLE']; ?></th>
|
||||
<th><?php echo $user->lang['RANK_MINIMUM']; ?></th>
|
||||
<th><?php echo $user->lang['ACTION']; ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
// Show the default page
|
||||
$sql = "SELECT * FROM " . RANKS_TABLE . "
|
||||
ORDER BY rank_min ASC, rank_special ASC";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
$row_class = ($row_class != 'row1') ? 'row1' : 'row2';
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php
|
||||
|
||||
if ($row['rank_image'])
|
||||
{
|
||||
|
||||
?><img src="<?php echo $phpbb_root_path . $config['ranks_path'] . '/' . $row['rank_image']; ?>"" border="0" alt="<?php echo $row['rank_title']; ?>" title="<?php echo $row['rank_title']; ?>" /><?php
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '-';
|
||||
}
|
||||
|
||||
?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo $row['rank_title']; ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo ($row['rank_special']) ? '-' : $row['rank_min']; ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"> <a href="<?php echo "admin_ranks.$phpEx$SID&mode=edit&id=" . $row['rank_id']; ?>"><?php echo $user->lang['EDIT']; ?></a> | <a href="<?php echo "admin_ranks.$phpEx$SID&mode=delete&id=" . $row['rank_id']; ?>"><?php echo $user->lang['DELETE']; ?></a> </td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="cat" colspan="5" align="center"><input type="submit" class="btnmain" name="add" value="<?php echo $user->lang['ADD_RANK']; ?>" /></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
?>
|
@@ -1,332 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* admin_search.php
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if (!empty($setmodules))
|
||||
{
|
||||
if (!$auth->acl_get('a_search'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$module['DB']['SEARCH_INDEX'] = basename(__FILE__) . $SID;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
// Include files
|
||||
$phpbb_root_path = '../';
|
||||
require($phpbb_root_path . 'extension.inc');
|
||||
require('pagestart.' . $phpEx);
|
||||
include($phpbb_root_path . 'includes/functions_posting.'.$phpEx);
|
||||
|
||||
// Check permissions
|
||||
if (!$auth->acl_get('a_search'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
// Start indexing
|
||||
if (isset($_POST['start']) || isset($_GET['batchstart']))
|
||||
{
|
||||
$batchsize = 200; // Process this many posts per batch
|
||||
$batchstart = (!isset($_GET['batchstart'])) ? $row['min_post_id'] : $_GET['batchstart'];
|
||||
$batchcount = (!isset($_GET['batchcount'])) ? 1 : $_GET['batchcount'];
|
||||
$loopcount = 0;
|
||||
$batchend = $batchstart + $batchsize;
|
||||
|
||||
// Search re-indexing is tough on the server ... so we'll check the load
|
||||
// each loop and if we're on a 1min load of 3 or more we'll re-load the page
|
||||
// and try again. No idea how well this will work in practice so we'll see ...
|
||||
if (file_exists('/proc/loadavg'))
|
||||
{
|
||||
if ($load = @file('/proc/loadavg'))
|
||||
{
|
||||
list($load) = explode(' ', $load[0]);
|
||||
|
||||
if ($load > 3)
|
||||
{
|
||||
redirect("admin_search.$phpEx$SID&batchstart=$batchstart&batchcount=$batch_count");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Try and load stopword and synonym files
|
||||
$stopword_array = array();
|
||||
$synonym_array = array();
|
||||
|
||||
$dir = opendir($phpbb_root_path . 'language/');
|
||||
while ($file = readdir($dir))
|
||||
{
|
||||
if (preg_match('#^lang_#', $file) && !is_file($phpbb_root_path . 'language/' . $file) && !is_link($phpbb_root_path . 'language/' . $file))
|
||||
{
|
||||
unset($tmp_array);
|
||||
$tmp_array = @file($phpbb_root_path . 'language/' . $file . '/search_stopwords.txt');
|
||||
if (is_array($tmp_array))
|
||||
{
|
||||
$stopword_array = array_unique(array_merge($stopword_array, $tmp_array));
|
||||
}
|
||||
|
||||
unset($tmp_array);
|
||||
$tmp_array = @file($phpbb_root_path . 'language/' . $file . '/search_synonyms.txt');
|
||||
if (is_array($tmp_array))
|
||||
{
|
||||
$synonym_array = array_unique(array_merge($synonym_array, $tmp_array));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
closedir($dir);
|
||||
|
||||
if (!isset($_GET['batchstart']))
|
||||
{
|
||||
// Take board offline
|
||||
set_config('board_disable', 1);
|
||||
|
||||
// Empty existing tables
|
||||
$db->sql_query("TRUNCATE " . SEARCH_TABLE);
|
||||
$db->sql_query("TRUNCATE " . SEARCH_WORD_TABLE);
|
||||
$db->sql_query("TRUNCATE " . SEARCH_MATCH_TABLE);
|
||||
}
|
||||
|
||||
// Fetch a batch of posts_text entries
|
||||
$sql = "SELECT COUNT(*) AS total, MAX(post_id) AS max_post_id, MIN(post_id) AS min_post_id
|
||||
FROM " . POSTS_TEXT_TABLE;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$totalposts = $row['total'];
|
||||
$max_post_id = $row['max_post_id'];
|
||||
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$sql = "SELECT *
|
||||
FROM " . POSTS_TEXT_TABLE . "
|
||||
WHERE post_id
|
||||
BETWEEN $batchstart
|
||||
AND $batchend";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
$post_id = $row['post_id'];
|
||||
|
||||
$search_raw_words = array();
|
||||
$search_raw_words['text'] = split_words(clean_words('post', $row['post_text'], $stopword_array, $synonym_array));
|
||||
$search_raw_words['title'] = split_words(clean_words('post', $row['post_subject'], $stopword_array, $synonym_array));
|
||||
|
||||
$word = array();
|
||||
$word_insert_sql = array();
|
||||
foreach ($search_raw_words as $word_in => $search_matches)
|
||||
{
|
||||
$word_insert_sql[$word_in] = '';
|
||||
if (!empty($search_matches))
|
||||
{
|
||||
for ($i = 0; $i < count($search_matches); $i++)
|
||||
{
|
||||
$search_matches[$i] = trim($search_matches[$i]);
|
||||
|
||||
if ($search_matches[$i] != '')
|
||||
{
|
||||
$word[] = $search_matches[$i];
|
||||
$word_insert_sql[$word_in] .= ($word_insert_sql[$word_in] != '') ? ", '" . $search_matches[$i] . "'" : "'" . $search_matches[$i] . "'";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (count($word))
|
||||
{
|
||||
$word_text_sql = '';
|
||||
$word = array_unique($word);
|
||||
|
||||
for($i = 0; $i < count($word); $i++)
|
||||
{
|
||||
$word_text_sql .= (($word_text_sql != '') ? ', ' : '') . "'" . $word[$i] . "'";
|
||||
}
|
||||
|
||||
$check_words = array();
|
||||
switch(SQL_LAYER)
|
||||
{
|
||||
case 'postgresql':
|
||||
case 'msaccess':
|
||||
case 'mssql-odbc':
|
||||
case 'oracle':
|
||||
case 'db2':
|
||||
$sql = "SELECT word_id, word_text
|
||||
FROM " . SEARCH_WORD_TABLE . "
|
||||
WHERE word_text IN ($word_text_sql)";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$check_words[$row['word_text']] = $row['word_id'];
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
$value_sql = '';
|
||||
$match_word = array();
|
||||
for ($i = 0; $i < count($word); $i++)
|
||||
{
|
||||
$new_match = true;
|
||||
if (isset($check_words[$word[$i]]))
|
||||
{
|
||||
$new_match = false;
|
||||
}
|
||||
|
||||
if ($new_match)
|
||||
{
|
||||
switch(SQL_LAYER)
|
||||
{
|
||||
case 'mysql':
|
||||
case 'mysql4':
|
||||
$value_sql .= (($value_sql != '') ? ', ' : '') . "('" . $word[$i] . "')";
|
||||
break;
|
||||
|
||||
case 'mssql':
|
||||
case 'sqlite':
|
||||
$value_sql .= (($value_sql != '') ? ' UNION ALL ' : '') . "SELECT '" . $word[$i] . "'";
|
||||
break;
|
||||
|
||||
default:
|
||||
$sql = 'INSERT INTO ' . SEARCH_WORD_TABLE . " (word_text)
|
||||
VALUES ('" . $word[$i] . "')";
|
||||
$db->sql_query($sql);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($value_sql != '')
|
||||
{
|
||||
switch (SQL_LAYER)
|
||||
{
|
||||
case 'mysql':
|
||||
case 'mysql4':
|
||||
$sql = 'INSERT IGNORE INTO ' . SEARCH_WORD_TABLE . " (word_text)
|
||||
VALUES $value_sql";
|
||||
break;
|
||||
|
||||
case 'mssql':
|
||||
case 'sqlite':
|
||||
$sql = 'INSERT INTO ' . SEARCH_WORD_TABLE . " (word_text)
|
||||
$value_sql";
|
||||
break;
|
||||
}
|
||||
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($word_insert_sql as $word_in => $match_sql)
|
||||
{
|
||||
$title_match = ($word_in == 'title') ? 1 : 0;
|
||||
|
||||
if ($match_sql != '')
|
||||
{
|
||||
$sql = 'INSERT INTO ' . SEARCH_MATCH_TABLE . " (post_id, word_id, title_match)
|
||||
SELECT $post_id, word_id, $title_match
|
||||
FROM " . SEARCH_WORD_TABLE . "
|
||||
WHERE word_text IN ($match_sql)";
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
// Remove common words after the first 2 batches and after every 4th batch after that.
|
||||
if ($batchcount % 4 == 3)
|
||||
{
|
||||
// remove_common('global', $config['common_search']);
|
||||
}
|
||||
|
||||
$batchcount++;
|
||||
|
||||
if (($batchstart + $batchsize) < $max_post_id)
|
||||
{
|
||||
redirect("Location: admin_search.$phpEx$SID&batchstart=" . ($batchstart + $batchsize) . "&batchcount=$batch_count");
|
||||
}
|
||||
else
|
||||
{
|
||||
set_config('board_disable', 0);
|
||||
adm_page_header($user->lang['SEARCH_INDEX']);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['SEARCH_INDEX']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['SEARCH_INDEX_COMPLETE']; ?></p>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
}
|
||||
|
||||
exit;
|
||||
|
||||
}
|
||||
else if (isset($_POST['cancel']))
|
||||
{
|
||||
set_config('board_disable', 0);
|
||||
adm_page_header($user->lang['SEARCH_INDEX']);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['SEARCH_INDEX']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['SEARCH_INDEX_CANCEL']; ?></p>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
adm_page_header($user->lang['Search_index']);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['SEARCH_INDEX']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['SEARCH_INDEX_EXPLAIN']; ?></p>
|
||||
|
||||
<form method="post" action="<?php echo "admin_search.$phpEx$SID"; ?>"><table cellspacing="1" cellpadding="4" border="0" align="center" bgcolor="#98AAB1">
|
||||
<tr>
|
||||
<td class="cat" height="28" align="center"> <input type="submit" name="start" value="<?php echo $user->lang['START']; ?>" class="btnmain" /> <input type="submit" name="cancel" value="<?php echo $user->lang['CANCEL']; ?>" class="btnmain" /> </td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
}
|
||||
|
||||
?>
|
@@ -1,353 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* admin_users.php
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if (!empty($setmodules))
|
||||
{
|
||||
if (!$auth->acl_gets('a_user', 'a_useradd', 'a_userdel'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$module['USER']['MANAGE'] = basename(__FILE__) . $SID;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
// Include files
|
||||
$phpbb_root_path = '../';
|
||||
$phpEx = substr(strrchr(__FILE__, '.'), 1);
|
||||
require('pagestart.' . $phpEx);
|
||||
|
||||
|
||||
// Set mode
|
||||
$mode = (isset($_REQUEST['mode'])) ? htmlspecialchars($_REQUEST['mode']) : '';
|
||||
$action = (isset($_REQUEST['action'])) ? htmlspecialchars($_REQUEST['action']) : 'main';
|
||||
|
||||
|
||||
// Begin program
|
||||
if (isset($_POST['username']) || isset($_REQUEST['u']))
|
||||
{
|
||||
// Grab relevant userdata
|
||||
if (isset($_REQUEST['u']))
|
||||
{
|
||||
$user_id = intval($_REQUEST['u']);
|
||||
|
||||
if(!($userdata = get_userdata($user_id)))
|
||||
{
|
||||
trigger_error($user->lang['NO_USER']);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!$userdata = get_userdata($_POST['username']))
|
||||
{
|
||||
trigger_error($user->lang['NO_USER']);
|
||||
}
|
||||
}
|
||||
|
||||
// Update entry in DB
|
||||
if ($_POST['deleteuser'] && !$userdata['user_founder'])
|
||||
{
|
||||
if (!$auth->acl_get('a_userdel'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
$db->sql_transaction();
|
||||
|
||||
$sql = 'UPDATE ' . POSTS_TABLE . '
|
||||
SET poster_id = ' . ANONYMOUS . "
|
||||
WHERE poster_id = $user_id";
|
||||
$db->sql_query($sql);
|
||||
|
||||
$sql = 'UPDATE ' . TOPICS_TABLE . '
|
||||
SET topic_poster = ' . ANONYMOUS . "
|
||||
WHERE topic_poster = $user_id";
|
||||
$db->sql_query($sql);
|
||||
|
||||
$table_ary = array(USERS_TABLE, USER_GROUP_TABLE, TOPICS_WATCH_TABLE, FORUMS_WATCH_TABLE, ACL_USERS_TABLE);
|
||||
|
||||
foreach ($table_ary as $table)
|
||||
{
|
||||
$sql = "DELETE FROM $table
|
||||
WHERE user_id = $user_id";
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
$db->sql_transaction('commit');
|
||||
|
||||
trigger_error($user->lang['User_deleted']);
|
||||
}
|
||||
|
||||
|
||||
// Output relevant page
|
||||
adm_page_header($user->lang['MANAGE']);
|
||||
|
||||
?>
|
||||
|
||||
<form method="post" action="admin_users.<?php echo $phpEx . $SID; ?>&mode=<?php echo $mode; ?>&u=<?php echo $userdata['user_id']; ?>"><table width="90%" cellspacing="3" cellpadding="0" border="0" align="center">
|
||||
<tr>
|
||||
<td align="right"><b>Main</b> | <a href="admin_users.<?php echo $phpEx . $SID; ?>&u=<?php echo $userdata['user_id']; ?>&action=profile">Profile</a> | <a href="admin_users.<?php echo $phpEx . $SID; ?>&u=<?php echo $userdata['user_id']; ?>&action=pref">Preferences</a> | <a href="admin_users.<?php echo $phpEx . $SID; ?>&u=<?php echo $userdata['user_id']; ?>&action=avatar">Avatar</a> | <a href="admin_users.<?php echo $phpEx . $SID; ?>&u=<?php echo $userdata['user_id']; ?>&action=permissions">Permissions</a></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
switch ($action)
|
||||
{
|
||||
case 'main':
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td><table class="bg" width="100%" cellspacing="1" cellpadding="4" border="0">
|
||||
<tr>
|
||||
<td class="row1">Username: <br /><span class="gensmall">Click profile to edit</span></td>
|
||||
<td class="row2"><?php echo $userdata['username']; ?> [ <a href="admin_ban.<?php echo $phpEx . $SID; ?>&mode=user&ban=<?php echo $userdata['username']; ?>&bansubmit=true">Ban</a> ]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1">Registered: </td>
|
||||
<td class="row2"><?php echo $user->format_date($userdata['user_regdate']); ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1">Registered from IP: </td>
|
||||
<td class="row2"><?php if ($userdata['user_ip']) { echo $userdata['user_ip']; ?> [ <a href="admin_users.<?php echo $phpEx . $SID; ?>&u=<?php echo $userdata['user_id']; ?>&mode=main&do=iplookup">Lookup</a> | <a href="admin_ban.<?php echo $phpEx . $SID; ?>&mode=ip&ban=<?php echo $userdata['user_ip']; ?>&bansubmit=true">Ban</a> ] <?php } else { echo 'Unknown'; } ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
if (isset($_GET['do']) && $_GET['do'] == 'iplookup')
|
||||
{
|
||||
if ($userdata['user_ip'] != '' && $domain = gethostbyaddr($userdata['user_ip']))
|
||||
{
|
||||
?>
|
||||
<tr>
|
||||
<th colspan="2">IP whois for <?php echo $domain; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" colspan="2"><?php
|
||||
|
||||
if ($ipwhois = ipwhois($userdata['user_ip']))
|
||||
{
|
||||
echo '<br /><pre align="left">' . trim($ipwhois) . '</pre>';
|
||||
}
|
||||
?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1">Total/Average posts by this user: </td>
|
||||
<td class="row2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"></td>
|
||||
<td class="row2"></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
break;
|
||||
|
||||
case 'permissions':
|
||||
|
||||
$userauth = new auth();
|
||||
$userauth->acl($userdata);
|
||||
|
||||
foreach ($acl_options['global'] as $option_name => $option_id)
|
||||
{
|
||||
$type = substr($option_name, 0, strpos('_', $option_name) +1);
|
||||
$global[$type][$option_name] = $userauth->acl_get($option_name);
|
||||
}
|
||||
|
||||
$sql = "SELECT forum_id, forum_name
|
||||
FROM " . FORUMS_TABLE . "
|
||||
ORDER BY left_id";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$permissions = array();
|
||||
while($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$forum_data[$row['forum_id']] = $row['forum_name'];
|
||||
|
||||
foreach ($acl_options['local'] as $option_name => $option_id)
|
||||
{
|
||||
$local[$row['forum_id']][$option_name] = $userauth->acl_get($option_name, $row['forum_id']);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td colspan="2"><table class="bg" width="100%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<td class="cat" colspan="3" align="right">Select permission set: <select name="acl_type"><?php
|
||||
|
||||
$acl_types = '<option>Global Settings</option><option>---------------</option>';
|
||||
$acl_types .= '<option value="a">' . $user->lang['ADMINISTRATOR'] . '</option><option value="u">' . $user->lang['USER'] . '</option>';
|
||||
$acl_types .= '<option>Forum Settings</option><option>---------------</option>';
|
||||
$acl_types .= make_forum_select(false, false, false);
|
||||
|
||||
echo $acl_types;
|
||||
|
||||
?></select> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th> <?php echo $user->lang['Option']; ?> </th>
|
||||
<th> <?php echo $user->lang['Allow']; ?> </th>
|
||||
<th> <?php echo $user->lang['Deny']; ?> </th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
foreach ($global as $type => $auth_ary)
|
||||
{
|
||||
foreach ($auth_ary as $option => $allow)
|
||||
{
|
||||
if ($option != $type .'_')
|
||||
{
|
||||
$row_class = ($row_class == 'row1') ? 'row2' : 'row1';
|
||||
|
||||
$l_can_cell = (!empty($user->lang['acl_' . $option])) ? $user->lang['acl_' . $option] : ucfirst(preg_replace('#.*?_#', '', $option));
|
||||
|
||||
$allow_type = ($allow == ACL_ALLOW) ? ' checked="checked"' : '';
|
||||
$deny_type = ($allow == ACL_DENY) ? ' checked="checked"' : '';
|
||||
?>
|
||||
<tr>
|
||||
<td class="<?php echo $row_class; ?>"><?php echo $l_can_cell; ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><input type="radio"<?php echo $allow_type; ?> /></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><input type="radio"<?php echo $deny_type; ?> /></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<?php
|
||||
|
||||
foreach ($local as $forum_id => $auth_ary)
|
||||
{
|
||||
|
||||
?>
|
||||
<td class="row1"><?php echo $forum_data[$forum_id]; ?></td>
|
||||
<td><table cellspacing="1" cellpadding="0" border="0">
|
||||
<?php
|
||||
|
||||
foreach ($auth_ary as $option => $allow)
|
||||
{
|
||||
echo '<tr><td>' . $user->lang['acl_' . $option] . ' => ' . (($allow) ? 'Allowed' : 'Denied') . '</td></tr>';
|
||||
}
|
||||
|
||||
?>
|
||||
</table></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
}
|
||||
|
||||
// Do we have permission?
|
||||
if (!$auth->acl_get('a_user'))
|
||||
{
|
||||
trigger_error($user->lang['No_admin']);
|
||||
}
|
||||
|
||||
adm_page_header($user->lang['Manage']);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['User_admin']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['User_admin_explain']; ?></p>
|
||||
|
||||
<form method="post" name="post" action="admin_users.<?php echo $phpEx.$SID; ?>"><table class="bg" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th align="center"><?php echo $user->lang['Select_a_User']; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" align="center"><input type="text" class="post" name="username" maxlength="50" size="20" /> <input type="submit" name="submituser" value="<?php echo $user->lang['Look_up_user']; ?>" class="btnmain" /> <input type="submit" name="usersubmit" value="<?php echo $user->lang['Find_username']; ?>" class="btnlite" onclick="window.open('<?php echo "../memberlist.$phpEx$SID&mode=searchuser&field=username"; ?>', '_phpbbsearch', 'HEIGHT=500,resizable=yes,scrollbars=yes,WIDTH=740');return false;" /></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
// ---------
|
||||
// FUNCTIONS
|
||||
function ipwhois($ip)
|
||||
{
|
||||
$ipwhois = '';
|
||||
|
||||
$match = array(
|
||||
'#RIPE\.NET#is' => 'whois.ripe.net',
|
||||
'#whois\.apnic\.net#is' => 'whois.apnic.net',
|
||||
'#nic\.ad\.jp#is' => 'whois.nic.ad.jp',
|
||||
'#whois\.registro\.br#is' => 'whois.registro.br'
|
||||
);
|
||||
|
||||
if (($fsk = fsockopen('whois.arin.net', 43)))
|
||||
{
|
||||
@fputs($fsk, "$ip\n");
|
||||
while (!feof($fsk))
|
||||
{
|
||||
$ipwhois .= fgets($fsk, 1024);
|
||||
}
|
||||
fclose($fsk);
|
||||
}
|
||||
|
||||
foreach (array_keys($match) as $server)
|
||||
{
|
||||
if (preg_match($server, $ipwhois))
|
||||
{
|
||||
$ipwhois = '';
|
||||
if (($fsk = fsockopen($match[$server], 43)))
|
||||
{
|
||||
@fputs($fsk, "$ip\n");
|
||||
while (!feof($fsk))
|
||||
{
|
||||
$ipwhois .= fgets($fsk, 1024);
|
||||
}
|
||||
fclose($fsk);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return $ipwhois;
|
||||
}
|
||||
// FUNCTIONS
|
||||
// ---------
|
||||
|
||||
?>
|
@@ -1,227 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* admin_viewlogs.php
|
||||
* -------------------
|
||||
* begin : Friday, May 11, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if (!empty($setmodules))
|
||||
{
|
||||
if (!$auth->acl_get('a_'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$filename = basename(__FILE__);
|
||||
$module['LOG']['ADMIN_LOGS'] = $filename . "$SID&mode=admin";
|
||||
$module['LOG']['MOD_LOGS'] = $filename . "$SID&mode=mod";
|
||||
$module['LOG']['CRITICAL_LOGS'] = $filename . "$SID&mode=critical";
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
// Include files
|
||||
$phpbb_root_path = '../';
|
||||
require($phpbb_root_path . 'extension.inc');
|
||||
require('pagestart.' . $phpEx);
|
||||
|
||||
// Do we have styles admin permissions?
|
||||
if (!$auth->acl_get('a_'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
|
||||
// Set some variables
|
||||
$forum_id = (isset($_REQUEST['f'])) ? intval($_REQUEST['f']) : 0;
|
||||
$start = (isset($_GET['start'])) ? intval($_GET['start']) : 0;
|
||||
$mode = (isset($_REQUEST['mode'])) ? $_REQUEST['mode'] : 'admin';
|
||||
|
||||
|
||||
// Sort keys
|
||||
$sort_days = (!empty($_REQUEST['st'])) ? max(intval($_REQUEST['st']), 0) : 0;
|
||||
$sort_key = (!empty($_REQUEST['sk'])) ? htmlspecialchars($_REQUEST['sk']) : 't';
|
||||
$sort_dir = (!empty($_REQUEST['sd'])) ? htmlspecialchars($_REQUEST['sd']) : 'd';
|
||||
|
||||
|
||||
// Define some vars depending on which logs we're looking at
|
||||
$log_type = ($mode == 'admin') ? LOG_ADMIN : (($mode == 'mod') ? LOG_MOD : LOG_CRITICAL);
|
||||
$l_title = $user->lang[strtoupper($mode) . '_LOGS'];
|
||||
$l_title_explain = $user->lang[strtoupper($mode) . '_LOGS_EXPLAIN'];
|
||||
|
||||
|
||||
// Delete entries if requested and able
|
||||
if ((isset($_POST['delmarked']) || isset($_POST['delall'])) && $auth->acl_get('a_clearlogs'))
|
||||
{
|
||||
$where_sql = '';
|
||||
if (isset($_POST['delmarked']) && isset($_POST['mark']))
|
||||
{
|
||||
foreach ($_POST['mark'] as $marked)
|
||||
{
|
||||
$where_sql .= (($where_sql != '') ? ', ' : '') . intval($marked);
|
||||
}
|
||||
$where_sql = "WHERE log_type = $log_type AND log_id IN ($where_sql)";
|
||||
}
|
||||
|
||||
$sql = "DELETE FROM " . LOG_TABLE . "
|
||||
$where_sql";
|
||||
$db->sql_query($sql);
|
||||
|
||||
add_log('admin', 'log_' . $mode . '_clear');
|
||||
}
|
||||
|
||||
|
||||
// Sorting
|
||||
$limit_days = array(0 => $user->lang['ALL_ENTRIES'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 364 => $user->lang['1_YEAR']);
|
||||
$sort_by_text = array('u' => $user->lang['SORT_USERNAME'], 't' => $user->lang['SORT_DATE'], 'i' => $user->lang['SORT_IP'], 'o' => $user->lang['SORT_ACTION']);
|
||||
$sort_by_sql = array('u' => 'l.user_id', 't' => 'l.log_time', 'i' => 'l.log_ip', 'o' => 'l.log_operation');
|
||||
|
||||
$s_limit_days = $s_sort_key = $s_sort_dir = '';
|
||||
gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir);
|
||||
|
||||
// Define where and sort sql for use in displaying logs
|
||||
$sql_where = ($sort_days) ? (time() - ($sort_days * 86400)) : 0;
|
||||
$sql_sort = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC');
|
||||
|
||||
|
||||
// Output page
|
||||
adm_page_header($l_title);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $l_title; ?></h1>
|
||||
|
||||
<p><?php echo $l_title_explain; ?></p>
|
||||
|
||||
<form method="post" action="<?php echo "admin_viewlogs.$phpEx$SID&mode=$mode"; ?>">
|
||||
<?php
|
||||
|
||||
// Define forum list if we're looking @ mod logs
|
||||
if ($mode == 'mod')
|
||||
{
|
||||
|
||||
$forum_box = '<option value="0">' . $user->lang['ALL_FORUMS'] . '</option>' . make_forum_select($forum_id);
|
||||
|
||||
?>
|
||||
<table width="100%" cellpadding="1" cellspacing="1" border="0">
|
||||
<tr>
|
||||
<td align="right"><?php echo $user->lang['SELECT_FORUM']; ?>: <select name="f" onchange="if(this.options[this.selectedIndex].value != -1){ this.form.submit() }"><?php echo $forum_box; ?></select> <input class="btnlite" type="submit" value="<?php echo $user->lang['GO']; ?>" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<table class="bg" width="100%" cellpadding="4" cellspacing="1" border="0">
|
||||
<tr>
|
||||
<td class="cat" colspan="5" height="28" align="center"><?php echo $user->lang['DISPLAY_LOG']; ?>: <?php echo $s_limit_days; ?> <?php echo $user->lang['SORT_BY']; ?>: <?php echo $s_sort_key; ?> <?php echo $s_sort_dir; ?> <input class="btnlite" type="submit" value="<?php echo $user->lang['GO']; ?>" name="sort" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th width="15%" height="25" nowrap="nowrap"><?php echo $user->lang['USERNAME']; ?></th>
|
||||
<th width="15%" nowrap="nowrap"><?php echo $user->lang['IP']; ?></th>
|
||||
<th width="20%" nowrap="nowrap"><?php echo $user->lang['TIME']; ?></th>
|
||||
<th width="45%" nowrap="nowrap"><?php echo $user->lang['ACTION']; ?></th>
|
||||
<th nowrap="nowrap"><?php echo $user->lang['MARK']; ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
//
|
||||
// Grab log data
|
||||
//
|
||||
$log_data = array();
|
||||
$log_count = 0;
|
||||
view_log($mode, $log_data, $log_count, $config['topics_per_page'], $start, $forum_id, 0, $sql_where, $sql_sort);
|
||||
|
||||
if ($log_count)
|
||||
{
|
||||
for($i = 0; $i < sizeof($log_data); $i++)
|
||||
{
|
||||
$row_class = ($row_class == 'row1') ? 'row2' : 'row1';
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="<?php echo $row_class; ?>" nowrap="nowrap"><?php echo $log_data[$i]['username']; ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center" nowrap="nowrap"><?php echo $log_data[$i]['ip']; ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center" nowrap="nowrap"><?php echo $user->format_date($log_data[$i]['time']); ?></td>
|
||||
<td class="<?php echo $row_class; ?>"><?php echo $log_data[$i]['action']; ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center" nowrap="nowrap"><input type="checkbox" name="mark[]" value="<?php echo $log_data[$i]['id']; ?>" /></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
if ($auth->acl_get('a_clearlogs'))
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="cat" colspan="5" height="28" align="right"><input class="btnlite" type="submit" name="delmarked" value="<?php echo $user->lang['DELETE_MARKED']; ?>" /> <input class="btnlite" type="submit" name="delall" value="<?php echo $user->lang['DELETE_ALL']; ?>" /> </td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1" colspan="5" align="center" nowrap="nowrap"><?php echo $user->lang['NO_ENTRIES']; ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
</table>
|
||||
|
||||
<table width="100%" cellspacing="2" cellpadding="2" border="0" align="center">
|
||||
<tr>
|
||||
<td align="left" valign="top"> <span class="nav"><?php echo on_page($log_count, $config['topics_per_page'], $start); ?></span></td>
|
||||
<td align="right" valign="top" nowrap="nowrap"><span class="nav"><?php
|
||||
|
||||
if ($auth->acl_get('a_clearlogs'))
|
||||
{
|
||||
|
||||
|
||||
?><b><a href="javascript:marklist(true);"><?php echo $user->lang['MARK_ALL']; ?></a> :: <a href="javascript:marklist(false);"><?php echo $user->lang['UNMARK_ALL']; ?></a></b> <br /><br /><?php
|
||||
|
||||
}
|
||||
|
||||
echo generate_pagination("admin_viewlogs.$phpEx$SID&mode=$mode&st=$sort_days&sk=$sort_key&sd=$sort_dir", $log_count, $config['topics_per_page'], $start); ?></span></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<script language="Javascript" type="text/javascript">
|
||||
<!--
|
||||
function marklist(status)
|
||||
{
|
||||
for (i = 0; i < document.log.length; i++)
|
||||
{
|
||||
document.log.elements[i].checked = status;
|
||||
}
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
?>
|
@@ -1,229 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* admin_words.php
|
||||
* -------------------
|
||||
* begin : Thursday, Jul 12, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if (!empty($setmodules))
|
||||
{
|
||||
if (!$auth->acl_get('a_words'))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$module['POST']['WORD_CENSOR'] = basename(__FILE__) . $SID;
|
||||
return;
|
||||
}
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
// Include files
|
||||
$phpbb_root_path = '../';
|
||||
require($phpbb_root_path . 'extension.inc');
|
||||
require('pagestart.' . $phpEx);
|
||||
|
||||
// Do we have forum admin permissions?
|
||||
if (!$auth->acl_get('a_words'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
// What do we want to do?
|
||||
if (isset($_REQUEST['mode']))
|
||||
{
|
||||
$mode = $_REQUEST['mode'];
|
||||
}
|
||||
else
|
||||
{
|
||||
// These could be entered via a form button
|
||||
if (isset($_POST['add']))
|
||||
{
|
||||
$mode = 'add';
|
||||
}
|
||||
else if (isset($_POST['save']))
|
||||
{
|
||||
$mode = 'save';
|
||||
}
|
||||
else
|
||||
{
|
||||
$mode = '';
|
||||
}
|
||||
}
|
||||
|
||||
if ($mode != '')
|
||||
{
|
||||
switch ($mode)
|
||||
{
|
||||
case 'edit':
|
||||
case 'add':
|
||||
$word_id = (isset($_GET['id'])) ? intval($_GET['id']) : 0;
|
||||
|
||||
$s_hidden_fields = '';
|
||||
if ($mode == 'edit')
|
||||
{
|
||||
if (!$word_id)
|
||||
{
|
||||
trigger_error($user->lang['NO_WORD']);
|
||||
}
|
||||
|
||||
$sql = "SELECT *
|
||||
FROM " . WORDS_TABLE . "
|
||||
WHERE word_id = $word_id";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$word_info = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$s_hidden_fields .= '<input type="hidden" name="id" value="' . $word_id . '" />';
|
||||
}
|
||||
|
||||
adm_page_header($user->lang['WORDS_TITLE']);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['WORDS_TITLE']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['WORDS_EXPLAIN']; ?></p>
|
||||
|
||||
<form method="post" action="<?php echo "admin_words.$phpEx$SID"; ?>"><table class="bg" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th colspan="2"><?php echo $user->lang['EDIT_WORD']; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang['WORD']; ?></td>
|
||||
<td class="row2"><input class="post" type="text" name="word" value="<?php echo $word_info['word']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><?php echo $user->lang['REPLACEMENT']; ?></td>
|
||||
<td class="row2"><input class="post" type="text" name="replacement" value="<?php echo $word_info['replacement']; ?>" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="2" align="center"><?php echo $s_hidden_fields; ?><input class="btnmain" type="submit" name="save" value="<?php echo $user->lang['SUBMIT']; ?>" /></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
break;
|
||||
|
||||
case 'save':
|
||||
$word_id = (isset($_POST['id'])) ? intval($_POST['id']) : 0;
|
||||
$word = (isset($_POST['word'])) ? trim($_POST['word']) : '';
|
||||
$replacement = (isset($_POST['replacement'])) ? trim($_POST['replacement']) : '';
|
||||
|
||||
if ($word == '' || $replacement == '')
|
||||
{
|
||||
trigger_error($user->lang['ENTER_WORD']);
|
||||
}
|
||||
|
||||
$sql = ($word_id) ? "UPDATE " . WORDS_TABLE . " SET word = '" . $db->sql_escape($word) . "', replacement = '" . $db->sql_escape($replacement) . "' WHERE word_id = $word_id" : "INSERT INTO " . WORDS_TABLE . " (word, replacement) VALUES ('" . $db->sql_escape($word) . "', '" . $db->sql_escape($replacement) . "')";
|
||||
$db->sql_query($sql);
|
||||
|
||||
$cache->destroy('word_censors');
|
||||
|
||||
$log_action = ($word_id) ? 'log_edit_word' : 'log_add_word';
|
||||
add_log('admin', $log_action, stripslashes($word));
|
||||
|
||||
$message = ($word_id) ? $user->lang['WORD_UPDATED'] : $user->lang['WORD_ADDED'];
|
||||
break;
|
||||
|
||||
case 'delete':
|
||||
|
||||
if (isset($_POST['id']) || isset($_GET['id']))
|
||||
{
|
||||
$word_id = (isset($_POST['id'])) ? intval($_POST['id']) : intval($_GET['id']);
|
||||
}
|
||||
else
|
||||
{
|
||||
trigger_error($user->lang['NO_WORD']);
|
||||
}
|
||||
|
||||
$sql = "DELETE FROM " . WORDS_TABLE . "
|
||||
WHERE word_id = $word_id";
|
||||
$db->sql_query($sql);
|
||||
|
||||
$cache->destroy('word_censors');
|
||||
|
||||
add_log('admin', 'log_delete_word');
|
||||
|
||||
$message = $user->lang['WORD_REMOVE'];
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
trigger_error($message);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
adm_page_header($user->lang['WORDS_TITLE']);
|
||||
|
||||
?>
|
||||
|
||||
<h1><?php echo $user->lang['WORDS_TITLE']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['WORDS_EXPLAIN']; ?></p>
|
||||
|
||||
<form method="post" action="admin_words.<?php echo $phpEx . $SID; ?>"><table class="bg" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<th><?php echo $user->lang['WORD']; ?></th>
|
||||
<th><?php echo $user->lang['REPLACEMENT']; ?></th>
|
||||
<th colspan="2"><?php echo $user->lang['ACTION']; ?></th>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
|
||||
$sql = "SELECT *
|
||||
FROM " . WORDS_TABLE . "
|
||||
ORDER BY word";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
$row_class = ($row_class == 'row1') ? 'row2' : 'row1';
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo $row['word']; ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo $row['replacement']; ?></td>
|
||||
<td class="<?php echo $row_class; ?>"> <a href="<?php echo "admin_words.$phpEx$SID&mode=edit&id=" . $row['word_id']; ?>"><?php echo $user->lang['EDIT']; ?></a> </td>
|
||||
<td class="<?php echo $row_class; ?>"> <a href="<?php echo "admin_words.$phpEx$SID&mode=delete&id=" . $row['word_id']; ?>"><?php echo $user->lang['DELETE']; ?></a> </td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="cat" colspan="5" height="28" align="center"><?php echo $s_hidden_fields; ?><input class="btnmain" type="submit" name="add" value="<?php echo $user->lang['ADD_WORD']; ?>" /></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
}
|
||||
|
||||
?>
|
Before Width: | Height: | Size: 246 B |
Before Width: | Height: | Size: 826 B |
Before Width: | Height: | Size: 385 B |
Before Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 677 B |
Before Width: | Height: | Size: 714 B |
Before Width: | Height: | Size: 673 B |
Before Width: | Height: | Size: 705 B |
Before Width: | Height: | Size: 401 B |
@@ -1,647 +0,0 @@
|
||||
<?php
|
||||
// -------------------------------------------------------------
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// FILENAME : adm/index.php
|
||||
// STARTED : Sat Feb 13, 2001
|
||||
// COPYRIGHT : <20> 2003 phpBB Group
|
||||
// WWW : http://www.phpbb.com/
|
||||
// LICENCE : GPL vs2.0 [ see /docs/COPYING ]
|
||||
//
|
||||
// -------------------------------------------------------------
|
||||
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
|
||||
// Include files
|
||||
$phpbb_root_path = '../';
|
||||
require($phpbb_root_path . 'extension.inc');
|
||||
require('pagestart.' . $phpEx);
|
||||
|
||||
// Do we have any admin permissions at all?
|
||||
if (!$auth->acl_get('a_'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
|
||||
// Define some vars
|
||||
$pane = (!empty($_GET['pane'])) ? htmlspecialchars($_GET['pane']) : '';
|
||||
|
||||
|
||||
// Generate relevant output
|
||||
if ($pane == 'top')
|
||||
{
|
||||
adm_page_header('', '', false);
|
||||
|
||||
?>
|
||||
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td><a href="<?php echo "../index.$phpEx$SID"; ?>" target="_top"><img src="images/header_left.jpg" width="200" height="60" alt="phpBB Logo" title="phpBB Logo" border="0"/></a></td>
|
||||
<td width="100%" background="images/header_bg.jpg" height="60" align="right" nowrap="nowrap"><span class="maintitle"><?php echo $user->lang['ADMIN_TITLE']; ?></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<?php
|
||||
|
||||
adm_page_footer(false);
|
||||
|
||||
}
|
||||
else if ($pane == 'left')
|
||||
{
|
||||
// Cheat and use the meta tag to change some stylesheet info
|
||||
adm_page_header('', '<style type="text/css">body {background-color: #98AAB1}</style>', false);
|
||||
|
||||
// Grab module information using Bart's "neat-o-module" system (tm)
|
||||
$dir = @opendir('.');
|
||||
|
||||
$setmodules = 1;
|
||||
while ($file = @readdir($dir))
|
||||
{
|
||||
if (preg_match('#^admin_(.*?)\.' . $phpEx . '$#', $file))
|
||||
{
|
||||
include($file);
|
||||
}
|
||||
}
|
||||
|
||||
@closedir($dir);
|
||||
|
||||
unset($setmodules);
|
||||
|
||||
?>
|
||||
|
||||
<table width="100%" cellpadding="0" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<td width="100%"><table width="100%" cellpadding="4" cellspacing="1" border="0">
|
||||
<tr>
|
||||
<th class="menu" height="25">» <?php echo $user->lang['RETURN_TO']; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1"><a class="genmed" href="<?php echo "index.$phpEx$SID"; ?>&pane=right" target="main"><?php echo $user->lang['ADMIN_INDEX']; ?></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row2"><a class="genmed" href="<?php echo "../index.$phpEx$SID"; ?>" target="_top"><?php echo $user->lang['FORUM_INDEX']; ?></a></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
if (is_array($module))
|
||||
{
|
||||
@ksort($module);
|
||||
foreach ($module as $cat => $action_ary)
|
||||
{
|
||||
$cat = (!empty($user->lang[$cat . '_CAT'])) ? $user->lang[$cat . '_CAT'] : preg_replace('#_#', ' ', $cat);
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<th class="menu" height="25">» <?php echo $cat; ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
@ksort($action_ary);
|
||||
|
||||
$row_class = '';
|
||||
foreach ($action_ary as $action => $file)
|
||||
{
|
||||
if (!empty($file))
|
||||
{
|
||||
$action = (!empty($user->lang[$action])) ? $user->lang[$action] : preg_replace('/_/', ' ', $action);
|
||||
|
||||
$row_class = ($row_class == 'row1') ? 'row2' : 'row1';
|
||||
?>
|
||||
<tr>
|
||||
<td class="<?php echo $row_class; ?>"><a class="genmed" href="<?php echo $file; ?>" target="main"><?php echo $action; ?></a></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
|
||||
// Output footer but don't include copyright info
|
||||
adm_page_footer(false);
|
||||
|
||||
}
|
||||
elseif ($pane == 'right')
|
||||
{
|
||||
if ((isset($_POST['activate']) || isset($_POST['delete'])) && !empty($_POST['mark']))
|
||||
{
|
||||
if (!$auth->acl_get('a_user'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
if (is_array($_POST['mark']))
|
||||
{
|
||||
$in_sql = '';
|
||||
foreach ($_POST['mark'] as $user_id)
|
||||
{
|
||||
$in_sql .= (($in_sql != '') ? ', ' : '') . intval($user_id);
|
||||
}
|
||||
|
||||
if ($in_sql != '')
|
||||
{
|
||||
$sql = (isset($_POST['activate'])) ? 'UPDATE ' . USERS_TABLE . " SET user_active = 1 WHERE user_id IN ($in_sql)" : "DELETE FROM " . USERS_TABLE . " WHERE user_id IN ($in_sql)";
|
||||
$db->sql_query($sql);
|
||||
|
||||
if (!isset($_POST['delete']))
|
||||
{
|
||||
set_config('num_users', $config['num_users'] + sizeof($mark));
|
||||
}
|
||||
|
||||
$log_action = (isset($_POST['activate'])) ? 'log_index_activate' : 'log_index_delete';
|
||||
add_log('admin', $log_action, sizeof($_POST['mark']));
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (isset($_POST['remind']))
|
||||
{
|
||||
if (!$auth->acl_get('a_user'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
if (empty($config['email_enable']))
|
||||
{
|
||||
trigger_error($user->lang['EMAIL_DISABLED']);
|
||||
}
|
||||
|
||||
if (is_array($_POST['mark']))
|
||||
{
|
||||
$in_sql = '';
|
||||
foreach ($_POST['mark'] as $user_id)
|
||||
{
|
||||
$in_sql .= (($in_sql != '') ? ', ' : '') . intval($user_id);
|
||||
}
|
||||
|
||||
if ($in_sql != '')
|
||||
{
|
||||
$sql = "SELECT user_id, username, user_email, user_lang, user_regdate, user_actkey
|
||||
FROM " . USERS_TABLE . "
|
||||
WHERE user_id IN ($in_sql)";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
include($phpbb_root_path . 'includes/emailer.'.$phpEx);
|
||||
$emailer = new emailer();
|
||||
|
||||
$board_url = generate_board_url() . '/ucp.' . $phpEx;
|
||||
$usernames = '';
|
||||
|
||||
do
|
||||
{
|
||||
$emailer->use_template('user_remind_inactive', $row['user_lang']);
|
||||
$emailer->to($row['user_email'], $row['username']);
|
||||
|
||||
$emailer->assign_vars(array(
|
||||
'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $config['board_email_sig']),
|
||||
'USERNAME' => $row['username'],
|
||||
'SITENAME' => $config['sitename'],
|
||||
'REGISTER_DATE' => $user->format_date($row['user_regdate']),
|
||||
|
||||
'U_ACTIVATE' => $board_url . '&mode=activate&u=' . $row['user_id'] . '&k=' . $row['user_actkey'])
|
||||
);
|
||||
|
||||
$emailer->send();
|
||||
$emailer->reset();
|
||||
|
||||
$usernames .= (($usernames != '') ? ', ' : '') . $row['username'];
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
|
||||
add_log('admin', 'LOG_INDEX_REMIND', $usernames);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (isset($_POST['online']))
|
||||
{
|
||||
if (!$auth->acl_get('a_defaults'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
set_config('record_online_users', 1);
|
||||
set_config('record_online_date', time());
|
||||
add_log('admin', 'LOG_RESET_ONLINE');
|
||||
}
|
||||
else if (isset($_POST['stats']))
|
||||
{
|
||||
if (!$auth->acl_get('a_defaults'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
$sql = "SELECT COUNT(post_id) AS stat
|
||||
FROM " . POSTS_TABLE . "
|
||||
WHERE post_approved = 1";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
set_config('num_posts', $row['stat']);
|
||||
|
||||
$sql = "SELECT COUNT(topic_id) AS stat
|
||||
FROM " . TOPICS_TABLE . "
|
||||
WHERE topic_approved = 1";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
set_config('num_topics', $row['stat']);
|
||||
|
||||
$sql = "SELECT COUNT(user_id) AS stat
|
||||
FROM " . USERS_TABLE . "
|
||||
WHERE user_active = 1";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
set_config('num_users', $row['stat']);
|
||||
|
||||
add_log('admin', 'LOG_RESYNC_STATS');
|
||||
}
|
||||
else if (isset($_POST['date']))
|
||||
{
|
||||
if (!$auth->acl_get('a_defaults'))
|
||||
{
|
||||
trigger_error($user->lang['NO_ADMIN']);
|
||||
}
|
||||
|
||||
set_config('board_startdate', time() - 1);
|
||||
add_log('admin', 'LOG_RESET_DATE');
|
||||
}
|
||||
|
||||
// Get forum statistics
|
||||
$total_posts = $config['num_posts'];
|
||||
$total_topics = $config['num_topics'];
|
||||
$total_users = $config['num_users'];
|
||||
|
||||
$start_date = $user->format_date($config['board_startdate']);
|
||||
|
||||
$boarddays = (time() - $config['board_startdate']) / 86400;
|
||||
|
||||
$posts_per_day = sprintf('%.2f', $total_posts / $boarddays);
|
||||
$topics_per_day = sprintf('%.2f', $total_topics / $boarddays);
|
||||
$users_per_day = sprintf('%.2f', $total_users / $boarddays);
|
||||
|
||||
$avatar_dir_size = 0;
|
||||
|
||||
if ($avatar_dir = @opendir($phpbb_root_path . $config['avatar_path']))
|
||||
{
|
||||
while ($file = @readdir($avatar_dir))
|
||||
{
|
||||
if ($file != '.' && $file != '..')
|
||||
{
|
||||
$avatar_dir_size += @filesize($phpbb_root_path . $config['avatar_path'] . '/' . $file);
|
||||
}
|
||||
}
|
||||
@closedir($avatar_dir);
|
||||
|
||||
// This bit of code translates the avatar directory size into human readable format
|
||||
// Borrowed the code from the PHP.net annoted manual, origanally written by:
|
||||
// Jesse (jesse@jess.on.ca)
|
||||
if ($avatar_dir_size >= 1048576)
|
||||
{
|
||||
$avatar_dir_size = round($avatar_dir_size / 1048576 * 100) / 100 . ' MB';
|
||||
}
|
||||
else if ($avatar_dir_size >= 1024)
|
||||
{
|
||||
$avatar_dir_size = round($avatar_dir_size / 1024 * 100) / 100 . ' KB';
|
||||
}
|
||||
else
|
||||
{
|
||||
$avatar_dir_size = $avatar_dir_size . ' Bytes';
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// Couldn't open Avatar dir.
|
||||
$avatar_dir_size = $user->lang['Not_available'];
|
||||
}
|
||||
|
||||
if ($posts_per_day > $total_posts)
|
||||
{
|
||||
$posts_per_day = $total_posts;
|
||||
}
|
||||
|
||||
if ($topics_per_day > $total_topics)
|
||||
{
|
||||
$topics_per_day = $total_topics;
|
||||
}
|
||||
|
||||
if ($users_per_day > $total_users)
|
||||
{
|
||||
$users_per_day = $total_users;
|
||||
}
|
||||
|
||||
// DB size ... MySQL only
|
||||
// This code is heavily influenced by a similar routine
|
||||
// in phpMyAdmin 2.2.0
|
||||
if (preg_match('/^mysql/', SQL_LAYER))
|
||||
{
|
||||
$result = $db->sql_query('SELECT VERSION() AS mysql_version');
|
||||
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$version = $row['mysql_version'];
|
||||
|
||||
if (preg_match('#^(3\.23|4\.)#', $version))
|
||||
{
|
||||
$db_name = (preg_match('#^(3\.23\.[6-9])|(3\.23\.[1-9][1-9])|(4\.)#', $version)) ? "`$dbname`" : $dbname;
|
||||
|
||||
$sql = "SHOW TABLE STATUS
|
||||
FROM " . $db_name;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$dbsize = 0;
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
if ($row['Type'] != 'MRG_MyISAM')
|
||||
{
|
||||
if ($table_prefix != '')
|
||||
{
|
||||
if (strstr($row['Name'], $table_prefix))
|
||||
{
|
||||
$dbsize += $row['Data_length'] + $row['Index_length'];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$dbsize += $row['Data_length'] + $row['Index_length'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$dbsize = $user->lang['NOT_AVAILABLE'];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$dbsize = $user->lang['NOT_AVAILABLE'];
|
||||
}
|
||||
}
|
||||
else if (preg_match('#^mssql#', SQL_LAYER))
|
||||
{
|
||||
$sql = "SELECT ((SUM(size) * 8.0) * 1024.0) as dbsize
|
||||
FROM sysfiles";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$dbsize = ($row = $db->sql_fetchrow($result)) ? intval($row['dbsize']) : $user->lang['NOT_AVAILABLE'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$dbsize = $user->lang['NOT_AVAILABLE'];
|
||||
}
|
||||
|
||||
if (is_int($dbsize))
|
||||
{
|
||||
$dbsize = ($dbsize >= 1048576) ? sprintf('%.2f MB', ($dbsize / 1048576)) : (($dbsize >= 1024) ? sprintf('%.2f KB', ($dbsize / 1024)) : sprintf('%.2f Bytes', $dbsize));
|
||||
}
|
||||
|
||||
adm_page_header($user->lang['ADMIN_INDEX']);
|
||||
|
||||
?>
|
||||
|
||||
<script language="Javascript" type="text/javascript">
|
||||
<!--
|
||||
function marklist(status)
|
||||
{
|
||||
for (i = 0; i < document.inactive.length; i++)
|
||||
{
|
||||
document.inactive.elements[i].checked = status;
|
||||
}
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
|
||||
<h1><?php echo $user->lang['WELCOME_PHPBB']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['ADMIN_INTRO']; ?></p>
|
||||
|
||||
<h1><?php echo $user->lang['FORUM_STATS']; ?></h1>
|
||||
|
||||
<form name="statistics" method="post" action="index.<?php echo $phpEx . $SID; ?>&pane=right"><table class="bg" width="100%" cellpadding="4" cellspacing="1" border="0">
|
||||
<tr>
|
||||
<th width="25%" nowrap="nowrap" height="25"><?php echo $user->lang['STATISTIC']; ?></th>
|
||||
<th width="25%"><?php echo $user->lang['VALUE']; ?></th>
|
||||
<th width="25%" nowrap="nowrap"><?php echo $user->lang['STATISTIC']; ?></th>
|
||||
<th width="25%"><?php echo $user->lang['VALUE']; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" nowrap="nowrap"><?php echo $user->lang['NUMBER_POSTS']; ?>:</td>
|
||||
<td class="row2"><b><?php echo $total_posts; ?></b></td>
|
||||
<td class="row1" nowrap="nowrap"><?php echo $user->lang['POSTS_PER_DAY']; ?>:</td>
|
||||
<td class="row2"><b><?php echo $posts_per_day; ?></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" nowrap="nowrap"><?php echo $user->lang['NUMBER_TOPICS']; ?>:</td>
|
||||
<td class="row2"><b><?php echo $total_topics; ?></b></td>
|
||||
<td class="row1" nowrap="nowrap"><?php echo $user->lang['TOPICS_PER_DAY']; ?>:</td>
|
||||
<td class="row2"><b><?php echo $topics_per_day; ?></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" nowrap="nowrap"><?php echo $user->lang['NUMBER_USERS']; ?>:</td>
|
||||
<td class="row2"><b><?php echo $total_users; ?></b></td>
|
||||
<td class="row1" nowrap="nowrap"><?php echo $user->lang['USERS_PER_DAY']; ?>:</td>
|
||||
<td class="row2"><b><?php echo $users_per_day; ?></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" nowrap="nowrap"><?php echo $user->lang['BOARD_STARTED']; ?>:</td>
|
||||
<td class="row2"><b><?php echo $start_date; ?></b></td>
|
||||
<td class="row1" nowrap="nowrap"><?php echo $user->lang['AVATAR_DIR_SIZE']; ?>:</td>
|
||||
<td class="row2"><b><?php echo $avatar_dir_size; ?></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" nowrap="nowrap"><?php echo $user->lang['DATABASE_SIZE']; ?>:</td>
|
||||
<td class="row2"><b><?php echo $dbsize; ?></b></td>
|
||||
<td class="row1" nowrap="nowrap"><?php echo $user->lang['GZIP_COMPRESSION']; ?>:</td>
|
||||
<td class="row2"><b><?php echo ($config['gzip_compress']) ? $user->lang['ON'] : $user->lang['OFF']; ?></b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="cat" colspan="4" align="right"><input class="btnlite" type="submit" name="online" value="<?php echo $user->lang['RESET_ONLINE']; ?>" /> <input class="btnlite" type="submit" name="date" value="<?php echo $user->lang['RESET_DATE']; ?>" /> <input class="btnlite" type="submit" name="stats" value="<?php echo $user->lang['RESYNC_STATS']; ?>" /> </td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<h1><?php echo $user->lang['ADMIN_LOG']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['ADMIN_LOG_INDEX_EXPLAIN']; ?></p>
|
||||
|
||||
<table class="bg" width="100%" cellpadding="4" cellspacing="1" border="0">
|
||||
<tr>
|
||||
<th width="15%" height="25" nowrap="nowrap"><?php echo $user->lang['USERNAME']; ?></th>
|
||||
<th width="15%"><?php echo $user->lang['IP']; ?></th>
|
||||
<th width="20%"><?php echo $user->lang['TIME']; ?></th>
|
||||
<th width="45%" nowrap="nowrap"><?php echo $user->lang['ACTION']; ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
view_log('admin', $log_data, $log_count, 5);
|
||||
|
||||
for($i = 0; $i < sizeof($log_data); $i++)
|
||||
{
|
||||
$row_class = ($row_class == 'row1') ? 'row2' : 'row1';
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="<?php echo $row_class; ?>"><?php echo $log_data[$i]['username']; ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo $log_data[$i]['ip']; ?></td>
|
||||
<td class="<?php echo $row_class; ?>" align="center"><?php echo $user->format_date($log_data[$i]['time']); ?></td>
|
||||
<td class="<?php echo $row_class; ?>"><?php echo $log_data[$i]['action']; ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
if ($auth->acl_get('a_user'))
|
||||
{
|
||||
|
||||
?>
|
||||
</table>
|
||||
|
||||
<h1><?php echo $user->lang['INACTIVE_USERS']; ?></h1>
|
||||
|
||||
<p><?php echo $user->lang['INACTIVE_USERS_EXPLAIN']; ?></p>
|
||||
|
||||
<form method="post" name="inactive" action="<?php echo "index.$phpEx$SID&pane=right"; ?>"><table class="bg" width="100%" cellpadding="4" cellspacing="1" border="0">
|
||||
<tr>
|
||||
<th width="45%" height="25" nowrap="nowrap"><?php echo $user->lang['USERNAME']; ?></th>
|
||||
<th width="45%"><?php echo $user->lang['JOINED']; ?></th>
|
||||
<th width="5%" nowrap="nowrap"><?php echo $user->lang['MARK']; ?></th>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
$sql = 'SELECT user_id, username, user_regdate
|
||||
FROM ' . USERS_TABLE . '
|
||||
WHERE user_active = 0
|
||||
AND user_id <> ' . ANONYMOUS . '
|
||||
ORDER BY user_regdate ASC';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
do
|
||||
{
|
||||
$row_class = ($row_class == 'row1') ? 'row2' : 'row1';
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="<?php echo $row_class; ?>"><a href="<?php echo "admin_users.$phpEx$SID&u=" . $row['user_id']; ?>"><?php echo $row['username']; ?></a></td>
|
||||
<td class="<?php echo $row_class; ?>"><?php echo $user->format_date($row['user_regdate']); ?></td>
|
||||
<td class="<?php echo $row_class; ?>"> <input type="checkbox" name="mark[]" value="<?php echo $row['user_id']; ?>" /> </td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="cat" colspan="3" height="28" align="right"><input class="btnlite" type="submit" name="activate" value="<?php echo $user->lang['ACTIVATE']; ?>" /> <?php
|
||||
|
||||
if (!empty($config['email_enable']))
|
||||
{
|
||||
|
||||
?><input class="btnlite" type="submit" name="remind" value="<?php echo $user->lang['REMIND']; ?>" /> <?php
|
||||
|
||||
}
|
||||
|
||||
?><input class="btnlite" type="submit" name="delete" value="<?php echo $user->lang['DELETE']; ?>" /> </td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
?>
|
||||
<tr>
|
||||
<td class="row1" colspan="3" align="center"><?php echo $user->lang['NO_INACTIVE_USERS']; ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
</table>
|
||||
|
||||
<table width="100%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||
<tr>
|
||||
<td align="right" valign="top" nowrap="nowrap"><b><span class="gensmall"><a href="javascript:marklist(true);" class="gensmall"><?php echo $user->lang['MARK_ALL']; ?></a> :: <a href="javascript:marklist(false);" class="gensmall"><?php echo $user->lang['UNMARK_ALL']; ?></a></span></b></td>
|
||||
</tr>
|
||||
</table></form>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
adm_page_footer();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
// Output the frameset ...
|
||||
//
|
||||
header("Expires: " . gmdate("D, d M Y H:i:s", time()) . " GMT");
|
||||
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
|
||||
header("Content-type: text/html; charset=" . $user->lang['ENCODING']);
|
||||
|
||||
$adm_url = "index.$phpEx$SID&pane=right";
|
||||
|
||||
/*
|
||||
// Allows non-admin pages to link to admin pages
|
||||
// eg: http://forums.foo.com/adm/index.php?sid=&mod=admin_forums&f=1
|
||||
if (!empty($_GET['mod']) && preg_match('/admin_([a-z]+)/', $_GET['mod'], $m))
|
||||
{
|
||||
if (file_exists($phpbb_root_path . 'adm/admin_' . $m[1] . '.' . $phpEx))
|
||||
{
|
||||
$adm_url = 'admin_' . $m[1] . '.' . $phpEx . $SID;
|
||||
$adm_url .= (!empty($_GET['mode'])) ? '&mode=' . htmlspecialchars($_GET['mode']) : '';
|
||||
$adm_url .= (!empty($_GET['f'])) ? '&f=' . intval($_GET['f']) : '';
|
||||
$adm_url .= (!empty($_GET['u'])) ? '&u=' . intval($_GET['u']) : '';
|
||||
$adm_url .= (!empty($_GET['g'])) ? '&g=' . intval($_GET['g']) : '';
|
||||
}
|
||||
}
|
||||
*/
|
||||
?>
|
||||
<html>
|
||||
<head>
|
||||
<title><?php echo $user->lang['ADMIN_TITLE']; ?></title>
|
||||
</head>
|
||||
|
||||
<frameset rows="60, *" border="0" framespacing="0" frameborder="NO">
|
||||
<frame src="<?php echo "index.$phpEx$SID&pane=top"; ?>" name="title" noresize marginwidth="0" marginheight="0" scrolling="NO">
|
||||
<frameset cols="155,*" rows="*" border="2" framespacing="0" frameborder="yes">
|
||||
<frame src="<?php echo "index.$phpEx$SID&pane=left"; ?>" name="nav" marginwidth="3" marginheight="3" scrolling="yes">
|
||||
<frame src="<?php echo $adm_url ?>" name="main" marginwidth="0" marginheight="0" scrolling="auto">
|
||||
</frameset>
|
||||
</frameset>
|
||||
|
||||
<noframes>
|
||||
<body bgcolor="white" text="#000000">
|
||||
<p><?php echo $user->lang['NO_FRAMES']; ?></p>
|
||||
</body>
|
||||
</noframes>
|
||||
</html>
|
||||
<?php
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
?>
|
@@ -1,188 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* pagestart.php
|
||||
* -------------------
|
||||
* begin : Thursday, Aug 2, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
die('Hacking attempt');
|
||||
}
|
||||
|
||||
define('IN_ADMIN', true);
|
||||
define('NEED_SID', true);
|
||||
require($phpbb_root_path . 'common.'.$phpEx);
|
||||
require($phpbb_root_path . 'includes/functions_admin.'.$phpEx);
|
||||
|
||||
// Start session management
|
||||
$user->start();
|
||||
$user->setup();
|
||||
|
||||
// Did user forget to login? Give 'em a chance to here ...
|
||||
if ($user->data['user_id'] == ANONYMOUS)
|
||||
{
|
||||
login_box("index.$phpEx$SID", '', $user->lang['LOGIN_ADMIN']);
|
||||
}
|
||||
|
||||
$auth->acl($user->data);
|
||||
// End session management
|
||||
|
||||
// -----------------------------
|
||||
// Functions
|
||||
function adm_page_header($sub_title, $meta = '', $table_html = true)
|
||||
{
|
||||
global $config, $db, $user, $phpEx;
|
||||
|
||||
define('HEADER_INC', true);
|
||||
|
||||
// gzip_compression
|
||||
if ($config['gzip_compress'])
|
||||
{
|
||||
if (extension_loaded('zlib') && !headers_sent())
|
||||
{
|
||||
ob_start('ob_gzhandler');
|
||||
}
|
||||
}
|
||||
|
||||
header("Content-type: text/html; charset=" . $user->lang['ENCODING']);
|
||||
|
||||
?>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $user->lang['ENCODING']; ?>">
|
||||
<meta http-equiv="Content-Style-Type" content="text/css">
|
||||
<link rel="stylesheet" href="subSilver.css" type="text/css">
|
||||
<?php
|
||||
|
||||
echo $meta;
|
||||
|
||||
?>
|
||||
<style type="text/css">
|
||||
<!--
|
||||
th { background-image: url('images/cellpic3.gif') }
|
||||
td.cat { background-image: url('images/cellpic1.gif') }
|
||||
//-->
|
||||
</style>
|
||||
<title><?php echo $config['sitename'] . ' - ' . $page_title; ?></title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<?php
|
||||
|
||||
if ($table_html)
|
||||
{
|
||||
|
||||
?>
|
||||
<a name="top"></a>
|
||||
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td colspan="2" height="25" align="right" nowrap="nowrap"><span class="subtitle">» <i><?php echo $sub_title; ?></i></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table width="95%" cellspacing="0" cellpadding="0" border="0" align="center">
|
||||
<tr>
|
||||
<td><br clear="all" />
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function adm_page_footer($copyright_html = true)
|
||||
{
|
||||
global $cache, $config, $db, $phpEx;
|
||||
|
||||
if (!empty($cache))
|
||||
{
|
||||
$cache->unload();
|
||||
}
|
||||
|
||||
// Close our DB connection.
|
||||
$db->sql_close();
|
||||
|
||||
?>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php
|
||||
|
||||
if ($copyright_html)
|
||||
{
|
||||
|
||||
?>
|
||||
|
||||
<div class="copyright" align="center">Powered by phpBB <?php echo $config['version']; ?> © 2002 <a href="http://www.phpbb.com/" target="_phpbb">phpBB Group</a></div>
|
||||
|
||||
<br clear="all" />
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
function adm_page_message($title, $message, $show_header = false)
|
||||
{
|
||||
global $phpEx, $SID, $user;
|
||||
|
||||
if ($show_header)
|
||||
{
|
||||
|
||||
?>
|
||||
|
||||
<table width="100%" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td><a href="../index.<?php echo $phpEx . $SID; ?>"><img src="images/header_left.jpg" width="200" height="60" alt="phpBB Logo" title="phpBB Logo" border="0"/></a></td>
|
||||
<td width="100%" background="images/header_bg.jpg" height="60" align="right" nowrap="nowrap"><span class="maintitle"><?php echo $user->lang['ADMIN_TITLE']; ?></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<br /><br />
|
||||
|
||||
<table class="bg" width="80%" cellpadding="4" cellspacing="1" border="0" align="center">
|
||||
<tr>
|
||||
<th><?php echo $title; ?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="row1" align="center"><?php echo $message; ?></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br />
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
// End Functions
|
||||
// -----------------------------
|
||||
|
||||
?>
|
@@ -1,222 +0,0 @@
|
||||
/*
|
||||
$Id$
|
||||
|
||||
The original "subSilver" theme for phpBB2
|
||||
Created by subBlue design :: http://www.subBlue.com
|
||||
Updated for phpBB 2.2 by psoTFX :: phpBB Group
|
||||
Copyright (c) 2002 phpBB Group
|
||||
*/
|
||||
|
||||
body {
|
||||
background-color: white;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
margin: 0px;
|
||||
border: 0px;
|
||||
padding: 0px;
|
||||
|
||||
scrollbar-face-color: #DEE3E7;
|
||||
scrollbar-highlight-color: white;
|
||||
scrollbar-shadow-color: #DEE3E7;
|
||||
scrollbar-3dlight-color: #D1D7DC;
|
||||
scrollbar-arrow-color: #006699;
|
||||
scrollbar-track-color: #EFEFEF;
|
||||
scrollbar-darkshadow-color: #98AAB1;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 8pt;
|
||||
}
|
||||
|
||||
.maintitle, h1 {
|
||||
font: bold 18pt 'Trebuchet MS', Verdana, sans-serif;
|
||||
text-decoration:none;
|
||||
line-height: 120%;
|
||||
}
|
||||
h2 {
|
||||
font: bold 12pt Arial, Helvetica, sans-serif;
|
||||
text-decoration:none;
|
||||
line-height: 120%;
|
||||
}
|
||||
|
||||
.maintitle {
|
||||
color: #12749B
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
font: bold 12pt Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.blue {
|
||||
color: #006699;
|
||||
}
|
||||
|
||||
.syntaxbg { color: #FFFFFF; }
|
||||
.syntaxcomment { color: #FF8000; }
|
||||
.syntaxdefault { color: #0000BB; }
|
||||
.syntaxhtml { color: #000000; }
|
||||
.syntaxkeyword { color: #007700; }
|
||||
.syntaxstring { color: #DD0000; }
|
||||
|
||||
/*
|
||||
Anchors
|
||||
*/
|
||||
a:link, a:active, a:visited {
|
||||
color: #006699;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:hover {
|
||||
color: #DD6900;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
a.nav {
|
||||
color: #006699;
|
||||
text-decoration: none;
|
||||
}
|
||||
a.nav:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Non-tag specific
|
||||
*/
|
||||
.gen, .gensmall {
|
||||
color: black;
|
||||
}
|
||||
.gen {
|
||||
font-size: 8pt;
|
||||
}
|
||||
.gensmall {
|
||||
font-size: 7pt;
|
||||
}
|
||||
.nav {
|
||||
color: black;
|
||||
font: bold 11px;
|
||||
}
|
||||
.forumlink {
|
||||
font: bold 120% Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
.name {
|
||||
color: black;
|
||||
font-size: 11px;
|
||||
}
|
||||
.postdetails {
|
||||
color: black;
|
||||
font-size: 10px;
|
||||
}
|
||||
.copyright {
|
||||
color: #444444;
|
||||
font: 8pt Verdana, Arial, Helvetica, sans-serif;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
.error { color: #FF0000 }
|
||||
|
||||
/*
|
||||
Tables
|
||||
*/
|
||||
table.bg {
|
||||
background-color: #ACBBC6
|
||||
}
|
||||
|
||||
th, td {
|
||||
font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
th {
|
||||
height: 25px;
|
||||
background-color: #006699;
|
||||
color: #FFA34F;
|
||||
font-weight: bold;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
th.menu {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
td.cat {
|
||||
height: 28px;
|
||||
background-color: #D1D7DC;
|
||||
}
|
||||
|
||||
.row1 {
|
||||
background-color: #EFEFEF;
|
||||
}
|
||||
.row2 {
|
||||
background-color: #DEE3E7;
|
||||
}
|
||||
.row3 {
|
||||
background-color: #D1D7DC;
|
||||
}
|
||||
|
||||
.sourcenum {
|
||||
color: gray;
|
||||
font-family: 'Courier New', monospace;
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
line-height: 160%;
|
||||
}
|
||||
.source {
|
||||
font-family: 'Courier New', monospace;
|
||||
font-size: 9pt;
|
||||
line-height: 160%;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Misc
|
||||
*/
|
||||
hr {
|
||||
height: 0px;
|
||||
border: solid #D1D7DC 0px;
|
||||
border-top-width: 1px;
|
||||
}
|
||||
|
||||
/*
|
||||
Forms
|
||||
*/
|
||||
input {
|
||||
text-indent: 2px;
|
||||
}
|
||||
|
||||
textarea, select, input.post, input.mainoption, input.liteoption {
|
||||
border: 1px solid;
|
||||
}
|
||||
|
||||
input, textarea, select {
|
||||
color: black;
|
||||
font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
|
||||
border-color: black;
|
||||
}
|
||||
|
||||
input.text {
|
||||
font-family: 'Courier New', courier;
|
||||
}
|
||||
|
||||
input.checkbox {
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
option.sep {
|
||||
color: white;
|
||||
background-color: #006699;
|
||||
}
|
||||
|
||||
textarea.edit {
|
||||
font: 9pt 'Courier New', courier;
|
||||
line-height:125%;
|
||||
}
|
||||
|
||||
.btnmain {
|
||||
background-color: #FAFAFA;
|
||||
font-weight: bold;
|
||||
border-width: 1px;
|
||||
}
|
||||
|
||||
.btnlite {
|
||||
background-color: #FAFAFA;
|
||||
font-weight: normal;
|
||||
border-width: 1px;
|
||||
}
|
@@ -1,56 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<title>phpBB 2.2 Color Swatch</title>
|
||||
<style type="text/css">
|
||||
|
||||
td {
|
||||
border: solid 1px #333333;
|
||||
}
|
||||
|
||||
.over {
|
||||
border-color: white;
|
||||
}
|
||||
|
||||
.out {
|
||||
border-color: #333333;
|
||||
}
|
||||
|
||||
</style>
|
||||
<body bgcolor="#404040" text="#FFFFFF">
|
||||
<script language="javascript" type="text/javascript">
|
||||
<!--
|
||||
var r = 0, g = 0, b = 0;
|
||||
var numberList = new Array(6);
|
||||
numberList[0] = "00";
|
||||
numberList[1] = "33";
|
||||
numberList[2] = "66";
|
||||
numberList[3] = "99";
|
||||
numberList[4] = "CC";
|
||||
numberList[5] = "FF";
|
||||
document.writeln('<table cellspacing="0" cellpadding="0" border="0">');
|
||||
for(r = 0; r < 6; r++)
|
||||
{
|
||||
document.writeln('<tr>');
|
||||
for(g = 0; g < 6; g++)
|
||||
{
|
||||
for(b = 0; b < 6; b++)
|
||||
{
|
||||
color = String(numberList[r]) + String(numberList[g]) + String(numberList[b]);
|
||||
document.write('<td bgcolor="#' + color + '" onmouseover="this.className=\'over\'" onmouseout="this.className=\'out\'">');
|
||||
document.write('<a href="javascript:cell(\'' + color + '\');"><img src="../images/spacer.gif" width="15" height="12" border="0" alt="#' + color + '" title="#' + color + '" /></a>');
|
||||
document.writeln('</td>');
|
||||
}
|
||||
}
|
||||
document.writeln('</tr>');
|
||||
}
|
||||
document.writeln('</table>');
|
||||
|
||||
function cell(color)
|
||||
{
|
||||
opener.document.forms['<?php echo htmlspecialchars(addslashes($_GET['form'])); ?>'].<?php echo htmlspecialchars(addslashes($_GET['name'])); ?>.value = '#' + color;
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
27
phpBB/admin/admin_board.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
*
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
|
||||
?>
|
27
phpBB/admin/admin_forums.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
*
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
|
||||
?>
|
27
phpBB/admin/admin_users.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
*
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
|
||||
?>
|
27
phpBB/admin/index.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
*
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
|
||||
?>
|
4
phpBB/cache/.htaccess
vendored
@@ -1,4 +0,0 @@
|
||||
<Limit GET POST PUT>
|
||||
Order Allow,Deny
|
||||
Deny from All
|
||||
</Limit>
|
292
phpBB/common.php
@@ -1,292 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* common.php
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 23, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
die('Hacking attempt');
|
||||
}
|
||||
|
||||
$starttime = explode(' ', microtime());
|
||||
$starttime = $starttime[1] + $starttime[0];
|
||||
|
||||
error_reporting(E_ERROR | E_WARNING | E_PARSE); // This will NOT report uninitialized variables
|
||||
//error_reporting(E_ALL);
|
||||
set_magic_quotes_runtime(0);
|
||||
|
||||
// Be paranoid with passed vars
|
||||
if (@ini_get('register_globals'))
|
||||
{
|
||||
foreach ($_REQUEST as $var_name => $void)
|
||||
{
|
||||
unset(${$var_name});
|
||||
}
|
||||
}
|
||||
|
||||
// If magic quotes is off, addslashes
|
||||
if (!get_magic_quotes_gpc())
|
||||
{
|
||||
$_GET = slash_input_data($_GET);
|
||||
$_POST = slash_input_data($_POST);
|
||||
$_COOKIE = slash_input_data($_COOKIE);
|
||||
}
|
||||
|
||||
|
||||
require($phpbb_root_path . 'config.'.$phpEx);
|
||||
|
||||
if (!defined('PHPBB_INSTALLED'))
|
||||
{
|
||||
header('Location: install/install.'.$phpEx);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Load Extensions
|
||||
if (!empty($load_extensions))
|
||||
{
|
||||
$load_extensions = explode(',', $load_extensions);
|
||||
|
||||
foreach ($load_extensions as $extension)
|
||||
{
|
||||
@dl(trim($extension));
|
||||
}
|
||||
}
|
||||
|
||||
// Include files
|
||||
require($phpbb_root_path . 'includes/acm/acm_' . $acm_type . '.'.$phpEx);
|
||||
require($phpbb_root_path . 'includes/db/' . $dbms . '.'.$phpEx);
|
||||
require($phpbb_root_path . 'includes/template.'.$phpEx);
|
||||
require($phpbb_root_path . 'includes/session.'.$phpEx);
|
||||
require($phpbb_root_path . 'includes/functions.'.$phpEx);
|
||||
|
||||
// User related
|
||||
define('ANONYMOUS', 1);
|
||||
|
||||
define('USER_ACTIVATION_NONE', 0);
|
||||
define('USER_ACTIVATION_SELF', 1);
|
||||
define('USER_ACTIVATION_ADMIN', 2);
|
||||
define('USER_ACTIVATION_DISABLE', 3);
|
||||
define('USER_ACTIVATION_SELF_ADMIN', 4);
|
||||
|
||||
define('AVATAR_UPLOAD', 1);
|
||||
define('AVATAR_REMOTE', 2);
|
||||
define('AVATAR_GALLERY', 3);
|
||||
|
||||
// ACL
|
||||
define('ACL_NO', 0);
|
||||
define('ACL_YES', 1);
|
||||
define('ACL_UNSET', -1);
|
||||
|
||||
// Group settings
|
||||
define('GROUP_OPEN', 0);
|
||||
define('GROUP_CLOSED', 1);
|
||||
define('GROUP_HIDDEN', 2);
|
||||
define('GROUP_SPECIAL', 3);
|
||||
define('GROUP_FREE', 4);
|
||||
|
||||
// Forum/Topic states
|
||||
define('FORUM_CAT', 0);
|
||||
define('FORUM_POST', 1);
|
||||
define('FORUM_LINK', 2);
|
||||
define('ITEM_UNLOCKED', 0);
|
||||
define('ITEM_LOCKED', 1);
|
||||
define('ITEM_MOVED', 2);
|
||||
|
||||
// Topic types
|
||||
define('POST_NORMAL', 0);
|
||||
define('POST_STICKY', 1);
|
||||
define('POST_ANNOUNCE', 2);
|
||||
define('POST_GLOBAL', 3);
|
||||
|
||||
// Lastread types
|
||||
define('TRACK_NORMAL', 0); // not used at the moment
|
||||
define('TRACK_POSTED', 1);
|
||||
|
||||
// Log types
|
||||
define('LOG_ADMIN', 0);
|
||||
define('LOG_MOD', 1);
|
||||
define('LOG_CRITICAL', 2);
|
||||
|
||||
// Private messaging
|
||||
define('PRIVMSGS_READ_MAIL', 0);
|
||||
define('PRIVMSGS_NEW_MAIL', 1);
|
||||
define('PRIVMSGS_UNREAD_MAIL', 5);
|
||||
|
||||
// Download Modes - Attachments
|
||||
define('INLINE_LINK', 1);
|
||||
define('PHYSICAL_LINK', 2);
|
||||
|
||||
// Categories - Attachments
|
||||
define('NONE_CAT', 0);
|
||||
define('IMAGE_CAT', 1); // Inline Images
|
||||
define('WM_CAT', 2); // Windows Media Files - Streaming
|
||||
define('RM_CAT', 3); // Real Media Files - Streaming
|
||||
define('THUMB_CAT', 4); // Not used within the database, only while displaying posts
|
||||
//define('SWF_CAT', 5); // Replaced by [flash] ? or an additional possibility ?
|
||||
|
||||
// BBCode UID length
|
||||
define('BBCODE_UID_LEN', 5);
|
||||
|
||||
// Table names
|
||||
define('ACL_GROUPS_TABLE', $table_prefix.'auth_groups');
|
||||
define('ACL_OPTIONS_TABLE', $table_prefix.'auth_options');
|
||||
define('ACL_DEPS_TABLE', $table_prefix.'auth_deps');
|
||||
define('ACL_PRESETS_TABLE', $table_prefix.'auth_presets');
|
||||
define('ACL_USERS_TABLE', $table_prefix.'auth_users');
|
||||
define('ATTACHMENTS_TABLE', $table_prefix.'attachments');
|
||||
define('ATTACHMENTS_DESC_TABLE', $table_prefix.'attach_desc');
|
||||
define('BANLIST_TABLE', $table_prefix.'banlist');
|
||||
define('BBCODES_TABLE', $table_prefix.'bbcodes');
|
||||
define('CACHE_TABLE', $table_prefix.'cache');
|
||||
define('CONFIG_TABLE', $table_prefix.'config');
|
||||
define('CONFIRM_TABLE', $table_prefix.'confirm');
|
||||
define('DISALLOW_TABLE', $table_prefix.'disallow'); //
|
||||
define('EXTENSIONS_TABLE', $table_prefix.'extensions');
|
||||
define('EXTENSION_GROUPS_TABLE', $table_prefix.'extension_groups');
|
||||
define('FORUMS_TABLE', $table_prefix.'forums');
|
||||
define('FORUMS_TRACK_TABLE', $table_prefix.'forums_marking');
|
||||
define('FORUMS_WATCH_TABLE', $table_prefix.'forums_watch');
|
||||
define('GROUPS_TABLE', $table_prefix.'groups');
|
||||
define('GROUPS_MODERATOR_TABLE', $table_prefix.'groups_moderator');
|
||||
define('ICONS_TABLE', $table_prefix.'icons');
|
||||
define('LANG_TABLE', $table_prefix.'lang');
|
||||
define('LOG_TABLE', $table_prefix.'log');
|
||||
define('MODERATOR_TABLE', $table_prefix.'moderator_cache');
|
||||
define('POSTS_TABLE', $table_prefix.'posts');
|
||||
define('POSTS_TEXT_TABLE', $table_prefix.'posts_text');
|
||||
define('PRIVMSGS_TABLE', $table_prefix.'privmsgs');
|
||||
define('PRIVMSGS_TEXT_TABLE', $table_prefix.'privmsgs_text');
|
||||
define('RANKS_TABLE', $table_prefix.'ranks');
|
||||
define('RATINGS_TABLE', $table_prefix.'ratings');
|
||||
define('REPORTS_TABLE', $table_prefix.'reports');
|
||||
define('REASONS_TABLE', $table_prefix.'reports_reasons');
|
||||
define('SEARCH_TABLE', $table_prefix.'search_results');
|
||||
define('SEARCH_WORD_TABLE', $table_prefix.'search_wordlist');
|
||||
define('SEARCH_MATCH_TABLE', $table_prefix.'search_wordmatch');
|
||||
define('SESSIONS_TABLE', $table_prefix.'sessions');
|
||||
define('SMILIES_TABLE', $table_prefix.'smilies');
|
||||
define('STYLES_TABLE', $table_prefix.'styles');
|
||||
define('STYLES_TPL_TABLE', $table_prefix.'styles_template');
|
||||
define('STYLES_TPLDATA_TABLE', $table_prefix.'styles_template_data');
|
||||
define('STYLES_CSS_TABLE', $table_prefix.'styles_theme');
|
||||
define('STYLES_IMAGE_TABLE', $table_prefix.'styles_imageset');
|
||||
define('TOPICS_TABLE', $table_prefix.'topics');
|
||||
define('TOPICS_TRACK_TABLE', $table_prefix.'topics_marking');
|
||||
define('TOPICS_WATCH_TABLE', $table_prefix.'topics_watch');
|
||||
define('UCP_MODULES_TABLE', $table_prefix.'ucp_modules');
|
||||
define('USER_GROUP_TABLE', $table_prefix.'user_group');
|
||||
define('USERS_TABLE', $table_prefix.'users');
|
||||
define('WORDS_TABLE', $table_prefix.'words');
|
||||
define('POLL_OPTIONS_TABLE', $table_prefix.'poll_results');
|
||||
define('POLL_VOTES_TABLE', $table_prefix.'poll_voters');
|
||||
|
||||
// Set PHP error handler to ours
|
||||
set_error_handler('msg_handler');
|
||||
|
||||
// Instantiate some basic classes
|
||||
$user = new user();
|
||||
$auth = new auth();
|
||||
$template = new template();
|
||||
$cache = new acm();
|
||||
$db = new sql_db();
|
||||
|
||||
// Connect to DB
|
||||
$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false);
|
||||
|
||||
// Grab global variables, re-cache if necessary
|
||||
if ($config = $cache->get('config'))
|
||||
{
|
||||
$sql = 'SELECT *
|
||||
FROM ' . CONFIG_TABLE . '
|
||||
WHERE is_dynamic = 1';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$config[$row['config_name']] = $row['config_value'];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$config = $cached_config = array();
|
||||
|
||||
$sql = 'SELECT *
|
||||
FROM ' . CONFIG_TABLE;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
if (!$row['is_dynamic'])
|
||||
{
|
||||
$cached_config[$row['config_name']] = $row['config_value'];
|
||||
}
|
||||
|
||||
$config[$row['config_name']] = $row['config_value'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$cache->put('config', $cached_config);
|
||||
unset($cached_config);
|
||||
}
|
||||
|
||||
/*
|
||||
if (time() - $config['cache_interval'] >= $config['cache_last_gc'])
|
||||
{
|
||||
$cache->tidy($config['cache_gc']);
|
||||
}
|
||||
*/
|
||||
|
||||
// Handle email/cron queue.
|
||||
if (time() - $config['queue_interval'] >= $config['last_queue_run'] && !defined('IN_ADMIN'))
|
||||
{
|
||||
if (file_exists($phpbb_root_path . 'cache/queue.' . $phpEx))
|
||||
{
|
||||
include($phpbb_root_path . 'includes/emailer.'.$phpEx);
|
||||
$queue = new queue();
|
||||
$queue->process();
|
||||
}
|
||||
}
|
||||
|
||||
// Warn about install/ directory
|
||||
if (file_exists('install'))
|
||||
{
|
||||
// trigger_error('REMOVE_INSTALL');
|
||||
}
|
||||
|
||||
// Show 'Board is disabled' message
|
||||
if ($config['board_disable'] && !defined('IN_ADMIN') && !defined('IN_LOGIN'))
|
||||
{
|
||||
$message = (!empty($config['board_disable_msg'])) ? $config['board_disable_msg'] : 'BOARD_DISABLE';
|
||||
trigger_error($message);
|
||||
}
|
||||
|
||||
// addslashes to vars if magic_quotes_gpc is off
|
||||
function slash_input_data(&$data)
|
||||
{
|
||||
if (is_array($data))
|
||||
{
|
||||
foreach ($data as $k => $v)
|
||||
{
|
||||
$data[$k] = (is_array($v)) ? slash_input_data($v) : addslashes($v);
|
||||
}
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
?>
|
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
*
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
27
phpBB/db.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
*
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
|
||||
?>
|
208
phpBB/db/mssql.php
Normal file
@@ -0,0 +1,208 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* mssql.php
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
if(!defined("SQL_LAYER")){
|
||||
|
||||
define("SQL_LAYER","mssql");
|
||||
|
||||
class sql_db {
|
||||
|
||||
var $db_connect_id;
|
||||
var $query_result;
|
||||
var $row;
|
||||
|
||||
//
|
||||
// Constructor
|
||||
//
|
||||
function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency=false){
|
||||
|
||||
$this->persistency = $persistency;
|
||||
$this->user = $sqluser;
|
||||
$this->password = $sqlpassword;
|
||||
$this->host = $sqlserver;
|
||||
$this->dbname = $database;
|
||||
|
||||
if($this->persistency){
|
||||
$this->db_connect_id = @mssql_pconnect($this->server,$this->user,$this->password);
|
||||
} else {
|
||||
$this->db_connect_id = @mssql_connect($this->server,$this->user,$this->password);
|
||||
}
|
||||
if($this->db_connect_id){
|
||||
if($this->dbname != ""){
|
||||
$dbselect = @mssql_select_db($this->dbname);
|
||||
if(!$dbselect){
|
||||
@mssql_close($this->db_connect_id);
|
||||
$this->db_connect_id = $dbselect;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $this->db_connect_id;
|
||||
}
|
||||
//
|
||||
// Other base methods
|
||||
//
|
||||
function sql_setdb($database){
|
||||
$this->dbname = $database;
|
||||
$dbselect = @mssql_select_db($this->dbname);
|
||||
if(!$dbselect){
|
||||
sql_close();
|
||||
$this->db_connect_id = $dbselect;
|
||||
}
|
||||
return $this->db_connect_id;
|
||||
}
|
||||
function sql_close(){
|
||||
if($this->db_connect_id){
|
||||
if($this->query_result){
|
||||
@mssql_free_result($this->query_result);
|
||||
}
|
||||
$result = @mssql_close($this->db_connect_id);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Query method
|
||||
//
|
||||
function sql_query($query=""){
|
||||
// Remove any pre-existing queries
|
||||
unset($this->query_result);
|
||||
unset($this->row);
|
||||
if($query != ""){
|
||||
// Does query contain any LIMIT code?
|
||||
// If so pull out relevant start and num_results
|
||||
// This isn't terribly easy with MSSQL, the best way is
|
||||
// to use a temporary table.
|
||||
if(eregi("LIMIT ",$query){
|
||||
eregi("LIMIT ([0-9]+)[, ]+([0-9]+)", $query, $limits);
|
||||
$row_offset = $limits[1];
|
||||
if($limits[2])
|
||||
$num_rows = $limits[2];
|
||||
} else {
|
||||
$this->query_result = @mssql_query($query, $this->db_connect_id);
|
||||
}
|
||||
return $this->query_result;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Other query methods
|
||||
//
|
||||
function sql_numrows(){
|
||||
if($this->query_result){
|
||||
$result = @mssql_num_rows($this->query_result);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_numfields(){
|
||||
if($this->query_result){
|
||||
$result = @mssql_num_fields($this->query_result);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_fieldname($offset){
|
||||
if($this->query_result){
|
||||
$result = @mssql_field_name($this->query_result, $offset);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_fieldtype($offset){
|
||||
if($this->query_result){
|
||||
$result = @mssql_field_type($this->query_result, $offset);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_fetchrow(){
|
||||
if($this->query_result){
|
||||
$this->row = @mssql_fetch_array($this->query_result);
|
||||
return $this->row;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_fetchrowset(){
|
||||
if($this->query_result){
|
||||
empty($this->rowset);
|
||||
while($this->rowset = @mssql_fetch_array($this->query_result)){
|
||||
$result[] = $this->rowset;
|
||||
}
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_fetchfield($field, $row=-1) {
|
||||
if($this->query_result){
|
||||
if($row != -1){
|
||||
$result=@mssql_result($this->query_result, $row, $field);
|
||||
} else {
|
||||
if(empty($this->row))
|
||||
$this->row = @mssql_fetch_array($this->query_result);
|
||||
$result = $this->row[$field];
|
||||
}
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_rowseek($offset){
|
||||
if($this->query_result){
|
||||
$result = @mssql_data_seek($this->query_result, $rownum);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_nextid(){
|
||||
if($this->query_result){
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_freeresult(){
|
||||
if($this->query_result){
|
||||
@mssql_free_result($this->query_result);
|
||||
return;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_error(){
|
||||
$result[message] = @mssql_get_last_message();
|
||||
return $result;
|
||||
}
|
||||
|
||||
} // class sql_db
|
||||
|
||||
} // if ... define
|
||||
|
||||
?>
|
235
phpBB/db/mysql.php
Normal file
@@ -0,0 +1,235 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* mysql.php
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if(!defined("SQL_LAYER")){
|
||||
|
||||
define("SQL_LAYER","mysql");
|
||||
|
||||
class sql_db {
|
||||
|
||||
var $db_connect_id;
|
||||
var $query_result;
|
||||
var $row;
|
||||
|
||||
//
|
||||
// Constructor
|
||||
//
|
||||
function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency=true){
|
||||
|
||||
$this->persistency = $persistency;
|
||||
$this->user = $sqluser;
|
||||
$this->password = $sqlpassword;
|
||||
$this->host = $sqlserver;
|
||||
|
||||
if($this->persistency){
|
||||
$this->db_connect_id = @mysql_pconnect($this->server, $this->user, $this->password);
|
||||
} else {
|
||||
$this->db_connect_id = @mysql_connect($this->server, $this->user, $this->password);
|
||||
}
|
||||
if($this->db_connect_id){
|
||||
if($database != ""){
|
||||
$this->dbname = $database;
|
||||
$dbselect = @mysql_select_db($this->dbname);
|
||||
if(!$dbselect){
|
||||
mysql_close($this->db_connect_id);
|
||||
$this->db_connect_id = $dbselect;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $this->db_connect_id;
|
||||
}
|
||||
//
|
||||
// Other base methods
|
||||
//
|
||||
function sql_setdb($database){
|
||||
if($database != ""){
|
||||
$this->dbname = $database;
|
||||
$dbselect = @mysql_select_db($this->dbname);
|
||||
if(!$dbselect){
|
||||
sql_close();
|
||||
$this->db_connect_id = $dbselect;
|
||||
}
|
||||
return $this->db_connect_id;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_close(){
|
||||
if($this->db_connect_id){
|
||||
if($this->query_result){
|
||||
@mysql_free_result($this->query_result);
|
||||
}
|
||||
$result = @mysql_close($this->db_connect_id);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Base query method
|
||||
//
|
||||
function sql_query($query=""){
|
||||
// Remove any pre-existing queries
|
||||
unset($this->query_result);
|
||||
if($query != ""){
|
||||
$this->query_result = @mysql_query($query, $this->db_connect_id);
|
||||
}
|
||||
if($this->query_result){
|
||||
unset($this->row[$this->query_result]);
|
||||
unset($this->rowset[$this->query_result]);
|
||||
return $this->query_result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Other query methods
|
||||
//
|
||||
function sql_numrows($query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
$result = @mysql_num_rows($query_id);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_numfields($query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
$result = @mysql_num_fields($query_id);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_fieldname($offset, $query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
$result = @mysql_field_name($query_id, $offset);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_fieldtype($offset, $query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
$result = @mysql_field_type($query_id, $offset);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_fetchrow($query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
$this->row[$query_id] = @mysql_fetch_array($query_id);
|
||||
return $this->row[$query_id];
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_fetchrowset($query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
unset($this->rowset[$query_id]);
|
||||
unset($this->row[$query_id]);
|
||||
while($this->rowset[$query_id] = @mysql_fetch_array($query_id)){
|
||||
$result[] = $this->rowset[$query_id];
|
||||
}
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_fetchfield($field, $rownum=-1, $query_id = 0) {
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
if($rownum > -1){
|
||||
$result = @mysql_result($query_id, $rownum, $field);
|
||||
} else {
|
||||
if(empty($this->row[$query_id]) && empty($this->rowset[$query_id])){
|
||||
if($this->sql_fetchrow())
|
||||
$result = $this->row[$query_id][$field];
|
||||
} else {
|
||||
if($this->rowset[$query_id]){
|
||||
$result = $this->rowset[$query_id][$field];
|
||||
} else if($this->row[$query_id]){
|
||||
$result = $this->row[$query_id][$field];
|
||||
}
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_rowseek($rownum, $query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
$result = @mysql_data_seek($query_id, $rownum);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_nextid(){
|
||||
if($this->db_connection_id){
|
||||
$result = @mysql_insert_id();
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_freeresult($query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
$result = @mysql_free_result($query_id);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_error($query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
$result[message] = @mysql_error($query_id);
|
||||
$result[code] = @mysql_errno($query_id);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
} // class sql_db
|
||||
|
||||
} // if ... define
|
||||
|
||||
?>
|
278
phpBB/db/postgres7.php
Normal file
@@ -0,0 +1,278 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* postgres7.php
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
if(!defined("SQL_LAYER")){
|
||||
|
||||
define("SQL_LAYER","postgresql");
|
||||
|
||||
class sql_db {
|
||||
|
||||
var $db_connect_id;
|
||||
var $query_result;
|
||||
var $row;
|
||||
var $rownum = array();
|
||||
//
|
||||
// Constructor
|
||||
//
|
||||
function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency=true){
|
||||
|
||||
$this->connect_string = "";
|
||||
if($sqluser){
|
||||
$this->connect_string .= "user=$sqluser ";
|
||||
}
|
||||
if($sqlpassword){
|
||||
$this->connect_string .= "password=$sqlpassword ";
|
||||
}
|
||||
if($sqlserver){
|
||||
if(ereg(":",$sqlserver)){
|
||||
list($sqlserver,$sqlport) = split(":",$sqlserver);
|
||||
$this->connect_string .= "host=$sqlserver port=$sqlport ";
|
||||
} else {
|
||||
$this->connect_string .= "host=$sqlserver ";
|
||||
}
|
||||
}
|
||||
if($database){
|
||||
$this->dbname = $database;
|
||||
$make_connect = $this->connect_string . "dbname=$database";
|
||||
} else {
|
||||
$make_connect = $this->connect_string;
|
||||
}
|
||||
$this->persistency = $persistency;
|
||||
|
||||
if($this->persistency){
|
||||
$this->db_connect_id = @pg_pconnect($make_connect);
|
||||
} else {
|
||||
$this->db_connect_id = @pg_connect($make_connect);
|
||||
}
|
||||
return $this->db_connect_id;
|
||||
}
|
||||
//
|
||||
// Other base methods
|
||||
//
|
||||
function sql_setdb($database){
|
||||
if($this->db_connect_id){
|
||||
if($this->query_result){
|
||||
@pg_freeresult($this->query_result);
|
||||
unset($this->query_result);
|
||||
unset($this->row);
|
||||
}
|
||||
$result = @pg_close($this->db_connect_id);
|
||||
if($result){
|
||||
$this->dbname = $database;
|
||||
$make_connect = $this->connect_string . "dbname=$database";
|
||||
if($this->persistency){
|
||||
$this->db_connect_id = @pg_pconnect($make_connect);
|
||||
} else {
|
||||
$this->db_connect_id = @pg_connect($make_connect);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $this->db_connect_id;
|
||||
}
|
||||
function sql_close(){
|
||||
if($this->db_connect_id){
|
||||
if($this->query_result){
|
||||
@pg_freeresult($this->query_result);
|
||||
}
|
||||
$result = @pg_close($this->db_connect_id);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Query method
|
||||
//
|
||||
function sql_query($query=""){
|
||||
// Remove any pre-existing queries
|
||||
unset($this->query_result);
|
||||
if($query != ""){
|
||||
$this->query_result = @pg_exec($this->db_connect_id, $query);
|
||||
if($this->query_result){
|
||||
|
||||
$this->last_query_text[$this->query_result] = $query;
|
||||
$this->rownum[$this->query_result] = 0;
|
||||
unset($this->row[$this->query_result]);
|
||||
unset($this->rowset[$this->query_result]);
|
||||
|
||||
return $this->query_result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Other query methods
|
||||
//
|
||||
function sql_numrows($query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
$result = @pg_numrows($query_id);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_numfields($query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
$result = @pg_numfields($query_id);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_fieldname($offset, $query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
$result = @pg_fieldname($query_id, $offset);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_fieldtype($offset, $query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
$result = @pg_fieldtype($query_id, $offset);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_fetchrow($query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
$this->row = @pg_fetch_array($query_id, $this->rownum[$query_id]);
|
||||
if($this->row)
|
||||
$this->rownum[$query_id]++;
|
||||
return $this->row;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_fetchrowset($query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
unset($this->rowset[$query_id]);
|
||||
unset($this->row[$query_id]);
|
||||
$this->rownum[$query_id] = 0;
|
||||
while($this->rowset = @pg_fetch_array($query_id, $this->rownum[$query_id])){
|
||||
$result[] = $this->rowset;
|
||||
$this->rownum[$query_id]++;
|
||||
}
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_fetchfield($field, $row_offset=-1, $query_id = 0) {
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
if($row_offset != -1){
|
||||
$this->row = @pg_fetch_array($query_id, $row_offset);
|
||||
} else {
|
||||
if($this->rownum[$query_id]){
|
||||
$this->row = @pg_fetch_array($query_id, $this->rownum[$query_id]-1);
|
||||
} else {
|
||||
$this->row = @pg_fetch_array($query_id, $this->rownum[$query_id]);
|
||||
if($this->row)
|
||||
$this->rownum[$query_id]++;
|
||||
}
|
||||
}
|
||||
$result = $this->row[$field];
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_rowseek($offset, $query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
if($offset>-1){
|
||||
$this->rownum[$query_id] = $offset;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_nextid($query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id && $this->last_query_text[$query_id] != ""){
|
||||
if(eregi("^(INSERT{1}|^INSERT INTO{1})[[:space:]][\"]?([[:alnum:]]+)[\"]?", $this->last_query_text[$query_id], $tablename);
|
||||
$query = "SELECT last_value FROM ".$tablename[2]."_id_seq";
|
||||
$temp_q_id = @pg_exec($this->db_connect_id, $query);
|
||||
if($query_id){
|
||||
$temp_result = @pg_fetch_array($temp_q_id, 0);
|
||||
if($temp_result){
|
||||
return $temp_result["last_value"]+1;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_freeresult($query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
if($query_id){
|
||||
$result = @pg_freeresult($query_id);
|
||||
return $result;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
function sql_error($query_id = 0){
|
||||
if(!$query_id)
|
||||
$query_id = $this->query_result;
|
||||
$result[message] = @pg_errormessage($query_id);
|
||||
$result[code] = -1;
|
||||
return $result;
|
||||
}
|
||||
|
||||
} // class ... db_sql
|
||||
|
||||
} // if ... defined
|
||||
|
||||
?>
|
@@ -1,462 +0,0 @@
|
||||
<?php
|
||||
|
||||
//
|
||||
// Security message:
|
||||
//
|
||||
// This script is potentially dangerous.
|
||||
// Remove or comment the next line (die(".... ) to enable this script.
|
||||
// Do NOT FORGET to either remove this script or disable it after you have used it.
|
||||
//
|
||||
die("Please read the first lines of this script for instructions on how to enable it");
|
||||
|
||||
//
|
||||
// Do not change anything below this line.
|
||||
//
|
||||
|
||||
|
||||
$phpbb_root_path = "../";
|
||||
include($phpbb_root_path . 'extension.inc');
|
||||
include($phpbb_root_path . 'common.'.$phpEx);
|
||||
include($phpbb_root_path . 'includes/post.'.$phpEx);
|
||||
include($phpbb_root_path . 'includes/bbcode.'.$phpEx);
|
||||
|
||||
srand ((double) microtime() * 1000000);
|
||||
set_time_limit(240*60);
|
||||
|
||||
// Here's the text we stick in posts..
|
||||
$bigass_text = '
|
||||
phpBB BBCode test suite v0.0.2
|
||||
auto-linkification:
|
||||
http://something.com
|
||||
www.something.com
|
||||
nate@phpbb.com
|
||||
http://something.com/foo.php?this=that&theother=some%20encoded%20string is a link.
|
||||
[code]
|
||||
Simple code block with some <html> <tags>.
|
||||
[/code]
|
||||
[b]bolded[/b], [i]italic[/i]
|
||||
[email]james@totalgeek.org[/email]
|
||||
[url=http://www.totalgeek.org]totalgeek.org[/url]
|
||||
[url]www.totalgeek.org[/url]
|
||||
[list]
|
||||
[*] This is the first bulleted item.
|
||||
[*] This is the second bulleted item.
|
||||
[/list]
|
||||
[list=A]
|
||||
[*] This is the first bulleted item.
|
||||
[*] This is the second bulleted item.
|
||||
[/list]
|
||||
[quote]
|
||||
And a quote!
|
||||
[/quote]
|
||||
';
|
||||
|
||||
|
||||
// The script expects the ID's in the tables to sequential (1,2,3,4,5),
|
||||
// so no holes please (1,4,5,8)...
|
||||
$nr_of_users = nrof(USERS_TABLE);
|
||||
$nr_of_cats = nrof(CATEGORIES_TABLE);
|
||||
$nr_of_forums = nrof(FORUMS_TABLE);
|
||||
$nr_of_posts = nrof(POSTS_TABLE);
|
||||
|
||||
$u = $users;
|
||||
|
||||
$starttime = microtime();
|
||||
|
||||
$usercreationcount = 0;
|
||||
while($users > 0)
|
||||
{
|
||||
|
||||
$name = "testuser_" . substr(md5(uniqid(rand())), 0, 10);
|
||||
if (make_user($name))
|
||||
{
|
||||
$usercreationcount++;
|
||||
$users--;
|
||||
}
|
||||
if (($usercreationcount % 500) == 0)
|
||||
{
|
||||
echo "status: $usercreationcount <br>\n";
|
||||
flush();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ($posts > 0)
|
||||
{
|
||||
filldb($posts);
|
||||
}
|
||||
|
||||
$endtime = microtime();
|
||||
|
||||
if ($submit="" || !isset($submit))
|
||||
{
|
||||
?>
|
||||
Hello, welcome to this little phpBB Benchmarking script :)<p>
|
||||
|
||||
At the moment there are:<br>
|
||||
|
||||
<table>
|
||||
<tr><td align="right"><?php echo $nr_of_users?></td><td>Users</td></tr>
|
||||
<tr><td align="right"><?php echo $nr_of_forums?></td><td>Forums</td></tr>
|
||||
<tr><td align="right"><?php echo $nr_of_posts?></td><td>Posts</td></tr>
|
||||
</table>
|
||||
<p>
|
||||
What do you want to create?<p>
|
||||
|
||||
<form method="get" action="<?php echo $PHP_SELF?>">
|
||||
<input type="text" name="users" size="3"> Users<br>
|
||||
<input type="text" name="posts" size="3"> Posts/topics (optional: post size in <input type="text" name="size" size="3"> bytes)<br>
|
||||
<input type="submit" name="submit">
|
||||
</form>
|
||||
|
||||
<?php
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
list ($starttime_msec,$starttime_sec) = explode(" ",$starttime);
|
||||
list ($endtime_msec,$endtime_sec) = explode(" ",$endtime);
|
||||
$timetaken_sec = ($endtime_sec+$endtime_msec) - ($starttime_sec+$starttime_msec);
|
||||
print "<B>TIME TAKEN : ".$timetaken_sec."s</B><BR>\n";
|
||||
|
||||
print "<p>\n<a href=\"$PHP_SELF\">Back to the overview page</a>\n";
|
||||
}
|
||||
|
||||
|
||||
function filldb($newposts)
|
||||
{
|
||||
global $nr_of_forums;
|
||||
global $nr_of_users;
|
||||
|
||||
$forum_topic_counts = array();
|
||||
|
||||
for ($i = 1; $i <= $nr_of_forums; $i++)
|
||||
{
|
||||
$forum_topic_counts[$i] = get_topic_count($i);
|
||||
}
|
||||
|
||||
for($i = 0; $i < $newposts; $i++)
|
||||
{
|
||||
$userid = rand(2, $nr_of_users - 1);
|
||||
$forum = rand(1,$nr_of_forums);
|
||||
|
||||
if ((rand(0,30) < 1) || ($forum_topic_count[$forum] == 0))
|
||||
{
|
||||
// create a new topic 1 in 30 times (or when there are none);
|
||||
$topic = make_topic($userid, "Testing topic $i", $forum);
|
||||
$forum_topic_count[$forum]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Otherwise create a reply(posting) somewhere.
|
||||
$topic = get_smallest_topic($forum);
|
||||
create_posting($userid, $topic, $forum, "reply");
|
||||
}
|
||||
|
||||
if (($i % 1000) == 0)
|
||||
{
|
||||
echo "status: $i <br>";
|
||||
flush();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function get_smallest_topic($forum_id)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$sql = "SELECT topic_id
|
||||
FROM " . TOPICS_TABLE . "
|
||||
WHERE (forum_id = $forum_id)
|
||||
ORDER BY topic_replies ASC LIMIT 1";
|
||||
if($result = $db->sql_query($sql))
|
||||
{
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$topic_id = $row['topic_id'];
|
||||
|
||||
unset($result);
|
||||
unset($row);
|
||||
return $topic_id;
|
||||
}
|
||||
else
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Couldn't get smallest topic.", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
function get_topic_count($forum_id)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$sql = "SELECT forum_topics
|
||||
FROM " . FORUMS_TABLE . "
|
||||
WHERE (forum_id = $forum_id)";
|
||||
if($result = $db->sql_query($sql))
|
||||
{
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$topic_count = $row['forum_topics'];
|
||||
|
||||
unset($result);
|
||||
unset($row);
|
||||
return $topic_count;
|
||||
}
|
||||
else
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Couldn't get topic count.", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
function make_topic($user_id, $subject, $forum_id)
|
||||
{
|
||||
global $db;
|
||||
$topic_type = POST_NORMAL;
|
||||
$topic_vote = 0;
|
||||
$current_time = time();
|
||||
|
||||
$sql = "INSERT INTO " . TOPICS_TABLE . " (topic_title, topic_poster, topic_time, forum_id, topic_status, topic_type, topic_vote)
|
||||
VALUES ('$subject', $user_id, $current_time, $forum_id, " . TOPIC_UNLOCKED . ", $topic_type, $topic_vote)";
|
||||
|
||||
if( $result = $db->sql_query($sql, BEGIN_TRANSACTION) )
|
||||
{
|
||||
$new_topic_id = $db->sql_nextid();
|
||||
}
|
||||
else
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Error inserting data into topics table", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
|
||||
create_posting($user_id, $new_topic_id, $forum_id);
|
||||
|
||||
return $new_topic_id;
|
||||
}
|
||||
|
||||
|
||||
|
||||
function create_posting($userid, $topic_id, $forum, $mode='newtopic')
|
||||
{
|
||||
$message = generatepost();
|
||||
|
||||
return make_post($topic_id, $forum, $userid, "", $message, $mode);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function make_post($new_topic_id, $forum_id, $user_id, $post_username, $text, $mode='newtopic')
|
||||
{
|
||||
global $db;
|
||||
$current_time = time();
|
||||
$user_ip = "ac100202";
|
||||
$bbcode_on = 1;
|
||||
$html_on = 1;
|
||||
$smilies_on = 1;
|
||||
$attach_sig = 1;
|
||||
$bbcode_uid = make_bbcode_uid();
|
||||
|
||||
$post_subject = 'random subject';
|
||||
|
||||
$post_message = prepare_message($text, $html_on, $bbcode_on, $smilies_on, $bbcode_uid);
|
||||
|
||||
$sql = "INSERT INTO " . POSTS_TABLE . " (topic_id, forum_id, poster_id, attach_id, icon_id, post_username, post_time, poster_ip, post_approved, bbcode_uid, enable_bbcode, enable_html, enable_smilies, enable_sig, post_subject, post_text)
|
||||
VALUES ($new_topic_id, $forum_id, $user_id, 0, 0, '$post_username', $current_time, '$user_ip', 1, '$bbcode_uid', $bbcode_on, $html_on, $smilies_on, $attach_sig, '$post_subject', '$post_message')";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($result)
|
||||
{
|
||||
$new_post_id = $db->sql_nextid();
|
||||
|
||||
$sql = "UPDATE " . TOPICS_TABLE . "
|
||||
SET topic_last_post_id = $new_post_id";
|
||||
if($mode == "reply")
|
||||
{
|
||||
$sql .= ", topic_replies = topic_replies + 1 ";
|
||||
}
|
||||
$sql .= " WHERE topic_id = $new_topic_id";
|
||||
|
||||
if($db->sql_query($sql))
|
||||
{
|
||||
$sql = "UPDATE " . FORUMS_TABLE . "
|
||||
SET forum_last_post_id = $new_post_id, forum_posts = forum_posts + 1";
|
||||
if($mode == "newtopic")
|
||||
{
|
||||
$sql .= ", forum_topics = forum_topics + 1";
|
||||
}
|
||||
$sql .= " WHERE forum_id = $forum_id";
|
||||
|
||||
if($db->sql_query($sql))
|
||||
{
|
||||
$sql = "UPDATE " . USERS_TABLE . "
|
||||
SET user_posts = user_posts + 1
|
||||
WHERE user_id = " . $user_id;
|
||||
|
||||
if($db->sql_query($sql, END_TRANSACTION))
|
||||
{
|
||||
// SUCCESS.
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Error updating users table", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Error updating forums table", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Rollback
|
||||
if(SQL_LAYER == "mysql")
|
||||
{
|
||||
$sql = "DELETE FROM " . POSTS_TABLE . "
|
||||
WHERE post_id = $new_post_id";
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
message_die(GENERAL_ERROR, "Error updating topics table", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Error inserting data into posts table", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function generatepost($size=850)
|
||||
{
|
||||
global $bigass_text;
|
||||
// Returns a string with a length between $size and $size*0.2
|
||||
$size = rand(0.2*$size, $size);
|
||||
|
||||
$textsize = strlen($bigass_text);
|
||||
$currentsize = 0;
|
||||
// Add whole $text multiple times
|
||||
while($currentsize < $size && $size-$currentsize <= $textsize)
|
||||
{
|
||||
$message .= $bigass_text;
|
||||
$currentsize += $textsize;
|
||||
}
|
||||
// Add the remainder number of chars and return it.
|
||||
$message .= substr($bigass_text, 0, $size-$currentsize);
|
||||
|
||||
return (addslashes($message));
|
||||
}
|
||||
|
||||
|
||||
function nrof($table)
|
||||
{
|
||||
global $db;
|
||||
$sql = "SELECT count(*) AS counted FROM $table";
|
||||
$result = $db->sql_query($sql);
|
||||
$topics = $db->sql_fetchrow($result);
|
||||
return $topics[counted];
|
||||
}
|
||||
|
||||
|
||||
function make_user($username)
|
||||
{
|
||||
global $db, $board_config;
|
||||
|
||||
$password = md5("benchpass");
|
||||
$email = "nobody@localhost";
|
||||
$icq = "12345678";
|
||||
$website = "http://www.phpbb.com";
|
||||
$occupation = "phpBB tester";
|
||||
$location = "phpBB world hq";
|
||||
$interests = "Eating, sleeping, living, and breathing phpBB";
|
||||
$signature = "$username: phpBB tester.";
|
||||
$signature_bbcode_uid = "";
|
||||
$avatar_filename = "";
|
||||
$viewemail = 0;
|
||||
$aim = 0;
|
||||
$yim = 0;
|
||||
$msn = 0;
|
||||
$attachsig = 1;
|
||||
$allowsmilies = 1;
|
||||
$allowhtml = 1;
|
||||
$allowbbcode = 1;
|
||||
$allowviewonline = 1;
|
||||
$notifyreply = 0;
|
||||
$notifypm = 0;
|
||||
$user_timezone = $board_config['board_timezone'];
|
||||
$user_dateformat = $board_config['default_dateformat'];
|
||||
$user_lang = $board_config['default_lang'];
|
||||
$user_style = $board_config['default_style'];
|
||||
|
||||
|
||||
$sql = "SELECT MAX(user_id) AS total
|
||||
FROM " . USERS_TABLE;
|
||||
if($result = $db->sql_query($sql))
|
||||
{
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$new_user_id = $row['total'] + 1;
|
||||
|
||||
unset($result);
|
||||
unset($row);
|
||||
}
|
||||
else
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Couldn't obtained next user_id information.", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
|
||||
$sql = "SELECT MAX(group_id) AS total
|
||||
FROM " . GROUPS_TABLE;
|
||||
if($result = $db->sql_query($sql))
|
||||
{
|
||||
$row = $db->sql_fetchrow($result);
|
||||
$new_group_id = $row['total'] + 1;
|
||||
|
||||
unset($result);
|
||||
unset($row);
|
||||
}
|
||||
else
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Couldn't obtained next user_id information.", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
|
||||
|
||||
$sql = "INSERT INTO " . USERS_TABLE . " (user_id, username, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_sig_bbcode_uid, user_avatar, user_viewemail, user_aim, user_yim, user_msnm, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_viewonline, user_notify, user_notify_pm, user_timezone, user_dateformat, user_lang, user_style, user_level, user_allow_pm, user_active, user_actkey)
|
||||
VALUES ($new_user_id, '$username', " . time() . ", '$password', '$email', '$icq', '$website', '$occupation', '$location', '$interests', '$signature', '$signature_bbcode_uid', '$avatar_filename', $viewemail, '$aim', '$yim', '$msn', $attachsig, $allowsmilies, $allowhtml, $allowbbcode, $allowviewonline, $notifyreply, $notifypm, $user_timezone, '$user_dateformat', '$user_lang', $user_style, 0, 1, ";
|
||||
|
||||
|
||||
$sql .= "1, '')";
|
||||
|
||||
if($result = $db->sql_query($sql, BEGIN_TRANSACTION))
|
||||
{
|
||||
$sql = "INSERT INTO " . GROUPS_TABLE . " (group_id, group_name, group_description, group_single_user, group_moderator)
|
||||
VALUES ($new_group_id, '', 'Personal User', 1, 0)";
|
||||
if($result = $db->sql_query($sql))
|
||||
{
|
||||
$sql = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending)
|
||||
VALUES ($new_user_id, $new_group_id, 0)";
|
||||
if($result = $db->sql_query($sql, END_TRANSACTION))
|
||||
{
|
||||
|
||||
// SUCCESS.
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Couldn't insert data into user_group table", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Couldn't insert data into groups table", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
message_die(GENERAL_ERROR, "Couldn't insert data into users table", "", __LINE__, __FILE__, $sql);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
@@ -1,26 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Remove all those annoying ^M characters that Winblows editor's like to add
|
||||
# from all files in the current directory and all subdirectories.
|
||||
#
|
||||
# Written by: Jonathan Haase.
|
||||
#
|
||||
# UPDATE: 7/31/2001: fix so that it doesn't touch things in the images directory
|
||||
#
|
||||
|
||||
find . > FILELIST.$$
|
||||
grep -sv FILELIST FILELIST.$$ > FILELIST2.$$
|
||||
grep -sv $(basename $0) FILELIST2.$$ > FILELIST.$$
|
||||
grep -sv "^\.$" FILELIST.$$ > FILELIST2.$$
|
||||
grep -sv "images" FILELIST2.$$ > FILELIST
|
||||
rm FILELIST2.$$
|
||||
rm FILELIST.$$
|
||||
|
||||
for i in $(cat FILELIST); do
|
||||
if [ -f $i ]; then
|
||||
sed -e s/
|
||||
//g $i > $i.tmp
|
||||
mv $i.tmp $i
|
||||
fi
|
||||
done
|
||||
rm FILELIST
|
@@ -1,209 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* merge_clean_posts.php
|
||||
* -------------------
|
||||
* begin : Tuesday, February 25, 2003
|
||||
* copyright : (C) 2003 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
//
|
||||
// Security message:
|
||||
//
|
||||
// This script is potentially dangerous.
|
||||
// Remove or comment the next line (die(".... ) to enable this script.
|
||||
// Do NOT FORGET to either remove this script or disable it after you have used it.
|
||||
//
|
||||
die("Please read the first lines of this script for instructions on how to enable it");
|
||||
|
||||
@set_time_limit(2400);
|
||||
|
||||
$db = $dbhost = $dbuser = $dbpasswd = $dbport = $dbname = '';
|
||||
|
||||
define('IN_PHPBB', 1);
|
||||
define('ANONYMOUS', 1);
|
||||
$phpbb_root_path='./../';
|
||||
include($phpbb_root_path . 'extension.inc');
|
||||
include($phpbb_root_path . 'config.'.$phpEx);
|
||||
include($phpbb_root_path . 'includes/functions.'.$phpEx);
|
||||
require($phpbb_root_path . 'includes/acm/cache_' . $acm_type . '.'.$phpEx);
|
||||
include($phpbb_root_path . 'db/' . $dbms . '.'.$phpEx);
|
||||
|
||||
$cache = new acm();
|
||||
$db = new sql_db($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false);
|
||||
|
||||
// Just Do it (tm)
|
||||
$sql = "RENAME TABLE {$table_prefix}posts TO {$table_prefix}posts_temp";
|
||||
$db->sql_query($sql);
|
||||
|
||||
$sql = "CREATE TABLE {$table_prefix}posts
|
||||
SELECT p.*, pt.post_subject, pt.post_text, pt.post_checksum, pt.bbcode_bitfield, pt.bbcode_uid
|
||||
FROM {$table_prefix}posts_temp p, {$table_prefix}posts_text pt
|
||||
WHERE pt.post_id = p.post_id";
|
||||
$db->sql_query($sql);
|
||||
|
||||
switch (SQL_LAYER)
|
||||
{
|
||||
case 'mysql':
|
||||
case 'mysql4':
|
||||
$sql = 'ALTER TABLE ' . $table_prefix . 'posts
|
||||
ADD PRIMARY KEY (post_id),
|
||||
ADD INDEX topic_id (topic_id),
|
||||
ADD INDEX poster_ip (poster_ip),
|
||||
ADD INDEX post_approved (post_approved),
|
||||
MODIFY COLUMN post_id mediumint(8) UNSIGNED NOT NULL auto_increment,
|
||||
ADD COLUMN post_encoding varchar(11) DEFAULT \'iso-8859-15\' NOT NULL';
|
||||
break;
|
||||
|
||||
case 'mssql':
|
||||
case 'mssql-odbc':
|
||||
case 'msaccess':
|
||||
break;
|
||||
|
||||
case 'postgresql':
|
||||
break;
|
||||
}
|
||||
$db->sql_query($sql);
|
||||
|
||||
$sql = "UPDATE {$table_prefix}topics SET topic_poster = 1 WHERE topic_poster = 0 OR topic_poster IS NULL";
|
||||
$db->sql_query($sql);
|
||||
$sql = "UPDATE {$table_prefix}topics SET topic_last_poster_id = 1 WHERE topic_last_poster_id = 0 OR topic_last_poster_id IS NULL";
|
||||
$db->sql_query($sql);
|
||||
$sql = "UPDATE {$table_prefix}posts SET poster_id = 1 WHERE poster_id = 0 OR poster_id IS NULL";
|
||||
$db->sql_query($sql);
|
||||
$sql = "UPDATE {$table_prefix}users SET user_id = 1 WHERE user_id = 0";
|
||||
$db->sql_query($sql);
|
||||
|
||||
$sql = "SELECT t.topic_id
|
||||
FROM {$table_prefix}topics t
|
||||
LEFT JOIN {$table_prefix}posts p ON p.topic_id = t.topic_id
|
||||
WHERE p.topic_id IS NULL";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$del_sql = '';
|
||||
do
|
||||
{
|
||||
$del_sql .= (($del_sql != '') ? ', ' : '') . $row['topic_id'];
|
||||
}
|
||||
while ($row = $db->sql_fetchrow($result));
|
||||
|
||||
$sql = "DELETE FROM {$table_prefix}topics
|
||||
WHERE topic_id IN ($del_sql)";
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$del_sql = '';
|
||||
$sql = "SELECT topic_id, MIN(post_id) AS first_post_id, MAX(post_id) AS last_post_id, COUNT(post_id) AS total_posts
|
||||
FROM {$table_prefix}posts
|
||||
GROUP BY topic_id";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$del_sql .= (($del_sql != '') ? ', ' : '') . $row['topic_id'];
|
||||
|
||||
$sql = "UPDATE {$table_prefix}topics
|
||||
SET topic_first_post_id = " . $row['first_post_id'] . ", topic_last_post_id = " . $row['last_post_id'] . ", topic_replies = " . ($row['total_posts'] - 1) . "
|
||||
WHERE topic_id = " . $row['topic_id'];
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$sql = "DELETE FROM {$table_prefix}topics WHERE topic_id NOT IN ($del_sql)";
|
||||
$db->sql_query($sql);
|
||||
|
||||
$topic_count = $post_count = array();
|
||||
$sql = "SELECT forum_id, COUNT(topic_id) AS topics
|
||||
FROM {$table_prefix}topics
|
||||
GROUP BY forum_id";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$topic_count[$row['forum_id']] = $row['topics'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$sql = "SELECT forum_id, COUNT(post_id) AS posts
|
||||
FROM {$table_prefix}posts
|
||||
GROUP BY forum_id";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$post_count[$row['forum_id']] = $row['posts'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
switch (SQL_LAYER)
|
||||
{
|
||||
case 'oracle':
|
||||
$sql = "SELECT f.*, p.post_time, p.post_username, u.username, u.user_id
|
||||
FROM " . $table_prefix . "forums f, " . $table_prefix . "posts p, " . $table_prefix . "users u
|
||||
WHERE p.post_id = f.forum_last_post_id(+)
|
||||
AND u.user_id = p.poster_id(+)";
|
||||
break;
|
||||
|
||||
default:
|
||||
$sql = "SELECT f.forum_id, p.post_time, p.post_username, u.username, u.user_id
|
||||
FROM ((" . $table_prefix . "forums f
|
||||
LEFT JOIN " . $table_prefix . "posts p ON p.post_id = f.forum_last_post_id)
|
||||
LEFT JOIN " . $table_prefix . "users u ON u.user_id = p.poster_id)";
|
||||
break;
|
||||
}
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$sql_ary = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$forum_id = $row['forum_id'];
|
||||
|
||||
$sql_ary[] = "UPDATE " . $table_prefix . "forums
|
||||
SET forum_last_poster_id = " . ((!empty($row['user_id']) && $row['user_id'] != ANONYMOUS) ? $row['user_id'] : ANONYMOUS) . ", forum_last_poster_name = '" . ((!empty($row['user_id']) && $row['user_id'] != ANONYMOUS) ? addslashes($row['username']) : addslashes($row['post_username'])) . "', forum_last_post_time = " . $row['post_time'] . ", forum_posts = " . (($post_count[$forum_id]) ? $post_count[$forum_id] : 0) . ", forum_topics = " . (($topic_count[$forum_id]) ? $topic_count[$forum_id] : 0) . "
|
||||
WHERE forum_id = $forum_id";
|
||||
|
||||
$sql = "SELECT t.topic_id, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time
|
||||
FROM " . $table_prefix . "topics t, " . $table_prefix . "users u, " . $table_prefix . "posts p, " . $table_prefix . "posts p2, " . $table_prefix . "users u2
|
||||
WHERE t.forum_id = $forum_id
|
||||
AND u.user_id = t.topic_poster
|
||||
AND p.post_id = t.topic_first_post_id
|
||||
AND p2.post_id = t.topic_last_post_id
|
||||
AND u2.user_id = p2.poster_id";
|
||||
$result2 = $db->sql_query($sql);
|
||||
|
||||
while ($row2 = $db->sql_fetchrow($result2))
|
||||
{
|
||||
$sql_ary[] = "UPDATE " . $table_prefix . "topics
|
||||
SET topic_poster = " . $row2['user_id'] . ", topic_first_poster_name = '" . ((!empty($row2['user_id']) && $row2['user_id'] != ANONYMOUS) ? addslashes($row2['username']) : addslashes($row2['post_username'])) . "', topic_last_poster_id = " . ((!empty($row2['id2']) && $row2['id2'] != ANONYMOUS) ? $row2['id2'] : ANONYMOUS) . ", topic_last_post_time = " . $row2['post_time'] . ", topic_last_poster_name = '" . ((!empty($row2['id2']) && $row2['id2'] != ANONYMOUS) ? addslashes($row2['user2']) : addslashes($row2['post_username2'])) . "'
|
||||
WHERE topic_id = " . $row2['topic_id'];
|
||||
}
|
||||
$db->sql_freeresult($result2);
|
||||
|
||||
unset($row2);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
foreach ($sql_ary as $sql)
|
||||
{
|
||||
$sql . "<br />";
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
echo "<p><b>Done</b></p>\n";
|
||||
|
||||
?>
|
@@ -1,58 +0,0 @@
|
||||
<?php
|
||||
|
||||
//
|
||||
// Security message:
|
||||
//
|
||||
// This script is potentially dangerous.
|
||||
// Remove or comment the next line (die(".... ) to enable this script.
|
||||
// Do NOT FORGET to either remove this script or disable it after you have used it.
|
||||
//
|
||||
die("Please read the first lines of this script for instructions on how to enable it");
|
||||
|
||||
//
|
||||
// Do not change anything below this line.
|
||||
//
|
||||
|
||||
|
||||
// Just a handy script to completely wipe out the contents of a
|
||||
// database.. Use with caution :)
|
||||
|
||||
|
||||
if(!isset($submit))
|
||||
{
|
||||
?>
|
||||
<FORM ACTION="<?php echo $PHP_SELF?>" METHOD="post" >
|
||||
<table>
|
||||
<tr>
|
||||
<td>DB host:</td>
|
||||
<td><INPUT TYPE="text" name="dbhost" value="localhost"></td>
|
||||
</tr><tr>
|
||||
<td>DB name:</td>
|
||||
<td><INPUT TYPE="text" name="dbname" value="phpBB"></td>
|
||||
</tr><tr>
|
||||
<td>DB username:</td>
|
||||
<td><INPUT TYPE="text" name="dbuser" value="root"></td>
|
||||
</tr><tr>
|
||||
<td>DB password:</td>
|
||||
<td><INPUT TYPE="password" name="dbpass"></td>
|
||||
</tr></table>
|
||||
<INPUT TYPE="submit" name="submit" value="Submit">
|
||||
</FORM>
|
||||
<?php
|
||||
}
|
||||
else
|
||||
{
|
||||
mysql_connect($dbhost, $dbuser, $dbpass) || die(mysql_error());
|
||||
mysql_select_db($dbname);
|
||||
|
||||
$result = mysql_query("SHOW TABLES");
|
||||
while($row = mysql_fetch_row($result)){
|
||||
$table = $row[0];
|
||||
print "Going to drop $table...";
|
||||
mysql_query("DROP TABLE $table") || die();
|
||||
print "Done.<br>\n";
|
||||
flush();
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
@@ -1,193 +0,0 @@
|
||||
<?php
|
||||
|
||||
//
|
||||
// Security message:
|
||||
//
|
||||
// This script is potentially dangerous.
|
||||
// Remove or comment the next line (die(".... ) to enable this script.
|
||||
// Do NOT FORGET to either remove this script or disable it after you have used it.
|
||||
//
|
||||
|
||||
//
|
||||
// Do not change anything below this line.
|
||||
//
|
||||
set_time_limit(0);
|
||||
|
||||
$phpbb_root_path = "../";
|
||||
include($phpbb_root_path . 'extension.inc');
|
||||
include($phpbb_root_path . 'common.'.$phpEx);
|
||||
include($phpbb_root_path . 'includes/search.'.$phpEx);
|
||||
|
||||
$common_percent = 0.4; // Percentage of posts in which a word has to appear to be marked as common
|
||||
|
||||
print "<html>\n<body>\n";
|
||||
|
||||
//
|
||||
// Try and load stopword and synonym files
|
||||
//
|
||||
// This needs fixing! Shouldn't be hardcoded to English files!
|
||||
$stopword_array = file($phpbb_root_path . "language/lang_english/search_stopwords.txt");
|
||||
$synonym_array = file($phpbb_root_path . "language/lang_english/search_synonyms.txt");
|
||||
|
||||
//
|
||||
// Fetch a batch of posts_text entries
|
||||
//
|
||||
$sql = "SELECT COUNT(*) as total, MAX(post_id) as max_post_id
|
||||
FROM ". POSTS_TABLE;
|
||||
if ( !($result = $db->sql_query($sql)) )
|
||||
{
|
||||
$error = $db->sql_error();
|
||||
die("Couldn't get maximum post ID :: " . $sql . " :: " . $error['message']);
|
||||
}
|
||||
|
||||
$max_post_id = $db->sql_fetchrow($result);
|
||||
|
||||
$totalposts = $max_post_id['total'];
|
||||
$max_post_id = $max_post_id['max_post_id'];
|
||||
|
||||
$postcounter = (!isset($HTTP_GET_VARS['batchstart'])) ? 0 : $HTTP_GET_VARS['batchstart'];
|
||||
|
||||
$batchsize = 200; // Process this many posts per loop
|
||||
$batchcount = 0;
|
||||
for(;$postcounter <= $max_post_id; $postcounter += $batchsize)
|
||||
{
|
||||
$batchstart = $postcounter + 1;
|
||||
$batchend = $postcounter + $batchsize;
|
||||
$batchcount++;
|
||||
|
||||
$sql = "SELECT *
|
||||
FROM " . POSTS_TABLE . "
|
||||
WHERE post_id
|
||||
BETWEEN $batchstart
|
||||
AND $batchend";
|
||||
if( !($result = $db->sql_query($sql)) )
|
||||
{
|
||||
$error = $db->sql_error();
|
||||
die("Couldn't get post_text :: " . $sql . " :: " . $error['message']);
|
||||
}
|
||||
|
||||
$rowset = $db->sql_fetchrowset($result);
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$post_rows = count($rowset);
|
||||
|
||||
if( $post_rows )
|
||||
{
|
||||
|
||||
// $sql = "LOCK TABLES ".POST_TEXT_TABLE." WRITE";
|
||||
// $result = $db->sql_query($sql);
|
||||
print "\n<p>\n<a href='$PHP_SELF?batchstart=$batchstart'>Restart from posting $batchstart</a><br>\n";
|
||||
|
||||
// For every post in the batch:
|
||||
for($post_nr = 0; $post_nr < $post_rows; $post_nr++ )
|
||||
{
|
||||
print ".";
|
||||
flush();
|
||||
|
||||
$post_id = $rowset[$post_nr]['post_id'];
|
||||
|
||||
$matches = array();
|
||||
$matches['text'] = split_words(clean_words("post", $rowset[$post_nr]['post_text'], $stopword_array, $synonym_array));
|
||||
$matches['title'] = split_words(clean_words("post", $rowset[$post_nr]['post_subject'], $stopword_array, $synonym_array));
|
||||
|
||||
while( list($match_type, $match_ary) = @each($matches) )
|
||||
{
|
||||
$title_match = ( $match_type == 'title' ) ? 1 : 0;
|
||||
|
||||
$num_matches = count($match_ary);
|
||||
|
||||
if ( $num_matches < 1 )
|
||||
{
|
||||
// Skip this post if no words where found
|
||||
continue;
|
||||
}
|
||||
|
||||
// For all words in the posting
|
||||
$sql_in = "";
|
||||
|
||||
$sql_insert = '';
|
||||
$sql_select = '';
|
||||
|
||||
$word = array();
|
||||
$word_count = array();
|
||||
|
||||
for($j = 0; $j < $num_matches; $j++)
|
||||
{
|
||||
$this_word = strtolower(trim($match_ary[$j]));
|
||||
if ( $this_word != '' )
|
||||
{
|
||||
$word_count[$this_word] = ( isset($word_count[$this_word]) ) ? $word_count[$this_word] + 1 : 0;
|
||||
$comma = ($sql_insert != '')? ', ': '';
|
||||
|
||||
$sql_insert .= "$comma('" . $this_word . "')";
|
||||
$sql_select .= "$comma'" . $this_word . "'";
|
||||
}
|
||||
}
|
||||
|
||||
if ( $sql_insert == '' )
|
||||
{
|
||||
die("no words found");
|
||||
}
|
||||
|
||||
$sql = 'INSERT IGNORE INTO ' . SEARCH_WORD_TABLE . "
|
||||
(word_text)
|
||||
VALUES $sql_insert";
|
||||
if ( !$result = $db->sql_query($sql) )
|
||||
{
|
||||
$error = $db->sql_error();
|
||||
die("Couldn't INSERT words :: " . $sql . " :: " . $error['message']);
|
||||
}
|
||||
|
||||
// Get the word_id's out of the DB (to see if they are already there)
|
||||
$sql = "SELECT word_id, word_text
|
||||
FROM " . SEARCH_WORD_TABLE . "
|
||||
WHERE word_text IN ($sql_select)
|
||||
GROUP BY word_text";
|
||||
$result = $db->sql_query($sql);
|
||||
if ( !$result )
|
||||
{
|
||||
$error = $db->sql_error();
|
||||
die("Couldn't select words :: " . $sql . " :: " . $error['message']);
|
||||
}
|
||||
|
||||
$sql_insert = array();
|
||||
while( $row = $db->sql_fetchrow($result) )
|
||||
{
|
||||
$sql_insert[] = "($post_id, " . $row['word_id'] . ", $title_match)";
|
||||
}
|
||||
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$sql = "INSERT INTO " . SEARCH_MATCH_TABLE . "
|
||||
(post_id, word_id, title_match)
|
||||
VALUES " . implode(", ", $sql_insert);
|
||||
$result = $db->sql_query($sql);
|
||||
if ( !$result )
|
||||
{
|
||||
$error = $db->sql_error();
|
||||
die("Couldn't insert new word match :: " . $sql . " :: " . $error['message']);
|
||||
}
|
||||
|
||||
} // All posts
|
||||
}
|
||||
|
||||
// $sql = "UNLOCK TABLES";
|
||||
// $result = $db->sql_query($sql);
|
||||
|
||||
}
|
||||
|
||||
// Remove common words after the first 2 batches and after every 4th batch after that.
|
||||
if( $batchcount % 4 == 3 )
|
||||
{
|
||||
print "<br>Removing common words (words that appear in more than $common_percent of the posts)<br>\n";
|
||||
flush();
|
||||
print "Removed ". remove_common("global", $common_percent) ." words that where too common.<br>";
|
||||
}
|
||||
}
|
||||
|
||||
echo "<br>Done";
|
||||
|
||||
?>
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -1,34 +0,0 @@
|
||||
/* ********************************************************************** *\
|
||||
/* *\
|
||||
/* phpBB 2.2 <20> Copyright 2003 phpBB Group *\
|
||||
/* *\
|
||||
/* [ http://www.phpbb.com/ ] *\
|
||||
/* *\
|
||||
/* ********************************************************************** *\
|
||||
|
||||
phpBB Project Manager : theFinn (James Atkinson)
|
||||
|
||||
phpBB Lead Developer : psoTFX (Paul S. Owen)
|
||||
|
||||
phpBB Developers : Ashe (Ludovic Arnaud)
|
||||
Acyd Burn (Meik Sievertsen)
|
||||
|
||||
phpBB Group : theFinn (James Atkinson)
|
||||
psoTFX (Paul S. Owen)
|
||||
BartVB (Bart Van Bragt)
|
||||
AbelaJohnB (John Abela)
|
||||
ffeingol (Frank Feingold)
|
||||
dougk_f77 (Doug Kelly)
|
||||
nathan (Nathan Codding)
|
||||
The_Systech (Jonathan Haase)
|
||||
|
||||
Original subSilver by subBlue Design, Tom Beddard, <20> 2001 phpBB Group
|
||||
|
||||
phpBB 2.2 contains code from the following applications:
|
||||
|
||||
LGPL licenced:
|
||||
Smarty <20> 2001, 2002 by ispi of Lincoln, Inc, http://smarty.php.net/
|
||||
|
||||
GPL licenced:
|
||||
phpMyAdmin <20> 2001,2003 phpMyAdmin Devel team, http://www.phpmyadmin.net/
|
||||
Jabber class <20> 2003 Carlo Zottmann, http://phpjabber.g-blog.net
|
@@ -1,281 +0,0 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
@@ -1,88 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" href="../templates/subSilver/subSilver.css" type="text/css" />
|
||||
<style type="text/css">
|
||||
<!--
|
||||
p,ul,td {font-size:10pt;}
|
||||
h2 {font-size:15pt;font-weight:bold;color:red}
|
||||
h3 {font-size:12pt;color:blue}
|
||||
//-->
|
||||
</style>
|
||||
</head>
|
||||
<body bgcolor="#E5E5E5" text="#000000" link="#006699" vlink="#006699">
|
||||
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="10" align="center">
|
||||
<tr>
|
||||
<td class="bodyline"><table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td>
|
||||
|
||||
<h1>Using the <i><u>auth</u></i> class</h1>
|
||||
|
||||
<h2>What is it?</h2>
|
||||
|
||||
<p>The <i><u>auth</u></i> class contains methods related to authorisation users to access various board functions, e.g. posting, viewing, replying, logging in (and out), etc. If you need to check whether a user can carry out a task or handle user login/logouts this class is required.</p>
|
||||
|
||||
<h2>Initialisation</h2>
|
||||
|
||||
<p>To use any methods contained with the <i><u>auth</u></i> class it first needs to be instantiated. This is best achieved early in the execution of the script in the following manner:
|
||||
|
||||
<pre>$auth = new auth();</pre>
|
||||
|
||||
<p>Once an instance of the object has been created you are free to call the various methods it contains. Please note that should you wish to use the <i><u>auth_admin</u></i> methods you will need to instantiate this seperately but in the same way.</p>
|
||||
|
||||
<h3><i>acl</i></h3>
|
||||
|
||||
<p>The <i>acl</i> method is the initialisation routine for all the acl functions. If you intend calling any acl method you must first call this. The method takes as its one and only required parameter a hash of userdata. This hash must contain at least the following information; user_id, user_permissions and user_founder. It is called in the following way:
|
||||
|
||||
<pre>$auth->acl(<i>userdata</i>);</pre>
|
||||
|
||||
<p>Where userdata is the hash containing the aforementioned data.</p>
|
||||
|
||||
<h3><i>acl_get</i></h3>
|
||||
|
||||
<p>This method is the primary way of determining what a user can and cannot do for a given option in, optionally, a given forum. The method should be called in the following way:</p>
|
||||
|
||||
<pre>$result = $auth->acl_get(<i>option</i>[, <i>forum</i>]);</pre>
|
||||
|
||||
<p>Where option is a string representing the required option, e.g. 'f_list', 'm_edit', 'a_adduser', etc. The optional forum term is the integer forum_id.</p>
|
||||
|
||||
<pThe method returns a positive integer when the user is allowed to carry out the option and a zero if denied.</p>
|
||||
|
||||
<h3><i>acl_gets</i></h3>
|
||||
|
||||
<p>This method is funtionally similar to <i>acl_get</i> in that it returns information on whether a user can or cannot carry out a given task. The difference here is the ability to test several different options in one go. This may be useful for testing whether a user is a moderator or an admin in one call. Rather than having to call and check <i>acl_get</i> twice.</p>
|
||||
|
||||
<p>The method should be called thus:</p>
|
||||
|
||||
<pre>$result = $auth->acl_gets(<i>option1</i>[, <i>option2</i>, ..., <i>optionN</i>, <i>forum</i>]);</pre>
|
||||
|
||||
<p>As with the <i>acl_get</i> method the options are strings representing the required permissions to check. The forum again is an integer representing a given forum_id.</p>
|
||||
|
||||
<h3><i>acl_cache</i></h3>
|
||||
|
||||
<p>This should be considered a private method and not be called externally. It handles the generation of the user_permissions data from the basic user and group authorisation data. When necessary this method is called automatically by <i>acl</i>.</p>
|
||||
|
||||
<h3><i>login</i></h3>
|
||||
|
||||
<p></p>
|
||||
|
||||
<h2>Admin related functions</h2>
|
||||
|
||||
<p>A number of additional methods are available related to <i><u>auth</u></i>. These handle more basic functions such as adding user and group permissions, new options and clearing the user cache. These methods are contained within a seperate class, <i><u>auth_admin</u></i>. This can be found in the functions_admin source.</p>
|
||||
|
||||
<p>To use any methods this class contains it first needs to be instantiated seperately from <i><u>auth</u></i>. This is achieved in the same way as <i><u>auth</u></i>:</p>
|
||||
|
||||
<pre>$authadmin = new auth_admin();</pre>
|
||||
|
||||
<p>This instance gives you access to both the methods of this specific class and that of <i><u>auth</u></i>.</p>
|
||||
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -1,26 +0,0 @@
|
||||
CODING GUIDELINES : Initials by psoTFX (July 2001)
|
||||
-----------------
|
||||
|
||||
* The coding style is defined in the codingstandards.html file, all attempts should be made to follow it as closely as possible
|
||||
|
||||
* All SQL should be cross-DB compatible, if DB specific SQL is used alternatives must be provided which work on all supported DB's (MySQL, MSSQL (7.0 and 2000), PostgreSQL (7.0+), Oracle8, ODBC (generalised if possible, otherwise MS Access, DB2))
|
||||
|
||||
* All SQL commands should utilise the DataBase Abstraction Layer (DBAL)
|
||||
|
||||
* All URL's (and form actions) _must_ be wrapped in append_sid, this ensures the session_id is propagated when cookies aren't available
|
||||
|
||||
* The minimum amount of data should be passed via GET or POST, checking should occur within individual scripts (to prevent spoofing of information)
|
||||
|
||||
* The auth function should be used for all authorisation checking
|
||||
|
||||
* Sessions should be initiated on each page, as near the top as possible using the session_pagestart function (userdata should be obtained by calling the init_userprefs immediately after session initialisation)
|
||||
|
||||
* Login checks should be forwarded to the login page (supplying a page to forward onto once check is complete if required)
|
||||
|
||||
* All template variables should be named appropriately (using underscores for spaces), language entries should be prefixed with L_, system data with S_, urls with U_, all other variables should be presented 'as is'.
|
||||
|
||||
* Functions used by more than page should be placed in functions.php, functions specific to one page should be placed on that page (at the top to maintain compatibility with PHP3) surrounded by comments indicating the start and end of the function block
|
||||
|
||||
* All messages/errors should be output by the message_die function using the appropriate message type (see function for details)
|
||||
|
||||
* No attempt should be made to remove any copyright information (either contained within the source or displayed interactively when the source is run/compiled), neither should the copyright information be altered in any way (it may be added to)
|
@@ -1,327 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<!-- saved from url=(0044) -->
|
||||
<HTML><HEAD><TITLE>phpBB Coding Standard Guidelines</TITLE>
|
||||
<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
|
||||
<META content="MSHTML 5.00.2920.0" name=GENERATOR></HEAD>
|
||||
<BODY aLink=#cccccc bgColor=#ffffff link=#0000ff text=#000000
|
||||
vLink=#0000ff><FONT face=verdana,arial,tahoma size=-1><A name=top></A>
|
||||
<H2>phpBB Coding Standard Guidelines</H2>Comments or suggestions? email <A
|
||||
href="mailto:nate@phpbb.com">nate@phpbb.com</A><BR><BR><A
|
||||
href="#editor">Editor
|
||||
Settings</A><BR><A
|
||||
href="#naming">Naming
|
||||
Conventions</A><BR><A
|
||||
href="#layout">Code Layout</A><BR><A
|
||||
href="#general">General
|
||||
Guidelines</A><BR><BR><BR><A name=editor></A><A
|
||||
href="#top">top</A>
|
||||
<H3>Editor Settings</H3>
|
||||
<P><B>Tabs vs Spaces:</B> In order to make this as simple as possible, we will
|
||||
be using tabs, not spaces. Feel free to set how many spaces your editor uses
|
||||
when it <B>displays</B> tabs, but make sure that when you <B>save</B> the file,
|
||||
it's saving tabs and not spaces. This way, we can each have the code be
|
||||
displayed the way we like it, without breaking the layout of the actual files.
|
||||
</P>
|
||||
<P><B>Linefeeds:</B> Ensure that your editor is saving files in the UNIX format.
|
||||
This means lines are terminated with a newline, not with a CR/LF combo as they
|
||||
are on Win32, or whatever the Mac uses. Any decent Win32 editor should be able
|
||||
to do this, but it might not always be the default. Know your editor. If you
|
||||
want advice on Windows text editors, just ask one of the developers. Some of
|
||||
them do their editing on Win32. </P><BR><BR><A name=naming></A><A
|
||||
href="#top">top</A>
|
||||
<H3>Naming Conventions</H3>
|
||||
<P>We will not be using any form of hungarian notation in our naming
|
||||
conventions. Many of us believe that hungarian naming is one of the primary code
|
||||
obfuscation techniques currently in use. </P>
|
||||
<P><B>Variable Names:</B> Variable names should be in all lowercase, with words
|
||||
separated by an underscore. <BR><BR> Example: <CODE><FONT
|
||||
size=+1>$current_user</FONT></CODE> is right, but <CODE><FONT
|
||||
size=+1>$currentuser</FONT></CODE> and <CODE><FONT
|
||||
size=+1>$currentUser</FONT></CODE> are not. <BR><BR>Names should be descriptive,
|
||||
but concise. We don't want huge sentences as our variable names, but typing an
|
||||
extra couple of characters is always better than wondering what exactly a
|
||||
certain variable is for. </P>
|
||||
<P><B>Loop Indices:</B> The <I>only</I> situation where a one-character variable
|
||||
name is allowed is when it's the index for some looping construct. In this case,
|
||||
the index of the outer loop should always be $i. If there's a loop inside that
|
||||
loop, its index should be $j, followed by $k, and so on. If the loop is being
|
||||
indexed by some already-existing variable with a meaningful name, this guideline
|
||||
does not apply. <BR><BR> Example: <PRE><FONT size=+1>
|
||||
for ($i = 0; $i < $outer_size; $i++)
|
||||
{
|
||||
for ($j = 0; $j < $inner_size; $j++)
|
||||
{
|
||||
foo($i, $j);
|
||||
}
|
||||
} </FONT></PRE>
|
||||
<P></P>
|
||||
<P><B>Function Names:</B> Functions should also be named descriptively. We're
|
||||
not programming in C here, we don't want to write functions called things like
|
||||
"stristr()". Again, all lower-case names with words separated by a single
|
||||
underscore character. Function names should preferably have a verb in them
|
||||
somewhere. Good function names are <CODE><FONT
|
||||
size=+1>print_login_status()</FONT></CODE>, <CODE><FONT
|
||||
size=+1>get_user_data()</FONT></CODE>, etc.. </P>
|
||||
<P><B>Function Arguments:</B> Arguments are subject to the same guidelines as
|
||||
variable names. We don't want a bunch of functions like: <CODE><FONT
|
||||
size=+1>do_stuff($a, $b, $c)</FONT></CODE>. In most cases, we'd like to be able
|
||||
to tell how to use a function by just looking at its declaration. </P>
|
||||
<P><B>Summary:</B> The basic philosophy here is to not hurt code clarity for the
|
||||
sake of laziness. This has to be balanced by a little bit of common sense,
|
||||
though; <CODE><FONT size=+1>print_login_status_for_a_given_user()</FONT></CODE>
|
||||
goes too far, for example -- that function would be better named <CODE><FONT
|
||||
size=+1>print_user_login_status()</FONT></CODE> , or just <CODE><FONT
|
||||
size=+1>print_login_status()</FONT></CODE>. </P><BR><BR><A name=layout></A><A
|
||||
href="#top">top</A>
|
||||
<H3>Code Layout</H3>
|
||||
<P><B>Standard header for new files:</B> Here a template of the header that must
|
||||
be included at the start of all phpBB files: <PRE><FONT size=+1>
|
||||
/***************************************************************************
|
||||
filename.php
|
||||
-------------------
|
||||
begin : Sat June 17 2000
|
||||
copyright : (C) 2000 The phpBB Group
|
||||
email : support@phpBB.com
|
||||
|
||||
$Id$
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
</FONT></PRE>
|
||||
<P></P>
|
||||
<P><B>Always include the braces:</B> This is another case of being too lazy to
|
||||
type 2 extra characters causing problems with code clarity. Even if the body of
|
||||
some construct is only one line long, do <I>not</I> drop the braces. Just don't.
|
||||
<BR><BR> Examples:<PRE><FONT size=+1>
|
||||
/* These are all wrong. */
|
||||
if (condition) do_stuff();
|
||||
if (condition)
|
||||
do_stuff();
|
||||
while (condition)
|
||||
do_stuff();
|
||||
for ($i = 0; $i < size; $i++)
|
||||
do_stuff($i);
|
||||
|
||||
/* These are right. */
|
||||
if (condition)
|
||||
{
|
||||
do_stuff();
|
||||
}
|
||||
while (condition)
|
||||
{
|
||||
do_stuff();
|
||||
}
|
||||
for ($i = 0; $i < size; $i++)
|
||||
{
|
||||
do_stuff();
|
||||
}
|
||||
</FONT></PRE>
|
||||
<P></P>
|
||||
<P><B>Where to put the braces:</B> This one is a bit of a holy war, but we're
|
||||
going to use a style that can be summed up in one sentence: Braces always go on
|
||||
their own line. The closing brace should also always be at the same column as
|
||||
the corresponding opening brace. <BR><BR> Examples:<PRE><FONT size=+1>
|
||||
if (condition)
|
||||
{
|
||||
while (condition2)
|
||||
{
|
||||
...
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
...
|
||||
}
|
||||
|
||||
for ($i = 0; $i < $size; $i++)
|
||||
{
|
||||
...
|
||||
}
|
||||
|
||||
while (condition)
|
||||
{
|
||||
...
|
||||
}
|
||||
|
||||
function do_stuff()
|
||||
{
|
||||
...
|
||||
}
|
||||
</FONT></PRE>
|
||||
<P></P>
|
||||
<P><B>Use spaces between tokens:</B> This is another simple, easy step that
|
||||
helps keep code readable without much effort. Whenever you write an assignment,
|
||||
expression, etc.. Always leave <I>one</I> space between the tokens. Basically,
|
||||
write code as if it was English. Put spaces between variable names and
|
||||
operators. Don't put spaces just after an opening bracket or before a closing
|
||||
bracket. Don't put spaces just before a comma or a semicolon. This is best shown
|
||||
with a few examples. <BR><BR> Examples:<PRE><FONT size=+1>
|
||||
/* Each pair shows the wrong way followed by the right way. */
|
||||
|
||||
$i=0;
|
||||
$i = 0;
|
||||
|
||||
if($i<7) ...
|
||||
if ($i < 7) ...
|
||||
|
||||
if ( ($i < 7)&&($j > 8) ) ...
|
||||
if (($i < 7) && ($j > 8)) ...
|
||||
|
||||
do_stuff( $i, "foo", $b );
|
||||
do_stuff($i, "foo", $b);
|
||||
|
||||
for($i=0; $i<$size; $i++) ...
|
||||
for($i = 0; $i < $size; $i++) ...
|
||||
|
||||
$i=($j < $size)?0:1;
|
||||
$i = ($j < $size) ? 0 : 1;
|
||||
</FONT></PRE>
|
||||
<P></P>
|
||||
<P><B>Operator precedence:</B> Do you know the exact precedence of all the
|
||||
operators in PHP? Neither do I. Don't guess. Always make it obvious by using
|
||||
brackets to force the precedence of an equation so you know what it does.
|
||||
<BR><BR> Examples:<PRE><FONT size=+1>
|
||||
/* what's the result? who knows. */
|
||||
$bool = ($i < 7 && $j > 8 || $k == 4);
|
||||
|
||||
/* now you can be certain what I'm doing here. */
|
||||
$bool = (($i < 7) && (($j < 8) || ($k == 4)))
|
||||
</FONT></PRE>
|
||||
<P></P>
|
||||
<P><B>SQL code layout:</B> Since we'll all be using different editor settings,
|
||||
don't try to do anything complex like aligning columns in SQL code. Do, however,
|
||||
break statements onto their own lines. Here's a sample of how SQL code should
|
||||
look. Note where the lines break, the capitalization, and the use of brackets.
|
||||
<BR><BR> Examples:<PRE><FONT size=+1>
|
||||
SELECT field1 AS something, field2, field3
|
||||
FROM table a, table b
|
||||
WHERE (this = that) AND (this2 = that2)
|
||||
</FONT></PRE>
|
||||
<P></P>
|
||||
<P><B>SQL insert statements:</B> SQL INSERT statements can be written in two
|
||||
different ways. Either you specify explicitly the columns being inserted, or
|
||||
you rely on knowing the order of the columns in the database and do not
|
||||
specify them. We want to use the former approach, where it is explicitly
|
||||
stated whcih columns are being inserted. This means our application-level code
|
||||
will not depend on the order of the fields in the database, and will not be broken
|
||||
if we add additional fields (unless they're specified as NOT NULL, of course).
|
||||
<BR><BR> Examples:<PRE><FONT size=+1>
|
||||
# This is not what we want.
|
||||
INSERT INTO mytable
|
||||
VALUES ('something', 1, 'else')
|
||||
|
||||
# This is correct.
|
||||
INSERT INTO mytable (column1, column2, column3)
|
||||
VALUES ('something', 1, 'else')
|
||||
</FONT></PRE>
|
||||
<P></P><BR><BR><A name=general></A><A
|
||||
href="#top">top</A>
|
||||
<H3>General Guidelines</H3>
|
||||
<P><B>Quoting strings:</B> There are two different ways to quote strings in PHP
|
||||
- either with single quotes or with double quotes. The main difference is that
|
||||
the parser does variable interpolation in double-quoted strings, but not in
|
||||
single quoted strings. Because of this, you should <I>always</I> use single
|
||||
quotes <I>unless</I> you specifically need variable interpolation to be done on
|
||||
that string. This way, we can save the parser the trouble of parsing a bunch of
|
||||
strings where no interpolation needs to be done. Also, if you are using a string
|
||||
variable as part of a function call, you do not need to enclose that variable in
|
||||
quotes. Again, this will just make unnecessary work for the parser. Note,
|
||||
however, that nearly all of the escape sequences that exist for double-quoted
|
||||
strings will not work with single-quoted strings. Be careful, and feel free to
|
||||
break this guideline if it's making your code harder to read.
|
||||
<BR><BR> Examples:<PRE><FONT size=+1>
|
||||
/* wrong */
|
||||
$str = "This is a really long string with no variables for the parser to find.";
|
||||
do_stuff("$str");
|
||||
|
||||
/* right */
|
||||
$str = 'This is a really long string with no variables for the parser to find.';
|
||||
do_stuff($str);
|
||||
</FONT></PRE>
|
||||
<P></P>
|
||||
<P><B>Associative array keys:</B> In PHP, it's legal to use a literal string as
|
||||
a key to an associative array without quoting that string. We don't want to do
|
||||
this -- the string should always be quoted to avoid confusion. Note that this is
|
||||
only when we're using a literal, not when we're using a variable.
|
||||
<BR><BR> Examples:<PRE><FONT size=+1>
|
||||
/* wrong */
|
||||
$foo = $assoc_array[blah];
|
||||
|
||||
/* right */
|
||||
$foo = $assoc_array['blah'];
|
||||
</FONT></PRE>
|
||||
<P></P>
|
||||
<P><B>Comments:</B> Each function should be preceded by a comment that tells a
|
||||
programmer everything they need to know to use that function. The meaning of
|
||||
every parameter, the expected input, and the output are required as a minimal
|
||||
comment. The function's behaviour in error conditions (and what those error
|
||||
conditions are) should also be present. Nobody should have to look at the actual
|
||||
source of a function in order to be able to call it with confidence in their own
|
||||
code. <BR><BR>In addition, commenting any tricky, obscure, or otherwise
|
||||
not-immediately-obvious code is clearly something we should be doing. Especially
|
||||
important to document are any assumptions your code makes, or preconditions for
|
||||
its proper operation. Any one of the developers should be able to look at any
|
||||
part of the application and figure out what's going on in a reasonable amount of
|
||||
time. </P>
|
||||
<P><B>Magic numbers:</B> Don't use them. Use named constants for any literal
|
||||
value other than obvious special cases. Basically, it's OK to check if an array
|
||||
has 0 elements by using the literal 0. It's not OK to assign some special
|
||||
meaning to a number and then use it everywhere as a literal. This hurts
|
||||
readability AND maintainability. Included in this guideline is that we should be
|
||||
using the constants TRUE and FALSE in place of the literals 1 and 0 -- even
|
||||
though they have the same values, it's more obvious what the actual logic is
|
||||
when you use the named constants. </P>
|
||||
<P><B>Shortcut operators:</B> The only shortcut operators that cause readability
|
||||
problems are the shortcut increment ($i++) and decrement ($j--) operators. These
|
||||
operators should not be used as part of an expression. They can, however, be
|
||||
used on their own line. Using them in expressions is just not worth the
|
||||
headaches when debugging. <BR><BR> Examples:<PRE><FONT size=+1>
|
||||
/* wrong */
|
||||
$array[++$i] = $j;
|
||||
$array[$i++] = $k;
|
||||
|
||||
|
||||
/* right */
|
||||
$i++;
|
||||
$array[$i] = $j;
|
||||
|
||||
$array[$i] = $k;
|
||||
$i++;
|
||||
</FONT></PRE>
|
||||
<P></P>
|
||||
<P><B>Inline conditionals:</B> Inline conditionals should only be used to do
|
||||
very simple things. Preferably, they will only be used to do assignments, and
|
||||
not for function calls or anything complex at all. They can be harmful to
|
||||
readability if used incorrectly, so don't fall in love with saving typing by
|
||||
using them. <BR><BR> Examples:<PRE><FONT size=+1>
|
||||
/* Bad place to use them */
|
||||
(($i < $size) && ($j > $size)) ? do_stuff($foo) : do_stuff($bar);
|
||||
|
||||
|
||||
/* OK place to use them */
|
||||
$min = ($i < $j) ? $i : $j;
|
||||
</FONT></PRE>
|
||||
<P></P>
|
||||
<P><B>Don't use uninitialized variables.</B> for phpBB 2, we intend to use a
|
||||
higher level of run-time error reporting. This will mean that the use of an
|
||||
uninitialized variable will be reported as an error. This will come up most
|
||||
often when checking which HTML form variables were passed. These errors can be
|
||||
avoided by using the built-in isset() function to check whether a variable has
|
||||
been set. <BR><BR> Examples:<PRE><FONT size=+1>
|
||||
/* Old way */
|
||||
if ($forum) ...
|
||||
|
||||
|
||||
/* New way */
|
||||
if (isset($forum)) ...
|
||||
</FONT></PRE>
|
||||
<P></P><BR><BR><A href="#top">Return
|
||||
to top</A> </FONT></BODY></HTML>
|
@@ -1,233 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* download.php
|
||||
* -------------------
|
||||
* begin : Thu, Apr 10, 2003
|
||||
* copyright : (C) 2003 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
if ( defined('IN_PHPBB') )
|
||||
{
|
||||
die('Hacking attempt');
|
||||
exit;
|
||||
}
|
||||
|
||||
define('IN_PHPBB', true);
|
||||
$phpbb_root_path = './';
|
||||
include($phpbb_root_path . 'extension.inc');
|
||||
include($phpbb_root_path . 'common.'.$phpEx);
|
||||
|
||||
$download_id = (isset($_REQUEST['id'])) ? intval($_REQUEST['id']) : FALSE;
|
||||
$thumbnail = (isset($_REQUEST['thumb'])) ? intval($_REQUEST['thumb']) : FALSE;
|
||||
|
||||
function send_file_to_browser($attachment, $upload_dir, $category)
|
||||
{
|
||||
global $_SERVER, $HTTP_USER_AGENT, $HTTP_SERVER_VARS, $user, $db, $config;
|
||||
|
||||
$filename = ($upload_dir == '') ? $attachment['physical_filename'] : $upload_dir . '/' . $attachment['physical_filename'];
|
||||
|
||||
if (!file_exists($filename))
|
||||
{
|
||||
trigger_error($user->lang['ERROR_NO_ATTACHMENT'] . '<br /><br />' . sprintf($user->lang['FILE_NOT_FOUND_404'], $filename));
|
||||
}
|
||||
|
||||
// Determine the Browser the User is using, because of some nasty incompatibilities.
|
||||
// borrowed from phpMyAdmin. :)
|
||||
if (!empty($_SERVER['HTTP_USER_AGENT']))
|
||||
{
|
||||
$HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
|
||||
}
|
||||
else if (!empty($HTTP_SERVER_VARS['HTTP_USER_AGENT']))
|
||||
{
|
||||
$HTTP_USER_AGENT = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
|
||||
}
|
||||
else if (!isset($HTTP_USER_AGENT))
|
||||
{
|
||||
$HTTP_USER_AGENT = '';
|
||||
}
|
||||
|
||||
if (ereg('Opera(/| )([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version))
|
||||
{
|
||||
$browser_version = $log_version[2];
|
||||
$browser_agent = 'opera';
|
||||
}
|
||||
else if (ereg('MSIE ([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version))
|
||||
{
|
||||
$browser_version = $log_version[1];
|
||||
$browser_agent = 'ie';
|
||||
}
|
||||
else if (ereg('OmniWeb/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version))
|
||||
{
|
||||
$browser_version = $log_version[1];
|
||||
$browser_agent = 'omniweb';
|
||||
}
|
||||
else if (ereg('Netscape([0-9]{1})', $HTTP_USER_AGENT, $log_version))
|
||||
{
|
||||
$browser_version = $log_version[1];
|
||||
$browser_agent = 'netscape';
|
||||
}
|
||||
else if (ereg('Mozilla/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version))
|
||||
{
|
||||
$browser_version = $log_version[1];
|
||||
$browser_agent = 'mozilla';
|
||||
}
|
||||
else if (ereg('Konqueror/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version))
|
||||
{
|
||||
$browser_version = $log_version[1];
|
||||
$browser_agent = 'konqueror';
|
||||
}
|
||||
else
|
||||
{
|
||||
$browser_version = 0;
|
||||
$browser_agent = 'other';
|
||||
}
|
||||
|
||||
// Correct the mime type - we force application/octetstream for all files, except images
|
||||
// Please do not change this, it is a security precaution
|
||||
if ($category == NONE_CAT && !strstr($attachment['mimetype'], 'image'))
|
||||
{
|
||||
$attachment['mimetype'] = ($browser_agent == 'ie' || $browser_agent == 'opera') ? 'application/octetstream' : 'application/octet-stream';
|
||||
}
|
||||
|
||||
// Now the tricky part... let's dance
|
||||
@ob_end_clean();
|
||||
@ini_set('zlib.output_compression', 'Off');
|
||||
header('Pragma: public');
|
||||
header('Content-Transfer-Encoding: none');
|
||||
|
||||
// Send out the Headers
|
||||
header('Content-Type: ' . $attachment['mimetype'] . '; name="' . $attachment['real_filename'] . '"');
|
||||
header('Content-Disposition: inline; filename="' . $attachment['real_filename'] . '"');
|
||||
|
||||
// Now send the File Contents to the Browser
|
||||
$size = @filesize($filename);
|
||||
if ($size)
|
||||
{
|
||||
header("Content-length: $size");
|
||||
}
|
||||
readfile($filename);
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
// Start session management
|
||||
$user->start();
|
||||
$auth->acl($user->data);
|
||||
$user->setup();
|
||||
|
||||
if (!$download_id)
|
||||
{
|
||||
trigger_error('NO_ATTACHMENT_SELECTED');
|
||||
}
|
||||
|
||||
if (!$config['allow_attachments'])
|
||||
{
|
||||
trigger_error('ATTACHMENT_FUNCTIONALITY_DISABLED');
|
||||
}
|
||||
|
||||
$sql = 'SELECT *
|
||||
FROM ' . ATTACHMENTS_DESC_TABLE . "
|
||||
WHERE attach_id = $download_id";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if (!($attachment = $db->sql_fetchrow($result)))
|
||||
{
|
||||
trigger_error('ERROR_NO_ATTACHMENT');
|
||||
}
|
||||
|
||||
// get forum_id for attachment authorization or private message authorization
|
||||
$authorised = FALSE;
|
||||
|
||||
// Additional query, because of more than one attachment assigned to posts and private messages
|
||||
$sql = 'SELECT a.*, p.forum_id, f.forum_password, f.parent_id
|
||||
FROM ' . ATTACHMENTS_TABLE . ' a, ' . POSTS_TABLE . ' p, ' . FORUMS_TABLE . ' f
|
||||
WHERE a.attach_id = ' . $attachment['attach_id'] . '
|
||||
AND ((a.post_id = p.post_id AND p.forum_id = f.forum_id)
|
||||
OR a.post_id = 0)';
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
if ($row['post_id'] && $auth->acl_get('f_download', $row['forum_id']))
|
||||
{
|
||||
if ($row['forum_password'])
|
||||
{
|
||||
// Do something else ... ?
|
||||
login_forum_box($row);
|
||||
}
|
||||
|
||||
$authorised = TRUE;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($config['allow_pm_attach'] && ($user->data['user_id'] == $row['user_id_2'] || $user->data['user_id'] == $row['user_id_1']))
|
||||
{
|
||||
$authorised = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if (!$authorised)
|
||||
{
|
||||
trigger_error('SORRY_AUTH_VIEW_ATTACH');
|
||||
}
|
||||
|
||||
$extensions = array();
|
||||
obtain_attach_extensions($extensions);
|
||||
|
||||
// disallowed ?
|
||||
if (!in_array($attachment['extension'], $extensions['_allowed_']))
|
||||
{
|
||||
trigger_error(sprintf($lang['EXTENSION_DISABLED_AFTER_POSTING'], $attachment['extension']));
|
||||
}
|
||||
|
||||
$download_mode = intval($extensions[$attachment['extension']]['download_mode']);
|
||||
|
||||
if ($thumbnail)
|
||||
{
|
||||
$attachment['physical_filename'] = 'thumbs/t_' . $attachment['physical_filename'];
|
||||
}
|
||||
|
||||
// Update download count
|
||||
if (!$thumbnail)
|
||||
{
|
||||
$sql = 'UPDATE ' . ATTACHMENTS_DESC_TABLE . '
|
||||
SET download_count = download_count + 1
|
||||
WHERE attach_id = ' . $attachment['attach_id'];
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
|
||||
// Determine the 'presenting'-method
|
||||
if ($download_mode == PHYSICAL_LINK)
|
||||
{
|
||||
if ($config['use_ftp_upload'] && $config['upload_dir'] == '')
|
||||
{
|
||||
trigger_error($user->lang['PHYSICAL_DOWNLOAD_NOT_POSSIBLE']);
|
||||
}
|
||||
|
||||
redirect($config['upload_dir'] . '/' . $attachment['physical_filename']);
|
||||
}
|
||||
else
|
||||
{
|
||||
send_file_to_browser($attachment, $config['upload_dir'], $extensions[$attachment['extension']]['display_cat']);
|
||||
exit;
|
||||
}
|
||||
|
||||
?>
|
@@ -1,25 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* extension.inc
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
//
|
||||
// Change this if your extension is not .php!
|
||||
//
|
||||
$phpEx = 'php';
|
||||
|
||||
//
|
||||
// For debug timing
|
||||
//
|
||||
$starttime = explode(' ', microtime());
|
||||
$starttime = $starttime[1] + $starttime[0];
|
||||
|
||||
?>
|
134
phpBB/faq.php
@@ -1,134 +0,0 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* faq.php
|
||||
* -------------------
|
||||
* begin : Sunday, Jul 8, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
define('IN_PHPBB', true);
|
||||
$phpbb_root_path = './';
|
||||
include($phpbb_root_path . 'extension.inc');
|
||||
include($phpbb_root_path . 'common.'.$phpEx);
|
||||
|
||||
// Start session management
|
||||
$user->start();
|
||||
$auth->acl($user->data);
|
||||
|
||||
$user->setup();
|
||||
|
||||
|
||||
// Load the appropriate faq file
|
||||
if (isset($_GET['mode']))
|
||||
{
|
||||
switch($_GET['mode'])
|
||||
{
|
||||
case 'bbcode':
|
||||
$lang_file = 'lang_bbcode';
|
||||
$l_title = $lang['BBCode_guide'];
|
||||
break;
|
||||
default:
|
||||
$lang_file = 'lang_faq';
|
||||
$l_title = $lang['FAQ'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang_file = 'lang_faq';
|
||||
$l_title = $lang['FAQ'];
|
||||
}
|
||||
|
||||
include($user->lang_path . $lang_file . '.' . $phpEx);
|
||||
|
||||
// Pull the array data from the lang pack
|
||||
$j = 0;
|
||||
$counter = 0;
|
||||
$counter_2 = 0;
|
||||
$faq_block = array();
|
||||
$faq_block_titles = array();
|
||||
|
||||
for($i = 0; $i < count($faq); $i++)
|
||||
{
|
||||
if ($faq[$i][0] != '--')
|
||||
{
|
||||
$faq_block[$j][$counter]['id'] = $counter_2;
|
||||
$faq_block[$j][$counter]['question'] = $faq[$i][0];
|
||||
$faq_block[$j][$counter]['answer'] = $faq[$i][1];
|
||||
|
||||
$counter++;
|
||||
$counter_2++;
|
||||
}
|
||||
else
|
||||
{
|
||||
$j = ($counter != 0) ? $j + 1 : 0;
|
||||
|
||||
$faq_block_titles[$j] = $faq[$i][1];
|
||||
|
||||
$counter = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Lets build a page ...
|
||||
//
|
||||
$template->assign_vars(array(
|
||||
'L_FAQ_TITLE' => $l_title,
|
||||
'L_BACK_TO_TOP' => $lang['Back_to_top'])
|
||||
);
|
||||
|
||||
for($i = 0; $i < count($faq_block); $i++)
|
||||
{
|
||||
if (count($faq_block[$i]))
|
||||
{
|
||||
$template->assign_block_vars('faq_block', array(
|
||||
'BLOCK_TITLE' => $faq_block_titles[$i])
|
||||
);
|
||||
|
||||
$template->assign_block_vars('faq_block_link', array(
|
||||
'BLOCK_TITLE' => $faq_block_titles[$i])
|
||||
);
|
||||
|
||||
for($j = 0; $j < count($faq_block[$i]); $j++)
|
||||
{
|
||||
$template->assign_block_vars('faq_block.faq_row', array(
|
||||
'FAQ_QUESTION' => $faq_block[$i][$j]['question'],
|
||||
'FAQ_ANSWER' => $faq_block[$i][$j]['answer'],
|
||||
|
||||
'S_ROW_COUNT' => $j,
|
||||
'U_FAQ_ID' => $faq_block[$i][$j]['id'])
|
||||
);
|
||||
|
||||
$template->assign_block_vars('faq_block_link.faq_row_link', array(
|
||||
'FAQ_LINK' => $faq_block[$i][$j]['question'],
|
||||
|
||||
'S_ROW_COUNT' => $j,
|
||||
'U_FAQ_LINK' => '#' . $faq_block[$i][$j]['id'])
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
page_header($l_title);
|
||||
|
||||
$template->set_filenames(array(
|
||||
'body' => 'faq_body.html')
|
||||
);
|
||||
make_jumpbox('viewforum.'.$phpEx, $forum_id);
|
||||
|
||||
page_footer();
|
||||
|
||||
?>
|
27
phpBB/functions/auth.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
*
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
|
||||
?>
|
1038
phpBB/functions/bbcode.php
Normal file
27
phpBB/functions/post.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
*
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
|
||||
?>
|
27
phpBB/functions/sessions.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
*
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
|
||||
?>
|
1271
phpBB/groupcp.php
@@ -1,10 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
</head>
|
||||
|
||||
<body bgcolor="#FFFFFF" text="#000000">
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -1,10 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
</head>
|
||||
|
||||
<body bgcolor="#FFFFFF" text="#000000">
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -1,10 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
</head>
|
||||
|
||||
<body bgcolor="#FFFFFF" text="#000000">
|
||||
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 671 B |
Before Width: | Height: | Size: 484 B |
@@ -1,10 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
</head>
|
||||
|
||||
<body bgcolor="#FFFFFF" text="#000000">
|
||||
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 458 B |
Before Width: | Height: | Size: 435 B |
Before Width: | Height: | Size: 695 B |
Before Width: | Height: | Size: 679 B |
Before Width: | Height: | Size: 725 B |
@@ -1,10 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
</head>
|
||||
|
||||
<body bgcolor="#FFFFFF" text="#000000">
|
||||
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 710 B |
Before Width: | Height: | Size: 706 B |
Before Width: | Height: | Size: 2.9 KiB |
@@ -1,10 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
</head>
|
||||
|
||||
<body bgcolor="#FFFFFF" text="#000000">
|
||||
|
||||
</body>
|
||||
</html>
|
@@ -1,10 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
</head>
|
||||
|
||||
<body bgcolor="#FFFFFF" text="#000000">
|
||||
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 170 B |
Before Width: | Height: | Size: 172 B |
Before Width: | Height: | Size: 171 B |
Before Width: | Height: | Size: 172 B |
Before Width: | Height: | Size: 498 B |
Before Width: | Height: | Size: 170 B |
Before Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 236 B |
Before Width: | Height: | Size: 171 B |
Before Width: | Height: | Size: 176 B |
Before Width: | Height: | Size: 336 B |
Before Width: | Height: | Size: 174 B |
Before Width: | Height: | Size: 349 B |
Before Width: | Height: | Size: 171 B |
Before Width: | Height: | Size: 248 B |
Before Width: | Height: | Size: 176 B |
Before Width: | Height: | Size: 650 B |
Before Width: | Height: | Size: 485 B |
Before Width: | Height: | Size: 171 B |
Before Width: | Height: | Size: 174 B |
Before Width: | Height: | Size: 174 B |