mirror of
https://github.com/standardebooks/web.git
synced 2025-07-21 23:04:57 -04:00
Merge admin pages with regular pages for art system
This commit is contained in:
parent
52033320e1
commit
b99d2aac1a
15 changed files with 348 additions and 441 deletions
|
@ -21,6 +21,7 @@ use function Safe\sprintf;
|
|||
* @property Ebook $Ebook
|
||||
* @property Museum $Museum
|
||||
* @property User $Submitter
|
||||
* @property User $Reviewer
|
||||
* @property ?ImageMimeType $MimeType
|
||||
*/
|
||||
class Artwork extends PropertiesBase{
|
||||
|
@ -80,6 +81,14 @@ class Artwork extends PropertiesBase{
|
|||
return $this->_Submitter;
|
||||
}
|
||||
|
||||
protected function GetReviewer(): User{
|
||||
if($this->_Reviewer === null){
|
||||
$this->_Reviewer = User::Get($this->ReviewerUserId);
|
||||
}
|
||||
|
||||
return $this->_Reviewer;
|
||||
}
|
||||
|
||||
protected function GetUrl(): string{
|
||||
if($this->_Url === null){
|
||||
$this->_Url = '/artworks/' . $this->Artist->UrlName . '/' . $this->UrlName;
|
||||
|
@ -579,27 +588,4 @@ class Artwork extends PropertiesBase{
|
|||
|
||||
return $result[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a publically available Artwork, i.e., with approved or in_use status.
|
||||
* Artwork with status unverifed and declined aren't available by URL.
|
||||
*/
|
||||
/**
|
||||
* @throws \Exceptions\InvalidArtworkException
|
||||
*/
|
||||
public static function GetByUrlAndIsApproved(string $artistUrlName, string $artworkUrlName): Artwork{
|
||||
$result = Db::Query('
|
||||
SELECT Artworks.*
|
||||
from Artworks
|
||||
inner join Artists using (ArtistId)
|
||||
where Status in ("approved", "in_use") and
|
||||
Artists.UrlName = ? and Artworks.UrlName = ?
|
||||
', [$artistUrlName, $artworkUrlName], 'Artwork');
|
||||
|
||||
if(sizeof($result) == 0){
|
||||
throw new Exceptions\ArtworkNotFoundException();
|
||||
}
|
||||
|
||||
return $result[0];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -159,18 +159,6 @@ class Library{
|
|||
return self::GetFromApcu('tags');
|
||||
}
|
||||
|
||||
/**
|
||||
* Browsable Artwork can be displayed publically, e.g., at /artworks.
|
||||
* Unverified and declined Artwork shouldn't be browsable.
|
||||
* @return array<Artwork>
|
||||
*/
|
||||
private static function GetBrowsableArtwork(): array{
|
||||
return Db::Query('
|
||||
SELECT *
|
||||
from Artworks
|
||||
where Status in ("approved", "in_use")', [], 'Artwork');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $query
|
||||
* @param string $status
|
||||
|
@ -178,30 +166,37 @@ class Library{
|
|||
* @return array<Artwork>
|
||||
*/
|
||||
public static function FilterArtwork(string $query = null, string $status = null, string $sort = null): array{
|
||||
$artworks = Library::GetBrowsableArtwork();
|
||||
// Possible special statuses:
|
||||
// null: same as "all"
|
||||
// "all": Show all approved and in use artwork
|
||||
// "all-admin": Show all artwork regardless of status
|
||||
|
||||
$artworks = [];
|
||||
|
||||
if($status === null || $status == 'all'){
|
||||
$artworks = Db::Query('
|
||||
SELECT *
|
||||
from Artworks
|
||||
where Status in ("approved", "in_use")', [], 'Artwork');
|
||||
}
|
||||
elseif($status == 'all-admin'){
|
||||
$artworks = Db::Query('
|
||||
SELECT *
|
||||
from Artworks', [], 'Artwork');
|
||||
}
|
||||
else{
|
||||
$artworks = Db::Query('
|
||||
SELECT *
|
||||
from Artworks
|
||||
where Status = ?', [$status], 'Artwork');
|
||||
}
|
||||
|
||||
$matches = $artworks;
|
||||
|
||||
if($sort === null){
|
||||
$sort = SORT_COVER_ARTWORK_CREATED_NEWEST;
|
||||
}
|
||||
|
||||
if(in_array($status, [COVER_ARTWORK_STATUS_APPROVED, COVER_ARTWORK_STATUS_IN_USE], true)){
|
||||
$matches = [];
|
||||
foreach($artworks as $artwork){
|
||||
if($status === $artwork->Status){
|
||||
$matches[] = $artwork;
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
$matches = [];
|
||||
foreach($artworks as $artwork){
|
||||
if(in_array($artwork->Status, [COVER_ARTWORK_STATUS_APPROVED, COVER_ARTWORK_STATUS_IN_USE], true)){
|
||||
$matches[] = $artwork;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($query !== null){
|
||||
$filteredMatches = [];
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue