namespace BookStack\Actions;
-use BookStack\Auth\Permissions\PermissionService;
use BookStack\Entities\Models\Entity;
+use BookStack\Facades\Theme;
use BookStack\Interfaces\Loggable;
+use BookStack\Theming\ThemeEvents;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Log;
class ActivityLogger
{
- protected $permissionService;
-
- public function __construct(PermissionService $permissionService)
- {
- $this->permissionService = $permissionService;
- }
-
/**
* Add a generic activity event to the database.
*
}
$activity->save();
+
$this->setNotification($type);
$this->dispatchWebhooks($type, $detail);
+ Theme::dispatch(ThemeEvents::ACTIVITY_LOGGED, $type, $detail);
}
/**
*/
protected function newActivityForUser(string $type): Activity
{
- $ip = request()->ip() ?? '';
-
return (new Activity())->forceFill([
'type' => strtolower($type),
'user_id' => user()->id,
- 'ip' => config('app.env') === 'demo' ? '127.0.0.1' : $ip,
+ 'ip' => IpFormatter::fromCurrentRequest()->format(),
]);
}
protected function dispatchWebhooks(string $type, $detail): void
{
$webhooks = Webhook::query()
- ->whereHas('trackedEvents', function(Builder $query) use ($type) {
+ ->whereHas('trackedEvents', function (Builder $query) use ($type) {
$query->where('event', '=', $type)
->orWhere('event', '=', 'all');
})