mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
my attempt to break things...
git-svn-id: file:///svn/phpbb/trunk@4682 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
parent
37edf4148c
commit
5f35bc9bc1
10 changed files with 556 additions and 152 deletions
|
@ -113,7 +113,12 @@ while ($row = $db->sql_fetchrow($result))
|
||||||
|
|
||||||
if ($config_name == 'bump_interval' && $submit)
|
if ($config_name == 'bump_interval' && $submit)
|
||||||
{
|
{
|
||||||
$new['bump_interval'] = request_var('bump_interval', 0) . request_var('bump_type', '');
|
$new['bump_interval'] = request_var('bump_interval', 2) . request_var('bump_type', 'd');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($config_name == 'email_function_name')
|
||||||
|
{
|
||||||
|
$new['email_function_name'] = (empty($new['email_function_name']) || !function_exists($new['email_function_name'])) ? 'mail' : str_replace(array('(', ')'), array('', ''), trim($new['email_function_name']));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($mode == 'attach')
|
if ($mode == 'attach')
|
||||||
|
@ -172,6 +177,11 @@ while ($row = $db->sql_fetchrow($result))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($mode == 'attach')
|
||||||
|
{
|
||||||
|
perform_site_list();
|
||||||
|
}
|
||||||
|
|
||||||
if ($submit)
|
if ($submit)
|
||||||
{
|
{
|
||||||
add_log('admin', 'LOG_' . strtoupper($mode) . '_CONFIG');
|
add_log('admin', 'LOG_' . strtoupper($mode) . '_CONFIG');
|
||||||
|
@ -180,7 +190,6 @@ if ($submit)
|
||||||
{
|
{
|
||||||
// Check Settings
|
// Check Settings
|
||||||
test_upload($error, $new['upload_dir'], false);
|
test_upload($error, $new['upload_dir'], false);
|
||||||
// test_upload($error, $new['upload_dir'] . '/thumbs', true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sizeof($error))
|
if (!sizeof($error))
|
||||||
|
@ -252,6 +261,15 @@ switch ($mode)
|
||||||
$create_thumbnail_yes = ($new['img_create_thumbnail']) ? 'checked="checked"' : '';
|
$create_thumbnail_yes = ($new['img_create_thumbnail']) ? 'checked="checked"' : '';
|
||||||
$create_thumbnail_no = (!$new['img_create_thumbnail']) ? 'checked="checked"' : '';
|
$create_thumbnail_no = (!$new['img_create_thumbnail']) ? 'checked="checked"' : '';
|
||||||
|
|
||||||
|
$secure_downloads_yes = ($new['secure_downloads']) ? 'checked="checked"' : '';
|
||||||
|
$secure_downloads_no = (!$new['secure_downloads']) ? 'checked="checked"' : '';
|
||||||
|
|
||||||
|
$secure_allow_deny_yes = ($new['secure_allow_deny']) ? 'checked="checked"' : '';
|
||||||
|
$secure_allow_deny_no = (!$new['secure_allow_deny']) ? 'checked="checked"' : '';
|
||||||
|
|
||||||
|
$secure_allow_empty_referer_yes = ($new['secure_allow_empty_referer']) ? 'checked="checked"' : '';
|
||||||
|
$secure_allow_empty_referer_no = (!$new['secure_allow_empty_referer']) ? 'checked="checked"' : '';
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -282,6 +300,18 @@ switch ($mode)
|
||||||
<td class="row1"><b><?php echo $user->lang['MAX_ATTACHMENTS_PM'] ?>: </b></td>
|
<td class="row1"><b><?php echo $user->lang['MAX_ATTACHMENTS_PM'] ?>: </b></td>
|
||||||
<td class="row2"><input type="text" size="3" maxlength="3" name="max_attachments_pm" class="post" value="<?php echo $new['max_attachments_pm']; ?>" /></td>
|
<td class="row2"><input type="text" size="3" maxlength="3" name="max_attachments_pm" class="post" value="<?php echo $new['max_attachments_pm']; ?>" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="row1"><b><?php echo $user->lang['SECURE_DOWNLOADS']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['SECURE_DOWNLOADS_EXPLAIN']; ?></span></td>
|
||||||
|
<td class="row2"><input type="radio" name="secure_downloads" value="1" <?php echo $secure_downloads_yes ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="secure_downloads" value="0" <?php echo $secure_downloads_no ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="row1"><b><?php echo $user->lang['SECURE_ALLOW_DENY']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['SECURE_ALLOW_DENY_EXPLAIN']; ?></span></td>
|
||||||
|
<td class="row2"><input type="radio" name="secure_allow_deny" value="1" <?php echo $secure_allow_deny_yes ?> /> <?php echo $user->lang['ORDER_ALLOW_DENY']; ?> <input type="radio" name="secure_allow_deny" value="0" <?php echo $secure_allow_deny_no ?> /> <?php echo $user->lang['ORDER_DENY_ALLOW']; ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="row1"><b><?php echo $user->lang['SECURE_EMPTY_REFERER']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['SECURE_EMPTY_REFERER_EXPLAIN']; ?></span></td>
|
||||||
|
<td class="row2"><input type="radio" name="secure_allow_empty_referer" value="1" <?php echo $secure_allow_empty_referer_yes ?> /> <?php echo $user->lang['YES']; ?> <input type="radio" name="secure_allow_empty_referer" value="0" <?php echo $secure_allow_empty_referer_no ?> /> <?php echo $user->lang['NO']; ?></td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th align="center" colspan="2"><?php echo $user->lang['SETTINGS_CAT_IMAGES']; ?></th>
|
<th align="center" colspan="2"><?php echo $user->lang['SETTINGS_CAT_IMAGES']; ?></th>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -328,7 +358,86 @@ switch ($mode)
|
||||||
<td class="row1"><b><?php echo $user->lang['IMAGE_LINK_SIZE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['IMAGE_LINK_SIZE_EXPLAIN']; ?></span></td>
|
<td class="row1"><b><?php echo $user->lang['IMAGE_LINK_SIZE']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['IMAGE_LINK_SIZE_EXPLAIN']; ?></span></td>
|
||||||
<td class="row2"><input type="text" size="3" maxlength="4" name="img_link_width" value="<?php echo $new['img_link_width']; ?>" class="post" /> px X <input type="text" size="3" maxlength="4" name="img_link_height" value="<?php echo $new['img_link_height']; ?>" class="post" /> px</td>
|
<td class="row2"><input type="text" size="3" maxlength="4" name="img_link_width" value="<?php echo $new['img_link_width']; ?>" class="post" /> px X <input type="text" size="3" maxlength="4" name="img_link_height" value="<?php echo $new['img_link_height']; ?>" class="post" /> px</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<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>
|
||||||
|
<?php
|
||||||
|
// Secure Download Options - Same procedure as with banning
|
||||||
|
if ($new['secure_downloads'])
|
||||||
|
{
|
||||||
|
$allow_deny = ($new['secure_allow_deny']) ? 'ALLOWED' : 'DISALLOWED';
|
||||||
|
|
||||||
|
$sql = 'SELECT *
|
||||||
|
FROM ' . SITELIST_TABLE;
|
||||||
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
|
$defined_ips = '';
|
||||||
|
$ips = array();
|
||||||
|
|
||||||
|
while ($row = $db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
$value = ($row['site_ip']) ? $row['site_ip'] : $row['site_hostname'];
|
||||||
|
if ($value)
|
||||||
|
{
|
||||||
|
$defined_ips .= '<option' . (($row['ip_exclude']) ? ' class="sep"' : '') . ' value="' . $row['site_id'] . '">' . $value . '</option>';
|
||||||
|
$ips[$row['site_id']] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$db->sql_freeresult($result);
|
||||||
|
?>
|
||||||
|
<br />
|
||||||
|
<table class="bg" width="95%" cellspacing="1" cellpadding="4" border="0" align="center">
|
||||||
|
<tr>
|
||||||
|
<th colspan="2"><?php echo $user->lang['DEFINE_' . $allow_deny . '_IPS']; ?></th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" class="row3"><?php echo $user->lang['DOWNLOAD_ADD_IPS_EXPLAIN']; ?></td>
|
||||||
|
<tr>
|
||||||
|
<td class="row1" width="45%"><b><?php echo $user->lang['IP_HOSTNAME']; ?>: </b></td>
|
||||||
|
<td class="row2"><textarea cols="40" rows="3" name="ips"></textarea></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="row1" width="45%"><b><?php echo $user->lang['EXCLUDE_FROM_' . $allow_deny . '_IP']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['EXCLUDE_ENTERED_IP']; ?></span></td>
|
||||||
|
<td class="row2"><input type="radio" name="ipexclude" value="1" /> <?php echo $user->lang['YES']; ?> <input type="radio" name="ipexclude" value="0" checked="checked" /> <?php echo $user->lang['NO']; ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="cat" colspan="2" align="center"> <input type="submit" name="securesubmit" value="<?php echo $user->lang['SUBMIT']; ?>" class="btnmain" /> <input type="reset" value="<?php echo $user->lang['RESET']; ?>" class="btnlite" /> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th colspan="2"><?php echo $user->lang['REMOVE_' . $allow_deny . '_IPS']; ?></th>
|
||||||
|
</tr>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
if ($defined_ips != '')
|
||||||
|
{
|
||||||
|
|
||||||
|
?>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" class="row3"><?php echo $user->lang['DOWNLOAD_REMOVE_IPS_EXPLAIN']; ?></td>
|
||||||
|
<tr>
|
||||||
|
<tr>
|
||||||
|
<td class="row1" width="45%"><?php echo $user->lang['IP_HOSTNAME']; ?>: <br /></td>
|
||||||
|
<td class="row2"> <select name="unip[]" multiple="multiple" size="10"><?php echo $defined_ips; ?></select></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="cat" colspan="2" align="center"><input type="submit" name="unsecuresubmit" 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 $user->lang['NO_IPS_DEFINED']; ?></td>
|
||||||
|
</tr>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</table>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -676,6 +785,10 @@ switch ($mode)
|
||||||
<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="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>
|
<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>
|
||||||
|
<tr>
|
||||||
|
<td class="row1"><b><?php echo $user->lang['EMAIL_FUNCTION_NAME']; ?>: </b><br /><span class="gensmall"><?php echo $user->lang['EMAIL_FUNCTION_NAME_EXPLAIN']; ?></span></td>
|
||||||
|
<td class="row2"><input class="post" type="text" size="20" maxlength="50" name="email_function_name" value="<?php echo $new['email_function_name']; ?>" /></td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="row1"><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="row1"><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>
|
<td class="row2"><input class="post" type="text" size="5" maxlength="5" name="email_package_size" value="<?php echo $new['email_package_size']; ?>" /></td>
|
||||||
|
@ -971,11 +1084,17 @@ switch ($mode)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($mode != 'attach')
|
||||||
|
{
|
||||||
?>
|
?>
|
||||||
<tr>
|
<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>
|
<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>
|
</tr>
|
||||||
</table></form>
|
</table>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</form>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
@ -1049,4 +1168,181 @@ function test_upload(&$error, $upload_dir, $create_directory = false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function perform_site_list()
|
||||||
|
{
|
||||||
|
global $db, $user;
|
||||||
|
|
||||||
|
if (isset($_REQUEST['securesubmit']))
|
||||||
|
{
|
||||||
|
// Grab the list of entries
|
||||||
|
$ips = request_var('ips', '');
|
||||||
|
$ip_list = array_unique(explode("\n", $ips));
|
||||||
|
$ip_list_log = implode(', ', $ip_list);
|
||||||
|
|
||||||
|
$ip_exclude = (!empty($_POST['ipexclude'])) ? 1 : 0;
|
||||||
|
|
||||||
|
$iplist = array();
|
||||||
|
$hostlist = array();
|
||||||
|
|
||||||
|
foreach ($ip_list as $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($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;
|
||||||
|
|
||||||
|
$iplist[] = "'$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;
|
||||||
|
|
||||||
|
$iplist[] = "'$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;
|
||||||
|
|
||||||
|
$iplist[] = "'$ip_1_counter.$ip_2_counter.$ip_3_counter.*'";
|
||||||
|
}
|
||||||
|
|
||||||
|
while ($ip_4_counter <= $ip_4_end)
|
||||||
|
{
|
||||||
|
$iplist[] = "'$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('#^([0-9]{1,3})\.([0-9\*]{1,3})\.([0-9\*]{1,3})\.([0-9\*]{1,3})$#', trim($item)) || preg_match('#^[a-f0-9:]+\*?$#i', trim($item)))
|
||||||
|
{
|
||||||
|
$iplist[] = "'" . trim($item) . "'";
|
||||||
|
}
|
||||||
|
else if (preg_match('#^([\w\-_]\.?){2,}$#is', trim($item)))
|
||||||
|
{
|
||||||
|
$hostlist[] = "'" . trim($item) . "'";
|
||||||
|
}
|
||||||
|
else if (preg_match("#^([a-z0-9\-\*\._/]+?)$#is", trim($item)))
|
||||||
|
{
|
||||||
|
$hostlist[] = "'" . trim($item) . "'";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = 'SELECT site_ip, site_hostname
|
||||||
|
FROM ' . SITELIST_TABLE . "
|
||||||
|
WHERE ip_exclude = $ip_exclude";
|
||||||
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
|
if ($row = $db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
$iplist_tmp = array();
|
||||||
|
$hostlist_tmp = array();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if ($row['site_ip'])
|
||||||
|
{
|
||||||
|
$iplist_tmp[] = "'" . $row['site_ip'] . "'";
|
||||||
|
}
|
||||||
|
else if ($row['site_hostname'])
|
||||||
|
{
|
||||||
|
$hostlist_tmp[] = "'" . $row['site_hostname'] . "'";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while ($row = $db->sql_fetchrow($result));
|
||||||
|
|
||||||
|
$iplist = array_unique(array_diff($iplist, $iplist_tmp));
|
||||||
|
$hostlist = array_unique(array_diff($hostlist, $hostlist_tmp));
|
||||||
|
unset($iplist_tmp);
|
||||||
|
unset($hostlist_tmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sizeof($iplist))
|
||||||
|
{
|
||||||
|
foreach ($iplist as $ip_entry)
|
||||||
|
{
|
||||||
|
$sql = 'INSERT INTO ' . SITELIST_TABLE . " (site_ip, ip_exclude)
|
||||||
|
VALUES ($ip_entry, $ip_exclude)";
|
||||||
|
$db->sql_query($sql);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sizeof($hostlist))
|
||||||
|
{
|
||||||
|
foreach ($hostlist as $host_entry)
|
||||||
|
{
|
||||||
|
$sql = 'INSERT INTO ' . SITELIST_TABLE . ' (site_hostname, ip_exclude)
|
||||||
|
VALUES ($host_entry, $ip_exclude)";
|
||||||
|
$db->sql_query($sql);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($ip_list_log))
|
||||||
|
{
|
||||||
|
// Update log
|
||||||
|
$log_entry = ($ip_exclude) ? 'LOG_DOWNLOAD_EXCLUDE_IP' : 'LOG_DOWNLOAD_IP';
|
||||||
|
add_log('admin', $log_entry, $ip_list_log);
|
||||||
|
}
|
||||||
|
|
||||||
|
trigger_error($user->lang['SECURE_DOWNLOAD_UPDATE_SUCESSFUL']);
|
||||||
|
}
|
||||||
|
else if (isset($_POST['unsecuresubmit']))
|
||||||
|
{
|
||||||
|
$unip_sql = implode(', ', array_map('intval', $_POST['unip']));
|
||||||
|
|
||||||
|
if ($unip_sql != '')
|
||||||
|
{
|
||||||
|
$l_unip_list = '';
|
||||||
|
|
||||||
|
// Grab details of ips for logging information later
|
||||||
|
$sql = 'SELECT site_ip, site_hostname
|
||||||
|
FROM ' . SITELIST_TABLE . "
|
||||||
|
WHERE site_id IN ($unip_sql)";
|
||||||
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
|
while ($row = $db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
$l_unip_list .= (($l_unip_list != '') ? ', ' : '') . (($row['site_ip']) ? $row['site_ip'] : $row['site_hostname']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = 'DELETE FROM ' . SITELIST_TABLE . "
|
||||||
|
WHERE site_id IN ($unip_sql)";
|
||||||
|
$db->sql_query($sql);
|
||||||
|
|
||||||
|
add_log('admin', 'LOG_DOWNLOAD_REMOVE_IP', $l_unip_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
trigger_error($user->lang['SECURE_DOWNLOAD_UPDATE_SUCESSFUL']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
|
@ -181,6 +181,7 @@ define('SEARCH_TABLE', $table_prefix.'search_results');
|
||||||
define('SEARCH_WORD_TABLE', $table_prefix.'search_wordlist');
|
define('SEARCH_WORD_TABLE', $table_prefix.'search_wordlist');
|
||||||
define('SEARCH_MATCH_TABLE', $table_prefix.'search_wordmatch');
|
define('SEARCH_MATCH_TABLE', $table_prefix.'search_wordmatch');
|
||||||
define('SESSIONS_TABLE', $table_prefix.'sessions');
|
define('SESSIONS_TABLE', $table_prefix.'sessions');
|
||||||
|
define('SITELIST_TABLE', $table_prefix.'sitelist');
|
||||||
define('SMILIES_TABLE', $table_prefix.'smilies');
|
define('SMILIES_TABLE', $table_prefix.'smilies');
|
||||||
define('STYLES_TABLE', $table_prefix.'styles');
|
define('STYLES_TABLE', $table_prefix.'styles');
|
||||||
define('STYLES_TPL_TABLE', $table_prefix.'styles_template');
|
define('STYLES_TPL_TABLE', $table_prefix.'styles_template');
|
||||||
|
|
|
@ -77,6 +77,11 @@ if (!in_array($attachment['extension'], $extensions['_allowed_']))
|
||||||
trigger_error(sprintf($user->lang['EXTENSION_DISABLED_AFTER_POSTING'], $attachment['extension']));
|
trigger_error(sprintf($user->lang['EXTENSION_DISABLED_AFTER_POSTING'], $attachment['extension']));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!download_allowed())
|
||||||
|
{
|
||||||
|
trigger_error($user->lang['LINKAGE_FORBIDDEN']);
|
||||||
|
}
|
||||||
|
|
||||||
$download_mode = (int) $extensions[$attachment['extension']]['download_mode'];
|
$download_mode = (int) $extensions[$attachment['extension']]['download_mode'];
|
||||||
|
|
||||||
if ($thumbnail)
|
if ($thumbnail)
|
||||||
|
@ -197,6 +202,101 @@ function send_file_to_browser($attachment, $upload_dir, $category)
|
||||||
flush();
|
flush();
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function download_allowed()
|
||||||
|
{
|
||||||
|
global $config, $user, $db;
|
||||||
|
|
||||||
|
if (!$config['secure_downloads'])
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$url = trim(getenv('HTTP_REFERER'));
|
||||||
|
if ($url == '')
|
||||||
|
{
|
||||||
|
$url = trim($_SERVER['HTTP_REFERER']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($url == '')
|
||||||
|
{
|
||||||
|
return ($config['secure_allow_empty_referer']) ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Split URL into domain and script part
|
||||||
|
$url = explode('?', str_replace(array('http://', 'https://'), array('', ''), $url));
|
||||||
|
$hostname = trim($url[0]);
|
||||||
|
unset($url);
|
||||||
|
|
||||||
|
$allowed = ($config['secure_allow_deny']) ? FALSE : TRUE;
|
||||||
|
$iplist = array();
|
||||||
|
|
||||||
|
$ip_ary = gethostbynamel($hostname);
|
||||||
|
|
||||||
|
foreach ($ip_ary as $ip)
|
||||||
|
{
|
||||||
|
if (!empty($ip))
|
||||||
|
{
|
||||||
|
$iplist[] = $ip;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check for own server...
|
||||||
|
if (preg_match('#^.*?' . $config['server_name'] . '.*?$#i', $hostname))
|
||||||
|
{
|
||||||
|
$allowed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get IP's and Hostnames
|
||||||
|
if (!$allowed)
|
||||||
|
{
|
||||||
|
$sql = 'SELECT site_ip, site_hostname, ip_exclude
|
||||||
|
FROM ' . SITELIST_TABLE;
|
||||||
|
$result = $db->sql_query($sql);
|
||||||
|
|
||||||
|
while ($row = $db->sql_fetchrow($result))
|
||||||
|
{
|
||||||
|
if (!empty($row['site_ip']))
|
||||||
|
{
|
||||||
|
foreach ($iplist as $ip)
|
||||||
|
{
|
||||||
|
if (preg_match('#^' . str_replace('*', '.*?', $row['site_ip']) . '$#i', $ip))
|
||||||
|
{
|
||||||
|
if (!empty($row['ip_exclude']))
|
||||||
|
{
|
||||||
|
$allowed = ($config['secure_allow_deny']) ? false : true;
|
||||||
|
break 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$allowed = ($config['secure_allow_deny']) ? true : false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($row['site_hostname']))
|
||||||
|
{
|
||||||
|
if (preg_match('#^' . str_replace('*', '.*?', $row['site_hostname']) . '$#i', $hostname))
|
||||||
|
{
|
||||||
|
if (!empty($row['ip_exclude']))
|
||||||
|
{
|
||||||
|
$allowed = ($config['secure_allow_deny']) ? false : true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$allowed = ($config['secure_allow_deny']) ? true : false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$db->sql_freeresult($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $allowed;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// FUNCTIONS
|
// FUNCTIONS
|
||||||
// ---------
|
// ---------
|
||||||
|
|
|
@ -272,8 +272,10 @@ class messenger
|
||||||
$headers .= 'Date: ' . gmdate('D, d M Y H:i:s T', time()) . "\n";
|
$headers .= 'Date: ' . gmdate('D, d M Y H:i:s T', time()) . "\n";
|
||||||
$headers .= "X-Priority: 3\n";
|
$headers .= "X-Priority: 3\n";
|
||||||
$headers .= "X-MSMail-Priority: Normal\n";
|
$headers .= "X-MSMail-Priority: Normal\n";
|
||||||
$headers .= "X-Mailer: PHP\n";
|
$headers .= "X-Mailer: PhpBB\n";
|
||||||
$headers .= "X-MimeOLE: Produced By phpBB2\n";
|
$headers .= "X-MimeOLE: phpBB\n";
|
||||||
|
$headers .= "X-phpBB-Origin: phpbb://" . str_replace(array('http://', 'https://'), array('', ''), generate_board_url()) . "\n";
|
||||||
|
|
||||||
$headers .= ($this->extra_headers != '') ? $this->extra_headers : '';
|
$headers .= ($this->extra_headers != '') ? $this->extra_headers : '';
|
||||||
$headers .= "Content-type: text/plain; charset=" . $this->encoding . "\n";
|
$headers .= "Content-type: text/plain; charset=" . $this->encoding . "\n";
|
||||||
$headers .= "Content-transfer-encoding: 8bit\n";
|
$headers .= "Content-transfer-encoding: 8bit\n";
|
||||||
|
@ -281,9 +283,9 @@ class messenger
|
||||||
// Send message ... removed $this->encode() from subject for time being
|
// Send message ... removed $this->encode() from subject for time being
|
||||||
if (!$use_queue)
|
if (!$use_queue)
|
||||||
{
|
{
|
||||||
$mail_to = ($to == '') ? 'Undisclosed-Recipients:;' : $to;
|
$mail_to = ($to == '') ? 'Undisclosed-Recipient:;' : $to;
|
||||||
$err_msg = '';
|
$err_msg = '';
|
||||||
$result = ($config['smtp_delivery']) ? smtpmail($this->addresses, $this->subject, $this->msg, $err_msg, $headers) : @mail($mail_to, $this->subject, preg_replace("#(?<!\r)\n#s", "\n", $this->msg), $headers);
|
$result = ($config['smtp_delivery']) ? smtpmail($this->addresses, $this->subject, $this->msg, $err_msg, $headers) : @$config['mail_function_name']($mail_to, $this->subject, implode("\n", preg_split("/\r?\n/", $this->msg)), $headers);
|
||||||
|
|
||||||
if (!$result)
|
if (!$result)
|
||||||
{
|
{
|
||||||
|
@ -406,7 +408,7 @@ class queue
|
||||||
$this->data[$object]['data'][] = $scope;
|
$this->data[$object]['data'][] = $scope;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Thinking about a lock file...
|
// Using lock file...
|
||||||
function process()
|
function process()
|
||||||
{
|
{
|
||||||
global $db, $config, $phpEx, $phpbb_root_path;
|
global $db, $config, $phpEx, $phpbb_root_path;
|
||||||
|
@ -483,9 +485,9 @@ class queue
|
||||||
{
|
{
|
||||||
case 'email':
|
case 'email':
|
||||||
$err_msg = '';
|
$err_msg = '';
|
||||||
$to = (!$to) ? 'Undisclosed-Recipients:;' : $to;
|
$to = (!$to) ? 'Undisclosed-Recipient:;' : $to;
|
||||||
|
|
||||||
$result = ($config['smtp_delivery']) ? smtpmail($addresses, $subject, $msg, $err_msg, $headers) : mail($to, $subject, preg_replace("#(?<!\r)\n#s", "\r\n", $msg), $headers);
|
$result = ($config['smtp_delivery']) ? smtpmail($addresses, $subject, $msg, $err_msg, $headers) : $config['email_function_name']($to, $subject, implode("\n", preg_split("/\r?\n/", $msg)), $headers);
|
||||||
|
|
||||||
if (!$result)
|
if (!$result)
|
||||||
{
|
{
|
||||||
|
@ -562,7 +564,7 @@ class queue
|
||||||
|
|
||||||
$file = '<?php $this->queue_data = ' . $this->format_array($this->data) . '; ?>';
|
$file = '<?php $this->queue_data = ' . $this->format_array($this->data) . '; ?>';
|
||||||
|
|
||||||
if ($fp = @fopen($this->cache_file, 'w'))
|
if ($fp = fopen($this->cache_file, 'w'))
|
||||||
{
|
{
|
||||||
@flock($fp, LOCK_EX);
|
@flock($fp, LOCK_EX);
|
||||||
fwrite($fp, $file);
|
fwrite($fp, $file);
|
||||||
|
|
|
@ -752,13 +752,7 @@ class parse_message
|
||||||
unset($this->attachment_data[$index]);
|
unset($this->attachment_data[$index]);
|
||||||
|
|
||||||
// Reindex Array
|
// Reindex Array
|
||||||
$attachment_data = $this->attachment_data;
|
$this->attachment_data = array_values($this->attachment_data);
|
||||||
unset($this->attachment_data);
|
|
||||||
foreach ($attachment_data as $element)
|
|
||||||
{
|
|
||||||
$this->attachment_data[] = $element;
|
|
||||||
}
|
|
||||||
unset($attachment_data);
|
|
||||||
}
|
}
|
||||||
else if ($edit_comment || $add_file || $preview)
|
else if ($edit_comment || $add_file || $preview)
|
||||||
{
|
{
|
||||||
|
|
|
@ -481,6 +481,15 @@ CREATE TABLE phpbb_sessions (
|
||||||
KEY session_user_id (session_user_id)
|
KEY session_user_id (session_user_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
# Table: 'phpbb_sitelist'
|
||||||
|
CREATE TABLE phpbb_sitelist (
|
||||||
|
site_id mediumint(8) UNSIGNED NOT NULL auto_increment,
|
||||||
|
site_ip varchar(40) DEFAULT '' NOT NULL,
|
||||||
|
site_hostname varchar(255) DEFAULT '' NOT NULL,
|
||||||
|
ip_exclude tinyint(1) DEFAULT '0' NOT NULL,
|
||||||
|
PRIMARY KEY (site_id)
|
||||||
|
)
|
||||||
|
|
||||||
# Table: 'phpbb_smilies'
|
# Table: 'phpbb_smilies'
|
||||||
CREATE TABLE phpbb_smilies (
|
CREATE TABLE phpbb_smilies (
|
||||||
smile_id tinyint(4) UNSIGNED NOT NULL auto_increment,
|
smile_id tinyint(4) UNSIGNED NOT NULL auto_increment,
|
||||||
|
|
|
@ -91,6 +91,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('display_last_edite
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email_sig','Thanks, The Management');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email_sig','Thanks, The Management');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email','address@yourdomain.tld');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_email','address@yourdomain.tld');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_contact','contact@yourdomain.tld');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('board_contact','contact@yourdomain.tld');
|
||||||
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('email_function_name','mail');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('email_package_size','50');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('email_package_size','50');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_delivery','0');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_delivery','0');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_host','');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_host','');
|
||||||
|
@ -143,6 +144,9 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('max_attachments_pm
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_pm_attach', '0');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('allow_pm_attach', '0');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_dir', 'files');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_dir', 'files');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_display_inlined','1');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_display_inlined','1');
|
||||||
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('secure_downloads', '0');
|
||||||
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('secure_allow_deny', '1');
|
||||||
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('secure_allow_empty_referer', '1');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_max_width','0');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_max_width','0');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_max_height','0');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_max_height','0');
|
||||||
INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_link_width','0');
|
INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_link_width','0');
|
||||||
|
|
|
@ -127,6 +127,10 @@ $lang += array(
|
||||||
'LOG_UNBAN_IP' => '<b>Unbanned ip</b><br />» %s',
|
'LOG_UNBAN_IP' => '<b>Unbanned ip</b><br />» %s',
|
||||||
'LOG_UNBAN_EMAIL' => '<b>Unbanned email</b><br />» %s',
|
'LOG_UNBAN_EMAIL' => '<b>Unbanned email</b><br />» %s',
|
||||||
|
|
||||||
|
'LOG_DOWNLOAD_EXCLUDE_IP' => '<b>Exluded ip/hostname from download list</b><br />» %s',
|
||||||
|
'LOG_DOWNLOAD_IP' => '<b>Added ip/hostname to download list</b><br />» %s',
|
||||||
|
'LOG_DOWNLOAD_REMOVE_IP' => '<b>Removed ip/hostname from download list</b><br />» %s',
|
||||||
|
|
||||||
'LOG_SERVER_CONFIG' => '<b>Altered server settings</b>',
|
'LOG_SERVER_CONFIG' => '<b>Altered server settings</b>',
|
||||||
'LOG_DEFAULT_CONFIG' => '<b>Altered board defaults</b>',
|
'LOG_DEFAULT_CONFIG' => '<b>Altered board defaults</b>',
|
||||||
'LOG_SETTING_CONFIG' => '<b>Altered board settings</b>',
|
'LOG_SETTING_CONFIG' => '<b>Altered board settings</b>',
|
||||||
|
@ -669,6 +673,8 @@ $lang += array(
|
||||||
'ENABLE_EMAIL_EXPLAIN' => 'If this is set to disabled no emails will be sent by the board at all.',
|
'ENABLE_EMAIL_EXPLAIN' => 'If this is set to disabled no emails will be sent by the board at all.',
|
||||||
'BOARD_EMAIL_FORM' => 'Users send email via board',
|
'BOARD_EMAIL_FORM' => 'Users send email via board',
|
||||||
'BOARD_EMAIL_FORM_EXPLAIN' => 'This function keeps email addresses completely private.',
|
'BOARD_EMAIL_FORM_EXPLAIN' => 'This function keeps email addresses completely private.',
|
||||||
|
'EMAIL_FUNCTION_NAME' => 'Email Function Name',
|
||||||
|
'EMAIL_FUNCTION_NAME_EXPLAIN' => 'The email function used to send mails through PHP.',
|
||||||
'EMAIL_PACKAGE_SIZE' => 'Email Package Size',
|
'EMAIL_PACKAGE_SIZE' => 'Email Package Size',
|
||||||
'EMAIL_PACKAGE_SIZE_EXPLAIN' => 'This is the number of emails sent in one package.',
|
'EMAIL_PACKAGE_SIZE_EXPLAIN' => 'This is the number of emails sent in one package.',
|
||||||
'ADMIN_EMAIL' => 'Return Email Address',
|
'ADMIN_EMAIL' => 'Return Email Address',
|
||||||
|
@ -1694,7 +1700,29 @@ $lang += array(
|
||||||
'ATTACH_POST_ID' => 'Post ID',
|
'ATTACH_POST_ID' => 'Post ID',
|
||||||
'ATTACH_TO_POST' => 'Attach file to post',
|
'ATTACH_TO_POST' => 'Attach file to post',
|
||||||
'SUCCESSFULLY_UPLOADED' => 'Succeessfully uploaded',
|
'SUCCESSFULLY_UPLOADED' => 'Succeessfully uploaded',
|
||||||
'ADMIN_UPLOAD_ERROR' => 'Errors while trying to attach file: %s'
|
'ADMIN_UPLOAD_ERROR' => 'Errors while trying to attach file: %s',
|
||||||
|
|
||||||
|
'SECURE_DOWNLOADS' => 'Enable secure downloads',
|
||||||
|
'SECURE_DOWNLOADS_EXPLAIN' => 'With this option enabled, downloads are limited to ip\'s/hostnames you defined.',
|
||||||
|
'SECURE_ALLOW_DENY' => 'Allow/Deny Order',
|
||||||
|
'SECURE_ALLOW_DENY_EXPLAIN' => 'This setting only applies to downloading files',
|
||||||
|
'ORDER_ALLOW_DENY' => 'Allow listed IPs, deny all others',
|
||||||
|
'ORDER_DENY_ALLOW' => 'Deny listed IPs, allow all others',
|
||||||
|
'SECURE_EMPTY_REFERER' => 'Allow empty referer',
|
||||||
|
'SECURE_EMPTY_REFERER_EXPLAIN' => 'Secure downloads are based on referers. Do you want to allow downloads for those ommitting the referer?',
|
||||||
|
|
||||||
|
'DEFINE_ALLOWED_IPS' => 'Define allowed IPs/Hostnames',
|
||||||
|
'DEFINE_DISALLOWED_IPS' => 'Define disallowed IPs/Hostnames',
|
||||||
|
'EXCLUDE_FROM_ALLOWED_IP' => 'Exclude IP from allowed IPs/Hostnames',
|
||||||
|
'EXCLUDE_FROM_DISALLOWED_IP' => 'Exclude IP from disallowed IPs/Hostnames',
|
||||||
|
'REMOVE_ALLOWED_IPS' => 'Remove or Un-exclude allowed IPs/Hostnames',
|
||||||
|
'REMOVE_DISALLOWED_IPS' => 'Remove or Un-exclude disallowed IPs/Hostnames',
|
||||||
|
'DOWNLOAD_ADD_IPS_EXPLAIN' => 'To specify several different IP\'s or hostnames enter each on a new line. To specify a range of IP addresses separate the start and end with a hyphen (-), to specify a wildcard use *',
|
||||||
|
'DOWNLOAD_REMOVE_IPS_EXPLAIN' => 'You can remove (or un-exclude) multiple IP addresses in one go using the appropriate combination of mouse and keyboard for your computer and browser. Excluded IP\'s have a blue background.',
|
||||||
|
'EXCLUDE_ENTERED_IP' => 'Enable this to exclude the entered IP/Hostname.',
|
||||||
|
'NO_IPS_DEFINED' => 'No IPs or Hostnames defined',
|
||||||
|
|
||||||
|
'SECURE_DOWNLOAD_UPDATE_SUCESSFUL' => 'The IP list has been updated successfully'
|
||||||
);
|
);
|
||||||
|
|
||||||
// Installation
|
// Installation
|
||||||
|
|
|
@ -684,6 +684,10 @@ $lang += array(
|
||||||
'DOWNLOAD_NONE' => '0 Times', // replace %d with count
|
'DOWNLOAD_NONE' => '0 Times', // replace %d with count
|
||||||
'DOWNLOAD_COUNT' => '%d Time', // replace %d with count
|
'DOWNLOAD_COUNT' => '%d Time', // replace %d with count
|
||||||
'DOWNLOAD_COUNTS' => '%d Times', // replace %d with count
|
'DOWNLOAD_COUNTS' => '%d Times', // replace %d with count
|
||||||
|
|
||||||
|
'LINKAGE_FORBIDDEN' => 'You are not authorized to view, download or link from/to this Site.',
|
||||||
|
'NO_ATTACHMENT_SELECTED' => 'You haven\'t selected an attachment to download or view.',
|
||||||
|
'ERROR_NO_ATTACHMENT' => 'The selected Attachment does not exist anymore'
|
||||||
);
|
);
|
||||||
|
|
||||||
// ucp_main
|
// ucp_main
|
||||||
|
|
|
@ -511,7 +511,7 @@ if ($submit || $preview || $refresh)
|
||||||
$enable_bbcode = (!$bbcode_status || !empty($_POST['disable_bbcode'])) ? FALSE : TRUE;
|
$enable_bbcode = (!$bbcode_status || !empty($_POST['disable_bbcode'])) ? FALSE : TRUE;
|
||||||
$enable_smilies = (!$smilies_status || !empty($_POST['disable_smilies'])) ? FALSE : TRUE;
|
$enable_smilies = (!$smilies_status || !empty($_POST['disable_smilies'])) ? FALSE : TRUE;
|
||||||
$enable_urls = (isset($_POST['disable_magic_url'])) ? 0 : 1;
|
$enable_urls = (isset($_POST['disable_magic_url'])) ? 0 : 1;
|
||||||
$enable_sig = (!$config['allow_sig']) ? FALSE : ((!empty($_POST['attach_sig'])) ? TRUE : FALSE);
|
$enable_sig = (!$config['allow_sig']) ? FALSE : ((!empty($_POST['attach_sig']) && $user->data['user_id'] != ANONYMOUS) ? TRUE : FALSE);
|
||||||
|
|
||||||
$notify = (!empty($_POST['notify'])) ? TRUE : FALSE;
|
$notify = (!empty($_POST['notify'])) ? TRUE : FALSE;
|
||||||
$topic_lock = (isset($_POST['lock_topic'])) ? TRUE : FALSE;
|
$topic_lock = (isset($_POST['lock_topic'])) ? TRUE : FALSE;
|
||||||
|
@ -1034,7 +1034,7 @@ $template->assign_vars(array(
|
||||||
'S_BBCODE_CHECKED' => ($bbcode_checked) ? ' checked="checked"' : '',
|
'S_BBCODE_CHECKED' => ($bbcode_checked) ? ' checked="checked"' : '',
|
||||||
'S_SMILIES_ALLOWED' => $smilies_status,
|
'S_SMILIES_ALLOWED' => $smilies_status,
|
||||||
'S_SMILIES_CHECKED' => ($smilies_checked) ? ' checked="checked"' : '',
|
'S_SMILIES_CHECKED' => ($smilies_checked) ? ' checked="checked"' : '',
|
||||||
'S_SIG_ALLOWED' => ($auth->acl_get('f_sigs', $forum_id) && $config['allow_sig']) ? TRUE : FALSE,
|
'S_SIG_ALLOWED' => ($auth->acl_get('f_sigs', $forum_id) && $config['allow_sig'] && $user->data['user_id'] != ANONYMOUS) ? TRUE : FALSE,
|
||||||
'S_SIGNATURE_CHECKED' => ($sig_checked) ? ' checked="checked"' : '',
|
'S_SIGNATURE_CHECKED' => ($sig_checked) ? ' checked="checked"' : '',
|
||||||
'S_NOTIFY_ALLOWED' => ($user->data['user_id'] != ANONYMOUS) ? TRUE : FALSE,
|
'S_NOTIFY_ALLOWED' => ($user->data['user_id'] != ANONYMOUS) ? TRUE : FALSE,
|
||||||
'S_NOTIFY_CHECKED' => ($notify_checked) ? ' checked="checked"' : '',
|
'S_NOTIFY_CHECKED' => ($notify_checked) ? ' checked="checked"' : '',
|
||||||
|
@ -1151,7 +1151,7 @@ page_footer();
|
||||||
// User Notification
|
// User Notification
|
||||||
function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id, $topic_id, $post_id)
|
function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id, $topic_id, $post_id)
|
||||||
{
|
{
|
||||||
global $db, $user, $censors, $config, $phpbb_root_path, $phpEx;
|
global $db, $user, $censors, $config, $phpbb_root_path, $phpEx, $auth;
|
||||||
|
|
||||||
$topic_notification = ($mode == 'reply' || $mode == 'quote') ? TRUE : FALSE;
|
$topic_notification = ($mode == 'reply' || $mode == 'quote') ? TRUE : FALSE;
|
||||||
$forum_notification = ($mode == 'post') ? TRUE : FALSE;
|
$forum_notification = ($mode == 'post') ? TRUE : FALSE;
|
||||||
|
@ -1251,25 +1251,23 @@ function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
foreach ($auth->acl_get_list(array_keys($notify_rows), 'f_read', $forum_id) as $forum_id => $forum_ary)
|
||||||
foreach (discover_auth(array_keys($notify_rows), array('f_read'), $forum_id) as $user_id => $forum_ary)
|
|
||||||
{
|
{
|
||||||
foreach ($forum_ary as $forum_id => $option_ary)
|
foreach ($forum_ary as $auth_option => $user_ary)
|
||||||
{
|
{
|
||||||
if (array_sum(array_values($option_ary)))
|
foreach ($user_ary as $user_id)
|
||||||
{
|
{
|
||||||
$notify_rows[$user_id]['allowed'] = true;
|
$notify_rows[$user_id]['allowed'] = true;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
// Now, we have to do a little step before really sending, we need to distinguish our users a little bit. ;)
|
// Now, we have to do a little step before really sending, we need to distinguish our users a little bit. ;)
|
||||||
$email_users = $delete_ids = $update_notification = array();
|
$email_users = $delete_ids = $update_notification = array();
|
||||||
foreach ($notify_rows as $user_id => $row)
|
foreach ($notify_rows as $user_id => $row)
|
||||||
{//!$row['allowed'] ||
|
{
|
||||||
if (!trim($row['user_email']))
|
if (!$row['allowed'] || !trim($row['user_email']))
|
||||||
{
|
{
|
||||||
$delete_ids[$row['notify_type']][] = $row['user_id'];
|
$delete_ids[$row['notify_type']][] = $row['user_id'];
|
||||||
}
|
}
|
||||||
|
@ -1281,10 +1279,6 @@ function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id
|
||||||
}
|
}
|
||||||
unset($notify_rows);
|
unset($notify_rows);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Now, we are able to really send out notifications
|
// Now, we are able to really send out notifications
|
||||||
if (sizeof($msg_users))
|
if (sizeof($msg_users))
|
||||||
{
|
{
|
||||||
|
@ -1523,7 +1517,7 @@ function delete_post($mode, $post_id, $topic_id, $forum_id, $data)
|
||||||
$db->sql_transaction('commit');
|
$db->sql_transaction('commit');
|
||||||
|
|
||||||
// Collect the necessary informations for updating the tables
|
// Collect the necessary informations for updating the tables
|
||||||
$sql_data['forum'] = '';
|
$sql_data[FORUMS_TABLE] = '';
|
||||||
switch ($post_mode)
|
switch ($post_mode)
|
||||||
{
|
{
|
||||||
case 'delete_topic':
|
case 'delete_topic':
|
||||||
|
@ -1532,16 +1526,13 @@ function delete_post($mode, $post_id, $topic_id, $forum_id, $data)
|
||||||
|
|
||||||
if ($data['topic_type'] != POST_GLOBAL)
|
if ($data['topic_type'] != POST_GLOBAL)
|
||||||
{
|
{
|
||||||
$sql_data['forum'] .= 'forum_posts = forum_posts - 1, forum_topics_real = forum_topics_real - 1';
|
$sql_data[FORUMS_TABLE] .= 'forum_posts = forum_posts - 1, forum_topics_real = forum_topics_real - 1';
|
||||||
$sql_data['forum'] .= ($data['topic_approved']) ? ', forum_topics = forum_topics - 1' : '';
|
$sql_data[FORUMS_TABLE] .= ($data['topic_approved']) ? ', forum_topics = forum_topics - 1' : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
$update = update_last_post_information('forum', $forum_id);
|
$sql_data[FORUMS_TABLE] .= ($sql_data[FORUMS_TABLE] != '') ? ', ' : '';
|
||||||
if (sizeof($update))
|
$sql_data[FORUMS_TABLE] .= implode(', ', update_last_post_information('forum', $forum_id));
|
||||||
{
|
$sql_data[TOPICS_TABLE] = 'topic_replies_real = topic_replies_real - 1' . (($data['post_approved']) ? ', topic_replies = topic_replies - 1' : '');
|
||||||
$sql_data['forum'] .= ($sql_data['forum'] != '') ? ', ' . implode(', ', $update) : implode(', ', $update);
|
|
||||||
}
|
|
||||||
$sql_data['topic'] = 'topic_replies_real = topic_replies_real - 1' . (($data['post_approved']) ? ', topic_replies = topic_replies - 1' : '');
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'delete_first_post':
|
case 'delete_first_post':
|
||||||
|
@ -1557,11 +1548,11 @@ function delete_post($mode, $post_id, $topic_id, $forum_id, $data)
|
||||||
|
|
||||||
if ($data['topic_type'] != POST_GLOBAL)
|
if ($data['topic_type'] != POST_GLOBAL)
|
||||||
{
|
{
|
||||||
$sql_data['forum'] = 'forum_posts = forum_posts - 1';
|
$sql_data[FORUMS_TABLE] = 'forum_posts = forum_posts - 1';
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql_data['topic'] = 'topic_first_post_id = ' . intval($row['post_id']) . ", topic_first_poster_name = '" . (($row['poster_id'] == ANONYMOUS) ? $db->sql_escape($row['post_username']) : $db->sql_escape($row['username'])) . "'";
|
$sql_data[TOPICS_TABLE] = 'topic_first_post_id = ' . intval($row['post_id']) . ", topic_first_poster_name = '" . (($row['poster_id'] == ANONYMOUS) ? $db->sql_escape($row['post_username']) : $db->sql_escape($row['username'])) . "'";
|
||||||
$sql_data['topic'] .= ', topic_replies_real = topic_replies_real - 1' . (($data['post_approved']) ? ', topic_replies = topic_replies - 1' : '');
|
$sql_data[TOPICS_TABLE] .= ', topic_replies_real = topic_replies_real - 1' . (($data['post_approved']) ? ', topic_replies = topic_replies - 1' : '');
|
||||||
|
|
||||||
$next_post_id = (int) $row['post_id'];
|
$next_post_id = (int) $row['post_id'];
|
||||||
break;
|
break;
|
||||||
|
@ -1569,20 +1560,17 @@ function delete_post($mode, $post_id, $topic_id, $forum_id, $data)
|
||||||
case 'delete_last_post':
|
case 'delete_last_post':
|
||||||
if ($data['topic_type'] != POST_GLOBAL)
|
if ($data['topic_type'] != POST_GLOBAL)
|
||||||
{
|
{
|
||||||
$sql_data['forum'] = 'forum_posts = forum_posts - 1';
|
$sql_data[FORUMS_TABLE] = 'forum_posts = forum_posts - 1';
|
||||||
}
|
}
|
||||||
|
|
||||||
$update = update_last_post_information('forum', $forum_id);
|
$sql_data[FORUMS_TABLE] .= ($sql_data[FORUMS_TABLE] != '') ? ', ' : '';
|
||||||
if (sizeof($update))
|
$sql_data[FORUMS_TABLE] .= implode(', ', update_last_post_information('forum', $forum_id));
|
||||||
{
|
$sql_data[TOPICS_TABLE] = 'topic_bumped = 0, topic_bumper = 0, topic_replies_real = topic_replies_real - 1' . (($data['post_approved']) ? ', topic_replies = topic_replies - 1' : '');
|
||||||
$sql_data['forum'] .= ($sql_data['forum'] != '') ? ', ' . implode(', ', $update) : implode(', ', $update);
|
|
||||||
}
|
|
||||||
$sql_data['topic'] = 'topic_bumped = 0, topic_bumper = 0, topic_replies_real = topic_replies_real - 1' . (($data['post_approved']) ? ', topic_replies = topic_replies - 1' : '');
|
|
||||||
$update = update_last_post_information('topic', $topic_id);
|
$update = update_last_post_information('topic', $topic_id);
|
||||||
|
|
||||||
if (sizeof($update))
|
if (sizeof($update))
|
||||||
{
|
{
|
||||||
$sql_data['topic'] .= ', ' . implode(', ', $update);
|
$sql_data[TOPICS_TABLE] .= ', ' . implode(', ', $update);
|
||||||
$next_post_id = (int) str_replace('topic_last_post_id = ', '', $update[0]);
|
$next_post_id = (int) str_replace('topic_last_post_id = ', '', $update[0]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1613,37 +1601,26 @@ function delete_post($mode, $post_id, $topic_id, $forum_id, $data)
|
||||||
|
|
||||||
if ($data['topic_type'] != POST_GLOBAL)
|
if ($data['topic_type'] != POST_GLOBAL)
|
||||||
{
|
{
|
||||||
$sql_data['forum'] = 'forum_posts = forum_posts - 1';
|
$sql_data[FORUMS_TABLE] = 'forum_posts = forum_posts - 1';
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql_data['topic'] = 'topic_replies_real = topic_replies_real - 1' . (($data['post_approved']) ? ', topic_replies = topic_replies - 1' : '');
|
$sql_data[TOPICS_TABLE] = 'topic_replies_real = topic_replies_real - 1' . (($data['post_approved']) ? ', topic_replies = topic_replies - 1' : '');
|
||||||
$next_post_id = (int) $row['post_id'];
|
$next_post_id = (int) $row['post_id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql_data['user'] = ($auth->acl_get('f_postcount', $forum_id)) ? 'user_posts = user_posts - 1' : '';
|
$sql_data[USERS_TABLE] = ($auth->acl_get('f_postcount', $forum_id)) ? 'user_posts = user_posts - 1' : '';
|
||||||
set_config('num_posts', $config['num_posts'] - 1, TRUE);
|
set_config('num_posts', $config['num_posts'] - 1, TRUE);
|
||||||
|
|
||||||
$db->sql_transaction();
|
$db->sql_transaction();
|
||||||
|
|
||||||
if (isset($sql_data['forum']) && $sql_data['forum'] != '')
|
$where_sql = array(FORUMS_TABLE => "forum_id = $forum_id", TOPICS_TABLE => "topic_id = $topic_id", USERS_TABLE => 'user_id = ' . $data['poster_id']);
|
||||||
{
|
|
||||||
$db->sql_query('UPDATE ' . FORUMS_TABLE . '
|
|
||||||
SET ' . $sql_data['forum'] . "
|
|
||||||
WHERE forum_id = $forum_id");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($sql_data['topic']) && $sql_data['topic'] != '')
|
foreach ($sql_data as $table => $update_sql)
|
||||||
{
|
{
|
||||||
$db->sql_query('UPDATE ' . TOPICS_TABLE . '
|
if ($update_sql != '')
|
||||||
SET ' . $sql_data['topic'] . "
|
{
|
||||||
WHERE topic_id = $topic_id");
|
$db->sql_query("UPDATE $table SET $update_sql WHERE " . $where_sql[$table]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($sql_data['user']) && $sql_data['user'] != '')
|
|
||||||
{
|
|
||||||
$db->sql_query('UPDATE ' . USERS_TABLE . '
|
|
||||||
SET ' . $sql_data['user'] . '
|
|
||||||
WHERE user_id = ' . $data['poster_id']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$db->sql_transaction('commit');
|
$db->sql_transaction('commit');
|
||||||
|
@ -1688,7 +1665,7 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_
|
||||||
{
|
{
|
||||||
case 'post':
|
case 'post':
|
||||||
case 'reply':
|
case 'reply':
|
||||||
$sql_data['post']['sql'] = array(
|
$sql_data[POSTS_TABLE]['sql'] = array(
|
||||||
'forum_id' => ($topic_type == POST_GLOBAL) ? 0 : $data['forum_id'],
|
'forum_id' => ($topic_type == POST_GLOBAL) ? 0 : $data['forum_id'],
|
||||||
'poster_id' => (int) $user->data['user_id'],
|
'poster_id' => (int) $user->data['user_id'],
|
||||||
'icon_id' => $data['icon_id'],
|
'icon_id' => $data['icon_id'],
|
||||||
|
@ -1716,17 +1693,17 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_
|
||||||
case 'edit':
|
case 'edit':
|
||||||
if (!$auth->acl_gets('m_', 'a_'))
|
if (!$auth->acl_gets('m_', 'a_'))
|
||||||
{
|
{
|
||||||
$sql_data['post']['sql'] = array(
|
$sql_data[POSTS_TABLE]['sql'] = array(
|
||||||
'post_edit_time' => $current_time
|
'post_edit_time' => $current_time
|
||||||
);
|
);
|
||||||
|
|
||||||
$sql_data['post']['stat'][] = 'post_edit_count = post_edit_count + 1';
|
$sql_data[POSTS_TABLE]['stat'][] = 'post_edit_count = post_edit_count + 1';
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'edit_topic':
|
case 'edit_topic':
|
||||||
case 'edit_last_post':
|
case 'edit_last_post':
|
||||||
|
|
||||||
$sql_data['post']['sql'] = array_merge($sql_data['post']['sql'], array(
|
$sql_data[POSTS_TABLE]['sql'] = array_merge($sql_data[POSTS_TABLE]['sql'], array(
|
||||||
'forum_id' => ($topic_type == POST_GLOBAL) ? 0 : $data['forum_id'],
|
'forum_id' => ($topic_type == POST_GLOBAL) ? 0 : $data['forum_id'],
|
||||||
'poster_id' => $data['poster_id'],
|
'poster_id' => $data['poster_id'],
|
||||||
'icon_id' => $data['icon_id'],
|
'icon_id' => $data['icon_id'],
|
||||||
|
@ -1753,7 +1730,7 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_
|
||||||
switch ($post_mode)
|
switch ($post_mode)
|
||||||
{
|
{
|
||||||
case 'post':
|
case 'post':
|
||||||
$sql_data['topic']['sql'] = array(
|
$sql_data[TOPICS_TABLE]['sql'] = array(
|
||||||
'topic_poster' => (int) $user->data['user_id'],
|
'topic_poster' => (int) $user->data['user_id'],
|
||||||
'topic_time' => $current_time,
|
'topic_time' => $current_time,
|
||||||
'forum_id' => ($topic_type == POST_GLOBAL) ? 0 : $data['forum_id'],
|
'forum_id' => ($topic_type == POST_GLOBAL) ? 0 : $data['forum_id'],
|
||||||
|
@ -1768,7 +1745,7 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_
|
||||||
|
|
||||||
if (!empty($poll['poll_options']))
|
if (!empty($poll['poll_options']))
|
||||||
{
|
{
|
||||||
$sql_data['topic']['sql'] = array_merge($sql_data['topic']['sql'], array(
|
$sql_data[TOPICS_TABLE]['sql'] = array_merge($sql_data[TOPICS_TABLE]['sql'], array(
|
||||||
'poll_title' => $poll['poll_title'],
|
'poll_title' => $poll['poll_title'],
|
||||||
'poll_start' => ($poll['poll_start']) ? $poll['poll_start'] : $current_time,
|
'poll_start' => ($poll['poll_start']) ? $poll['poll_start'] : $current_time,
|
||||||
'poll_max_options' => $poll['poll_max_options'],
|
'poll_max_options' => $poll['poll_max_options'],
|
||||||
|
@ -1776,22 +1753,21 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql_data['user']['stat'][] = "user_lastpost_time = $current_time" . (($auth->acl_get('f_postcount', $data['forum_id'])) ? ', user_posts = user_posts + 1' : '');
|
$sql_data[USERS_TABLE]['stat'][] = "user_lastpost_time = $current_time" . (($auth->acl_get('f_postcount', $data['forum_id'])) ? ', user_posts = user_posts + 1' : '');
|
||||||
$sql_data['forum']['stat'][] = 'forum_posts = forum_posts + 1'; //(!$auth->acl_get('f_moderate', $data['forum_id'])) ? 'forum_posts = forum_posts + 1' : '';
|
$sql_data[FORUMS_TABLE]['stat'][] = 'forum_posts = forum_posts + 1'; //(!$auth->acl_get('f_moderate', $data['forum_id'])) ? 'forum_posts = forum_posts + 1' : '';
|
||||||
$sql_data['forum']['stat'][] = 'forum_topics_real = forum_topics_real + 1' . ((!$auth->acl_get('f_moderate', $data['forum_id'])) ? ', forum_topics = forum_topics + 1' : '');
|
$sql_data[FORUMS_TABLE]['stat'][] = 'forum_topics_real = forum_topics_real + 1' . ((!$auth->acl_get('f_moderate', $data['forum_id'])) ? ', forum_topics = forum_topics + 1' : '');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'reply':
|
case 'reply':
|
||||||
$sql_data['topic']['stat'][] = 'topic_replies_real = topic_replies_real + 1' . ((!$auth->acl_get('f_moderate', $data['forum_id'])) ? ', topic_replies = topic_replies + 1' : '');
|
$sql_data[TOPICS_TABLE]['stat'][] = 'topic_replies_real = topic_replies_real + 1, topic_bumped = 0, topic_bumper = 0' . ((!$auth->acl_get('f_moderate', $data['forum_id'])) ? ', topic_replies = topic_replies + 1' : '');
|
||||||
$sql_data['topic']['stat'][] = 'topic_bumped = 0, topic_bumper = 0';
|
$sql_data[USERS_TABLE]['stat'][] = "user_lastpost_time = $current_time" . (($auth->acl_get('f_postcount', $data['forum_id'])) ? ', user_posts = user_posts + 1' : '');
|
||||||
$sql_data['user']['stat'][] = "user_lastpost_time = $current_time" . (($auth->acl_get('f_postcount', $data['forum_id'])) ? ', user_posts = user_posts + 1' : '');
|
$sql_data[FORUMS_TABLE]['stat'][] = 'forum_posts = forum_posts + 1'; //(!$auth->acl_get('f_moderate', $data['forum_id'])) ? 'forum_posts = forum_posts + 1' : '';
|
||||||
$sql_data['forum']['stat'][] = 'forum_posts = forum_posts + 1'; //(!$auth->acl_get('f_moderate', $data['forum_id'])) ? 'forum_posts = forum_posts + 1' : '';
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'edit_topic':
|
case 'edit_topic':
|
||||||
case 'edit_first_post':
|
case 'edit_first_post':
|
||||||
|
|
||||||
$sql_data['topic']['sql'] = array(
|
$sql_data[TOPICS_TABLE]['sql'] = array(
|
||||||
'forum_id' => ($topic_type == POST_GLOBAL) ? 0 : $data['forum_id'],
|
'forum_id' => ($topic_type == POST_GLOBAL) ? 0 : $data['forum_id'],
|
||||||
'icon_id' => $data['icon_id'],
|
'icon_id' => $data['icon_id'],
|
||||||
'topic_approved' => ($auth->acl_get('f_moderate', $data['forum_id'])) ? 0 : 1,
|
'topic_approved' => ($auth->acl_get('f_moderate', $data['forum_id'])) ? 0 : 1,
|
||||||
|
@ -1815,15 +1791,15 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_
|
||||||
if ($post_mode == 'post')
|
if ($post_mode == 'post')
|
||||||
{
|
{
|
||||||
$sql = 'INSERT INTO ' . TOPICS_TABLE . ' ' .
|
$sql = 'INSERT INTO ' . TOPICS_TABLE . ' ' .
|
||||||
$db->sql_build_array('INSERT', $sql_data['topic']['sql']);
|
$db->sql_build_array('INSERT', $sql_data[TOPICS_TABLE]['sql']);
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
|
||||||
$data['topic_id'] = $db->sql_nextid();
|
$data['topic_id'] = $db->sql_nextid();
|
||||||
|
|
||||||
$sql_data['post']['sql'] = array_merge($sql_data['post']['sql'], array(
|
$sql_data[POSTS_TABLE]['sql'] = array_merge($sql_data[POSTS_TABLE]['sql'], array(
|
||||||
'topic_id' => $data['topic_id'])
|
'topic_id' => $data['topic_id'])
|
||||||
);
|
);
|
||||||
unset($sql_data['topic']['sql']);
|
unset($sql_data[TOPICS_TABLE]['sql']);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Submit new post
|
// Submit new post
|
||||||
|
@ -1831,19 +1807,19 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_
|
||||||
{
|
{
|
||||||
if ($post_mode == 'reply')
|
if ($post_mode == 'reply')
|
||||||
{
|
{
|
||||||
$sql_data['post']['sql'] = array_merge($sql_data['post']['sql'], array(
|
$sql_data[POSTS_TABLE]['sql'] = array_merge($sql_data[POSTS_TABLE]['sql'], array(
|
||||||
'topic_id' => $data['topic_id'])
|
'topic_id' => $data['topic_id'])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = 'INSERT INTO ' . POSTS_TABLE . ' ' .
|
$sql = 'INSERT INTO ' . POSTS_TABLE . ' ' .
|
||||||
$db->sql_build_array('INSERT', $sql_data['post']['sql']);
|
$db->sql_build_array('INSERT', $sql_data[POSTS_TABLE]['sql']);
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
$data['post_id'] = $db->sql_nextid();
|
$data['post_id'] = $db->sql_nextid();
|
||||||
|
|
||||||
if ($post_mode == 'post')
|
if ($post_mode == 'post')
|
||||||
{
|
{
|
||||||
$sql_data['topic']['sql'] = array(
|
$sql_data[TOPICS_TABLE]['sql'] = array(
|
||||||
'topic_first_post_id' => $data['post_id'],
|
'topic_first_post_id' => $data['post_id'],
|
||||||
'topic_last_post_id' => $data['post_id'],
|
'topic_last_post_id' => $data['post_id'],
|
||||||
'topic_last_post_time' => $current_time,
|
'topic_last_post_time' => $current_time,
|
||||||
|
@ -1852,7 +1828,7 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
unset($sql_data['post']['sql']);
|
unset($sql_data[POSTS_TABLE]['sql']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$make_global = FALSE;
|
$make_global = FALSE;
|
||||||
|
@ -1872,36 +1848,36 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_
|
||||||
{
|
{
|
||||||
// Decrement topic/post count
|
// Decrement topic/post count
|
||||||
$make_global = TRUE;
|
$make_global = TRUE;
|
||||||
$sql_data['forum']['stat'] = array();
|
$sql_data[FORUMS_TABLE]['stat'] = array();
|
||||||
|
|
||||||
$sql_data['forum']['stat'][] = 'forum_posts = forum_posts - ' . ($row['topic_replies_real'] + 1);
|
$sql_data[FORUMS_TABLE]['stat'][] = 'forum_posts = forum_posts - ' . ($row['topic_replies_real'] + 1);
|
||||||
$sql_data['forum']['stat'][] = 'forum_topics_real = forum_topics_real - 1' . (($row['topic_approved']) ? ', forum_topics = forum_topics - 1' : '');
|
$sql_data[FORUMS_TABLE]['stat'][] = 'forum_topics_real = forum_topics_real - 1' . (($row['topic_approved']) ? ', forum_topics = forum_topics - 1' : '');
|
||||||
}
|
}
|
||||||
// unglobalise
|
// unglobalise
|
||||||
else if ((int)$row['topic_type'] == POST_GLOBAL && $topic_type != POST_GLOBAL)
|
else if ((int)$row['topic_type'] == POST_GLOBAL && $topic_type != POST_GLOBAL)
|
||||||
{
|
{
|
||||||
// Increment topic/post count
|
// Increment topic/post count
|
||||||
$make_global = TRUE;
|
$make_global = TRUE;
|
||||||
$sql_data['forum']['stat'] = array();
|
$sql_data[FORUMS_TABLE]['stat'] = array();
|
||||||
|
|
||||||
$sql_data['forum']['stat'][] = 'forum_posts = forum_posts + ' . ($row['topic_replies_real'] + 1);
|
$sql_data[FORUMS_TABLE]['stat'][] = 'forum_posts = forum_posts + ' . ($row['topic_replies_real'] + 1);
|
||||||
$sql_data['forum']['stat'][] = 'forum_topics_real = forum_topics_real + 1' . (($row['topic_approved']) ? ', forum_topics = forum_topics + 1' : '');
|
$sql_data[FORUMS_TABLE]['stat'][] = 'forum_topics_real = forum_topics_real + 1' . (($row['topic_approved']) ? ', forum_topics = forum_topics + 1' : '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the topics table
|
// Update the topics table
|
||||||
if (isset($sql_data['topic']['sql']))
|
if (isset($sql_data[TOPICS_TABLE]['sql']))
|
||||||
{
|
{
|
||||||
$db->sql_query('UPDATE ' . TOPICS_TABLE . '
|
$db->sql_query('UPDATE ' . TOPICS_TABLE . '
|
||||||
SET ' . $db->sql_build_array('UPDATE', $sql_data['topic']['sql']) . '
|
SET ' . $db->sql_build_array('UPDATE', $sql_data[TOPICS_TABLE]['sql']) . '
|
||||||
WHERE topic_id = ' . $data['topic_id']);
|
WHERE topic_id = ' . $data['topic_id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the posts table
|
// Update the posts table
|
||||||
if (isset($sql_data['post']['sql']))
|
if (isset($sql_data[POSTS_TABLE]['sql']))
|
||||||
{
|
{
|
||||||
$db->sql_query('UPDATE ' . POSTS_TABLE . '
|
$db->sql_query('UPDATE ' . POSTS_TABLE . '
|
||||||
SET ' . $db->sql_build_array('UPDATE', $sql_data['post']['sql']) . '
|
SET ' . $db->sql_build_array('UPDATE', $sql_data[POSTS_TABLE]['sql']) . '
|
||||||
WHERE post_id = ' . $data['post_id']);
|
WHERE post_id = ' . $data['post_id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2017,7 +1993,7 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_
|
||||||
// We get the last post information not for posting or replying, we can assume the correct params here, which is much faster
|
// We get the last post information not for posting or replying, we can assume the correct params here, which is much faster
|
||||||
if ($post_mode == 'edit_last_post')
|
if ($post_mode == 'edit_last_post')
|
||||||
{
|
{
|
||||||
$sql_data['forum']['stat'][] = implode(', ', update_last_post_information('forum', $data['forum_id']));
|
$sql_data[FORUMS_TABLE]['stat'][] = implode(', ', update_last_post_information('forum', $data['forum_id']));
|
||||||
}
|
}
|
||||||
else if (!$auth->acl_get('f_moderate', $data['forum_id']))
|
else if (!$auth->acl_get('f_moderate', $data['forum_id']))
|
||||||
{
|
{
|
||||||
|
@ -2025,24 +2001,32 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_
|
||||||
$update_sql .= ", forum_last_post_time = $current_time";
|
$update_sql .= ", forum_last_post_time = $current_time";
|
||||||
$update_sql .= ', forum_last_poster_id = ' . $user->data['user_id'];
|
$update_sql .= ', forum_last_poster_id = ' . $user->data['user_id'];
|
||||||
$update_sql .= ", forum_last_poster_name = '" . (($user->data['user_id'] == ANONYMOUS) ? $db->sql_escape(stripslashes($username)) : $db->sql_escape($user->data['username'])) . "'";
|
$update_sql .= ", forum_last_poster_name = '" . (($user->data['user_id'] == ANONYMOUS) ? $db->sql_escape(stripslashes($username)) : $db->sql_escape($user->data['username'])) . "'";
|
||||||
$sql_data['forum']['stat'][] = $update_sql;
|
$sql_data[FORUMS_TABLE]['stat'][] = $update_sql;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$sql_data['topic']['stat'][] = implode(', ', update_last_post_information('topic', $data['topic_id']));
|
|
||||||
|
$update = update_last_post_information('topic', $data['topic_id']);
|
||||||
|
if (sizeof($update))
|
||||||
|
{
|
||||||
|
$sql_data[TOPICS_TABLE]['stat'][] = implode(', ', $update);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($make_global)
|
if ($make_global)
|
||||||
{
|
{
|
||||||
$sql_data['forum']['stat'][] = implode(', ', update_last_post_information('forum', $data['forum_id']));
|
$sql_data[FORUMS_TABLE]['stat'][] = implode(', ', update_last_post_information('forum', $data['forum_id']));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($post_mode == 'edit_topic')
|
if ($post_mode == 'edit_topic')
|
||||||
{
|
{
|
||||||
$sql_data['topic']['stat'] = implode(', ', update_last_post_information('topic', $data['topic_id']));
|
$update = update_last_post_information('topic', $data['topic_id']);
|
||||||
|
if (sizeof($update))
|
||||||
|
{
|
||||||
|
$sql_data[TOPICS_TABLE]['stat'][] = implode(', ', $update);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update total post count, do not consider moderated posts/topics
|
// Update total post count, do not consider moderated posts/topics
|
||||||
// Mental Note: adjust Resync Stats in admin index if you delete these comments.
|
|
||||||
if (!$auth->acl_get('f_moderate', $data['forum_id']))
|
if (!$auth->acl_get('f_moderate', $data['forum_id']))
|
||||||
{
|
{
|
||||||
if ($post_mode == 'post')
|
if ($post_mode == 'post')
|
||||||
|
@ -2060,32 +2044,14 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_
|
||||||
// Update forum stats
|
// Update forum stats
|
||||||
$db->sql_transaction();
|
$db->sql_transaction();
|
||||||
|
|
||||||
if (implode('', $sql_data['post']['stat']) != '')
|
$where_sql = array(POSTS_TABLE => 'post_id = ' . $data['post_id'], TOPICS_TABLE => 'topic_id = ' . $data['topic_id'], FORUMS_TABLE => 'forum_id = ' . $data['forum_id'], USERS_TABLE => 'user_id = ' . $user->data['user_id']);
|
||||||
{
|
|
||||||
$db->sql_query('UPDATE ' . POSTS_TABLE . '
|
|
||||||
SET ' . implode(', ', $sql_data['post']['stat']) . '
|
|
||||||
WHERE post_id = ' . $data['post_id']);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (implode('', $sql_data['topic']['stat']) != '')
|
foreach ($sql_data as $table => $update_ary)
|
||||||
{
|
{
|
||||||
$db->sql_query('UPDATE ' . TOPICS_TABLE . '
|
if (implode('', $update_ary['stat']) != '')
|
||||||
SET ' . implode(', ', $sql_data['topic']['stat']) . '
|
{
|
||||||
WHERE topic_id = ' . $data['topic_id']);
|
$db->sql_query("UPDATE $table SET " . implode(', ', $update_ary['stat']) . ' WHERE ' . $where_sql[$table]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (implode('', $sql_data['forum']['stat']) != '')
|
|
||||||
{
|
|
||||||
$db->sql_query('UPDATE ' . FORUMS_TABLE . '
|
|
||||||
SET ' . implode(', ', $sql_data['forum']['stat']) . '
|
|
||||||
WHERE forum_id = ' . $data['forum_id']);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (implode('', $sql_data['user']['stat']) != '')
|
|
||||||
{
|
|
||||||
$db->sql_query('UPDATE ' . USERS_TABLE . '
|
|
||||||
SET ' . implode(', ', $sql_data['user']['stat']) . '
|
|
||||||
WHERE user_id = ' . $user->data['user_id']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fulltext parse
|
// Fulltext parse
|
||||||
|
|
Loading…
Add table
Reference in a new issue