X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/c7a2d568bf693add30c8402d68d1f46f09a44c5b..refs/pull/5689/head:/app/Entities/Models/Bookshelf.php diff --git a/app/Entities/Models/Bookshelf.php b/app/Entities/Models/Bookshelf.php index 474ba51cd..9ffa0ea9c 100644 --- a/app/Entities/Models/Bookshelf.php +++ b/app/Entities/Models/Bookshelf.php @@ -1,22 +1,30 @@ -books()->visible(); + return $this->books()->scopes('visible'); } /** * Get the url for this bookshelf. - * @param string|bool $path - * @return string */ - public function getUrl($path = false) + public function getUrl(string $path = ''): string { - if ($path !== false) { - return url('/http/source.bookstackapp.com/shelves/' . urlencode($this->slug) . '/' . trim($path, '/')); - } - return url('/http/source.bookstackapp.com/shelves/' . urlencode($this->slug)); + return url('/http/source.bookstackapp.com/shelves/' . implode('/', [urlencode($this->slug), trim($path, '/')])); } /** - * Returns BookShelf cover image, if cover does not exists return default cover image. - * @param int $width - Width of the image - * @param int $height - Height of the image - * @return string + * Returns shelf cover image, if cover not exists return default cover image. */ - public function getBookCover($width = 440, $height = 250) + public function getBookCover(int $width = 440, int $height = 250): string { // TODO - Make generic, focused on books right now, Perhaps set-up a better image $default = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='; - if (!$this->image_id) { + if (!$this->image_id || !$this->cover) { return $default; } try { - $cover = $this->cover ? url($this->cover->getThumb($width, $height, false)) : $default; - } catch (\Exception $err) { - $cover = $default; + return $this->cover->getThumb($width, $height, false) ?? $default; + } catch (Exception $err) { + return $default; } - return $cover; } /** - * Get the cover image of the shelf + * Get the cover image of the shelf. */ public function cover(): BelongsTo { @@ -82,24 +81,11 @@ class Bookshelf extends Entity implements HasCoverImage */ public function coverImageTypeKey(): string { - return 'cover_shelf'; - } - - /** - * Get an excerpt of this book's description to the specified length or less. - * @param int $length - * @return string - */ - public function getExcerpt(int $length = 100) - { - $description = $this->description; - return mb_strlen($description) > $length ? mb_substr($description, 0, $length-3) . '...' : $description; + return 'cover_bookshelf'; } /** * Check if this shelf contains the given book. - * @param Book $book - * @return bool */ public function contains(Book $book): bool { @@ -108,7 +94,6 @@ class Bookshelf extends Entity implements HasCoverImage /** * Add a book to the end of this shelf. - * @param Book $book */ public function appendBook(Book $book) { @@ -119,4 +104,13 @@ class Bookshelf extends Entity implements HasCoverImage $maxOrder = $this->books()->max('order'); $this->books()->attach($book->id, ['order' => $maxOrder + 1]); } + + /** + * Get a visible shelf by its slug. + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException + */ + public static function getBySlug(string $slug): self + { + return static::visible()->where('slug', '=', $slug)->firstOrFail(); + } }