X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/f413fc528a8136c2ad8d33a57b3615fa22e55e93..refs/pull/3193/head:/app/Actions/Activity.php diff --git a/app/Actions/Activity.php b/app/Actions/Activity.php index 05f0129dd..3b1408cb9 100644 --- a/app/Actions/Activity.php +++ b/app/Actions/Activity.php @@ -3,58 +3,66 @@ namespace BookStack\Actions; use BookStack\Auth\User; -use BookStack\Entities\Entity; +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 string $type + * @property User $user * @property Entity $entity - * @property string $extra + * @property string $detail * @property string $entity_type - * @property int $entity_id - * @property int $user_id - * @property int $book_id + * @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]; } }