X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/3286f29a61833327b5701b28db626d0a480b07f9..refs/pull/1688/head:/app/Entities/Entity.php diff --git a/app/Entities/Entity.php b/app/Entities/Entity.php index d648f68e4..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'); } /** @@ -102,11 +104,6 @@ class Entity extends Ownable return $this->morphMany(View::class, 'viewable'); } - public function viewCountQuery() - { - return $this->views()->selectRaw('viewable_id, sum(views) as view_count')->groupBy('viewable_id'); - } - /** * Get the Tag models that have been user assigned to this entity. * @return \Illuminate\Database\Eloquent\Relations\MorphMany @@ -185,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 @@ -234,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); } /** @@ -255,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; + } }