use BookStack\Entities\Models\Chapter;
use BookStack\Entities\Models\Entity;
use BookStack\Entities\Models\Page;
+use BookStack\Entities\Tools\MixedEntityListLoader;
use BookStack\Permissions\PermissionApplicator;
use BookStack\Users\Models\User;
use Illuminate\Database\Eloquent\Builder;
class ActivityQueries
{
- protected PermissionApplicator $permissions;
-
- public function __construct(PermissionApplicator $permissions)
- {
- $this->permissions = $permissions;
+ public function __construct(
+ protected PermissionApplicator $permissions,
+ protected MixedEntityListLoader $listLoader,
+ ) {
}
/**
public function latest(int $count = 20, int $page = 0): array
{
$activityList = $this->permissions
- ->restrictEntityRelationQuery(Activity::query(), 'activities', 'entity_id', 'entity_type')
+ ->restrictEntityRelationQuery(Activity::query(), 'activities', 'loggable_id', 'loggable_type')
->orderBy('created_at', 'desc')
- ->with(['user', 'entity'])
+ ->with(['user'])
->skip($count * $page)
->take($count)
->get();
+ $this->listLoader->loadIntoRelations($activityList->all(), 'loggable', false);
+
return $this->filterSimilar($activityList);
}
$query->where(function (Builder $query) use ($queryIds) {
foreach ($queryIds as $morphClass => $idArr) {
$query->orWhere(function (Builder $innerQuery) use ($morphClass, $idArr) {
- $innerQuery->where('entity_type', '=', $morphClass)
- ->whereIn('entity_id', $idArr);
+ $innerQuery->where('loggable_type', '=', $morphClass)
+ ->whereIn('loggable_id', $idArr);
});
}
});
$activity = $query->orderBy('created_at', 'desc')
- ->with(['entity' => function (Relation $query) {
+ ->with(['loggable' => function (Relation $query) {
$query->withTrashed();
}, 'user.avatar'])
->skip($count * ($page - 1))
public function userActivity(User $user, int $count = 20, int $page = 0): array
{
$activityList = $this->permissions
- ->restrictEntityRelationQuery(Activity::query(), 'activities', 'entity_id', 'entity_type')
+ ->restrictEntityRelationQuery(Activity::query(), 'activities', 'loggable_id', 'loggable_type')
->orderBy('created_at', 'desc')
->where('user_id', '=', $user->id)
->skip($count * $page)