2023-07-19 18:03:05 +08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace BookStack\Activity\Notifications\Handlers;
|
|
|
|
|
2023-08-15 21:39:39 +08:00
|
|
|
use BookStack\Activity\Models\Activity;
|
2023-07-19 18:03:05 +08:00
|
|
|
use BookStack\Activity\Models\Loggable;
|
2023-08-04 23:51:29 +08:00
|
|
|
use BookStack\Activity\Notifications\Messages\PageCreationNotification;
|
2023-08-04 19:27:29 +08:00
|
|
|
use BookStack\Activity\Tools\EntityWatchers;
|
|
|
|
use BookStack\Activity\WatchLevels;
|
2023-08-04 23:51:29 +08:00
|
|
|
use BookStack\Entities\Models\Page;
|
2023-08-04 19:27:29 +08:00
|
|
|
use BookStack\Users\Models\User;
|
2023-07-19 18:03:05 +08:00
|
|
|
|
2023-08-05 21:19:23 +08:00
|
|
|
class PageCreationNotificationHandler extends BaseNotificationHandler
|
2023-07-19 18:03:05 +08:00
|
|
|
{
|
2023-08-15 21:39:39 +08:00
|
|
|
public function handle(Activity $activity, Loggable|string $detail, User $user): void
|
2023-07-19 18:03:05 +08:00
|
|
|
{
|
2023-08-04 23:51:29 +08:00
|
|
|
if (!($detail instanceof Page)) {
|
|
|
|
throw new \InvalidArgumentException("Detail for page create notifications must be a page");
|
|
|
|
}
|
2023-08-04 19:27:29 +08:00
|
|
|
|
|
|
|
$watchers = new EntityWatchers($detail, WatchLevels::NEW);
|
2023-08-15 21:39:39 +08:00
|
|
|
$this->sendNotificationToUserIds(PageCreationNotification::class, $watchers->getWatcherUserIds(), $user, $detail, $detail);
|
2023-07-19 18:03:05 +08:00
|
|
|
}
|
|
|
|
}
|