X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/4a872012c5568c59aec7dc9825bee28902ce3431..refs/pull/1688/head:/app/Entities/Entity.php diff --git a/app/Entities/Entity.php b/app/Entities/Entity.php index 7917f83f8..4e54a9e27 100644 --- a/app/Entities/Entity.php +++ b/app/Entities/Entity.php @@ -6,6 +6,7 @@ use BookStack\Actions\Tag; use BookStack\Actions\View; use BookStack\Auth\Permissions\EntityPermission; use BookStack\Auth\Permissions\JointPermission; +use BookStack\Facades\Permissions; use BookStack\Ownable; use Carbon\Carbon; use Illuminate\Database\Eloquent\Relations\MorphMany; @@ -15,7 +16,7 @@ use Illuminate\Database\Eloquent\Relations\MorphMany; * The base class for book-like items such as pages, chapters & books. * This is not a database model in itself but extended. * - * @property integer $id + * @property int $id * @property string $name * @property string $slug * @property Carbon $created_at @@ -91,7 +92,8 @@ class Entity extends Ownable */ public function activity() { - return $this->morphMany(Activity::class, 'entity')->orderBy('created_at', 'desc'); + return $this->morphMany(Activity::class, 'entity') + ->orderBy('created_at', 'desc'); } /** @@ -180,6 +182,14 @@ class Entity extends Ownable return strtolower(static::getClassName()); } + /** + * Get the type of this entity. + */ + public function type(): string + { + return static::getType(); + } + /** * Get an instance of an entity of the given type. * @param $type @@ -229,7 +239,7 @@ class Entity extends Ownable if (mb_strlen($text) > $length) { $text = mb_substr($text, 0, $length-3) . '...'; } - return trim($text); + return trim($text); } /** @@ -250,4 +260,23 @@ class Entity extends Ownable { return $path; } + + /** + * Rebuild the permissions for this entity. + */ + public function rebuildPermissions() + { + /** @noinspection PhpUnhandledExceptionInspection */ + Permissions::buildJointPermissionsForEntity($this); + } + + /** + * Generate and set a new URL slug for this model. + */ + public function refreshSlug(): string + { + $generator = new SlugGenerator($this); + $this->slug = $generator->generate(); + return $this->slug; + } }