diff --git a/phpBB/config/default/routing/storage.yml b/phpBB/config/default/routing/storage.yml index ac135c5e6b..1149d8cf69 100644 --- a/phpBB/config/default/routing/storage.yml +++ b/phpBB/config/default/routing/storage.yml @@ -4,8 +4,9 @@ phpbb_storage_avatar: _controller: storage.controller.avatar:handle phpbb_storage_attachment: - path: /attachment/{file} + path: /attachment/{file}/{filename} defaults: + filename: '' _controller: storage.controller.attachment:handle requirements: - id: \d+ + file: \d+ diff --git a/phpBB/includes/acp/acp_attachments.php b/phpBB/includes/acp/acp_attachments.php index 329900130e..8b4806a6bf 100644 --- a/phpBB/includes/acp/acp_attachments.php +++ b/phpBB/includes/acp/acp_attachments.php @@ -1112,7 +1112,13 @@ class acp_attachments 'PHYSICAL_FILENAME' => utf8_basename($row['physical_filename']), 'ATTACH_ID' => $row['attach_id'], 'POST_ID' => (!empty($post_ids[$row['attach_id']])) ? $post_ids[$row['attach_id']] : '', - 'U_FILE' => $this->controller_helper->route('phpbb_storage_attachment', ['file' => (int) $row['attach_id']]) + 'U_FILE' => $this->controller_helper->route( + 'phpbb_storage_attachment', + [ + 'file' => (int) $row['attach_id'], + 'filename' => $row['real_filename'], + ] + ), ]); } $db->sql_freeresult($result); @@ -1302,7 +1308,13 @@ class acp_attachments 'S_IN_MESSAGE' => (bool) $row['in_message'], 'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "p={$row['post_msg_id']}") . "#p{$row['post_msg_id']}", - 'U_FILE' => $this->controller_helper->route('phpbb_storage_attachment', ['file' => $row['attach_id']]) + 'U_FILE' => $this->controller_helper->route( + 'phpbb_storage_attachment', + [ + 'file' => $row['attach_id'], + 'filename' => $row['real_filename'], + ] + ) )); } diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index 8be78c24f2..6305a91d70 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -2306,7 +2306,13 @@ class acp_users 'S_IN_MESSAGE' => $row['in_message'], - 'U_DOWNLOAD' => $controller_helper->route('phpbb_storage_attachment', ['file' => (int) $row['attach_id']]), + 'U_DOWNLOAD' => $controller_helper->route( + 'phpbb_storage_attachment', + [ + 'file' => (int) $row['attach_id'], + 'filename' => $row['real_filename'], + ] + ), 'U_VIEW_TOPIC' => $view_topic) ); } diff --git a/phpBB/includes/functions_content.php b/phpBB/includes/functions_content.php index 349f3582c4..7c228d7a24 100644 --- a/phpBB/includes/functions_content.php +++ b/phpBB/includes/functions_content.php @@ -1285,14 +1285,26 @@ function parse_attachments($forum_id, &$message, &$attachments, &$update_count_a $display_cat = attachment_category::NONE; } - $download_link = $controller_helper->route('phpbb_storage_attachment', ['file' => (int) $attachment['attach_id']]); + $download_link = $controller_helper->route( + 'phpbb_storage_attachment', + [ + 'file' => (int) $attachment['attach_id'], + 'filename' => $attachment['real_filename'], + ] + ); $l_downloaded_viewed = 'VIEWED_COUNTS'; switch ($display_cat) { // Images case attachment_category::IMAGE: - $inline_link = $controller_helper->route('phpbb_storage_attachment', ['file' => (int) $attachment['attach_id']]); + $inline_link = $controller_helper->route( + 'phpbb_storage_attachment', + [ + 'file' => (int) $attachment['attach_id'], + 'filename' => $attachment['real_filename'], + ] + ); $block_array += array( 'S_IMAGE' => true, @@ -1304,7 +1316,14 @@ function parse_attachments($forum_id, &$message, &$attachments, &$update_count_a // Images, but display Thumbnail case attachment_category::THUMB: - $thumbnail_link = $controller_helper->route('phpbb_storage_attachment', ['file' => (int) $attachment['attach_id'], 't' => 1]); + $thumbnail_link = $controller_helper->route( + 'phpbb_storage_attachment', + [ + 'file' => (int) $attachment['attach_id'], + 'filename' => $attachment['real_filename'], + 't' => 1, + ] + ); $block_array += array( 'S_THUMBNAIL' => true, diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index d4673531cb..2a0ecd2b53 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -868,7 +868,14 @@ function posting_gen_attachment_entry($attachment_data, &$filename_data, $show_a $hidden .= ''; } - $download_link = $phpbb_container->get('controller.helper')->route('phpbb_storage_attachment', ['file' => (int) $attach_row['attach_id']]); + $download_link = $phpbb_container->get('controller.helper') + ->route( + 'phpbb_storage_attachment', + [ + 'file' => (int) $attach_row['attach_id'], + 'filename' => $attachment['real_filename'], + ] + ); $attachrow_template_vars[(int) $attach_row['attach_id']] = array( 'FILENAME' => utf8_basename($attach_row['real_filename']), diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index 205d0682e3..912769f70e 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -1716,7 +1716,13 @@ class parse_message extends bbcode_firstpass if (isset($this->plupload) && $this->plupload->is_active()) { - $download_url = $controller_helper->route('phpbb_storage_attachment', ['file' => (int) $new_entry['attach_id']]); + $download_url = $controller_helper->route( + 'phpbb_storage_attachment', + [ + 'file' => (int) $new_entry['attach_id'], + 'filename' => $attachment['real_filename'], + ] + ); // Send the client the attachment data to maintain state $json_response->send(array('data' => $this->attachment_data, 'download_url' => $download_url)); diff --git a/phpBB/includes/ucp/ucp_attachments.php b/phpBB/includes/ucp/ucp_attachments.php index 5330fdfd94..c143bea429 100644 --- a/phpBB/includes/ucp/ucp_attachments.php +++ b/phpBB/includes/ucp/ucp_attachments.php @@ -185,7 +185,13 @@ class ucp_attachments 'S_IN_MESSAGE' => $row['in_message'], 'S_LOCKED' => !$row['in_message'] && !$auth->acl_get('m_edit', $row['forum_id']) && ($row['forum_status'] == ITEM_LOCKED || $row['topic_status'] == ITEM_LOCKED || $row['post_edit_locked']), - 'U_VIEW_ATTACHMENT' => $controller_helper->route('phpbb_storage_attachment', ['file' => (int) $row['attach_id']]), + 'U_VIEW_ATTACHMENT' => $controller_helper->route( + 'phpbb_storage_attachment', + [ + 'file' => (int) $row['attach_id'], + 'filename' => $row['real_filename'], + ] + ), 'U_VIEW_TOPIC' => $view_topic) );