aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phpBB/download.php25
-rw-r--r--phpBB/includes/acp/acp_language.php2
-rw-r--r--phpBB/includes/functions_display.php16
-rw-r--r--phpBB/includes/session.php4
-rw-r--r--phpBB/styles/subSilver/template/attachment.html4
5 files changed, 36 insertions, 15 deletions
diff --git a/phpBB/download.php b/phpBB/download.php
index 808e29df7e..97692bf441 100644
--- a/phpBB/download.php
+++ b/phpBB/download.php
@@ -17,12 +17,13 @@ $phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
$download_id = request_var('id', 0);
-
-// Thumbnails are not handled by this file by default - but for modders this should be interesting. ;)
$thumbnail = request_var('t', false);
-// Start session management
-$user->session_begin();
+// Disable browser check for downloads
+$config['browser_check'] = false;
+
+// Start session management, do not update session page.
+$user->session_begin(false);
$auth->acl($user->data);
$user->setup('viewtopic');
@@ -65,6 +66,19 @@ if (!$attachment['in_message'])
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
+ // Global announcement?
+ if (!$row)
+ {
+ $forum_id = request_var('f', 0);
+
+ $sql = 'SELECT forum_id, forum_password, parent_id
+ FROM ' . FORUMS_TABLE . '
+ WHERE forum_id = ' . $forum_id;
+ $result = $db->sql_query($sql);
+ $row = $db->sql_fetchrow($result);
+ $db->sql_freeresult($result);
+ }
+
if ($auth->acl_get('u_download') && $auth->acl_get('f_download', $row['forum_id']))
{
if ($row['forum_password'])
@@ -116,12 +130,13 @@ if (!$attachment)
$attachment['physical_filename'] = basename($attachment['physical_filename']);
+$display_cat = $extensions[$attachment['extension']]['display_cat'];
if ($thumbnail)
{
$attachment['physical_filename'] = 'thumb_' . $attachment['physical_filename'];
}
-else
+else if ($display_cat == ATTACHMENT_CATEGORY_NONE)
{
// Update download count
$sql = 'UPDATE ' . ATTACHMENTS_TABLE . '
diff --git a/phpBB/includes/acp/acp_language.php b/phpBB/includes/acp/acp_language.php
index f010657fe4..29aabe240f 100644
--- a/phpBB/includes/acp/acp_language.php
+++ b/phpBB/includes/acp/acp_language.php
@@ -779,7 +779,7 @@ class acp_language
include_once($phpbb_root_path . 'includes/functions_compress.' . $phpEx);
- if ($use_method == 'zip')
+ if ($use_method == '.zip')
{
$compress = new compress_zip('w', $phpbb_root_path . 'store/lang_' . $row['lang_iso'] . $use_method);
}
diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php
index 05ab4afcbb..10de128e31 100644
--- a/phpBB/includes/functions_display.php
+++ b/phpBB/includes/functions_display.php
@@ -789,12 +789,13 @@ function display_attachments($forum_id, $blockname, &$attachment_data, &$update_
}
}
+ $download_link = (!$force_physical && $attachment['attach_id']) ? append_sid("{$phpbb_root_path}download.$phpEx", 'id=' . $attachment['attach_id'] . '&f=' . $forum_id) : $filename;
+
switch ($display_cat)
{
// Images
case ATTACHMENT_CATEGORY_IMAGE:
$l_downloaded_viewed = $user->lang['VIEWED'];
- $download_link = $filename;
$block_array += array(
'S_IMAGE' => true,
@@ -806,17 +807,24 @@ function display_attachments($forum_id, $blockname, &$attachment_data, &$update_
// Images, but display Thumbnail
case ATTACHMENT_CATEGORY_THUMB:
$l_downloaded_viewed = $user->lang['VIEWED'];
- $download_link = (!$force_physical && $attachment['attach_id']) ? append_sid("{$phpbb_root_path}download.$phpEx", 'id=' . $attachment['attach_id']) : $filename;
+ $thumbnail_link = (!$force_physical && $attachment['attach_id']) ? append_sid("{$phpbb_root_path}download.$phpEx", 'id=' . $attachment['attach_id'] . '&t=1&f=' . $forum_id) : $thumbnail_filename;
$block_array += array(
'S_THUMBNAIL' => true,
- 'THUMB_IMAGE' => $thumbnail_filename,
+ 'THUMB_IMAGE' => $thumbnail_link,
);
break;
// Windows Media Streams
case ATTACHMENT_CATEGORY_WM:
$l_downloaded_viewed = $user->lang['VIEWED'];
+
+ // The download link is slightly different, because somehow phpBB is not able to get the correct results if called
+ // within the wmp object (cookies are not present).
+ // $download_link = (!$force_physical && $attachment['attach_id']) ? generate_board_url() . append_sid("/download.$phpEx", 'id=' . $attachment['attach_id'] . '&f=' . $forum_id, false, $user->session_id) : $filename;
+
+ // Giving the filename directly because within the wm object all variables are in local context making it impossible
+ // to validate against a valid session (all params can differ)
$download_link = $filename;
$block_array += array(
@@ -830,7 +838,6 @@ function display_attachments($forum_id, $blockname, &$attachment_data, &$update_
// Real Media Streams
case ATTACHMENT_CATEGORY_RM:
$l_downloaded_viewed = $user->lang['VIEWED'];
- $download_link = $filename;
$block_array += array(
'S_RM_FILE' => true,
@@ -861,7 +868,6 @@ function display_attachments($forum_id, $blockname, &$attachment_data, &$update_
*/
default:
$l_downloaded_viewed = $user->lang['DOWNLOADED'];
- $download_link = (!$force_physical && $attachment['attach_id']) ? append_sid("{$phpbb_root_path}download.$phpEx", 'id=' . $attachment['attach_id']) : $filename;
$block_array += array(
'S_FILE' => true,
diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php
index 3b1e43e052..7514d070e5 100644
--- a/phpBB/includes/session.php
+++ b/phpBB/includes/session.php
@@ -131,7 +131,7 @@ class session
* @todo Introduce further user types, bot, guest
* @todo Change user_type (as above) to a bitfield? user_type & USER_FOUNDER for example
*/
- function session_begin($update_session_page = true)
+ function session_begin($update_session_page = true, $loose_validation = false)
{
global $phpEx, $SID, $_SID, $db, $config, $phpbb_root_path;
@@ -207,7 +207,7 @@ class session
// Validate IP length according to admin ... enforces an IP
// check on bots if admin requires this
// $quadcheck = ($config['ip_check_bot'] && $this->data['user_type'] & USER_BOT) ? 4 : $config['ip_check'];
-
+
$s_ip = implode('.', array_slice(explode('.', $this->data['session_ip']), 0, $config['ip_check']));
$u_ip = implode('.', array_slice(explode('.', $this->ip), 0, $config['ip_check']));
diff --git a/phpBB/styles/subSilver/template/attachment.html b/phpBB/styles/subSilver/template/attachment.html
index 6c2c9e04e6..4e91dcfde3 100644
--- a/phpBB/styles/subSilver/template/attachment.html
+++ b/phpBB/styles/subSilver/template/attachment.html
@@ -45,7 +45,7 @@
<!-- ENDIF -->
<!-- IF _file.S_RM_FILE -->
- <object id=rmstream_{_file.ATTACH_ID} classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width="0" height="0">
+ <object id=rmstream_{_file.ATTACH_ID} classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width="200" height="50">
<param name="src" value="{_file.U_FORUM}/{_file.U_DOWNLOAD_LINK}">
<param name="autostart" value="false">
<param name="controls" value="ImageWindow">
@@ -57,7 +57,7 @@
<object id=ctrls_{_file.ATTACH_ID} classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width="0" height="36">
<param name="controls" value="ControlPanel">
<param name="console" value="{_file.U_DOWNLOAD_LINK}">
- <embed name=ctrls_{_file.ATTACH_ID} type="audio/x-pn-realaudio-plugin" width="0" height="36" controls="ControlPanel" console="video"></embed>
+ <embed name=ctrls_{_file.ATTACH_ID} type="audio/x-pn-realaudio-plugin" width="200" height="36" controls="ControlPanel" console="video"></embed>
</object>
<script language="Javascript">