Benefits?->CanReviewArtwork ?? false; $submitterUserId = Session::$User?->Benefits?->CanUploadArtwork ? Session::$User->UserId : null; $isSubmitterView = !$isReviewerView && $submitterUserId !== null; try{ if($page <= 0){ $page = 1; } if($perPage != ARTWORK_PER_PAGE && $perPage != 40 && $perPage != 80){ $perPage = ARTWORK_PER_PAGE; } // If we're passed string values that are the same as the defaults, set them to null so that we can have cleaner query strings in the navigation footer. if($sort == Enums\ArtworkSortType::CreatedNewest){ $sort = null; } if($isReviewerView){ if($artworkFilterType == Enums\ArtworkFilterType::All || $artworkFilterType === null){ $artworkFilterType = Enums\ArtworkFilterType::Admin; } if($artworkFilterType == Enums\ArtworkFilterType::UnverifiedSubmitter){ $artworkFilterType = Enums\ArtworkFilterType::Unverified; } } if($isSubmitterView){ if($artworkFilterType == Enums\ArtworkFilterType::All || $artworkFilterType === null){ $artworkFilterType = Enums\ArtworkFilterType::ApprovedSubmitter; } if($artworkFilterType == Enums\ArtworkFilterType::Unverified){ $artworkFilterType = Enums\ArtworkFilterType::UnverifiedSubmitter; } } if( !$isReviewerView && !$isSubmitterView && !in_array($artworkFilterType, [Enums\ArtworkFilterType::Approved, Enums\ArtworkFilterType::ApprovedNotInUse, Enums\ArtworkFilterType::ApprovedInUse]) ){ $artworkFilterType = Enums\ArtworkFilterType::Approved; } if( $isSubmitterView && !in_array($artworkFilterType, [Enums\ArtworkFilterType::ApprovedSubmitter, Enums\ArtworkFilterType::UnverifiedSubmitter, Enums\ArtworkFilterType::ApprovedInUse, Enums\ArtworkFilterType::ApprovedNotInUse]) ){ $artworkFilterType = Enums\ArtworkFilterType::ApprovedSubmitter; } if($queryEbookUrl !== null){ // We're being called from the `review` script, and we're only interested if the artwork exists for this URL. $artworks[] = Db::Query('SELECT * from Artworks where EbookUrl = ? and Status = ? limit 1', [$queryEbookUrl, Enums\ArtworkStatusType::Approved], Artwork::class)[0] ?? throw new Exceptions\ArtworkNotFoundException(); $totalArtworkCount = 1; } else{ $result = Artwork::GetAllByFilter($query, $artworkFilterType, $sort, $submitterUserId, $page, $perPage); $artworks = $result['artworks']; $totalArtworkCount = $result['artworksCount']; } $pageTitle = 'Browse Artwork'; if($page > 1){ $pageTitle .= ', page ' . $page; } $pageDescription = 'Page ' . $page . ' of artwork'; $queryStringParams = []; if($query !== null && $query != ''){ $queryStringParams['query'] = $query; } if($artworkFilterType !== null){ $queryStringParams['status'] = $artworkFilterType->value; } if($sort !== null){ $queryStringParams['sort'] = $sort->value; } if($perPage !== ARTWORK_PER_PAGE){ $queryStringParams['per-page'] = $perPage; } if($page > 1){ $queryStringParams['page'] = $page; } ksort($queryStringParams); $queryString = http_build_query($queryStringParams); unset($queryStringParams['page']); $queryStringWithoutPage = http_build_query($queryStringParams); $canonicalUrl = SITE_URL . '/artworks'; if($queryString != ''){ $canonicalUrl .= '?' . $queryString; } $pages = ceil($totalArtworkCount / $perPage); if($pages > 0 && $page > $pages){ throw new Exceptions\PageOutOfBoundsException(); } } catch(Exceptions\ArtworkNotFoundException){ Template::Emit404(); } catch(Exceptions\PageOutOfBoundsException){ $url = '/artworks?page=' . $pages; if($queryStringWithoutPage != ''){ $url .= '&' . $queryStringWithoutPage; } header('Location: ' . $url); exit(); } ?> $pageTitle, 'css' => ['/css/artwork.css'], 'description' => $pageDescription, 'canonicalUrl' => $canonicalUrl]) ?>

Browse U.S. Public Domain Artwork

Benefits->CanUploadArtwork){ ?> Submit new public domain artwork. You can help Standard Ebooks by submitting new public domain artwork to add to this catalog for use in future ebooks. For free access to the submission form, contact the Editor-in-Chief.

No artwork matched your filters. You can try different filters, or browse all artwork.

$artworks]) ?> 0){ ?>