From 7508b00978565e1c1984be6a62e1142059d1daf0 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Fri, 11 Aug 2006 13:21:51 +0000 Subject: [PATCH] submit some attachment changes/fixes as well as fixing the language pack download for zip files. git-svn-id: file:///svn/phpbb/trunk@6260 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/download.php | 25 +++++++++++++++---- phpBB/includes/acp/acp_language.php | 2 +- phpBB/includes/functions_display.php | 16 ++++++++---- phpBB/includes/session.php | 4 +-- .../styles/subSilver/template/attachment.html | 4 +-- 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 @@ - + @@ -57,7 +57,7 @@ - +