X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/919660678bec2b94eaa84ac60d0313f5ef07dfb7..refs/pull/3298/head:/app/Actions/Activity.php diff --git a/app/Actions/Activity.php b/app/Actions/Activity.php index 1ae1811e1..3b1408cb9 100644 --- a/app/Actions/Activity.php +++ b/app/Actions/Activity.php @@ -3,53 +3,66 @@ namespace BookStack\Actions; use BookStack\Auth\User; +use BookStack\Entities\Models\Entity; use BookStack\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\MorphTo; +use Illuminate\Support\Str; /** - * @property string key - * @property \User user - * @property \Entity entity - * @property string extra + * @property string $type + * @property User $user + * @property Entity $entity + * @property string $detail + * @property string $entity_type + * @property int $entity_id + * @property int $user_id */ class Activity extends Model { - /** * Get the entity for this activity. */ - public function entity() + public function entity(): MorphTo { if ($this->entity_type === '') { $this->entity_type = null; } + return $this->morphTo('entity'); } /** * Get the user this activity relates to. - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ - public function user() + public function user(): BelongsTo { return $this->belongsTo(User::class); } /** - * Returns text from the language files, Looks up by using the - * activity key. + * Returns text from the language files, Looks up by using the activity key. + */ + public function getText(): string + { + return trans('activities.' . $this->type); + } + + /** + * Check if this activity is intended to be for an entity. */ - public function getText() + public function isForEntity(): bool { - return trans('activities.' . $this->key); + return Str::startsWith($this->type, [ + 'page_', 'chapter_', 'book_', 'bookshelf_', + ]); } /** * Checks if another Activity matches the general information of another. - * @param $activityB - * @return bool */ - public function isSimilarTo($activityB) + public function isSimilarTo(self $activityB): bool { - return [$this->key, $this->entity_type, $this->entity_id] === [$activityB->key, $activityB->entity_type, $activityB->entity_id]; + return [$this->type, $this->entity_type, $this->entity_id] === [$activityB->type, $activityB->entity_type, $activityB->entity_id]; } }