Удаление аттач мода

Удаление практически всех файлов от старого аттач-мода.
This commit is contained in:
Exile 2014-12-21 01:59:01 +03:00
commit a13efda1e3
15 changed files with 102 additions and 3529 deletions

View file

@ -44,7 +44,6 @@ switch ($ajax->action)
case 'change_tor_status':
case 'change_torrent':
case 'gen_passkey':
require(ATTACH_DIR . 'attachment_mod.php');
require(INC_DIR . 'functions_torrent.php');
break;

60
dl.php
View file

@ -4,7 +4,6 @@ define('BB_SCRIPT', 'dl');
define('NO_GZIP', true);
define('BB_ROOT', './');
require(BB_ROOT .'common.php');
require(ATTACH_DIR .'attachment_mod.php');
$download_id = request_var('id', 0);
$thumbnail = request_var('thumb', 0);
@ -18,15 +17,6 @@ function send_file_to_browser($attachment, $upload_dir)
$gotit = false;
if (@!file_exists(@amod_realpath($filename)))
{
bb_die($lang['ERROR_NO_ATTACHMENT'] . "<br /><br />" . $filename. "<br /><br />" .$lang['TOR_NOT_FOUND']);
}
else
{
$gotit = true;
}
// Correct the mime type - we force application/octet-stream for all files, except images
// Please do not change this, it is a security precaution
if (!strstr($attachment['mimetype'], 'image'))
@ -82,11 +72,6 @@ if (!$download_id)
bb_die($lang['NO_ATTACHMENT_SELECTED']);
}
if ($attach_config['disable_mod'] && !IS_ADMIN)
{
bb_die($lang['ATTACHMENT_FEATURE_DISABLED']);
}
$sql = 'SELECT * FROM ' . BB_ATTACHMENTS_DESC . ' WHERE attach_id = ' . (int) $download_id;
if (!($result = DB()->sql_query($sql)))
@ -152,52 +137,14 @@ if (!$authorised)
$datastore->rm('cat_forums');
//
// Get Information on currently allowed Extensions
//
$rows = get_extension_informations();
$num_rows = count($rows);
for ($i = 0; $i < $num_rows; $i++)
{
$extension = strtolower(trim($rows[$i]['extension']));
$allowed_extensions[] = $extension;
$download_mode[$extension] = $rows[$i]['download_mode'];
}
// Disallowed
if (!in_array($attachment['extension'], $allowed_extensions) && !IS_ADMIN)
{
bb_die(sprintf($lang['EXTENSION_DISABLED_AFTER_POSTING'], $attachment['extension']));
}
$download_mode = intval($download_mode[$attachment['extension']]);
if ($thumbnail)
{
$attachment['physical_filename'] = THUMB_DIR . '/t_' . $attachment['physical_filename'];
}
// Update download count
if (!$thumbnail)
{
$sql = 'UPDATE ' . BB_ATTACHMENTS_DESC . ' SET download_count = download_count + 1 WHERE attach_id = ' . (int) $attachment['attach_id'];
if (!DB()->sql_query($sql))
{
bb_die('Could not update attachment download count');
}
}
// Determine the 'presenting'-method
if ($download_mode == PHYSICAL_LINK)
{
$url = make_url($upload_dir . '/' . $attachment['physical_filename']);
header('Location: ' . $url);
exit;
}
else
{
if (IS_GUEST && !bb_captcha('check'))
{
global $template;
@ -219,6 +166,5 @@ else
require(PAGE_FOOTER);
}
send_file_to_browser($attachment, $upload_dir);
exit;
}
send_file_to_browser($attachment, '');
exit;

View file

@ -1,46 +1,5 @@
SET SQL_MODE = "";
-- ----------------------------
-- Table structure for `bb_attachments`
-- ----------------------------
DROP TABLE IF EXISTS `bb_attachments`;
CREATE TABLE IF NOT EXISTS `bb_attachments` (
`attach_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
`post_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
`user_id_1` mediumint(8) NOT NULL DEFAULT '0',
PRIMARY KEY (`attach_id`,`post_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of bb_attachments
-- ----------------------------
-- ----------------------------
-- Table structure for `bb_attachments_desc`
-- ----------------------------
DROP TABLE IF EXISTS `bb_attachments_desc`;
CREATE TABLE IF NOT EXISTS `bb_attachments_desc` (
`attach_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`physical_filename` varchar(255) NOT NULL DEFAULT '',
`real_filename` varchar(255) NOT NULL DEFAULT '',
`download_count` mediumint(8) unsigned NOT NULL DEFAULT '0',
`comment` varchar(255) NOT NULL DEFAULT '',
`extension` varchar(100) NOT NULL DEFAULT '',
`mimetype` varchar(100) NOT NULL DEFAULT '',
`filesize` int(20) NOT NULL DEFAULT '0',
`filetime` int(11) NOT NULL DEFAULT '0',
`thumbnail` tinyint(1) NOT NULL DEFAULT '0',
`tracker_status` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`attach_id`),
KEY `filetime` (`filetime`),
KEY `filesize` (`filesize`),
KEY `physical_filename` (`physical_filename`(10))
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of bb_attachments_desc
-- ----------------------------
-- ----------------------------
-- Table structure for `bb_auth_access`
-- ----------------------------
@ -185,7 +144,6 @@ CREATE TABLE IF NOT EXISTS `bb_bt_torrents` (
`poster_id` mediumint(9) NOT NULL DEFAULT '0',
`topic_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
`forum_id` smallint(5) unsigned NOT NULL DEFAULT '0',
`attach_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
`size` bigint(20) unsigned NOT NULL DEFAULT '0',
`reg_time` int(11) NOT NULL DEFAULT '0',
`call_seed_time` int(11) NOT NULL DEFAULT '0',
@ -200,7 +158,6 @@ CREATE TABLE IF NOT EXISTS `bb_bt_torrents` (
PRIMARY KEY (`info_hash`),
UNIQUE KEY `post_id` (`post_id`),
UNIQUE KEY `topic_id` (`topic_id`),
UNIQUE KEY `attach_id` (`attach_id`),
KEY `reg_time` (`reg_time`),
KEY `forum_id` (`forum_id`),
KEY `poster_id` (`poster_id`)
@ -731,7 +688,6 @@ CREATE TABLE IF NOT EXISTS `bb_posts` (
`post_username` varchar(25) NOT NULL DEFAULT '',
`post_edit_time` int(11) NOT NULL DEFAULT '0',
`post_edit_count` smallint(5) unsigned NOT NULL DEFAULT '0',
`post_attachment` tinyint(1) NOT NULL DEFAULT '0',
`user_post` tinyint(1) NOT NULL DEFAULT '1',
`mc_comment` text NOT NULL,
`mc_type` tinyint(1) NOT NULL DEFAULT '0',
@ -996,7 +952,6 @@ CREATE TABLE IF NOT EXISTS `bb_topics` (
`topic_first_post_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
`topic_last_post_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
`topic_moved_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
`topic_attachment` tinyint(1) NOT NULL DEFAULT '0',
`topic_dl_type` tinyint(1) NOT NULL DEFAULT '0',
`attach_ext_id` tinyint(4) NOT NULL DEFAULT '0',
`filesize` mediumint(8) unsigned NOT NULL DEFAULT '0',

View file

@ -1,2 +0,0 @@
order allow,deny
deny from all

View file

@ -1,77 +0,0 @@
<?php
require(ATTACH_DIR .'includes/functions_attach.php');
require(ATTACH_DIR .'includes/functions_delete.php');
if (defined('ATTACH_INSTALL'))
{
return;
}
/**
* wrapper function for determining the correct language directory
*/
function attach_mod_get_lang($language_file)
{
global $attach_config, $bb_cfg;
$language = $bb_cfg['default_lang'];
if (!file_exists(LANG_ROOT_DIR ."$language/$language_file.php"))
{
$language = $attach_config['board_lang'];
if (!file_exists(LANG_ROOT_DIR ."$language/$language_file.php"))
{
bb_die('Attachment mod language file does not exist: language/' . $language . '/' . $language_file . '.php');
}
else
{
return $language;
}
}
else
{
return $language;
}
}
/**
* Get attachment mod configuration
*/
function get_config()
{
global $bb_cfg;
$attach_config = array();
$sql = 'SELECT * FROM ' . BB_ATTACH_CONFIG;
if (!($result = DB()->sql_query($sql)))
{
bb_die('Could not query attachment information');
}
while ($row = DB()->sql_fetchrow($result))
{
$attach_config[$row['config_name']] = trim($row['config_value']);
}
// We assign the original default board language here, because it gets overwritten later with the users default language
$attach_config['board_lang'] = trim($bb_cfg['default_lang']);
return $attach_config;
}
// Get Attachment Config
$attach_config = array();
if (!$attach_config = CACHE('bb_cache')->get('attach_config'))
{
$attach_config = get_config();
CACHE('bb_cache')->set('attach_config', $attach_config, 86400);
}
include(ATTACH_DIR .'displaying.php');
include(ATTACH_DIR .'posting_attachments.php');
$upload_dir = $attach_config['upload_dir'];

View file

@ -1,605 +0,0 @@
<?php
/*
if (!defined('BB_ROOT')) die(basename(__FILE__));
global $bb_cfg, $t_data, $poster_id, $is_auth, $dl_link_css, $dl_status_css, $lang, $images;
$change_peers_bgr_over = true;
$bgr_class_1 = 'row1';
$bgr_class_2 = 'row2';
$bgr_class_over = 'row3';
$show_peers_limit = 300;
$max_peers_before_overflow = 20;
$peers_overflow_div_height = '400px';
$peers_div_style_normal = 'padding: 3px;';
$peers_div_style_overflow = "padding: 6px; height: $peers_overflow_div_height; overflow: auto; border: 1px inset;";
$s_last_seed_date_format = 'Y-m-d';
$upload_image = '<img src="'. $images['icon_dn'] .'" alt="'. $lang['DL_TORRENT'] .'" border="0" />';
$peers_cnt = $seed_count = 0;
$seeders = $leechers = '';
$tor_info = array();
$template->assign_vars(array(
'SEED_COUNT' => false,
'LEECH_COUNT' => false,
'TOR_SPEED_UP' => false,
'TOR_SPEED_DOWN' => false,
'SHOW_RATIO_WARN' => false,
));
// Define show peers mode (count only || user names with complete % || full details)
$cfg_sp_mode = $bb_cfg['bt_show_peers_mode'];
$get_sp_mode = (isset($_GET['spmode'])) ? $_GET['spmode'] : '';
$s_mode = 'count';
if ($cfg_sp_mode == SHOW_PEERS_NAMES)
{
$s_mode = 'names';
}
else if ($cfg_sp_mode == SHOW_PEERS_FULL)
{
$s_mode = 'full';
}
if ($bb_cfg['bt_allow_spmode_change'])
{
if ($get_sp_mode == 'names')
{
$s_mode = 'names';
}
else if ($get_sp_mode == 'full')
{
$s_mode = 'full';
}
}
$bt_topic_id = $t_data['topic_id'];
$bt_user_id = $userdata['user_id'];
$attach_id = $attachments['_'. $post_id][$i]['attach_id'];
$tracker_status = $attachments['_'. $post_id][$i]['tracker_status'];
$download_count = $attachments['_'. $post_id][$i]['download_count'];
$tor_file_size = humn_size($attachments['_'. $post_id][$i]['filesize']);
$tor_file_time = bb_date($attachments['_'. $post_id][$i]['filetime']);
$tor_reged = (bool) $tracker_status;
$show_peers = (bool) $bb_cfg['bt_show_peers'];
$locked = ($t_data['forum_status'] == FORUM_LOCKED || $t_data['topic_status'] == TOPIC_LOCKED);
$tor_auth = ($bt_user_id != GUEST_UID && (($bt_user_id == $poster_id && !$locked) || $is_auth['auth_mod']));
$tor_auth_reg = ($tor_auth && $t_data['allow_reg_tracker'] && $post_id == $t_data['topic_first_post_id']);
$tor_auth_del = ($tor_auth && $tor_reged);
$tracker_link = ($tor_reged) ? $lang['BT_REG_YES'] : $lang['BT_REG_NO'];
$download_link = DOWNLOAD_URL . $attach_id;
$description = ($comment) ? $comment : preg_replace("#.torrent$#i", '', $display_name);
if ($tor_auth_reg || $tor_auth_del)
{
$reg_tor_url = '<a class="txtb" href="#" onclick="ajax.exec({ action: \'change_torrent\', attach_id : '. $attach_id .', type: \'reg\'}); return false;">'. $lang['BT_REG_ON_TRACKER'] .'</a>';
$unreg_tor_url = '<a class="txtb" href="#" onclick="ajax.exec({ action: \'change_torrent\', attach_id : '. $attach_id .', type: \'unreg\'}); return false;">'. $lang['BT_UNREG_FROM_TRACKER'] .'</a>';
$tracker_link = ($tor_reged) ? $unreg_tor_url : $reg_tor_url;
}
if ($bb_cfg['torrent_name_style'])
{
$display_name = '['.$bb_cfg['server_name'].'].t' . $bt_topic_id . '.torrent';
}
if (!$tor_reged)
{
$template->assign_block_vars('postrow.attach.tor_not_reged', array(
'DOWNLOAD_NAME' => $display_name,
'TRACKER_LINK' => $tracker_link,
'ATTACH_ID' => $attach_id,
'S_UPLOAD_IMAGE' => $upload_image,
'U_DOWNLOAD_LINK' => $download_link,
'FILESIZE' => $tor_file_size,
'DOWNLOAD_COUNT' => sprintf($lang['DOWNLOAD_NUMBER'], $download_count),
'POSTED_TIME' => $tor_file_time,
));
if ($comment)
{
$template->assign_block_vars('postrow.attach.tor_not_reged.comment', array('COMMENT' => $comment));
}
}
else
{
$sql = "SELECT bt.*, u.user_id, u.username, u.user_rank
FROM ". BB_BT_TORRENTS ." bt
LEFT JOIN ". BB_USERS ." u ON(bt.checked_user_id = u.user_id)
WHERE bt.attach_id = $attach_id";
if (!$result = DB()->sql_query($sql))
{
bb_die('Could not obtain torrent information');
}
$tor_info = DB()->sql_fetchrow($result);
DB()->sql_freeresult($result);
}
if ($tor_reged && !$tor_info)
{
DB()->query("UPDATE ". BB_ATTACHMENTS_DESC ." SET tracker_status = 0 WHERE attach_id = $attach_id");
bb_die('Torrent status fixed');
}
if ($tor_auth)
{
$template->assign_vars(array(
'TOR_CONTROLS' => true,
'TOR_ATTACH_ID' => $attach_id,
));
if ($t_data['self_moderated'] || $is_auth['auth_mod'])
{
$template->assign_vars(array('AUTH_MOVE' => true));
}
}
if ($tor_reged && $tor_info)
{
$tor_size = ($tor_info['size']) ? $tor_info['size'] : 0;
$tor_id = $tor_info['topic_id'];
$tor_type = $tor_info['tor_type'];
// Magnet link
$passkey = DB()->fetch_row("SELECT auth_key FROM ". BB_BT_USERS ." WHERE user_id = ". (int) $bt_user_id ." LIMIT 1");
$tor_magnet = create_magnet($tor_info['info_hash'], $passkey['auth_key'], $userdata['session_logged_in']);
// ratio limits
$min_ratio_dl = $bb_cfg['bt_min_ratio_allow_dl_tor'];
$min_ratio_warn = $bb_cfg['bt_min_ratio_warning'];
$dl_allowed = true;
$user_ratio = 0;
if (($min_ratio_dl || $min_ratio_warn) && $bt_user_id != $poster_id)
{
$sql = "SELECT u.*, dl.user_status
FROM ". BB_BT_USERS ." u
LEFT JOIN ". BB_BT_DLSTATUS ." dl ON dl.user_id = $bt_user_id AND dl.topic_id = $bt_topic_id
WHERE u.user_id = $bt_user_id
LIMIT 1";
}
else
{
$sql = "SELECT user_status
FROM ". BB_BT_DLSTATUS ."
WHERE user_id = $bt_user_id
AND topic_id = $bt_topic_id
LIMIT 1";
}
$bt_userdata = DB()->fetch_row($sql);
$user_status = isset($bt_userdata['user_status']) ? $bt_userdata['user_status'] : null;
if (($min_ratio_dl || $min_ratio_warn) && $user_status != DL_STATUS_COMPLETE && $bt_user_id != $poster_id && $tor_type != TOR_TYPE_GOLD)
{
if (($user_ratio = get_bt_ratio($bt_userdata)) !== null)
{
$dl_allowed = ($user_ratio > $min_ratio_dl);
}
if ((isset($user_ratio) && isset($min_ratio_warn) && $user_ratio < $min_ratio_warn && TR_RATING_LIMITS) || ($bt_userdata['u_down_total'] < MIN_DL_FOR_RATIO))
{
$template->assign_vars(array(
'SHOW_RATIO_WARN' => true,
'RATIO_WARN_MSG' => sprintf($lang['BT_RATIO_WARNING_MSG'], $min_ratio_dl, $bb_cfg['ratio_url_help']),
));
}
}
if (!$dl_allowed)
{
$template->assign_block_vars('postrow.attach.tor_reged', array());
$template->assign_vars(array(
'TOR_BLOCKED' => true,
'TOR_BLOCKED_MSG' => sprintf($lang['BT_LOW_RATIO_FOR_DL'], round($user_ratio, 2), "search.php?dlu=$bt_user_id&amp;dlc=1"),
));
}
else
{
$template->assign_block_vars('postrow.attach.tor_reged', array(
'DOWNLOAD_NAME' => $display_name,
'TRACKER_LINK' => $tracker_link,
'ATTACH_ID' => $attach_id,
'TOR_SILVER_GOLD' => $tor_type,
// torrent status mod
'TOR_FROZEN' => (!IS_AM) ? (isset($bb_cfg['tor_frozen'][$tor_info['tor_status']]) && !(isset($bb_cfg['tor_frozen_author_download'][$tor_info['tor_status']]) && $userdata['user_id'] == $tor_info['poster_id'])) ? true : '' : '',
'TOR_STATUS_TEXT' => $lang['TOR_STATUS_NAME'][$tor_info['tor_status']],
'TOR_STATUS_ICON' => $bb_cfg['tor_icons'][$tor_info['tor_status']],
'TOR_STATUS_BY' => ($tor_info['checked_user_id'] && $is_auth['auth_mod']) ? ('<span title="'. bb_date($tor_info['checked_time']) .'"> &middot; '. profile_url($tor_info) .' &middot; <i>'. delta_time($tor_info['checked_time']) . $lang['TOR_BACK'] .'</i></span>') : '',
'TOR_STATUS_SELECT' => build_select('sel_status', array_flip($lang['TOR_STATUS_NAME']), TOR_APPROVED),
'TOR_STATUS_REPLY' => $bb_cfg['tor_comment'] && !IS_GUEST && in_array($tor_info['tor_status'], $bb_cfg['tor_reply']) && $userdata['user_id'] == $tor_info['poster_id'] && $t_data['topic_status'] != TOPIC_LOCKED,
//end torrent status mod
'S_UPLOAD_IMAGE' => $upload_image,
'U_DOWNLOAD_LINK' => $download_link,
'DL_LINK_CLASS' => (isset($bt_userdata['user_status'])) ? $dl_link_css[$bt_userdata['user_status']] : 'genmed',
'DL_TITLE_CLASS' => (isset($bt_userdata['user_status'])) ? $dl_status_css[$bt_userdata['user_status']] : 'gen',
'FILESIZE' => $tor_file_size,
'MAGNET' => $tor_magnet,
'HASH' => strtoupper(bin2hex($tor_info['info_hash'])),
'DOWNLOAD_COUNT' => sprintf($lang['DOWNLOAD_NUMBER'], $download_count),
'REGED_TIME' => bb_date($tor_info['reg_time']),
'REGED_DELTA' => delta_time($tor_info['reg_time']),
'TORRENT_SIZE' => humn_size($tor_size),
'COMPLETED' => sprintf($lang['DOWNLOAD_NUMBER'], $tor_info['complete_count']),
));
if ($comment)
{
$template->assign_block_vars('postrow.attach.tor_reged.comment', array('COMMENT' => $comment));
}
}
if ($bb_cfg['show_tor_info_in_dl_list'])
{
$template->assign_vars(array(
'SHOW_DL_LIST' => true,
'SHOW_DL_LIST_TOR_INFO' => true,
'TOR_SIZE' => humn_size($tor_size),
'TOR_LONGEVITY' => delta_time($tor_info['reg_time']),
'TOR_COMPLETED' => declension($tor_info['complete_count'], 'times'),
));
}
// Show peers
if ($show_peers)
{
// Sorting order in full mode
if ($s_mode == 'full')
{
$full_mode_order = 'tr.remain';
$full_mode_sort_dir = 'ASC';
if (isset($_REQUEST['psortasc']))
{
$full_mode_sort_dir = 'ASC';
}
else if (isset($_REQUEST['psortdesc']))
{
$full_mode_sort_dir = 'DESC';
}
if (isset($_REQUEST['porder']))
{
$peer_orders = array(
'name' => 'u.username',
'ip' => 'tr.ip',
'port' => 'tr.port',
'compl' => 'tr.remain',
'cup' => 'tr.uploaded',
'cdown' => 'tr.downloaded',
'sup' => 'tr.speed_up',
'sdown' => 'tr.speed_down',
'time' => 'tr.update_time',
);
foreach ($peer_orders as $get_key => $order_by_value)
{
if ($_REQUEST['porder'] == $get_key)
{
$full_mode_order = $order_by_value;
break;
}
}
}
}
// SQL for each mode
if ($s_mode == 'count')
{
$sql = "SELECT seeders, leechers, speed_up, speed_down
FROM ". BB_BT_TRACKER_SNAP ."
WHERE topic_id = $tor_id
LIMIT 1";
}
else if ($s_mode == 'names')
{
$sql = "SELECT tr.user_id, tr.ip, tr.port, tr.remain, tr.seeder, u.username, u.user_rank
FROM ". BB_BT_TRACKER ." tr, ". BB_USERS ." u
WHERE tr.topic_id = $tor_id
AND u.user_id = tr.user_id
GROUP BY tr.ip, tr.user_id, tr.port, tr.seeder
ORDER BY u.username
LIMIT $show_peers_limit";
}
else
{
$sql = "SELECT
tr.user_id, tr.ip, tr.port, tr.uploaded, tr.downloaded, tr.remain,
tr.seeder, tr.releaser, tr.speed_up, tr.speed_down, tr.update_time,
tr.complete_percent, u.username, u.user_rank
FROM ". BB_BT_TRACKER ." tr
LEFT JOIN ". BB_USERS ." u ON u.user_id = tr.user_id
WHERE tr.topic_id = $tor_id
GROUP BY tr.ip, tr.user_id, tr.port, tr.seeder
ORDER BY $full_mode_order $full_mode_sort_dir
LIMIT $show_peers_limit";
}
// Build peers table
if ($peers = DB()->fetch_rowset($sql))
{
$peers_cnt = count($peers);
$cnt = $tr = $sp_up = $sp_down = $sp_up_tot = $sp_down_tot = array();
$cnt['s'] = $tr['s'] = $sp_up['s'] = $sp_down['s'] = $sp_up_tot['s'] = $sp_down_tot['s'] = 0;
$cnt['l'] = $tr['l'] = $sp_up['l'] = $sp_down['l'] = $sp_up_tot['l'] = $sp_down_tot['l'] = 0;
$max_up = $max_down = $max_sp_up = $max_sp_down = array();
$max_up['s'] = $max_down['s'] = $max_sp_up['s'] = $max_sp_down['s'] = 0;
$max_up['l'] = $max_down['l'] = $max_sp_up['l'] = $max_sp_down['l'] = 0;
$max_up_id['s'] = $max_down_id['s'] = $max_sp_up_id['s'] = $max_sp_down_id['s'] = ($peers_cnt + 1);
$max_up_id['l'] = $max_down_id['l'] = $max_sp_up_id['l'] = $max_sp_down_id['l'] = ($peers_cnt + 1);
if ($s_mode == 'full')
{
foreach ($peers as $pid => $peer)
{
$x = ($peer['seeder']) ? 's' : 'l';
$cnt[$x]++;
$sp_up_tot[$x] += $peer['speed_up'];
$sp_down_tot[$x] += $peer['speed_down'];
$guest = ($peer['user_id'] == GUEST_UID || is_null($peer['username']));
$p_max_up = $peer['uploaded'];
$p_max_down = $peer['downloaded'];
if ($p_max_up > $max_up[$x])
{
$max_up[$x] = $p_max_up;
$max_up_id[$x] = $pid;
}
if ($peer['speed_up'] > $max_sp_up[$x])
{
$max_sp_up[$x] = $peer['speed_up'];
$max_sp_up_id[$x] = $pid;
}
if ($p_max_down > $max_down[$x])
{
$max_down[$x] = $p_max_down;
$max_down_id[$x] = $pid;
}
if ($peer['speed_down'] > $max_sp_down[$x])
{
$max_sp_down[$x] = $peer['speed_down'];
$max_sp_down_id[$x] = $pid;
}
}
$max_down_id['s'] = $max_sp_down_id['s'] = ($peers_cnt + 1);
if ($cnt['s'] == 1)
{
$max_up_id['s'] = $max_sp_up_id['s'] = ($peers_cnt + 1);
}
if ($cnt['l'] == 1)
{
$max_up_id['l'] = $max_down_id['l'] = $max_sp_up_id['l'] = $max_sp_down_id['l'] = ($peers_cnt + 1);
}
}
if ($s_mode == 'count')
{
$tmp = array();
$tmp[0]['seeder'] = $tmp[0]['username'] = $tmp[1]['username'] = 0;
$tmp[1]['seeder'] = 1;
$tmp[0]['username'] = (int) @$peers[0]['leechers'];
$tmp[1]['username'] = (int) @$peers[0]['seeders'];
$tor_speed_up = (int) @$peers[0]['speed_up'];
$tor_speed_down = (int) @$peers[0]['speed_down'];
$peers = $tmp;
$template->assign_vars(array(
'TOR_SPEED_UP' => ($tor_speed_up) ? humn_size($tor_speed_up, 0, 'KB') .'/s' : '0 KB/s',
'TOR_SPEED_DOWN' => ($tor_speed_down) ? humn_size($tor_speed_down, 0, 'KB') .'/s' : '0 KB/s',
));
}
foreach ($peers as $pid => $peer)
{
$u_prof_href = ($s_mode == 'count') ? '#' : "profile.php?mode=viewprofile&amp;u=". $peer['user_id'] ."#torrent";
// Full details mode
if ($s_mode == 'full')
{
$ip = bt_show_ip($peer['ip']);
$port = bt_show_port($peer['port']);
// peer max/current up/down
$p_max_up = $peer['uploaded'];
$p_max_down = $peer['downloaded'];
$p_cur_up = $peer['uploaded'];
$p_cur_down = $peer['downloaded'];
if ($peer['seeder'])
{
$x = 's';
$x_row = 'srow';
$x_full = 'sfull';
if (!defined('SEEDER_EXIST'))
{
define('SEEDER_EXIST', true);
$seed_order_action = "viewtopic.php?". POST_TOPIC_URL ."=$bt_topic_id&amp;spmode=full#seeders";
$template->assign_block_vars("$x_full", array(
'SEED_ORD_ACT' => $seed_order_action,
'SEEDERS_UP_TOT' => humn_size($sp_up_tot[$x], 0, 'KB') .'/s'
));
if ($ip)
{
$template->assign_block_vars("$x_full.iphead", array());
}
if ($port !== false)
{
$template->assign_block_vars("$x_full.porthead", array());
}
}
$compl_perc = ($tor_size) ? round(($p_max_up / $tor_size), 1) : 0;
}
else
{
$x = 'l';
$x_row = 'lrow';
$x_full = 'lfull';
if (!defined('LEECHER_EXIST'))
{
define('LEECHER_EXIST', true);
$leech_order_action = "viewtopic.php?". POST_TOPIC_URL ."=$bt_topic_id&amp;spmode=full#leechers";
$template->assign_block_vars("$x_full", array(
'LEECH_ORD_ACT' => $leech_order_action,
'LEECHERS_UP_TOT' => humn_size($sp_up_tot[$x], 0, 'KB') .'/s',
'LEECHERS_DOWN_TOT' => humn_size($sp_down_tot[$x], 0, 'KB') .'/s'
));
if ($ip)
{
$template->assign_block_vars("$x_full.iphead", array());
}
if ($port !== false)
{
$template->assign_block_vars("$x_full.porthead", array());
}
}
$compl_size = ($peer['remain'] && $tor_size && $tor_size > $peer['remain']) ? ($tor_size - $peer['remain']) : 0;
$compl_perc = ($compl_size) ? floor($compl_size * 100 / $tor_size) : 0;
}
$rel_sign = (!$guest && $peer['releaser']) ? '&nbsp;<b><sup>&reg;</sup></b>' : '';
$name = profile_url($peer). $rel_sign;
$up_tot = ($p_max_up) ? humn_size($p_max_up) : '-';
$down_tot = ($p_max_down) ? humn_size($p_max_down) : '-';
$up_ratio = ($p_max_down) ? round(($p_max_up / $p_max_down), 2) : '';
$sp_up = ($peer['speed_up']) ? humn_size($peer['speed_up'], 0, 'KB') .'/s' : '-';
$sp_down = ($peer['speed_down']) ? humn_size($peer['speed_down'], 0, 'KB') .'/s' : '-';
$bgr_class = (!($tr[$x] % 2)) ? $bgr_class_1 : $bgr_class_2;
$row_bgr = ($change_peers_bgr_over) ? " class=\"$bgr_class\" onmouseover=\"this.className='$bgr_class_over';\" onmouseout=\"this.className='$bgr_class';\"" : '';
$tr[$x]++;
$template->assign_block_vars("$x_full.$x_row", array(
'ROW_BGR' => $row_bgr,
'NAME' => ($peer['update_time']) ? $name : "<s>$name</s>",
'COMPL_PRC' => $compl_perc,
'UP_TOTAL' => ($max_up_id[$x] == $pid) ? "<b>$up_tot</b>" : $up_tot,
'DOWN_TOTAL' => ($max_down_id[$x] == $pid) ? "<b>$down_tot</b>" : $down_tot,
'SPEED_UP' => ($max_sp_up_id[$x] == $pid) ? "<b>$sp_up</b>" : $sp_up,
'SPEED_DOWN' => ($max_sp_down_id[$x] == $pid) ? "<b>$sp_down</b>" : $sp_down,
'UP_TOTAL_RAW' => $peer['uploaded'],
'DOWN_TOTAL_RAW' => $peer['downloaded'],
'SPEED_UP_RAW' => $peer['speed_up'],
'SPEED_DOWN_RAW' => $peer['speed_down'],
'UPD_EXP_TIME' => ($peer['update_time']) ? $lang['DL_UPD'] . bb_date($peer['update_time'], 'd-M-y H:i') .' &middot; '. delta_time($peer['update_time']) . $lang['TOR_BACK'] : $lang['DL_STOPPED'],
'TOR_RATIO' => ($up_ratio) ? $lang['USER_RATIO'] . "UL/DL: $up_ratio" : '',
));
if ($ip)
{
$template->assign_block_vars("$x_full.$x_row.ip", array('IP' => $ip));
}
if ($port !== false)
{
$template->assign_block_vars("$x_full.$x_row.port", array('PORT' => $port));
}
}
// Count only & only names modes
else
{
if ($peer['seeder'])
{
$seeders .= '<nobr><a href="'. $u_prof_href .'" class="seedmed">'. $peer['username'] .'</a>,</nobr> ';
$seed_count = $peer['username'];
}
else
{
$compl_size = (@$peer['remain'] && $tor_size && $tor_size > $peer['remain']) ? ($tor_size - $peer['remain']) : 0;
$compl_perc = ($compl_size) ? floor($compl_size * 100 / $tor_size) : 0;
$leechers .= '<nobr><a href="'. $u_prof_href .'" class="leechmed">'. $peer['username'] .'</a>';
$leechers .= ($s_mode == 'names') ? ' ['. $compl_perc .'%]' : '';
$leechers .= ',</nobr> ';
$leech_count = $peer['username'];
}
}
}
if ($s_mode != 'full' && $seeders)
{
$seeders[strlen($seeders)-9] = ' ';
$template->assign_vars(array(
'SEED_LIST' => $seeders,
'SEED_COUNT' => ($seed_count) ? $seed_count : 0,
));
}
if ($s_mode != 'full' && $leechers)
{
$leechers[strlen($leechers)-9] = ' ';
$template->assign_vars(array(
'LEECH_LIST' => $leechers,
'LEECH_COUNT' => ($leech_count) ? $leech_count : 0,
));
}
}
unset($peers);
// Show "seeder last seen info"
if (($s_mode == 'count' && !$seed_count) || (!$seeders && !defined('SEEDER_EXIST')))
{
$last_seen_time = ($tor_info['seeder_last_seen']) ? delta_time($tor_info['seeder_last_seen']) : $lang['NEVER'];
$template->assign_vars(array(
'SEEDER_LAST_SEEN' => sprintf($lang['SEEDER_LAST_SEEN'], $last_seen_time),
));
}
}
$template->assign_block_vars('tor_title', array('U_DOWNLOAD_LINK' => $download_link));
if ($peers_cnt > $max_peers_before_overflow && $s_mode == 'full')
{
$template->assign_vars(array('PEERS_DIV_STYLE' => $peers_div_style_overflow));
$template->assign_vars(array('PEERS_OVERFLOW' => true));
}
else
{
$template->assign_vars(array('PEERS_DIV_STYLE' => $peers_div_style_normal));
}
}
if ($bb_cfg['bt_allow_spmode_change'] && $s_mode != 'full')
{
$template->assign_vars(array(
'PEERS_FULL_LINK' => true,
'SPMODE_FULL_HREF' => "viewtopic.php?". POST_TOPIC_URL ."=$bt_topic_id&amp;spmode=full#seeders",
));
}
$template->assign_vars(array(
'SHOW_DL_LIST_LINK' => (($bb_cfg['bt_show_dl_list'] || $bb_cfg['allow_dl_list_names_mode']) && $t_data['topic_dl_type'] == TOPIC_DL_TYPE_DL),
'SHOW_TOR_ACT' => ($tor_reged && $show_peers && (!isset($bb_cfg['tor_no_tor_act'][$tor_info['tor_status']]) || IS_AM)),
'S_MODE_COUNT' => ($s_mode == 'count'),
'S_MODE_NAMES' => ($s_mode == 'names'),
'S_MODE_FULL' => ($s_mode == 'full'),
'PEER_EXIST' => ($seeders || $leechers || defined('SEEDER_EXIST') || defined('LEECHER_EXIST')),
'SEED_EXIST' => ($seeders || defined('SEEDER_EXIST')),
'LEECH_EXIST' => ($leechers || defined('LEECHER_EXIST')),
'TOR_HELP_LINKS' => $bb_cfg['tor_help_links'],
'CALL_SEED' => ($bb_cfg['callseed'] && $tor_reged && !isset($bb_cfg['tor_no_tor_act'][$tor_info['tor_status']]) && $seed_count < 3 && $tor_info['call_seed_time'] < (TIMENOW - 86400)),
));

View file

@ -1,2 +0,0 @@
order allow,deny
deny from all

View file

@ -1,346 +0,0 @@
<?php
function process_quota_settings($mode, $id, $quota_type, $quota_limit_id = 0)
{
$id = (int) $id;
$quota_type = (int) $quota_type;
$quota_limit_id = (int) $quota_limit_id;
if ($mode == 'user')
{
if (!$quota_limit_id)
{
$sql = 'DELETE FROM ' . BB_QUOTA . "
WHERE user_id = $id
AND quota_type = $quota_type";
}
else
{
// Check if user is already entered
$sql = 'SELECT user_id
FROM ' . BB_QUOTA . "
WHERE user_id = $id
AND quota_type = $quota_type";
if( !($result = DB()->sql_query($sql)) )
{
bb_die('Could not get entry #1');
}
if (DB()->num_rows($result) == 0)
{
$sql_ary = array(
'user_id' => (int) $id,
'group_id' => 0,
'quota_type' => (int) $quota_type,
'quota_limit_id'=> (int) $quota_limit_id
);
$sql = 'INSERT INTO ' . BB_QUOTA . ' ' . attach_mod_sql_build_array('INSERT', $sql_ary);
}
else
{
$sql = 'UPDATE ' . BB_QUOTA . "
SET quota_limit_id = $quota_limit_id
WHERE user_id = $id
AND quota_type = $quota_type";
}
DB()->sql_freeresult($result);
}
if (!($result = DB()->sql_query($sql)))
{
bb_die('Unable to update quota settings');
}
}
else if ($mode == 'group')
{
if (!$quota_limit_id)
{
$sql = 'DELETE FROM ' . BB_QUOTA . "
WHERE group_id = $id
AND quota_type = $quota_type";
if (!($result = DB()->sql_query($sql)))
{
bb_die('Unable to delete quota settings');
}
}
else
{
// Check if user is already entered
$sql = 'SELECT group_id
FROM ' . BB_QUOTA . "
WHERE group_id = $id
AND quota_type = $quota_type";
if (!($result = DB()->sql_query($sql)))
{
bb_die('Could not get entry #2');
}
if (DB()->num_rows($result) == 0)
{
$sql = 'INSERT INTO ' . BB_QUOTA . " (user_id, group_id, quota_type, quota_limit_id)
VALUES (0, $id, $quota_type, $quota_limit_id)";
}
else
{
$sql = 'UPDATE ' . BB_QUOTA . " SET quota_limit_id = $quota_limit_id
WHERE group_id = $id AND quota_type = $quota_type";
}
if (!DB()->sql_query($sql))
{
bb_die('Unable to update quota settings');
}
}
}
}
/**
* sort multi-dimensional Array
*/
function sort_multi_array ($sort_array, $key, $sort_order, $pre_string_sort = 0)
{
$last_element = sizeof($sort_array) - 1;
if (!$pre_string_sort)
{
$string_sort = (!is_numeric(@$sort_array[$last_element-1][$key]) ) ? true : false;
}
else
{
$string_sort = $pre_string_sort;
}
for ($i = 0; $i < $last_element; $i++)
{
$num_iterations = $last_element - $i;
for ($j = 0; $j < $num_iterations; $j++)
{
$next = 0;
// do checks based on key
$switch = false;
if (!$string_sort)
{
if (($sort_order == 'DESC' && intval(@$sort_array[$j][$key]) < intval(@$sort_array[$j + 1][$key])) || ($sort_order == 'ASC' && intval(@$sort_array[$j][$key]) > intval(@$sort_array[$j + 1][$key])))
{
$switch = true;
}
}
else
{
if (($sort_order == 'DESC' && strcasecmp(@$sort_array[$j][$key], @$sort_array[$j + 1][$key]) < 0) || ($sort_order == 'ASC' && strcasecmp(@$sort_array[$j][$key], @$sort_array[$j + 1][$key]) > 0))
{
$switch = true;
}
}
if ($switch)
{
$temp = $sort_array[$j];
$sort_array[$j] = $sort_array[$j + 1];
$sort_array[$j + 1] = $temp;
}
}
}
return $sort_array;
}
/**
* Returns the filesize of the upload directory in human readable format
*/
function get_formatted_dirsize()
{
global $attach_config, $upload_dir, $lang;
$upload_dir_size = 0;
if ($dirname = @opendir($upload_dir))
{
while ($file = @readdir($dirname))
{
if ($file != 'index.php' && $file != '.htaccess' && !is_dir($upload_dir . '/' . $file) && !is_link($upload_dir . '/' . $file))
{
$upload_dir_size += @filesize($upload_dir . '/' . $file);
}
}
@closedir($dirname);
}
else
{
$upload_dir_size = $lang['NOT_AVAILABLE'];
return $upload_dir_size;
}
return humn_size($upload_dir_size);
}
/*
* Build SQL-Statement for the search feature
*/
function search_attachments($order_by, &$total_rows)
{
global $lang;
$where_sql = array();
// Get submitted Vars
$search_vars = array('search_keyword_fname', 'search_keyword_comment', 'search_author', 'search_size_smaller', 'search_size_greater', 'search_count_smaller', 'search_count_greater', 'search_days_greater', 'search_forum', 'search_cat');
for ($i = 0; $i < sizeof($search_vars); $i++)
{
$$search_vars[$i] = get_var($search_vars[$i], '');
}
// Author name search
if ($search_author != '')
{
// Bring in line with 2.0.x expected username
$search_author = addslashes(html_entity_decode($search_author));
$search_author = stripslashes(clean_username($search_author));
// Prepare for directly going into sql query
$search_author = str_replace('*', '%', attach_mod_sql_escape($search_author));
// We need the post_id's, because we want to query the Attachment Table
$sql = 'SELECT user_id FROM ' . BB_USERS . " WHERE username LIKE '$search_author'";
if (!($result = DB()->sql_query($sql)))
{
bb_die('Could not obtain list of matching users (searching for: ' . $search_author . ')');
}
$matching_userids = '';
if ( $row = DB()->sql_fetchrow($result) )
{
do
{
$matching_userids .= (($matching_userids != '') ? ', ' : '') . intval($row['user_id']);
}
while ($row = DB()->sql_fetchrow($result));
DB()->sql_freeresult($result);
}
else
{
bb_die($lang['NO_ATTACH_SEARCH_MATCH']);
}
$where_sql[] = ' (t.user_id_1 IN (' . $matching_userids . ')) ';
}
// Search Keyword
if ($search_keyword_fname != '')
{
$match_word = str_replace('*', '%', $search_keyword_fname);
$where_sql[] = " (a.real_filename LIKE '" . attach_mod_sql_escape($match_word) . "') ";
}
if ($search_keyword_comment != '')
{
$match_word = str_replace('*', '%', $search_keyword_comment);
$where_sql[] = " (a.comment LIKE '" . attach_mod_sql_escape($match_word) . "') ";
}
// Search Download Count
if ($search_count_smaller != '' || $search_count_greater != '')
{
if ($search_count_smaller != '')
{
$where_sql[] = ' (a.download_count < ' . (int) $search_count_smaller . ') ';
}
else if ($search_count_greater != '')
{
$where_sql[] = ' (a.download_count > ' . (int) $search_count_greater . ') ';
}
}
// Search Filesize
if ($search_size_smaller != '' || $search_size_greater != '')
{
if ($search_size_smaller != '')
{
$where_sql[] = ' (a.filesize < ' . (int) $search_size_smaller . ') ';
}
else if ($search_size_greater != '')
{
$where_sql[] = ' (a.filesize > ' . (int) $search_size_greater . ') ';
}
}
// Search Attachment Time
if ($search_days_greater != '')
{
$where_sql[] = ' (a.filetime < ' . ( TIMENOW - ((int) $search_days_greater * 86400)) . ') ';
}
// Search Forum
if ($search_forum)
{
$where_sql[] = ' (p.forum_id = ' . intval($search_forum) . ') ';
}
// Search Cat... nope... sorry :(
$sql = 'SELECT a.*, t.post_id, p.post_time, p.topic_id
FROM ' . BB_ATTACHMENTS . ' t, ' . BB_ATTACHMENTS_DESC . ' a, ' . BB_POSTS . ' p WHERE ';
if (sizeof($where_sql) > 0)
{
$sql .= implode('AND', $where_sql) . ' AND ';
}
$sql .= 't.post_id = p.post_id AND a.attach_id = t.attach_id ';
$total_rows_sql = $sql;
$sql .= $order_by;
if (!($result = DB()->sql_query($sql)))
{
bb_die('Could not query attachments #1');
}
$attachments = DB()->sql_fetchrowset($result);
$num_attach = DB()->num_rows($result);
DB()->sql_freeresult($result);
if ($num_attach == 0)
{
bb_die($lang['NO_ATTACH_SEARCH_MATCH']);
}
if (!($result = DB()->sql_query($total_rows_sql)))
{
bb_die('Could not query attachments #2');
}
$total_rows = DB()->num_rows($result);
DB()->sql_freeresult($result);
return $attachments;
}
/**
* perform LIMIT statement on arrays
*/
function limit_array($array, $start, $pagelimit)
{
// array from start - start+pagelimit
$limit = (sizeof($array) < ($start + $pagelimit)) ? sizeof($array) : $start + $pagelimit;
$limit_array = array();
for ($i = $start; $i < $limit; $i++)
{
$limit_array[] = $array[$i];
}
return $limit_array;
}

View file

@ -1,623 +0,0 @@
<?php
function base64_pack($number)
{
$chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-';
$base = strlen($chars);
if ($number > 4096)
{
return false;
}
else if ($number < $base)
{
return $chars[$number];
}
$hexval = '';
while ($number > 0)
{
$remainder = $number%$base;
if ($remainder < $base)
{
$hexval = $chars[$remainder] . $hexval;
}
$number = floor($number/$base);
}
return $hexval;
}
function base64_unpack($string)
{
$chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-';
$base = strlen($chars);
$length = strlen($string);
$number = 0;
for($i = 1; $i <= $length; $i++)
{
$pos = $length - $i;
$operand = strpos($chars, substr($string,$pos,1));
$exponent = pow($base, $i-1);
$decValue = $operand * $exponent;
$number += $decValue;
}
return $number;
}
function auth_pack($auth_array)
{
$one_char_encoding = '#';
$two_char_encoding = '.';
$one_char = $two_char = false;
$auth_cache = '';
for ($i = 0; $i < sizeof($auth_array); $i++)
{
$val = base64_pack(intval($auth_array[$i]));
if (strlen($val) == 1 && !$one_char)
{
$auth_cache .= $one_char_encoding;
$one_char = true;
}
else if (strlen($val) == 2 && !$two_char)
{
$auth_cache .= $two_char_encoding;
$two_char = true;
}
$auth_cache .= $val;
}
return $auth_cache;
}
function auth_unpack($auth_cache)
{
$one_char_encoding = '#';
$two_char_encoding = '.';
$auth = array();
$auth_len = 1;
for ($pos = 0; $pos < strlen($auth_cache); $pos += $auth_len)
{
$forum_auth = substr($auth_cache, $pos, 1);
if ($forum_auth == $one_char_encoding)
{
$auth_len = 1;
continue;
}
else if ($forum_auth == $two_char_encoding)
{
$auth_len = 2;
$pos--;
continue;
}
$forum_auth = substr($auth_cache, $pos, $auth_len);
$forum_id = base64_unpack($forum_auth);
$auth[] = intval($forum_id);
}
return $auth;
}
function is_forum_authed($auth_cache, $check_forum_id)
{
$one_char_encoding = '#';
$two_char_encoding = '.';
if (trim($auth_cache) == '')
{
return true;
}
$auth = array();
$auth_len = 1;
for ($pos = 0; $pos < strlen($auth_cache); $pos+=$auth_len)
{
$forum_auth = substr($auth_cache, $pos, 1);
if ($forum_auth == $one_char_encoding)
{
$auth_len = 1;
continue;
}
else if ($forum_auth == $two_char_encoding)
{
$auth_len = 2;
$pos--;
continue;
}
$forum_auth = substr($auth_cache, $pos, $auth_len);
$forum_id = (int) base64_unpack($forum_auth);
if ($forum_id == $check_forum_id)
{
return true;
}
}
return false;
}
function unlink_attach($filename, $mode = false)
{
global $upload_dir, $attach_config;
$filename = basename($filename);
if ($mode == MODE_THUMBNAIL)
{
$filename = $upload_dir . '/' . THUMB_DIR . '/t_' . $filename;
}
else
{
$filename = $upload_dir . '/' . $filename;
}
$deleted = @unlink($filename);
return $deleted;
}
function attachment_exists($filename)
{
global $upload_dir, $attach_config;
$filename = basename($filename);
if (!@file_exists(@amod_realpath($upload_dir . '/' . $filename)))
{
return false;
}
else
{
return true;
}
}
function physical_filename_already_stored($filename)
{
if ($filename == '')
{
return false;
}
$filename = basename($filename);
$sql = 'SELECT attach_id
FROM ' . BB_ATTACHMENTS_DESC . "
WHERE physical_filename = '" . attach_mod_sql_escape($filename) . "'
LIMIT 1";
if (!($result = DB()->sql_query($sql)))
{
bb_die('Could not get attachment information for filename: ' . htmlspecialchars($filename));
}
$num_rows = DB()->num_rows($result);
DB()->sql_freeresult($result);
return ($num_rows == 0) ? false : true;
}
function get_attachments_from_post($post_id_array)
{
global $attach_config;
$attachments = array();
if (!is_array($post_id_array))
{
if (empty($post_id_array))
{
return $attachments;
}
$post_id = intval($post_id_array);
$post_id_array = array();
$post_id_array[] = $post_id;
}
$post_id_array = implode(', ', array_map('intval', $post_id_array));
if ($post_id_array == '')
{
return $attachments;
}
$display_order = (intval($attach_config['display_order']) == 0) ? 'DESC' : 'ASC';
$sql = 'SELECT a.post_id, d.*
FROM ' . BB_ATTACHMENTS . ' a, ' . BB_ATTACHMENTS_DESC . " d
WHERE a.post_id IN ($post_id_array)
AND a.attach_id = d.attach_id
ORDER BY d.filetime $display_order";
if (!($result = DB()->sql_query($sql)))
{
bb_die('Could not get attachment informations for post number ' . $post_id_array);
}
$num_rows = DB()->num_rows($result);
$attachments = DB()->sql_fetchrowset($result);
DB()->sql_freeresult($result);
if ($num_rows == 0)
{
return array();
}
return $attachments;
}
function get_total_attach_filesize($attach_ids)
{
if (!is_array($attach_ids) || !sizeof($attach_ids))
{
return 0;
}
$attach_ids = implode(', ', array_map('intval', $attach_ids));
if (!$attach_ids)
{
return 0;
}
$sql = 'SELECT filesize FROM ' . BB_ATTACHMENTS_DESC . " WHERE attach_id IN ($attach_ids)";
if (!($result = DB()->sql_query($sql)))
{
bb_die('Could not query total filesize');
}
$total_filesize = 0;
while ($row = DB()->sql_fetchrow($result))
{
$total_filesize += (int) $row['filesize'];
}
DB()->sql_freeresult($result);
return $total_filesize;
}
/**
* Get allowed Extensions and their respective Values
*/
function get_extension_informations()
{
return;
}
//
// Sync Topic
//
function attachment_sync_topic ($topics)
{
if (is_array($topics))
{
$topics = join(',', $topics);
}
$posts_without_attach = $topics_without_attach = array();
// Check orphan post_attachment markers
$sql = "SELECT p.post_id
FROM ". BB_POSTS ." p
LEFT JOIN ". BB_ATTACHMENTS ." a USING(post_id)
WHERE p.topic_id IN($topics)
AND p.post_attachment = 1
AND a.post_id IS NULL";
if ($rowset = DB()->fetch_rowset($sql))
{
foreach ($rowset as $row)
{
$posts_without_attach[] = $row['post_id'];
}
if ($posts_sql = join(',', $posts_without_attach))
{
DB()->query("UPDATE ". BB_POSTS ." SET post_attachment = 0 WHERE post_id IN($posts_sql)");
}
}
// Update missing topic_attachment markers
DB()->query("
UPDATE ". BB_TOPICS ." t, ". BB_POSTS ." p SET
t.topic_attachment = 1
WHERE p.topic_id IN($topics)
AND p.post_attachment = 1
AND p.topic_id = t.topic_id
");
// Fix orphan topic_attachment markers
$sql = "SELECT t.topic_id
FROM ". BB_POSTS ." p, ". BB_TOPICS ." t
WHERE t.topic_id = p.topic_id
AND t.topic_id IN($topics)
AND t.topic_attachment = 1
GROUP BY p.topic_id
HAVING SUM(p.post_attachment) = 0";
if ($rowset = DB()->fetch_rowset($sql))
{
foreach ($rowset as $row)
{
$topics_without_attach[] = $row['topic_id'];
}
if ($topics_sql = join(',', $topics_without_attach))
{
DB()->query("UPDATE ". BB_TOPICS ." SET topic_attachment = 0 WHERE topic_id IN($topics_sql)");
}
}
}
/**
* Get Extension
*/
function get_extension($filename)
{
if (!stristr($filename, '.'))
{
return '';
}
$extension = strrchr(strtolower($filename), '.');
$extension[0] = ' ';
$extension = strtolower(trim($extension));
if (is_array($extension))
{
return '';
}
else
{
return $extension;
}
}
/**
* Delete Extension
*/
function delete_extension($filename)
{
return substr($filename, 0, strrpos(strtolower(trim($filename)), '.'));
}
/**
* Check if a user is within Group
*/
function user_in_group($user_id, $group_id)
{
$user_id = (int) $user_id;
$group_id = (int) $group_id;
if (!$user_id || !$group_id)
{
return false;
}
$sql = 'SELECT u.group_id
FROM ' . BB_USER_GROUP . ' u, ' . BB_GROUPS . " g
WHERE g.group_single_user = 0
AND u.group_id = g.group_id
AND u.user_id = $user_id
AND g.group_id = $group_id
LIMIT 1";
if (!($result = DB()->sql_query($sql)))
{
bb_die('Could not get user group');
}
$num_rows = DB()->num_rows($result);
DB()->sql_freeresult($result);
if ($num_rows == 0)
{
return false;
}
return true;
}
/**
* Realpath replacement for attachment mod
*/
function amod_realpath($path)
{
return (function_exists('realpath')) ? realpath($path) : $path;
}
/**
* _set_var
*
* Set variable, used by {@link get_var the get_var function}
*
* @private
*/
function _set_var(&$result, $var, $type, $multibyte = false)
{
settype($var, $type);
$result = $var;
if ($type == 'string')
{
$result = trim(str_replace(array("\r\n", "\r", '\xFF'), array("\n", "\n", ' '), $result));
// 2.0.x is doing addslashes on all variables
$result = stripslashes($result);
if ($multibyte)
{
$result = preg_replace('#&amp;(\#[0-9]+;)#', '&\1', $result);
}
}
}
/**
* get_var
*
* Used to get passed variable
*/
function get_var($var_name, $default, $multibyte = false)
{
$request_var = (isset($_POST[$var_name])) ? $_POST : $_GET;
if (!isset($request_var[$var_name]) || (is_array($request_var[$var_name]) && !is_array($default)) || (is_array($default) && !is_array($request_var[$var_name])))
{
return (is_array($default)) ? array() : $default;
}
$var = $request_var[$var_name];
if (!is_array($default))
{
$type = gettype($default);
}
else
{
list($key_type, $type) = each($default);
$type = gettype($type);
$key_type = gettype($key_type);
}
if (is_array($var))
{
$_var = $var;
$var = array();
foreach ($_var as $k => $v)
{
if (is_array($v))
{
foreach ($v as $_k => $_v)
{
_set_var($k, $k, $key_type);
_set_var($_k, $_k, $key_type);
_set_var($var[$k][$_k], $_v, $type, $multibyte);
}
}
else
{
_set_var($k, $k, $key_type);
_set_var($var[$k], $v, $type, $multibyte);
}
}
}
else
{
_set_var($var, $var, $type, $multibyte);
}
return $var;
}
/**
* Escaping SQL
*/
function attach_mod_sql_escape($text)
{
if (function_exists('mysql_real_escape_string'))
{
return DB()->escape_string($text);
}
else
{
return str_replace("'", "''", str_replace('\\', '\\\\', $text));
}
}
/**
* Build sql statement from array for insert/update/select statements
*
* Idea for this from Ikonboard
* Possible query values: INSERT, INSERT_SELECT, MULTI_INSERT, UPDATE, SELECT
*/
function attach_mod_sql_build_array($query, $assoc_ary = false)
{
if (!is_array($assoc_ary))
{
return false;
}
$fields = array();
$values = array();
if ($query == 'INSERT' || $query == 'INSERT_SELECT')
{
foreach ($assoc_ary as $key => $var)
{
$fields[] = $key;
if (is_null($var))
{
$values[] = 'NULL';
}
else if (is_string($var))
{
$values[] = "'" . attach_mod_sql_escape($var) . "'";
}
else if (is_array($var) && is_string($var[0]))
{
$values[] = $var[0];
}
else
{
$values[] = (is_bool($var)) ? intval($var) : $var;
}
}
$query = ($query == 'INSERT') ? ' (' . implode(', ', $fields) . ') VALUES (' . implode(', ', $values) . ')' : ' (' . implode(', ', $fields) . ') SELECT ' . implode(', ', $values) . ' ';
}
else if ($query == 'MULTI_INSERT')
{
$ary = array();
foreach ($assoc_ary as $id => $sql_ary)
{
$values = array();
foreach ($sql_ary as $key => $var)
{
if (is_null($var))
{
$values[] = 'NULL';
}
elseif (is_string($var))
{
$values[] = "'" . attach_mod_sql_escape($var) . "'";
}
else
{
$values[] = (is_bool($var)) ? intval($var) : $var;
}
}
$ary[] = '(' . implode(', ', $values) . ')';
}
$query = ' (' . implode(', ', array_keys($assoc_ary[0])) . ') VALUES ' . implode(', ', $ary);
}
else if ($query == 'UPDATE' || $query == 'SELECT')
{
$values = array();
foreach ($assoc_ary as $key => $var)
{
if (is_null($var))
{
$values[] = "$key = NULL";
}
elseif (is_string($var))
{
$values[] = "$key = '" . attach_mod_sql_escape($var) . "'";
}
else
{
$values[] = (is_bool($var)) ? "$key = " . intval($var) : "$key = $var";
}
}
$query = implode(($query == 'UPDATE') ? ', ' : ' AND ', $values);
}
return $query;
}

View file

@ -1,284 +0,0 @@
<?php
/**
* All Attachment Functions processing the Deletion Process
*/
/**
* Delete Attachment(s) from post(s) (intern)
*/
function delete_attachment($post_id_array = 0, $attach_id_array = 0, $page = 0, $user_id = 0)
{
global $bb_cfg;
// Generate Array, if it's not an array
if ($post_id_array === 0 && $attach_id_array === 0 && $page === 0)
{
return;
}
if ($post_id_array === 0 && $attach_id_array !== 0)
{
$post_id_array = array();
if (!is_array($attach_id_array))
{
if (strstr($attach_id_array, ', '))
{
$attach_id_array = explode(', ', $attach_id_array);
}
else if (strstr($attach_id_array, ','))
{
$attach_id_array = explode(',', $attach_id_array);
}
else
{
$attach_id = intval($attach_id_array);
$attach_id_array = array();
$attach_id_array[] = $attach_id;
}
}
// Get the post_ids to fill the array
$p_id = 'post_id';
$sql = "SELECT $p_id
FROM " . BB_ATTACHMENTS . '
WHERE attach_id IN (' . implode(', ', $attach_id_array) . ")
GROUP BY $p_id";
if (!($result = DB()->sql_query($sql)))
{
bb_die('Could not select ids');
}
$num_post_list = DB()->num_rows($result);
if ($num_post_list == 0)
{
DB()->sql_freeresult($result);
return;
}
while ($row = DB()->sql_fetchrow($result))
{
$post_id_array[] = intval($row[$p_id]);
}
DB()->sql_freeresult($result);
}
if (!is_array($post_id_array))
{
if (trim($post_id_array) == '')
{
return;
}
if (strstr($post_id_array, ', '))
{
$post_id_array = explode(', ', $post_id_array);
}
else if (strstr($post_id_array, ','))
{
$post_id_array = explode(',', $post_id_array);
}
else
{
$post_id = intval($post_id_array);
$post_id_array = array();
$post_id_array[] = $post_id;
}
}
if (!sizeof($post_id_array))
{
return;
}
// First of all, determine the post id and attach_id
if ($attach_id_array === 0)
{
$attach_id_array = array();
// Get the attach_ids to fill the array
$whereclause = 'WHERE post_id IN (' . implode(', ', $post_id_array) . ')';
$sql = 'SELECT attach_id
FROM ' . BB_ATTACHMENTS . " $whereclause
GROUP BY attach_id";
if (!($result = DB()->sql_query($sql)))
{
bb_die('Could not select attachment id #1');
}
$num_attach_list = DB()->num_rows($result);
if ($num_attach_list == 0)
{
DB()->sql_freeresult($result);
return;
}
while ($row = DB()->sql_fetchrow($result))
{
$attach_id_array[] = (int) $row['attach_id'];
}
DB()->sql_freeresult($result);
}
if (!is_array($attach_id_array))
{
if (strstr($attach_id_array, ', '))
{
$attach_id_array = explode(', ', $attach_id_array);
}
else if (strstr($attach_id_array, ','))
{
$attach_id_array = explode(',', $attach_id_array);
}
else
{
$attach_id = intval($attach_id_array);
$attach_id_array = array();
$attach_id_array[] = $attach_id;
}
}
if (!sizeof($attach_id_array))
{
return;
}
$sql_id = 'post_id';
if (sizeof($post_id_array) && sizeof($attach_id_array))
{
$sql = 'DELETE FROM ' . BB_ATTACHMENTS . '
WHERE attach_id IN (' . implode(', ', $attach_id_array) . ")
AND $sql_id IN (" . implode(', ', $post_id_array) . ')';
if (!(DB()->sql_query($sql)))
{
bb_die($lang['ERROR_DELETED_ATTACHMENTS']);
}
//bt
if ($sql_id == 'post_id')
{
$sql = "SELECT topic_id FROM ". BB_BT_TORRENTS ." WHERE attach_id IN(". implode(',', $attach_id_array) .")";
if (!$result = DB()->sql_query($sql))
{
bb_die($lang['ERROR_DELETED_ATTACHMENTS']);
}
$torrents_sql = array();
while ($row = DB()->sql_fetchrow($result))
{
$torrents_sql[] = $row['topic_id'];
}
if ($torrents_sql = implode(',', $torrents_sql))
{
// Remove peers from tracker
$sql = "DELETE FROM ". BB_BT_TRACKER ."
WHERE topic_id IN($torrents_sql)";
if (!DB()->sql_query($sql))
{
bb_die('Could not delete peers');
}
}
// Delete torrents
$sql = "DELETE FROM ". BB_BT_TORRENTS ."
WHERE attach_id IN(". implode(',', $attach_id_array) .")";
if (!DB()->sql_query($sql))
{
bb_die($lang['ERROR_DELETED_ATTACHMENTS']);
}
}
//bt end
for ($i = 0; $i < sizeof($attach_id_array); $i++)
{
$sql = 'SELECT attach_id
FROM ' . BB_ATTACHMENTS . '
WHERE attach_id = ' . (int) $attach_id_array[$i];
if (!($result = DB()->sql_query($sql)))
{
bb_die('Could not select Attachment id #2');
}
$num_rows = DB()->num_rows($result);
DB()->sql_freeresult($result);
if ($num_rows == 0)
{
$sql = 'SELECT attach_id, physical_filename, thumbnail
FROM ' . BB_ATTACHMENTS_DESC . '
WHERE attach_id = ' . (int) $attach_id_array[$i];
if (!($result = DB()->sql_query($sql)))
{
bb_die('Could not query attach description table');
}
$num_rows = DB()->num_rows($result);
if ($num_rows != 0)
{
$num_attach = $num_rows;
$attachments = DB()->sql_fetchrowset($result);
DB()->sql_freeresult($result);
// delete attachments
for ($j = 0; $j < $num_attach; $j++)
{
unlink_attach($attachments[$j]['physical_filename']);
if (intval($attachments[$j]['thumbnail']) == 1)
{
unlink_attach($attachments[$j]['physical_filename'], MODE_THUMBNAIL);
}
$sql = 'DELETE FROM ' . BB_ATTACHMENTS_DESC . ' WHERE attach_id = ' . (int) $attachments[$j]['attach_id'];
if (!(DB()->sql_query($sql)))
{
bb_die($lang['ERROR_DELETED_ATTACHMENTS']);
}
}
}
else
{
DB()->sql_freeresult($result);
}
}
}
}
// Now Sync the Topic/PM
if (sizeof($post_id_array))
{
$sql = 'SELECT topic_id
FROM ' . BB_POSTS . '
WHERE post_id IN (' . implode(', ', $post_id_array) . ')
GROUP BY topic_id';
if (!($result = DB()->sql_query($sql)))
{
bb_die('Could not select topic id');
}
while ($row = DB()->sql_fetchrow($result))
{
attachment_sync_topic($row['topic_id']);
}
DB()->sql_freeresult($result);
}
}

File diff suppressed because it is too large Load diff

View file

@ -303,33 +303,6 @@ function topic_delete ($mode_or_topic_id, $forum_id = null, $prune_time = 0, $pr
LEFT JOIN ". BB_POLL_USERS ." pu USING(topic_id)
");
// Delete attachments (from disk)
$attach_dir = get_attachments_dir();
$result = DB()->query("
SELECT
d.physical_filename
FROM
". $tmp_delete_topics ." del,
". BB_POSTS ." p,
". BB_ATTACHMENTS ." a,
". BB_ATTACHMENTS_DESC ." d
WHERE
p.topic_id = del.topic_id
AND a.post_id = p.post_id
AND d.attach_id = a.attach_id
");
while ($row = DB()->fetch_next($result))
{
if ($filename = basename($row['physical_filename']))
{
@unlink("$attach_dir/". $filename);
@unlink("$attach_dir/". THUMB_DIR .'/t_'. $filename);
}
}
unset($row, $result);
// Delete posts, posts_text, attachments (from DB)
DB()->query("
DELETE p, pt, ps, a, d, ph
@ -614,31 +587,6 @@ function post_delete ($mode_or_post_id, $user_id = null, $exclude_first = true)
return 0;
}
// Delete attachments (from disk)
$attach_dir = get_attachments_dir();
$result = DB()->query("
SELECT
d.physical_filename
FROM
". $tmp_delete_posts ." del,
". BB_ATTACHMENTS ." a,
". BB_ATTACHMENTS_DESC ." d
WHERE
a.post_id = del.post_id
AND d.attach_id = a.attach_id
");
while ($row = DB()->fetch_next($result))
{
if ($filename = basename($row['physical_filename']))
{
@unlink("$attach_dir/". $filename);
@unlink("$attach_dir/". THUMB_DIR .'/t_'. $filename);
}
}
unset($row, $result);
// Delete posts, posts_text, attachments (from DB)
DB()->query("
DELETE p, pt, ps, tor, a, d, ph

View file

@ -1,37 +1,96 @@
<?php
$allowed_extensions = array();
$display_categories = array();
$download_modes = array();
$upload_icons = array();
$attachments = array();
function get_attachments_from_post($post_id_array)
{
global $attach_config;
$attachments = array();
if (!is_array($post_id_array))
{
if (empty($post_id_array))
{
return $attachments;
}
$post_id = intval($post_id_array);
$post_id_array = array();
$post_id_array[] = $post_id;
}
$post_id_array = implode(', ', array_map('intval', $post_id_array));
if ($post_id_array == '')
{
return $attachments;
}
$display_order = (intval($attach_config['display_order']) == 0) ? 'DESC' : 'ASC';
$sql = 'SELECT a.post_id, d.*
FROM ' . BB_ATTACHMENTS . ' a, ' . BB_ATTACHMENTS_DESC . " d
WHERE a.post_id IN ($post_id_array)
AND a.attach_id = d.attach_id
ORDER BY d.filetime $display_order";
if (!($result = DB()->sql_query($sql)))
{
bb_die('Could not get attachment informations for post number ' . $post_id_array);
}
$num_rows = DB()->num_rows($result);
$attachments = DB()->sql_fetchrowset($result);
DB()->sql_freeresult($result);
if ($num_rows == 0)
{
return array();
}
return $attachments;
}
/**
* Create needed arrays for Extension Assignments
* Get attachment mod configuration
*/
function init_complete_extensions_data()
function get_config()
{
global $allowed_extensions, $display_categories, $download_modes, $upload_icons;
global $bb_cfg;
if (!$extension_informations = get_extension_informations())
{
$extension_informations = get_extension_informations();
}
$allowed_extensions = array();
$attach_config = array();
for ($i = 0, $size = sizeof($extension_informations); $i < $size; $i++)
$sql = 'SELECT * FROM ' . BB_ATTACH_CONFIG;
if (!($result = DB()->sql_query($sql)))
{
$extension = strtolower(trim($extension_informations[$i]['extension']));
$allowed_extensions[] = $extension;
$display_categories[$extension] = intval($extension_informations[$i]['cat_id']);
$download_modes[$extension] = intval($extension_informations[$i]['download_mode']);
$upload_icons[$extension] = trim($extension_informations[$i]['upload_icon']);
bb_die('Could not query attachment information');
}
while ($row = DB()->sql_fetchrow($result))
{
$attach_config[$row['config_name']] = trim($row['config_value']);
}
// We assign the original default board language here, because it gets overwritten later with the users default language
$attach_config['board_lang'] = trim($bb_cfg['default_lang']);
return $attach_config;
}
// Get Attachment Config
$attach_config = array();
if (!$attach_config = CACHE('bb_cache')->get('attach_config'))
{
$attach_config = get_config();
CACHE('bb_cache')->set('attach_config', $attach_config, 86400);
}
/**
* Writing Data into plain Template Vars
*/
* Writing Data into plain Template Vars
*/
function init_display_template($template_var, $replacement, $filename = 'viewtopic_attach.tpl')
{
global $template;
@ -81,8 +140,8 @@ function init_display_template($template_var, $replacement, $filename = 'viewtop
}
/**
* Display Attachments in Posts
*/
* Display Attachments in Posts
*/
function display_post_attachments($post_id, $switch_attachment)
{
global $attach_config, $is_auth;
@ -99,8 +158,8 @@ function display_post_attachments($post_id, $switch_attachment)
}
/**
* Initializes some templating variables for displaying Attachments in Posts
*/
* Initializes some templating variables for displaying Attachments in Posts
*/
function init_display_post_attachments($switch_attachment)
{
global $attach_config, $is_auth, $template, $lang, $postrow, $total_posts, $attachments, $forum_row, $t_data;
@ -158,18 +217,8 @@ function init_display_post_attachments($switch_attachment)
init_display_template('body', '{postrow.ATTACHMENTS}');
init_complete_extensions_data();
}
/**
* END ATTACHMENT DISPLAY IN POSTS
*/
/**
* Assign Variables and Definitions based on the fetched Attachments - internal
* used by all displaying functions, the Data was collected before, it's only dependend on the template used. :)
* before this function is usable, init_display_attachments have to be called for specific pages (pm, posting, review etc...)
*/
function display_attachments($post_id)
{
global $template, $upload_dir, $userdata, $allowed_extensions, $display_categories, $download_modes, $lang, $attachments, $upload_icons, $attach_config;
@ -204,48 +253,22 @@ function display_attachments($post_id)
$denied = false;
// Admin is allowed to view forbidden Attachments, but the error-message is displayed too to inform the Admin
if (!in_array($attachments['_' . $post_id][$i]['extension'], $allowed_extensions))
{
$denied = true;
$template->assign_block_vars('postrow.attach.denyrow', array(
'L_DENIED' => sprintf($lang['EXTENSION_DISABLED_AFTER_POSTING'], $attachments['_' . $post_id][$i]['extension']))
);
}
if (!$denied || IS_ADMIN)
{
// define category
$image = FALSE;
$thumbnail = FALSE;
$link = FALSE;
$target_blank = ( (@intval($display_categories[$attachments['_' . $post_id][$i]['extension']]) == IMAGE_CAT) ) ? 'target="_blank"' : '';
if (!$image && !$thumbnail)
{
$link = TRUE;
}
// bt
if ($link && ($attachments['_'. $post_id][$i]['extension'] === TORRENT_EXT))
{
include(ATTACH_DIR .'displaying_torrent.php');
}
else if ($link)
{
$target_blank = ( (@intval($display_categories[$attachments['_' . $post_id][$i]['extension']]) == IMAGE_CAT) ) ? 'target="_blank"' : '';
// display attachment
$template->assign_block_vars('postrow.attach.attachrow', array(
'U_DOWNLOAD_LINK' => BB_ROOT . DOWNLOAD_URL . $attachments['_' . $post_id][$i]['attach_id'],
'S_UPLOAD_IMAGE' => $upload_image,
'DOWNLOAD_NAME' => $display_name,
'FILESIZE' => $filesize,
'COMMENT' => $comment,
'TARGET_BLANK' => $target_blank,
'DOWNLOAD_COUNT' => sprintf($lang['DOWNLOAD_NUMBER'], $attachments['_' . $post_id][$i]['download_count']),
));
}
// display attachment
$template->assign_block_vars('postrow.attach.attachrow', array(
'U_DOWNLOAD_LINK' => BB_ROOT . DOWNLOAD_URL . $attachments['_' . $post_id][$i]['attach_id'],
'S_UPLOAD_IMAGE' => $upload_image,
'DOWNLOAD_NAME' => $display_name,
'FILESIZE' => $filesize,
'COMMENT' => $comment,
'TARGET_BLANK' => $target_blank,
'DOWNLOAD_COUNT' => sprintf($lang['DOWNLOAD_NUMBER'], $attachments['_' . $post_id][$i]['download_count']),
));
}
}
}
}
$upload_dir = $attach_config['upload_dir'];

View file

@ -5,7 +5,6 @@ define('BB_ROOT', './');
require(BB_ROOT ."common.php");
require(INC_DIR .'bbcode.php');
require(INC_DIR .'functions_post.php');
require(ATTACH_DIR .'attachment_mod.php');
$page_cfg['load_tpl_vars'] = array('post_icons');
@ -285,8 +284,6 @@ else
$update_post_time = !empty($_POST['update_post_time']);
execute_posting_attachment_handling();
// если за время пока вы писали ответ, в топике появились новые сообщения, перед тем как ваше сообщение будет отправлено, выводится предупреждение с обзором этих сообщений
$topic_has_new_posts = false;

View file

@ -529,7 +529,7 @@ require(INC_DIR .'torrent_show_dl_list.php');
if ($t_data['topic_attachment'])
{
require(ATTACH_DIR .'attachment_mod.php');
require(INC_DIR .'old_attachment.php');
init_display_post_attachments($t_data['topic_attachment']);
}