artworks_grid.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. const ARTWORKS_PER_PAGE = 24;
  3. function render_artworks_grid($artworks_uncensored, $show_author = false, $collapsed = false, $reload_btn = false) {
  4. $artworks = [];
  5. foreach ($artworks_uncensored as $artwork) {
  6. if (!artwork_is_hidden($artwork)) array_push($artworks, $artwork);
  7. }
  8. if (!$artworks) { ?>
  9. <p><?= get_string($artworks_uncensored ? 'all-hidden' : 'no-works') ?></p><?php
  10. return;
  11. }
  12. $page_count = $collapsed ? ceil(count($artworks) / ARTWORKS_PER_PAGE) : 1;
  13. render_collapsed_content(
  14. $page_count,
  15. get_string('load-more'),
  16. function($page) use ($page_count, $artworks, $show_author, $collapsed, $reload_btn) {
  17. $artworks_in_page = $collapsed ? array_slice($artworks, $page * ARTWORKS_PER_PAGE, ARTWORKS_PER_PAGE) : $artworks; ?>
  18. <div class="grid"><?php
  19. foreach ($artworks_in_page as $artwork) { ?>
  20. <div>
  21. <a class="thumbnail" href="<?= BASE_URL ?>/artworks/<?= $artwork->id ?>">
  22. <div class="extra-info"><?php
  23. $restrict_type = get_xrestrict_string($artwork->xRestrict);
  24. if ($restrict_type) { ?>
  25. <div class="content-warning"><?= $restrict_type ?></div><?php
  26. }
  27. if ($artwork->pageCount > 1) { ?>
  28. <div class="page-count">&#128461; <?= $artwork->pageCount ?></div><?php
  29. }
  30. else if ($artwork->illustType == 2) { ?>
  31. <div class="page-count">&#9654;</div><?php
  32. } ?>
  33. </div>
  34. <img loading="lazy" src="<?= get_proxy_url($artwork->url) ?>" alt="<?= htmlspecialchars($artwork->alt); ?>">
  35. </a>
  36. <a class="title" href="<?= BASE_URL ?>/artworks/<?= $artwork->id ?>">
  37. <b><?= htmlspecialchars($artwork->title); ?></b>
  38. </a><?php
  39. if ($show_author) { ?>
  40. <a class="author" href="<?= BASE_URL ?>/users/<?= $artwork->userId ?>">
  41. <img class="avatar" loading="lazy" src="<?= get_proxy_url($artwork->profileImageUrl) ?>" alt=" ">
  42. <div class="username"><?= htmlspecialchars($artwork->userName); ?></div>
  43. </a><?php
  44. } ?>
  45. </div><?php
  46. } ?>
  47. </div><?php
  48. if ($page == $page_count - 1 && $reload_btn) { ?>
  49. <p class="center">
  50. <a href="" class="button"><?= get_string('discovery.reload') ?></a>
  51. </p><?php
  52. }
  53. }
  54. );
  55. }