diff --git a/lib/Ebook.php b/lib/Ebook.php
index 3b30bedd..8ac4c3da 100644
--- a/lib/Ebook.php
+++ b/lib/Ebook.php
@@ -41,7 +41,7 @@ use function Safe\shell_exec;
* @property string $TextSinglePageUrl
* @property string $TextSinglePageSizeFormatted
* @property string $IndexableText
- * @property EbookPlaceholder $EbookPlaceholder
+ * @property ?EbookPlaceholder $EbookPlaceholder
*/
class Ebook{
use Traits\Accessor;
diff --git a/templates/EbookGrid.php b/templates/EbookGrid.php
index 404cb98a..fb2b679a 100644
--- a/templates/EbookGrid.php
+++ b/templates/EbookGrid.php
@@ -12,7 +12,7 @@ $collection = $collection ?? null;
} ?>
foreach($ebooks as $ebook){ ?>
-
resource="= $ebook->Url ?>" property="schema:hasPart" if($ebook->GetCollectionPosition($collection) !== null){ ?> value="= $ebook->GetCollectionPosition($collection) ?>" } ?> }else{ ?> about="= $ebook->Url ?>" } ?> if($ebook->EbookPlaceholder?->IsWanted){ ?> class="ribbon if($ebook->EbookPlaceholder?->Status == \Enums\EbookPlaceholderStatus::InProgress){ ?>in-progress }else{ ?>wanted } ?>" }elseif($ebook->EbookPlaceholder !== null && !$ebook->EbookPlaceholder->IsPublicDomain){ ?> class="ribbon not-pd" } ?>>
+ resource="= $ebook->Url ?>" property="schema:hasPart" if($ebook->GetCollectionPosition($collection) !== null){ ?> value="= $ebook->GetCollectionPosition($collection) ?>" } ?> }else{ ?> about="= $ebook->Url ?>" } ?> if($ebook->EbookPlaceholder?->IsWanted){ ?> class="ribbon if($ebook->EbookPlaceholder->Status == \Enums\EbookPlaceholderStatus::InProgress){ ?>in-progress }else{ ?>wanted } ?>" }elseif($ebook->EbookPlaceholder !== null && !$ebook->EbookPlaceholder->IsPublicDomain){ ?> class="ribbon not-pd" } ?>>
if($collection !== null && $ebook->GetCollectionPosition($collection) !== null){ ?>
} ?>
diff --git a/www/ebook-placeholders/get.php b/www/ebook-placeholders/get.php
index 92bd4155..ecf8f4ed 100644
--- a/www/ebook-placeholders/get.php
+++ b/www/ebook-placeholders/get.php
@@ -7,6 +7,10 @@ $ebook = null;
try{
$ebook = Ebook::GetByIdentifier($identifier);
+
+ if($ebook->EbookPlaceholder === null){
+ throw new Exceptions\EbookNotFoundException();
+ }
}
catch(Exceptions\EbookNotFoundException){
Template::Emit404();
diff --git a/www/ebook-placeholders/new.php b/www/ebook-placeholders/new.php
index c2416c55..ac6fb2a0 100644
--- a/www/ebook-placeholders/new.php
+++ b/www/ebook-placeholders/new.php
@@ -19,19 +19,23 @@ try{
if($isCreated){
// We got here because an `Ebook` was successfully created.
http_response_code(Enums\HttpCode::Created->value);
- $createdEbook = clone $ebook;
+ if($ebook !== null){
+ $createdEbook = clone $ebook;
- if(sizeof($ebook->CollectionMemberships) > 0){
- // If the `EbookPlaceholder` we just added is part of a collection, prefill the form with the same data to make it easier to submit series.
- unset($ebook->EbookId);
- unset($ebook->Title);
- $ebook->EbookPlaceholder->YearPublished = null;
- foreach($ebook->CollectionMemberships as $collectionMembership){
- $collectionMembership->SequenceNumber++;
+ if(sizeof($ebook->CollectionMemberships) > 0){
+ // If the `EbookPlaceholder` we just added is part of a collection, prefill the form with the same data to make it easier to submit series.
+ unset($ebook->EbookId);
+ unset($ebook->Title);
+ if($ebook->EbookPlaceholder !== null){
+ $ebook->EbookPlaceholder->YearPublished = null;
+ }
+ foreach($ebook->CollectionMemberships as $collectionMembership){
+ $collectionMembership->SequenceNumber++;
+ }
+ }
+ else{
+ $ebook = null;
}
- }
- else{
- $ebook = null;
}
session_unset();