diff options
author | Bharat Mediratta <bharat@menalto.com> | 2012-12-09 20:26:16 -0800 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2012-12-09 20:26:16 -0800 |
commit | a74e3aea6f0bdde210c91622535af3e58aa1e9fd (patch) | |
tree | 7d2b5d1ad10cbbbdb7d7c0fc4ae6816eef6dff8e /modules | |
parent | f457cd283cdfd9011d76ae96872e1f08bb219baf (diff) |
Eliminate the search context if we encounter an item that cannot be
found in the search results. Fixes #1923.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/gallery/helpers/item.php | 7 | ||||
-rw-r--r-- | modules/search/helpers/search.php | 9 |
2 files changed, 15 insertions, 1 deletions
diff --git a/modules/gallery/helpers/item.php b/modules/gallery/helpers/item.php index d8b660d9..b739e8bd 100644 --- a/modules/gallery/helpers/item.php +++ b/modules/gallery/helpers/item.php @@ -415,6 +415,13 @@ class item_Core { } /** + * Get rid of the display context callback + */ + static function clear_display_context_callback() { + Cache::instance()->delete("display_context_" . $sid = Session::instance()->id()); + } + + /** * Call the display context callback for the given item */ static function get_display_context($item) { diff --git a/modules/search/helpers/search.php b/modules/search/helpers/search.php index b7fa21c4..64a13825 100644 --- a/modules/search/helpers/search.php +++ b/modules/search/helpers/search.php @@ -117,7 +117,14 @@ class search_Core { // Truncate the score by two decimal places as this resolves the issues // that arise due to in exact numeric conversions. - $score = $db->query($query)->current()->score; + $current = $db->query($query)->current(); + if (!$current) { + // We can't find this result in our result set - perhaps we've fallen out of context? Clear + // the context and try again. + item::clear_display_context_callback(); + url::redirect(url::current()); + } + $score = $current->score(); if (strlen($score) > 7) { $score = substr($score, 0, strlen($score) - 2); } |