From 762caf22aff0bc122f11e518b98b0260db5dff14 Mon Sep 17 00:00:00 2001 From: Sleeps Date: Thu, 11 Jun 2026 14:39:52 +0100 Subject: [PATCH 1/3] Refactor ActivityLogSource to use configurable model --- src/Timeline/Sources/ActivityLogSource.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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() From 9bef3091da7acd5fde2ae886a536afd162561294 Mon Sep 17 00:00:00 2001 From: Sleeps Date: Thu, 11 Jun 2026 14:40:46 +0100 Subject: [PATCH 2/3] Refactor RelatedActivityLogSource to use configurable model --- src/Timeline/Sources/RelatedActivityLogSource.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) 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]) { From fcddc1f454cc891974b8926fd049d12a9bf7c145 Mon Sep 17 00:00:00 2001 From: Sleeps Date: Thu, 11 Jun 2026 14:41:16 +0100 Subject: [PATCH 3/3] Add activity model configuration to activity-log.php --- config/activity-log.php | 2 ++ 1 file changed, 2 insertions(+) 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,