use BookStack\Auth\Permissions\PermissionService;
use BookStack\Entities\Models\Entity;
use BookStack\Interfaces\Loggable;
+use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Log;
class ActivityLogger
$activity->save();
$this->setNotification($type);
+ $this->dispatchWebhooks($type, $detail);
}
/**
/**
* Flashes a notification message to the session if an appropriate message is available.
*/
- protected function setNotification(string $type)
+ protected function setNotification(string $type): void
{
$notificationTextKey = 'activities.' . $type . '_notification';
if (trans()->has($notificationTextKey)) {
}
}
+ /**
+ * @param string|Loggable $detail
+ */
+ protected function dispatchWebhooks(string $type, $detail): void
+ {
+ $webhooks = Webhook::query()
+ ->whereHas('trackedEvents', function (Builder $query) use ($type) {
+ $query->where('event', '=', $type)
+ ->orWhere('event', '=', 'all');
+ })
+ ->where('active', '=', true)
+ ->get();
+
+ foreach ($webhooks as $webhook) {
+ dispatch(new DispatchWebhookJob($webhook, $type, $detail));
+ }
+ }
+
/**
* Log out a failed login attempt, Providing the given username
* as part of the message if the '%u' string is used.