From e1f78e79d7088e958a7384a56f20c83e47b22bf1 Mon Sep 17 00:00:00 2001 From: discomrade Date: Fri, 1 Oct 2021 05:11:37 +0000 Subject: [PATCH] Add catalog thumbnails for file placeholder, handle the first of multiple OP images being deleted Thank you based lewdposter --- templates/themes/catalog/theme.php | 75 ++++++++++++++++++------------ 1 file changed, 46 insertions(+), 29 deletions(-) diff --git a/templates/themes/catalog/theme.php b/templates/themes/catalog/theme.php index 57c7585b..76b4641e 100644 --- a/templates/themes/catalog/theme.php +++ b/templates/themes/catalog/theme.php @@ -68,7 +68,7 @@ { $b->buildUkko(); } - + // FIXME: Check that Ukko2 is actually enabled if ($settings['enable_ukko2'] && ( $action === 'all' || $action === 'post' || @@ -76,7 +76,7 @@ { $b->buildUkko2(); } - + // FIXME: Check that Ukko3 is actually enabled if ($settings['enable_ukko3'] && ( $action === 'all' || $action === 'post' || @@ -185,7 +185,7 @@ $this->saveForBoard($ukkoSettings['uri'], $recent_posts, $config['root'] . $ukkoSettings['uri']); } - + /** * Build and save the HTML of the catalog for the Ukko3 theme */ @@ -224,7 +224,7 @@ $this->saveForBoard($ukkoSettings['uri'], $recent_posts, $config['root'] . $ukkoSettings['uri']); } - + /** * Build and save the HTML of the catalog for the Ukko theme */ @@ -307,11 +307,11 @@ */ public function build($settings, $board_name) { global $config, $board; - if ($board['uri'] != $board_name) { + if ($board['uri'] != $board_name) { if (!openBoard($board_name)) { error(sprintf(_("Board %s doesn't exist"), $board_name)); } - } + } if (array_key_exists($board_name, $this->threadsCache)) { $threads = $this->threadsCache[$board_name]; @@ -356,7 +356,7 @@ $query = prepare($sql); $query->bindValue(':limit', $settings['overboard_limit'], PDO::PARAM_INT); $query->execute() or error(db_error($query)); - + $threads = $query->fetchAll(PDO::FETCH_ASSOC); // Save for posterity $this->threadsCache[$board_name] = $threads; @@ -376,7 +376,7 @@ $page = 0; for ($i = 1; $i <= $totalThreads; $i++) { $pages[$page][] = new Thread($recent_posts[$i-1]); - + // If we have not yet visited all threads, // and we hit the limit on the current page, // skip to the next page @@ -385,15 +385,37 @@ $pages[$page] = array(); } } - + $json = json_encode($api->translateCatalog($pages)); file_write($config['dir']['home'] . $board_name . '/catalog.json', $json); - + $json = json_encode($api->translateCatalog($pages, true)); file_write($config['dir']['home'] . $board_name . '/threads.json', $json); } } + private function filepathForThumb($thumb_or_special, $path_when_file) { + global $config; + + if ($thumb_or_special === 'deleted') { + return $config['root'] . $config['image_deleted']; + } else if ($thumb_or_special === 'spoiler') { + return $config['root'] . $config['spoiler_image']; + } else if ($thumb_or_special === 'file') { + // see twig_extension_filter + $ext = mb_strtolower(mb_substr($path_when_file, mb_strrpos($path_when_file, '.') + 1)); + $icons = $config['file_icons']; + // see templates/post/image.html + if (isset($icons[$ext])) { + return $config['root'] . sprintf($config['file_thumb'], $icons[$ext]); + } else { + return $config['root'] . sprintf($config['file_thumb'], $icons['default']); + } + } else { + return $config['uri_thumb'] . $thumb_or_special; + } + } + private function generateRecentPosts($threads) { global $config, $board; @@ -413,28 +435,23 @@ if (isset($post['files']) && $post['files']) { $files = json_decode($post['files']); - if ($files[0]) { - if ($files[0]->file == 'deleted') { - if (count($files) > 1) { - foreach ($files as $file) { - if (($file == $files[0]) || ($file->file == 'deleted')) - continue; - $post['file'] = $config['uri_thumb'] . $file->thumb; - } - - if (empty($post['file'])) - $post['file'] = $config['root'] . $config['image_deleted']; - } else { - $post['file'] = $config['root'] . $config['image_deleted']; + if (isset($files[0]) && $files[0]) { + $foundone = false; + foreach ($files as $file) { + if ($file->file != 'deleted') { + $post['file'] = $this->filepathForThumb($file->thumb, $file->file); + $foundone = true; + break; } - } else if($files[0]->thumb == 'spoiler') { - $post['file'] = $config['root'] . $config['spoiler_image']; - } else { - $post['file'] = $config['uri_thumb'] . $files[0]->thumb; } + if (!$foundone) { + $post['file'] = $this->filepathForThumb('deleted', null); + } + } else { + $post['file'] = $this->filepathForThumb('deleted', null); } } else { - $post['file'] = $config['root'] . $config['image_deleted']; + $post['file'] = $this->filepathForThumb('deleted', null); } if (empty($post['images'])) @@ -493,6 +510,6 @@ 'config' => $config, 'recent_posts' => $recent_posts, 'board' => $board - ))); + ))); } }