use BookStack\Entities\Tools\SearchIndex;
use BookStack\Entities\Tools\SlugGenerator;
use BookStack\Facades\Permissions;
+use BookStack\Interfaces\Deletable;
use BookStack\Interfaces\Favouritable;
+use BookStack\Interfaces\Loggable;
use BookStack\Interfaces\Sluggable;
use BookStack\Interfaces\Viewable;
use BookStack\Model;
* @property string $slug
* @property Carbon $created_at
* @property Carbon $updated_at
+ * @property Carbon $deleted_at
* @property int $created_by
* @property int $updated_by
* @property bool $restricted
* @method static Builder withLastView()
* @method static Builder withViewCount()
*/
-abstract class Entity extends Model implements Sluggable, Favouritable, Viewable
+abstract class Entity extends Model implements Sluggable, Favouritable, Viewable, Deletable, Loggable
{
use SoftDeletes;
use HasCreatorAndUpdater;
return true;
}
- if (($entity->isA('chapter') || $entity->isA('page')) && $this->isA('book')) {
+ if (($entity instanceof BookChild) && $this instanceof Book) {
return $entity->book_id === $this->id;
}
- if ($entity->isA('page') && $this->isA('chapter')) {
+ if ($entity instanceof Page && $this instanceof Chapter) {
return $entity->chapter_id === $this->id;
}
/**
* Check if this instance or class is a certain type of entity.
* Examples of $type are 'page', 'book', 'chapter'.
+ *
+ * @deprecated Use instanceof instead.
*/
public static function isA(string $type): bool
{
return mb_substr($this->name, 0, $length - 3) . '...';
}
- /**
- * Get the body text of this entity.
- */
- public function getText(): string
- {
- return $this->{$this->textField} ?? '';
- }
-
/**
* Get an excerpt of this entity's descriptive content to the specified length.
*/
public function getExcerpt(int $length = 100): string
{
- $text = $this->getText();
+ $text = $this->{$this->textField} ?? '';
if (mb_strlen($text) > $length) {
$text = mb_substr($text, 0, $length - 3) . '...';
->where('user_id', '=', user()->id)
->exists();
}
+
+ /**
+ * {@inheritdoc}
+ */
+ public function logDescriptor(): string
+ {
+ return "({$this->id}) {$this->name}";
+ }
}