Artwork system: More options for reviewers submitting new artwork

This commit is contained in:
Alex Cabal 2024-01-07 14:01:41 -06:00
parent 8e955bf357
commit 017baef7d3
6 changed files with 66 additions and 37 deletions

View file

@ -309,6 +309,15 @@ class Artwork extends PropertiesBase{
$error->Add(new Exceptions\InvalidMimeTypeException());
}
// Check the ebook www filesystem path.
// We don't check if it exists, because the book might not be published yet.
// But we do a basic check that the string includes one _. It might not include a dash, for example anonymous_poetry
if($this->EbookWwwFilesystemPath !== null){
if(mb_stripos($this->EbookWwwFilesystemPath, '_') === false){
$error->Add(new Exceptions\InvalidEbookException('Invalid ebook. Expected file system slug like “c-s-lewis_poetry”.'));
}
}
// Check for existing Artwork objects with the same URL but different Artwork IDs.
try{
$existingArtwork = Artwork::GetByUrl($this->Artist->UrlName, $this->UrlName);

View file

@ -273,21 +273,27 @@ class Library{
try{
$results = apcu_fetch($variable);
}
catch(Safe\Exceptions\ApcuException){
Library::RebuildCache();
catch(Safe\Exceptions\ApcuException $ex){
try{
$results = apcu_fetch($variable);
// If we can't fetch this variable, rebuild the whole cache.
apcu_fetch('is-cache-fresh');
}
catch(Safe\Exceptions\ApcuException){
// We can get here if the cache is currently rebuilding from a different process.
// Nothing we can do but wait, so wait 20 seconds before retrying
sleep(20);
catch(Safe\Exceptions\ApcuException $ex){
Library::RebuildCache();
try{
$results = apcu_fetch($variable);
}
catch(Safe\Exceptions\ApcuException){
// Cache STILL rebuilding... give up silently for now
// We can get here if the cache is currently rebuilding from a different process.
// Nothing we can do but wait, so wait 20 seconds before retrying
sleep(20);
try{
$results = apcu_fetch($variable);
}
catch(Safe\Exceptions\ApcuException){
// Cache STILL rebuilding... give up silently for now
}
}
}
}
@ -686,6 +692,8 @@ class Library{
}
apcu_delete($lockVar);
apcu_store('is-cache-fresh', true);
}
/**