diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html
index f9d3fd73eb..27fcf1d530 100644
--- a/phpBB/docs/CHANGELOG.html
+++ b/phpBB/docs/CHANGELOG.html
@@ -159,6 +159,7 @@
[Feature] Enhance obtain_users_online_string to be able to return user-lists for other session-items (Bug #31975 - Patch by nickvergessen)
[Feature] Add unapproved topic icon for moderators on forum list (Bug #46865 - Patch by nickvergessen)
[Feature] Add confirm-box when deleting permissions (Bug #13673 - Patch by nickvergessen)
+ [Feature] Add unread posts quick search option (Bug #46765 - Patch by rxu)
1.ii. Changes since 3.0.4
diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php
index 14e1dde92f..12b9363ec4 100644
--- a/phpBB/includes/functions.php
+++ b/phpBB/includes/functions.php
@@ -3840,6 +3840,7 @@ function page_header($page_title = '', $display_online_list = true)
'U_SEARCH_SELF' => append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=egosearch'),
'U_SEARCH_NEW' => append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=newposts'),
'U_SEARCH_UNANSWERED' => append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=unanswered'),
+ 'U_SEARCH_UNREAD' => append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=unreadposts'),
'U_SEARCH_ACTIVE_TOPICS'=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=active_topics'),
'U_DELETE_COOKIES' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=delete_cookies'),
'U_TEAM' => ($user->data['user_id'] != ANONYMOUS && !$auth->acl_get('u_viewprofile')) ? '' : append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=leaders'),
diff --git a/phpBB/language/en/common.php b/phpBB/language/en/common.php
index 6f3433892a..a2b8eafd52 100644
--- a/phpBB/language/en/common.php
+++ b/phpBB/language/en/common.php
@@ -522,6 +522,7 @@ $lang = array_merge($lang, array(
'SEARCH_SELF' => 'View your posts',
'SEARCH_TOPIC' => 'Search this topic…',
'SEARCH_UNANSWERED' => 'View unanswered posts',
+ 'SEARCH_UNREAD' => 'View unread posts',
'SECONDS' => 'Seconds',
'SELECT' => 'Select',
'SELECT_ALL_CODE' => 'Select all',
diff --git a/phpBB/search.php b/phpBB/search.php
index 5e2a7c2836..e5fd852e0d 100644
--- a/phpBB/search.php
+++ b/phpBB/search.php
@@ -348,6 +348,7 @@ if ($keywords || $author || $author_id || $search_id || $submit)
break;
case 'newposts':
+ case 'unreadposts':
$l_search_title = $user->lang['SEARCH_NEW'];
// force sorting
$show_results = (request_var('sr', 'topics') == 'posts') ? 'posts' : 'topics';
@@ -803,6 +804,10 @@ if ($keywords || $author || $author_id || $search_id || $submit)
topic_status($row, $replies, (isset($topic_tracking_info[$forum_id][$row['topic_id']]) && $row['topic_last_post_time'] > $topic_tracking_info[$forum_id][$row['topic_id']]) ? true : false, $folder_img, $folder_alt, $topic_type);
$unread_topic = (isset($topic_tracking_info[$forum_id][$row['topic_id']]) && $row['topic_last_post_time'] > $topic_tracking_info[$forum_id][$row['topic_id']]) ? true : false;
+ if ($search_id == 'unreadposts' && !$unread_topic)
+ {
+ continue;
+ }
$topic_unapproved = (!$row['topic_approved'] && $auth->acl_get('m_approve', $forum_id)) ? true : false;
$posts_unapproved = ($row['topic_approved'] && $row['topic_replies'] < $row['topic_replies_real'] && $auth->acl_get('m_approve', $forum_id)) ? true : false;
diff --git a/phpBB/styles/prosilver/template/index_body.html b/phpBB/styles/prosilver/template/index_body.html
index 43d8ad0309..9cb4d2067d 100644
--- a/phpBB/styles/prosilver/template/index_body.html
+++ b/phpBB/styles/prosilver/template/index_body.html
@@ -6,7 +6,7 @@
diff --git a/phpBB/styles/subsilver2/template/overall_header.html b/phpBB/styles/subsilver2/template/overall_header.html
index 6099a12338..c605871f0b 100644
--- a/phpBB/styles/subsilver2/template/overall_header.html
+++ b/phpBB/styles/subsilver2/template/overall_header.html
@@ -201,7 +201,7 @@ function marklist(id, name, state)
{L_SEARCH_UNANSWERED} | {L_SEARCH_ACTIVE_TOPICS}
- {L_SEARCH_NEW} | {L_SEARCH_SELF}
+ {L_SEARCH_UNREAD} | {L_SEARCH_NEW} | {L_SEARCH_SELF}