Benefits?->CanReviewArtwork ?? false; $submitterUserId = $GLOBALS['User']?->Benefits?->CanUploadArtwork ? $GLOBALS['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 == ArtworkSort::CreatedNewest){ $sort = null; } if($isReviewerView){ if($status == 'all' || $status === null){ $filterArtworkStatus = 'all-admin'; } } if($isSubmitterView){ if($status == 'all' || $status === null){ $filterArtworkStatus = 'all-submitter'; } if($status == 'unverified'){ $filterArtworkStatus = 'unverified-submitter'; } } if(!$isReviewerView && !$isSubmitterView && !in_array($status, array('all', ArtworkStatus::Approved->value, 'in-use'))){ $status = ArtworkStatus::Approved->value; $filterArtworkStatus = $status; } if($isReviewerView && !in_array($status, array('all', ArtworkStatus::Unverified->value, ArtworkStatus::Declined->value, ArtworkStatus::Approved->value, 'in-use')) && !in_array($filterArtworkStatus, array('all-admin', ArtworkStatus::Unverified->value, ArtworkStatus::Declined->value, ArtworkStatus::Approved->value, 'in-use'))){ $status = ArtworkStatus::Approved->value; $filterArtworkStatus = $status; } if($isSubmitterView && !in_array($status, array('all', ArtworkStatus::Unverified->value, ArtworkStatus::Approved->value, 'in-use')) && !in_array($filterArtworkStatus, array('all-submitter', 'unverified-submitter', ArtworkStatus::Approved->value, 'in-use'))){ $status = ArtworkStatus::Approved->value; $filterArtworkStatus = $status; } if($queryEbookUrl !== null){ $artworks = Db::Query('SELECT * from Artworks where EbookUrl = ? and Status = ? limit 1', [$queryEbookUrl, ArtworkStatus::Approved], 'Artwork'); $totalArtworkCount = sizeof($artworks); } else{ $result = Library::FilterArtwork($query, $filterArtworkStatus, $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($status !== null){ $queryStringParams['status'] = $status; } 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\PageOutOfBoundsException){ $url = '/artworks?page=' . $pages; if($queryStringWithoutPage != ''){ $url .= '&' . $queryStringWithoutPage; } header('Location: ' . $url); exit(); } ?> $pageTitle, 'artwork' => true, 'description' => $pageDescription, 'canonicalUrl' => $canonicalUrl]) ?>

Browse U.S. 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){ ?>