diff --git a/core/exceptions.php b/core/exceptions.php index fa2e0d07..5ee3d165 100644 --- a/core/exceptions.php +++ b/core/exceptions.php @@ -1,8 +1,6 @@ can(Permissions::BIG_SEARCH) and count($tags) > 3) { - throw new SCoreException("Anonymous users may only search for up to 3 tags at a time"); + throw new PermissionDeniedException("Anonymous users may only search for up to 3 tags at a time"); } } diff --git a/core/user.php b/core/user.php index f9319970..5ce18bd7 100644 --- a/core/user.php +++ b/core/user.php @@ -97,7 +97,7 @@ class User { $u = User::by_name($name); if (is_null($u)) { - throw new ScoreException("Can't find any user named $name"); + throw new UserDoesNotExist("Can't find any user named $name"); } else { return $u->id; } diff --git a/core/util.php b/core/util.php index 4ce3ce0d..0d2dd8fb 100644 --- a/core/util.php +++ b/core/util.php @@ -616,7 +616,7 @@ function _fatal_error(Exception $e): void print("Version: $version (on $phpver)\n"); } else { $q = $query ? "" : "
Query: " . html_escape($query); - error_log("Shimmie Error: $message // $query // {$e->getTraceAsString()}"); + error_log("Shimmie Error: $message (Query: $query)\n{$e->getTraceAsString()}"); header("HTTP/1.0 500 Internal Error"); echo ' diff --git a/ext/index/main.php b/ext/index/main.php index 5f8e400f..f5cbb9d0 100644 --- a/ext/index/main.php +++ b/ext/index/main.php @@ -91,8 +91,12 @@ class Index extends Extension if (!$images) { $images = Image::find_images(($page_number-1)*$page_size, $page_size, $search_terms); } + } catch (PermissionDeniedException $pde) { + $this->theme->display_error(403, "Permission denied", $pde->error); + $total_pages = 0; + $images = []; } catch (SearchTermParseException $stpe) { - // FIXME: display the error somewhere + $this->theme->display_error(400, "Malformed search query", $stpe->error); $total_pages = 0; $images = []; } diff --git a/ext/rss_images/main.php b/ext/rss_images/main.php index 7cba6b3a..a74a7c54 100644 --- a/ext/rss_images/main.php +++ b/ext/rss_images/main.php @@ -27,8 +27,12 @@ class RSSImages extends Extension if (SPEED_HAX && $page_number > 9) { return; } - $images = Image::find_images(($page_number-1)*$page_size, $page_size, $search_terms); - $this->do_rss($images, $search_terms, $page_number); + try { + $images = Image::find_images(($page_number-1)*$page_size, $page_size, $search_terms); + $this->do_rss($images, $search_terms, $page_number); + } catch (PermissionDeniedException $pde) { + $this->theme->display_error(403, "Permission denied", $pde->error); + } } } diff --git a/ext/user/main.php b/ext/user/main.php index 33c4d8d4..d5fb511d 100644 --- a/ext/user/main.php +++ b/ext/user/main.php @@ -385,8 +385,12 @@ class UserPage extends Extension $matches = []; if (preg_match(self::USER_SEARCH_REGEX, $event->term, $matches)) { - $user_id = User::name_to_id($matches[2]); - $event->add_querylet(new Querylet("images.owner_id ${matches[1]}= $user_id")); + try { + $user_id = User::name_to_id($matches[2]); + $event->add_querylet(new Querylet("images.owner_id ${matches[1]}= $user_id")); + } catch (UserDoesNotExist $e) { + $event->add_querylet(new Querylet("1=0")); + } } elseif (preg_match(self::USER_ID_SEARCH_REGEX, $event->term, $matches)) { $user_id = int_escape($matches[2]); $event->add_querylet(new Querylet("images.owner_id ${matches[1]}= $user_id"));