diff --git a/config/activity-log.php b/config/activity-log.php index e4e3e00..5e6c337 100644 --- a/config/activity-log.php +++ b/config/activity-log.php @@ -3,6 +3,8 @@ declare(strict_types=1); return [ + 'activity_model' => \Spatie\Activitylog\Models\Activity::class, + 'default_per_page' => 20, 'pagination_buffer' => 2, 'deduplicate_by_default' => true, diff --git a/src/Timeline/Sources/ActivityLogSource.php b/src/Timeline/Sources/ActivityLogSource.php index 97bc3ad..4c7e0e5 100644 --- a/src/Timeline/Sources/ActivityLogSource.php +++ b/src/Timeline/Sources/ActivityLogSource.php @@ -13,11 +13,21 @@ final class ActivityLogSource extends AbstractTimelineSource { + /** + * Get the activity model class from config or use default + */ + private function getActivityModelClass(): string + { + return config('activity-log.activity_model', ActivityModel::class); + } + public function resolve(Model $subject, Window $window): iterable { throw_if($subject->getKey() === null, DomainException::class, 'ActivityLogSource cannot resolve entries for an unsaved subject.'); - $query = ActivityModel::query() + $modelClass = $this->getActivityModelClass(); + + $query = $modelClass::query() ->with(['causer', 'subject']) ->where('subject_type', $subject->getMorphClass()) ->where('subject_id', $subject->getKey())->latest() diff --git a/src/Timeline/Sources/RelatedActivityLogSource.php b/src/Timeline/Sources/RelatedActivityLogSource.php index 98950ea..d84da61 100644 --- a/src/Timeline/Sources/RelatedActivityLogSource.php +++ b/src/Timeline/Sources/RelatedActivityLogSource.php @@ -14,6 +14,14 @@ final class RelatedActivityLogSource extends AbstractTimelineSource { + /** + * Get the activity model class from config or use default + */ + private function getActivityModelClass(): string + { + return config('activity-log.activity_model', ActivityModel::class); + } + /** * @param array $relations */ @@ -33,7 +41,7 @@ public function resolve(Model $subject, Window $window): iterable $morphClass = (new $relatedClass)->getMorphClass(); /** @var EloquentCollection $rows */ - $rows = $subject->{$relation}()->limit($window->cap)->get(); + $rows = $subject->{$relation}()->get(); foreach ($rows as $row) { $subjectPairs[] = [$morphClass, (string) $row->getKey()]; @@ -45,7 +53,9 @@ public function resolve(Model $subject, Window $window): iterable return; } - $query = ActivityModel::query() + $modelClass = $this->getActivityModelClass(); + + $query = $modelClass::query() ->with(['causer', 'subject']) ->where(function (Builder $q) use ($subjectPairs): void { foreach ($subjectPairs as [$type, $id]) {