use BookStack\Auth\Permissions\PermissionService;
use BookStack\Auth\User;
-use BookStack\Entities\Chapter;
-use BookStack\Entities\Entity;
-use BookStack\Entities\Page;
+use BookStack\Entities\Models\Chapter;
+use BookStack\Entities\Models\Entity;
+use BookStack\Entities\Models\Page;
+use BookStack\Interfaces\Loggable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Support\Facades\Log;
$this->setNotification($type);
}
+ /**
+ * Add a generic activity event to the database.
+ * @param string|Loggable $detail
+ */
+ public function add(string $type, $detail = '')
+ {
+ if ($detail instanceof Loggable) {
+ $detail = $detail->logDescriptor();
+ }
+
+ $activity = $this->newActivityForUser($type);
+ $activity->detail = $detail;
+ $activity->save();
+ $this->setNotification($type);
+ }
+
/**
* Get a new activity instance for the current user.
*/
public function latest(int $count = 20, int $page = 0): array
{
$activityList = $this->permissionService
- ->filterRestrictedEntityRelations($this->activity, 'activities', 'entity_id', 'entity_type')
+ ->filterRestrictedEntityRelations($this->activity->newQuery(), 'activities', 'entity_id', 'entity_type')
->orderBy('created_at', 'desc')
->with(['user', 'entity'])
->skip($count * $page)
public function userActivity(User $user, int $count = 20, int $page = 0): array
{
$activityList = $this->permissionService
- ->filterRestrictedEntityRelations($this->activity, 'activities', 'entity_id', 'entity_type')
+ ->filterRestrictedEntityRelations($this->activity->newQuery(), 'activities', 'entity_id', 'entity_type')
->orderBy('created_at', 'desc')
->where('user_id', '=', $user->id)
->skip($count * $page)