mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-10-01 01:36:00 -04:00
c7a2d568bf
Tools seems to fit better since the classes were a bit of a mixed bunch and did not always manage. Also simplified the structure of the SlugGenerator class. Also focused EntityContext on shelves and simplified to use session helper.
43 lines
1.0 KiB
PHP
43 lines
1.0 KiB
PHP
<?php namespace BookStack\Entities\Tools;
|
|
|
|
use BookStack\Entities\Book;
|
|
use BookStack\Entities\Bookshelf;
|
|
|
|
class ShelfContext
|
|
{
|
|
protected $KEY_SHELF_CONTEXT_ID = 'context_bookshelf_id';
|
|
|
|
/**
|
|
* Get the current bookshelf context for the given book.
|
|
*/
|
|
public function getContextualShelfForBook(Book $book): ?Bookshelf
|
|
{
|
|
$contextBookshelfId = session()->get($this->KEY_SHELF_CONTEXT_ID, null);
|
|
|
|
if (!is_int($contextBookshelfId)) {
|
|
return null;
|
|
}
|
|
|
|
$shelf = Bookshelf::visible()->find($contextBookshelfId);
|
|
$shelfContainsBook = $shelf && $shelf->contains($book);
|
|
|
|
return $shelfContainsBook ? $shelf : null;
|
|
}
|
|
|
|
/**
|
|
* Store the current contextual shelf ID.
|
|
*/
|
|
public function setShelfContext(int $shelfId)
|
|
{
|
|
session()->put($this->KEY_SHELF_CONTEXT_ID, $shelfId);
|
|
}
|
|
|
|
/**
|
|
* Clear the session stored shelf context id.
|
|
*/
|
|
public function clearShelfContext()
|
|
{
|
|
session()->forget($this->KEY_SHELF_CONTEXT_ID);
|
|
}
|
|
}
|