diff --git a/library/attach_mod/attachment_mod.php b/library/attach_mod/attachment_mod.php
index d613f5cb6..8867e940a 100644
--- a/library/attach_mod/attachment_mod.php
+++ b/library/attach_mod/attachment_mod.php
@@ -1,10 +1,7 @@
assign_block_vars('postrow.attach.cat_images', array(
- 'DOWNLOAD_NAME' => $display_name,
- 'S_UPLOAD_IMAGE' => $upload_image,
- 'IMG_SRC' => $img_source,
- 'FILESIZE' => $filesize,
- 'COMMENT' => $comment,
- ));
-
- // Directly Viewed Image ... update the download count
- if (!$download_link)
- {
- $sql = 'UPDATE ' . BB_ATTACHMENTS_DESC . '
- SET download_count = download_count + 1
- WHERE attach_id = ' . (int) $attachments['_' . $post_id][$i]['attach_id'];
-
- if (!(DB()->sql_query($sql)))
- {
- bb_die('Could not update attachment download count');
- }
- }
- }
-
- if ($thumbnail)
- {
- // Images, but display Thumbnail
- if ($attach_config['upload_dir'][0] == '/' || ( $attach_config['upload_dir'][0] != '/' && $attach_config['upload_dir'][1] == ':'))
- {
- $thumb_source = BB_ROOT . DOWNLOAD_URL . $attachments['_' . $post_id][$i]['attach_id'] . '&thumb=1';
- }
- else
- {
- $thumb_source = $thumbnail_filename;
- }
-
- $template->assign_block_vars('postrow.attach.cat_thumb_images', array(
- 'DOWNLOAD_NAME' => $display_name,
- 'S_UPLOAD_IMAGE' => $upload_image,
- 'IMG_SRC' => BB_ROOT . DOWNLOAD_URL . $attachments['_' . $post_id][$i]['attach_id'],
- 'IMG_THUMB_SRC' => $thumb_source,
- 'FILESIZE' => $filesize,
- 'COMMENT' => $comment,
- ));
- }
-
// bt
if ($link && ($attachments['_'. $post_id][$i]['extension'] === TORRENT_EXT))
{
diff --git a/library/attach_mod/displaying_torrent.php b/library/attach_mod/displaying_torrent.php
index c99254e03..693e884f9 100644
--- a/library/attach_mod/displaying_torrent.php
+++ b/library/attach_mod/displaying_torrent.php
@@ -1,5 +1,6 @@
Theoretically up to 158 Forums saveable. :)
-* We are using a base of 64, but splitting it to one-char and two-char numbers. :)
-*/
function auth_pack($auth_array)
{
$one_char_encoding = '#';
@@ -105,9 +78,6 @@ function auth_pack($auth_array)
return $auth_cache;
}
-/**
-* Reverse the auth_pack process
-*/
function auth_unpack($auth_cache)
{
$one_char_encoding = '#';
@@ -138,9 +108,6 @@ function auth_unpack($auth_cache)
return $auth;
}
-/**
-* Used for determining if Forum ID is authed, please use this Function on all Posting Screens
-*/
function is_forum_authed($auth_cache, $check_forum_id)
{
$one_char_encoding = '#';
@@ -179,9 +146,6 @@ function is_forum_authed($auth_cache, $check_forum_id)
return false;
}
-/**
-* Deletes an Attachment
-*/
function unlink_attach($filename, $mode = false)
{
global $upload_dir, $attach_config;
@@ -202,9 +166,6 @@ function unlink_attach($filename, $mode = false)
return $deleted;
}
-/**
-* Check if Attachment exist
-*/
function attachment_exists($filename)
{
global $upload_dir, $attach_config;
@@ -221,28 +182,6 @@ function attachment_exists($filename)
}
}
-/**
-* Check if Thumbnail exist
-*/
-function thumbnail_exists($filename)
-{
- global $upload_dir, $attach_config;
-
- $filename = basename($filename);
-
- if (!@file_exists(@amod_realpath($upload_dir . '/' . THUMB_DIR . '/t_' . $filename)))
- {
- return false;
- }
- else
- {
- return true;
- }
-}
-
-/**
-* Physical Filename stored already ?
-*/
function physical_filename_already_stored($filename)
{
if ($filename == '')
@@ -267,9 +206,6 @@ function physical_filename_already_stored($filename)
return ($num_rows == 0) ? false : true;
}
-/**
-* get all attachments from a post (could be an post array too)
-*/
function get_attachments_from_post($post_id_array)
{
global $attach_config;
@@ -321,9 +257,6 @@ function get_attachments_from_post($post_id_array)
return $attachments;
}
-/**
-* Count Filesize of Attachments in Database based on the attachment id
-*/
function get_total_attach_filesize($attach_ids)
{
if (!is_array($attach_ids) || !sizeof($attach_ids))
@@ -361,7 +294,7 @@ function get_total_attach_filesize($attach_ids)
*/
function get_extension_informations()
{
- return; //$GLOBALS['datastore']->get('attach_extensions');
+ return;
}
//
diff --git a/library/attach_mod/includes/functions_filetypes.php b/library/attach_mod/includes/functions_filetypes.php
deleted file mode 100644
index 928f05b4c..000000000
--- a/library/attach_mod/includes/functions_filetypes.php
+++ /dev/null
@@ -1,293 +0,0 @@
-= 4294967294)
- {
- $value -= 4294967296;
- }
-
- return $value;
-}
-
-/**
-* Read Word (2 Bytes) from File - Note: It's an Intel Word
-*/
-function read_word($fp)
-{
- $data = fread($fp, 2);
-
- $value = ord($data[1]) * 256 + ord($data[0]);
-
- return $value;
-}
-
-/**
-* Read Byte
-*/
-function read_byte($fp)
-{
- $data = fread($fp, 1);
-
- $value = ord($data);
-
- return $value;
-}
-
-/**
-* Get Image Dimensions
-*/
-function image_getdimension($file)
-{
-
- $size = @getimagesize($file);
-
- if ($size[0] != 0 || $size[1] != 0)
- {
- return $size;
- }
-
- // Try to get the Dimension manually, depending on the mimetype
- $fp = @fopen($file, 'rb');
- if (!$fp)
- {
- return $size;
- }
-
- $error = FALSE;
-
- // BMP - IMAGE
-
- $tmp_str = fread($fp, 2);
- if ($tmp_str == 'BM')
- {
- $length = read_longint($fp);
-
- if ($length <= 6)
- {
- $error = true;
- }
-
- if (!$error)
- {
- $i = read_longint($fp);
- if ( $i != 0)
- {
- $error = true;
- }
- }
-
- if (!$error)
- {
- $i = read_longint($fp);
-
- if ($i != 0x3E && $i != 0x76 && $i != 0x436 && $i != 0x36)
- {
- $error = true;
- }
- }
-
- if (!$error)
- {
- $tmp_str = fread($fp, 4);
- $width = read_longint($fp);
- $height = read_longint($fp);
-
- if ($width > 3000 || $height > 3000)
- {
- $error = true;
- }
- }
- }
- else
- {
- $error = true;
- }
-
- if (!$error)
- {
- fclose($fp);
- return array(
- $width,
- $height,
- 6
- );
- }
-
- $error = false;
- fclose($fp);
-
- // GIF - IMAGE
-
- $fp = @fopen($file, 'rb');
-
- $tmp_str = fread($fp, 3);
-
- if ($tmp_str == 'GIF')
- {
- $tmp_str = fread($fp, 3);
- $width = read_word($fp);
- $height = read_word($fp);
-
- $info_byte = fread($fp, 1);
- $info_byte = ord($info_byte);
- if (($info_byte & 0x80) != 0x80 && ($info_byte & 0x80) != 0)
- {
- $error = true;
- }
-
- if (!$error)
- {
- if (($info_byte & 8) != 0)
- {
- $error = true;
- }
-
- }
- }
- else
- {
- $error = true;
- }
-
- if (!$error)
- {
- fclose($fp);
- return array(
- $width,
- $height,
- 1
- );
- }
-
- $error = false;
- fclose($fp);
-
- // JPG - IMAGE
- $fp = @fopen($file, 'rb');
-
- $tmp_str = fread($fp, 4);
- $w1 = read_word($fp);
-
- if (intval($w1) < 16)
- {
- $error = true;
- }
-
- if (!$error)
- {
- $tmp_str = fread($fp, 4);
- if ($tmp_str == 'JFIF')
- {
- $o_byte = fread($fp, 1);
- if (intval($o_byte) != 0)
- {
- $error = true;
- }
-
- if (!$error)
- {
- $str = fread($fp, 2);
- $b = read_byte($fp);
-
- if ($b != 0 && $b != 1 && $b != 2)
- {
- $error = true;
- }
- }
-
- if (!$error)
- {
- $width = read_word($fp);
- $height = read_word($fp);
-
- if ($width <= 0 || $height <= 0)
- {
- $error = true;
- }
- }
- }
- }
- else
- {
- $error = true;
- }
-
- if (!$error)
- {
- fclose($fp);
- return array(
- $width,
- $height,
- 2
- );
- }
-
- $error = false;
- fclose($fp);
-
- // PCX - IMAGE
-
- $fp = @fopen($file, 'rb');
-
- $tmp_str = fread($fp, 3);
-
- if ((ord($tmp_str[0]) == 10) && (ord($tmp_str[1]) == 0 || ord($tmp_str[1]) == 2 || ord($tmp_str[1]) == 3 || ord($tmp_str[1]) == 4 || ord($tmp_str[1]) == 5) && (ord($tmp_str[2]) == 1))
- {
- $b = fread($fp, 1);
-
- if (ord($b) != 1 && ord($b) != 2 && ord($b) != 4 && ord($b) != 8 && ord($b) != 24)
- {
- $error = true;
- }
-
- if (!$error)
- {
- $xmin = read_word($fp);
- $ymin = read_word($fp);
- $xmax = read_word($fp);
- $ymax = read_word($fp);
- $tmp_str = fread($fp, 52);
-
- $b = fread($fp, 1);
- if ($b != 0)
- {
- $error = true;
- }
- }
-
- if (!$error)
- {
- $width = $xmax - $xmin + 1;
- $height = $ymax - $ymin + 1;
- }
- }
- else
- {
- $error = true;
- }
-
- if (!$error)
- {
- fclose($fp);
- return array(
- $width,
- $height,
- 7
- );
- }
-
- fclose($fp);
-
- return $size;
-}
\ No newline at end of file
diff --git a/library/attach_mod/includes/functions_includes.php b/library/attach_mod/includes/functions_includes.php
deleted file mode 100644
index a4e8708ad..000000000
--- a/library/attach_mod/includes/functions_includes.php
+++ /dev/null
@@ -1,204 +0,0 @@
-';
- $s_auth_can .= (($is_auth['auth_download']) ? $lang['RULES_DOWNLOAD_CAN'] : $lang['RULES_DOWNLOAD_CANNOT'] ) . '
';
-}
-
-/**
-* Called from admin_users.php and admin_groups.php in order to process Quota Settings (admin/admin_users.php:admin/admin_groups.php)
-*/
-function attachment_quota_settings($admin_mode, $submit = false, $mode)
-{
- global $template, $lang, $attach_config;
-
- if ($attach_config['upload_dir'][0] == '/' || ($attach_config['upload_dir'][0] != '/' && $attach_config['upload_dir'][1] == ':'))
- {
- $upload_dir = $attach_config['upload_dir'];
- }
- else
- {
- $upload_dir = BB_ROOT . $attach_config['upload_dir'];
- }
-
- include(ATTACH_DIR .'includes/functions_selects.php');
- if (!function_exists("process_quota_settings"))
- include(ATTACH_DIR . 'includes/functions_admin.php');
-
- $user_id = 0;
-
- if ($admin_mode == 'user')
- {
- // We overwrite submit here... to be sure
- $submit = (isset($_POST['submit'])) ? true : false;
-
- if (!$submit && $mode != 'save')
- {
- $user_id = get_var(POST_USERS_URL, 0);
- $u_name = get_var('username', '');
-
- if (!$user_id && !$u_name)
- {
- bb_die($lang['NO_USER_ID_SPECIFIED'] );
- }
-
- if ($user_id)
- {
- $this_userdata['user_id'] = $user_id;
- }
- else
- {
- // Get userdata is handling the sanitizing of username
- $this_userdata = get_userdata($_POST['username'], true);
- }
-
- $user_id = (int) $this_userdata['user_id'];
- }
- else
- {
- $user_id = get_var('id', 0);
-
- if (!$user_id)
- {
- bb_die($lang['NO_USER_ID_SPECIFIED'] );
- }
- }
- }
-
- if ($admin_mode == 'user' && !$submit && $mode != 'save')
- {
- // Show the contents
- $sql = 'SELECT quota_limit_id, quota_type FROM ' . BB_QUOTA . ' WHERE user_id = ' . (int) $user_id;
-
- if (!($result = DB()->sql_query($sql)))
- {
- bb_die('Unable to get quota settings #1');
- }
-
- $pm_quota = $upload_quota = 0;
-
- if ($row = DB()->sql_fetchrow($result))
- {
- do
- {
- if ($row['quota_type'] == QUOTA_UPLOAD_LIMIT)
- {
- $upload_quota = $row['quota_limit_id'];
- }
- else if ($row['quota_type'] == QUOTA_PM_LIMIT)
- {
- $pm_quota = $row['quota_limit_id'];
- }
- }
- while ($row = DB()->sql_fetchrow($result));
- }
- else
- {
- // Set Default Quota Limit
- $upload_quota = $attach_config['default_upload_quota'];
- $pm_quota = $attach_config['default_pm_quota'];
-
- }
- DB()->sql_freeresult($result);
-
- $template->assign_vars(array(
- 'S_SELECT_UPLOAD_QUOTA' => quota_limit_select('user_upload_quota', $upload_quota),
- 'S_SELECT_PM_QUOTA' => quota_limit_select('user_pm_quota', $pm_quota),
- ));
- }
-
- if ($admin_mode == 'user' && $submit && @$_POST['delete_user'])
- {
- process_quota_settings($admin_mode, $user_id, QUOTA_UPLOAD_LIMIT, 0);
- process_quota_settings($admin_mode, $user_id, QUOTA_PM_LIMIT, 0);
- }
- else if ($admin_mode == 'user' && $submit && $mode == 'save')
- {
- // Get the contents
- $upload_quota = get_var('user_upload_quota', 0);
- $pm_quota = get_var('user_pm_quota', 0);
-
- process_quota_settings($admin_mode, $user_id, QUOTA_UPLOAD_LIMIT, $upload_quota);
- process_quota_settings($admin_mode, $user_id, QUOTA_PM_LIMIT, $pm_quota);
- }
-
- if ($admin_mode == 'group' && $mode == 'newgroup')
- {
- return;
- }
-
- if ($admin_mode == 'group' && !$submit && isset($_POST['edit']))
- {
- // Get group id again
- $group_id = get_var(POST_GROUPS_URL, 0);
-
- // Show the contents
- $sql = 'SELECT quota_limit_id, quota_type FROM ' . BB_QUOTA . ' WHERE group_id = ' . (int) $group_id;
-
- if (!($result = DB()->sql_query($sql)))
- {
- bb_die('Unable to get quota settings #2');
- }
-
- $pm_quota = $upload_quota = 0;
-
- if ($row = DB()->sql_fetchrow($result))
- {
- do
- {
- if ($row['quota_type'] == QUOTA_UPLOAD_LIMIT)
- {
- $upload_quota = $row['quota_limit_id'];
- }
- else if ($row['quota_type'] == QUOTA_PM_LIMIT)
- {
- $pm_quota = $row['quota_limit_id'];
- }
- }
- while ($row = DB()->sql_fetchrow($result));
- }
- else
- {
- // Set Default Quota Limit
- $upload_quota = $attach_config['default_upload_quota'];
- $pm_quota = $attach_config['default_pm_quota'];
- }
- DB()->sql_freeresult($result);
-
- $template->assign_vars(array(
- 'S_SELECT_UPLOAD_QUOTA' => quota_limit_select('group_upload_quota', $upload_quota),
- 'S_SELECT_PM_QUOTA' => quota_limit_select('group_pm_quota', $pm_quota),
- ));
- }
-
- if ($admin_mode == 'group' && $submit && isset($_POST['group_delete']))
- {
- $group_id = get_var(POST_GROUPS_URL, 0);
-
- process_quota_settings($admin_mode, $group_id, QUOTA_UPLOAD_LIMIT, 0);
- process_quota_settings($admin_mode, $group_id, QUOTA_PM_LIMIT, 0);
- }
- else if ($admin_mode == 'group' && $submit)
- {
- $group_id = get_var(POST_GROUPS_URL, 0);
-
- // Get the contents
- $upload_quota = get_var('group_upload_quota', 0);
- $pm_quota = get_var('group_pm_quota', 0);
-
- process_quota_settings($admin_mode, $group_id, QUOTA_UPLOAD_LIMIT, $upload_quota);
- process_quota_settings($admin_mode, $group_id, QUOTA_PM_LIMIT, $pm_quota);
- }
-}
\ No newline at end of file
diff --git a/library/attach_mod/includes/functions_selects.php b/library/attach_mod/includes/functions_selects.php
deleted file mode 100644
index be709e94c..000000000
--- a/library/attach_mod/includes/functions_selects.php
+++ /dev/null
@@ -1,251 +0,0 @@
-sql_query($sql)))
- {
- bb_die('Could not query extension groups table #1');
- }
-
- $group_select = '';
-
- return $group_select;
-}
-
-/**
-* select download mode
-*/
-function download_select($select_name, $group_id = 0)
-{
- global $types_download, $modes_download;
-
- if ($group_id)
- {
- $sql = 'SELECT download_mode
- FROM ' . BB_EXTENSION_GROUPS . '
- WHERE group_id = ' . (int) $group_id;
-
- if (!($result = DB()->sql_query($sql)))
- {
- bb_die('Could not query extension groups table #2');
- }
- $row = DB()->sql_fetchrow($result);
- DB()->sql_freeresult($result);
-
- if (!isset($row['download_mode']))
- {
- return '';
- }
-
- $download_mode = $row['download_mode'];
- }
-
- $group_select = '';
-
- return $group_select;
-}
-
-/**
-* select category types
-*/
-function category_select($select_name, $group_id = 0)
-{
- global $types_category, $modes_category;
-
- $sql = 'SELECT group_id, cat_id FROM ' . BB_EXTENSION_GROUPS;
-
- if (!($result = DB()->sql_query($sql)))
- {
- bb_die('Could not select category');
- }
-
- $rows = DB()->sql_fetchrowset($result);
- $num_rows = DB()->num_rows($result);
- DB()->sql_freeresult($result);
-
- $type_category = 0;
-
- if ($num_rows > 0)
- {
- for ($i = 0; $i < $num_rows; $i++)
- {
- if ($group_id == $rows[$i]['group_id'])
- {
- $category_type = $rows[$i]['cat_id'];
- }
- }
- }
-
- $types = array(NONE_CAT);
- $modes = array('none');
-
- for ($i = 0; $i < sizeof($types_category); $i++)
- {
- $types[] = $types_category[$i];
- $modes[] = $modes_category[$i];
- }
-
- $group_select = '';
-
- return $group_select;
-}
-
-/**
-* Select size mode
-*/
-function size_select($select_name, $size_compare)
-{
- global $lang;
-
- $size_types_text = array($lang['BYTES'], $lang['KB'], $lang['MB']);
- $size_types = array('b', 'kb', 'mb');
-
- $select_field = '';
-
- return $select_field;
-}
-
-/**
-* select quota limit
-*/
-function quota_limit_select($select_name, $default_quota = 0)
-{
- global $lang;
-
- $sql = 'SELECT quota_limit_id, quota_desc FROM ' . BB_QUOTA_LIMITS . ' ORDER BY quota_limit ASC';
-
- if (!($result = DB()->sql_query($sql)))
- {
- bb_die('Could not query quota limits table #1');
- }
-
- $quota_select = '';
-
- return $quota_select;
-}
-
-/**
-* select default quota limit
-*/
-function default_quota_limit_select($select_name, $default_quota = 0)
-{
- global $lang;
-
- $sql = 'SELECT quota_limit_id, quota_desc FROM ' . BB_QUOTA_LIMITS . ' ORDER BY quota_limit ASC';
-
- if (!($result = DB()->sql_query($sql)))
- {
- bb_die('Could not query quota limits table #2');
- }
-
- $quota_select = '';
-
- return $quota_select;
-}
\ No newline at end of file
diff --git a/library/attach_mod/includes/functions_thumbs.php b/library/attach_mod/includes/functions_thumbs.php
deleted file mode 100644
index 7c446de58..000000000
--- a/library/attach_mod/includes/functions_thumbs.php
+++ /dev/null
@@ -1,187 +0,0 @@
- $height)
- {
- return array(
- round($width * ($max_width / $width)),
- round($height * ($max_width / $width))
- );
- }
- else
- {
- return array(
- round($width * ($max_width / $height)),
- round($height * ($max_width / $height))
- );
- }
-}
-
-/**
-* Check if imagick is present
-*/
-function is_imagick()
-{
- global $imagick, $attach_config;
-
- if ($attach_config['img_imagick'] != '')
- {
- $imagick = $attach_config['img_imagick'];
- return true;
- }
- else
- {
- return false;
- }
-}
-
-/**
-* Get supported image types
-*/
-function get_supported_image_types($type)
-{
- if (@extension_loaded('gd'))
- {
- $format = imagetypes();
- $new_type = 0;
-
- switch ($type)
- {
- case 1:
- $new_type = ($format & IMG_GIF) ? IMG_GIF : 0;
- break;
- case 2:
- case 9:
- case 10:
- case 11:
- case 12:
- $new_type = ($format & IMG_JPG) ? IMG_JPG : 0;
- break;
- case 3:
- $new_type = ($format & IMG_PNG) ? IMG_PNG : 0;
- break;
- case 6:
- case 15:
- $new_type = ($format & IMG_WBMP) ? IMG_WBMP : 0;
- break;
- }
-
- return array(
- 'gd' => ($new_type) ? true : false,
- 'format' => $new_type,
- 'version' => (function_exists('imagecreatetruecolor')) ? 2 : 1
- );
- }
-
- return array('gd' => false);
-}
-
-/**
-* Create thumbnail
-*/
-function create_thumbnail($source, $new_file, $mimetype)
-{
- global $attach_config, $imagick;
-
- $source = amod_realpath($source);
- $min_filesize = (int) $attach_config['img_min_thumb_filesize'];
- $img_filesize = (@file_exists($source)) ? @filesize($source) : false;
-
- if (!$img_filesize || $img_filesize <= $min_filesize)
- {
- return false;
- }
-
- list($width, $height, $type, ) = getimagesize($source);
-
- if (!$width || !$height)
- {
- return false;
- }
-
- list($new_width, $new_height) = get_img_size_format($width, $height);
-
- $tmp_path = $old_file = '';
-
- $used_imagick = false;
-
- if (is_imagick())
- {
- passthru($imagick . ' -quality 85 -antialias -sample ' . $new_width . 'x' . $new_height . ' "' . str_replace('\\', '/', $source) . '" +profile "*" "' . str_replace('\\', '/', $new_file) . '"');
- if (@file_exists($new_file))
- {
- $used_imagick = true;
- }
- }
-
- if (!$used_imagick)
- {
- $type = get_supported_image_types($type);
-
- if ($type['gd'])
- {
- switch ($type['format'])
- {
- case IMG_GIF:
- $image = imagecreatefromgif($source);
- break;
- case IMG_JPG:
- $image = imagecreatefromjpeg($source);
- break;
- case IMG_PNG:
- $image = imagecreatefrompng($source);
- break;
- case IMG_WBMP:
- $image = imagecreatefromwbmp($source);
- break;
- }
-
- if ($type['version'] == 1 || !$attach_config['use_gd2'])
- {
- $new_image = imagecreate($new_width, $new_height);
- imagecopyresized($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
- }
- else
- {
- $new_image = imagecreatetruecolor($new_width, $new_height);
- imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
- }
-
- switch ($type['format'])
- {
- case IMG_GIF:
- imagegif($new_image, $new_file);
- break;
- case IMG_JPG:
- imagejpeg($new_image, $new_file, 90);
- break;
- case IMG_PNG:
- imagepng($new_image, $new_file);
- break;
- case IMG_WBMP:
- imagewbmp($new_image, $new_file);
- break;
- }
-
- imagedestroy($new_image);
- }
- }
-
- if (!@file_exists($new_file))
- {
- return false;
- }
-
- @chmod($new_file, 0664);
-
- return true;
-}
\ No newline at end of file
diff --git a/library/includes/viewtopic_torrent.php b/library/includes/viewtopic_torrent.php
new file mode 100644
index 000000000..104f39228
--- /dev/null
+++ b/library/includes/viewtopic_torrent.php
@@ -0,0 +1,604 @@
+';
+
+$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 = ''. $lang['BT_REG_ON_TRACKER'] .'';
+ $unreg_tor_url = ''. $lang['BT_UNREG_FROM_TRACKER'] .'';
+
+ $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&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']) ? (' · '. profile_url($tor_info) .' · '. delta_time($tor_info['checked_time']) . $lang['TOR_BACK'] .'') : '',
+ '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&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&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&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']) ? ' ®' : '';
+ $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 : "$name",
+ 'COMPL_PRC' => $compl_perc,
+ 'UP_TOTAL' => ($max_up_id[$x] == $pid) ? "$up_tot" : $up_tot,
+ 'DOWN_TOTAL' => ($max_down_id[$x] == $pid) ? "$down_tot" : $down_tot,
+ 'SPEED_UP' => ($max_sp_up_id[$x] == $pid) ? "$sp_up" : $sp_up,
+ 'SPEED_DOWN' => ($max_sp_down_id[$x] == $pid) ? "$sp_down" : $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') .' · '. 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 .= ''. $peer['username'] .', ';
+ $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 .= ''. $peer['username'] .'';
+ $leechers .= ($s_mode == 'names') ? ' ['. $compl_perc .'%]' : '';
+ $leechers .= ', ';
+ $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&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)),
+));
\ No newline at end of file
diff --git a/viewtopic.php b/viewtopic.php
index e31f29b31..10ddd065c 100644
--- a/viewtopic.php
+++ b/viewtopic.php
@@ -5,23 +5,24 @@ define('BB_ROOT', './');
require(BB_ROOT .'common.php');
require(INC_DIR .'bbcode.php');
-$user->session_start();
-
$datastore->enqueue(array(
'ranks',
));
-$topic_id = isset($_GET[POST_TOPIC_URL]) ? (int) $_GET[POST_TOPIC_URL] : 0;
-$post_id = (!$topic_id && isset($_GET[POST_POST_URL])) ? (int) $_GET[POST_POST_URL] : 0;
-$start = isset($_GET['start']) ? abs(intval($_GET['start'])) : 0;
-$newest = 0;
-
$page_cfg['load_tpl_vars'] = array(
'post_buttons',
'post_icons',
'topic_icons',
);
+$user->session_start();
+
+$topic_id = isset($_GET[POST_TOPIC_URL]) ? (int) $_GET[POST_TOPIC_URL] : 0;
+$post_id = (!$topic_id && isset($_GET[POST_POST_URL])) ? (int) $_GET[POST_POST_URL] : 0;
+$start = isset($_GET['start']) ? abs(intval($_GET['start'])) : 0;
+$newest = 0;
+
+
// Posts per page
$posts_per_page = $bb_cfg['posts_per_page'];
$select_ppp = '';
@@ -374,24 +375,17 @@ if (!$ranks = $datastore->get('ranks'))
$ranks = $datastore->get('ranks');
}
-//
// Define censored word matches
-//
$orig_word = $replacement_word = array();
obtain_word_list($orig_word, $replacement_word);
-//
// Censor topic title
-//
-if ( count($orig_word) )
+if (count($orig_word))
{
$topic_title = preg_replace($orig_word, $replacement_word, $topic_title);
}
-//
-// Post, reply and other URL generation for
-// templating vars
-//
+// Post, reply and other URL generation for templating vars
$new_topic_url = POSTING_URL . "?mode=newtopic&f=" . $forum_id;
$reply_topic_url = POSTING_URL . "?mode=reply&t=" . $topic_id;
$view_forum_url = FORUM_URL . $forum_id;
@@ -649,19 +643,12 @@ for($i = 0; $i < $total_posts; $i++)
// Replace naughty words
if (count($orig_word))
{
- if ($user_sig)
- {
- $user_sig = str_replace('\"', '"', substr(@preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se', "@preg_replace(\$orig_word, \$replacement_word, '\\0')", '>' . $user_sig . '<'), 1, -1));
- }
-
+ if ($user_sig) $user_sig = str_replace('\"', '"', substr(@preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se', "@preg_replace(\$orig_word, \$replacement_word, '\\0')", '>' . $user_sig . '<'), 1, -1));
$message = str_replace('\"', '"', substr(@preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se', "@preg_replace(\$orig_word, \$replacement_word, '\\0')", '>' . $message . '<'), 1, -1));
}
// Replace newlines (we use this rather than nl2br because till recently it wasn't XHTML compliant)
- if ($user_sig)
- {
- $user_sig = $bb_cfg['user_signature_start'] . $user_sig . $bb_cfg['user_signature_end'];
- }
+ if ($user_sig) $user_sig = $bb_cfg['user_signature_start'] . $user_sig . $bb_cfg['user_signature_end'];
// Editing information
if ($postrow[$i]['post_edit_count'])
@@ -702,6 +689,8 @@ for($i = 0; $i < $total_posts; $i++)
$mc_select_type[$key] = $value['type'];
}
+ $is_first_post = ($post_id == $t_data['topic_first_post_id']);
+
$template->assign_block_vars('postrow', array(
'ROW_CLASS' => !($i % 2) ? 'row1' : 'row2',
'POST_ID' => $post_id,
@@ -721,7 +710,7 @@ for($i = 0; $i < $total_posts; $i++)
'POSTER_GENDER' => ($bb_cfg['gender']) ? gender_image($postrow[$i]['user_gender']) : '',
'POSTED_AFTER' => ($prev_post_time) ? delta_time($postrow[$i]['post_time'], $prev_post_time) : '',
'IS_UNREAD' => is_unread($postrow[$i]['post_time'], $topic_id, $forum_id),
- 'IS_FIRST_POST' => (!$start && ($post_id == $t_data['topic_first_post_id'])),
+ 'IS_FIRST_POST' => (!$start && $is_first_post),
'MOD_CHECKBOX' => ($moderation && ($start || defined('SPLIT_FORM_START'))),
'POSTER_AVATAR' => $poster_avatar,
'POST_NUMBER' => ($i + $start + 1),
@@ -759,7 +748,26 @@ for($i = 0; $i < $total_posts; $i++)
display_post_attachments($post_id, $postrow[$i]['post_attachment']);
}
- if ($moderation && !defined('SPLIT_FORM_START') && ($start || $post_id == $t_data['topic_first_post_id']))
+ if ($is_first_post && $t_data['attach_ext_id'])
+ {
+ if (IS_GUEST)
+ {
+ $template->assign_var('SHOW_GUEST_DL_STUB', ($t_data['attach_ext_id'] == 8));
+ }
+ else if ($t_data['attach_ext_id'] == 8)
+ {
+ require(INC_DIR .'viewtopic_torrent.php');
+ }
+ else
+ {
+ $template->assign_vars(array(
+ 'SHOW_ATTACH_DL_LINK' => true,
+ 'ATTACH_FILESIZE' => humn_size($t_data['filesize']),
+ ));
+ }
+ }
+
+ if ($moderation && !defined('SPLIT_FORM_START') && ($start || $is_first_post))
{
define('SPLIT_FORM_START', TRUE);
}