. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Services\MessageService; use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; /** * Compose messages from an administrator. */ class BroadcastPage implements RequestHandlerInterface { use ViewResponseTrait; private MessageService $message_service; /** * MessagePage constructor. * * @param MessageService $message_service */ public function __construct(MessageService $message_service) { $this->message_service = $message_service; } /** * @param ServerRequestInterface $request * * @return ResponseInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { $recipient_types = $this->message_service->recipientTypes(); $user = Validator::attributes($request)->user(); $to = Validator::attributes($request)->isInArrayKeys($recipient_types)->string('to'); $title = $recipient_types[$to]; $this->layout = 'layouts/administration'; return $this->viewResponse('admin/broadcast', [ 'from' => $user, 'title' => $title, 'to' => $to, 'recipients' => $this->message_service->recipientUsers($to), ]); } }