diff --git a/actions/DisplayAction.php b/actions/DisplayAction.php index 54782edc..93813004 100644 --- a/actions/DisplayAction.php +++ b/actions/DisplayAction.php @@ -112,6 +112,15 @@ class DisplayAction implements ActionInterface $input = array_diff_key($requestArray, array_fill_keys($remove, '')); $bridge->setInput($input); $bridge->collectData(); + $items = $bridge->getItems(); + if (isset($items[0]) && is_array($items[0])) { + $feedItems = []; + foreach ($items as $item) { + $feedItems[] = FeedItem::fromArray($item); + } + $items = $feedItems; + } + $feed = $bridge->getFeed(); } catch (\Exception $e) { // Probably an exception inside a bridge if ($e instanceof HttpException) { @@ -145,16 +154,6 @@ class DisplayAction implements ActionInterface } } - $items = $bridge->getItems(); - if (isset($items[0]) && is_array($items[0])) { - $feedItems = []; - foreach ($items as $item) { - $feedItems[] = FeedItem::fromArray($item); - } - $items = $feedItems; - } - $feed = $bridge->getFeed(); - $formatFactory = new FormatFactory(); $format = $formatFactory->create($format); diff --git a/bridges/GelbooruBridge.php b/bridges/GelbooruBridge.php index 5fc6b33c..96d16bf9 100644 --- a/bridges/GelbooruBridge.php +++ b/bridges/GelbooruBridge.php @@ -33,7 +33,7 @@ class GelbooruBridge extends BridgeAbstract return $this->getURI() . 'index.php?&page=dapi&s=post&q=index&json=1&pid=' . $this->getInput('p') . '&limit=' . $this->getInput('l') - . '&tags=' . urlencode($this->getInput('t')); + . '&tags=' . urlencode($this->getInput('t') ?? ''); } /* @@ -76,18 +76,16 @@ class GelbooruBridge extends BridgeAbstract public function collectData() { - $content = getContents($this->getFullURI()); - // $content is empty string + $url = $this->getFullURI(); + $content = getContents($url); - // Most other Gelbooru-based boorus put their content in the root of - // the JSON. This check is here for Bridges that inherit from this one - $posts = json_decode($content); - if (isset($posts->post)) { - $posts = $posts->post; + if ($content === '') { + return; } - if (is_null($posts)) { - returnServerError('No posts found.'); + $posts = Json::decode($content, false); + if (isset($posts->post)) { + $posts = $posts->post; } foreach ($posts as $post) {