18e0e1b25SGreg Roach<?php 28e0e1b25SGreg Roach 38e0e1b25SGreg Roach/** 48e0e1b25SGreg Roach * webtrees: online genealogy 5*5bfc6897SGreg Roach * Copyright (C) 2022 webtrees development team 68e0e1b25SGreg Roach * This program is free software: you can redistribute it and/or modify 78e0e1b25SGreg Roach * it under the terms of the GNU General Public License as published by 88e0e1b25SGreg Roach * the Free Software Foundation, either version 3 of the License, or 98e0e1b25SGreg Roach * (at your option) any later version. 108e0e1b25SGreg Roach * This program is distributed in the hope that it will be useful, 118e0e1b25SGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of 128e0e1b25SGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 138e0e1b25SGreg Roach * GNU General Public License for more details. 148e0e1b25SGreg Roach * You should have received a copy of the GNU General Public License 1589f7189bSGreg Roach * along with this program. If not, see <https://www.gnu.org/licenses/>. 168e0e1b25SGreg Roach */ 178e0e1b25SGreg Roach 188e0e1b25SGreg Roachdeclare(strict_types=1); 198e0e1b25SGreg Roach 208e0e1b25SGreg Roachnamespace Fisharebest\Webtrees\Http\RequestHandlers; 218e0e1b25SGreg Roach 228e0e1b25SGreg Roachuse Fisharebest\Webtrees\Module\ModuleBlockInterface; 238e0e1b25SGreg Roachuse Fisharebest\Webtrees\Services\HomePageService; 24b55cbc6bSGreg Roachuse Fisharebest\Webtrees\Validator; 258e0e1b25SGreg Roachuse Illuminate\Database\Capsule\Manager as DB; 268e0e1b25SGreg Roachuse Psr\Http\Message\ResponseInterface; 278e0e1b25SGreg Roachuse Psr\Http\Message\ServerRequestInterface; 288e0e1b25SGreg Roachuse Psr\Http\Server\RequestHandlerInterface; 298e0e1b25SGreg Roach 308e0e1b25SGreg Roachuse function response; 318e0e1b25SGreg Roachuse function view; 328e0e1b25SGreg Roach 338e0e1b25SGreg Roach/** 347893c81aSGreg Roach * Load block asynchronously. 358e0e1b25SGreg Roach */ 368e0e1b25SGreg Roachclass TreePageBlock implements RequestHandlerInterface 378e0e1b25SGreg Roach{ 38c4943cffSGreg Roach private HomePageService $home_page_service; 398e0e1b25SGreg Roach 408e0e1b25SGreg Roach /** 418e0e1b25SGreg Roach * @param HomePageService $home_page_service 428e0e1b25SGreg Roach */ 438e0e1b25SGreg Roach public function __construct(HomePageService $home_page_service) 448e0e1b25SGreg Roach { 458e0e1b25SGreg Roach $this->home_page_service = $home_page_service; 468e0e1b25SGreg Roach } 478e0e1b25SGreg Roach 488e0e1b25SGreg Roach /** 498e0e1b25SGreg Roach * @param ServerRequestInterface $request 508e0e1b25SGreg Roach * 518e0e1b25SGreg Roach * @return ResponseInterface 528e0e1b25SGreg Roach */ 538e0e1b25SGreg Roach public function handle(ServerRequestInterface $request): ResponseInterface 548e0e1b25SGreg Roach { 55b55cbc6bSGreg Roach $tree = Validator::attributes($request)->tree(); 568e0e1b25SGreg Roach $block_id = $request->getQueryParams()['block_id']; 578e0e1b25SGreg Roach 588e0e1b25SGreg Roach $block_id = (int) DB::table('block') 598e0e1b25SGreg Roach ->where('block_id', '=', $block_id) 608e0e1b25SGreg Roach ->where('gedcom_id', '=', $tree->id()) 618e0e1b25SGreg Roach ->value('block_id'); 628e0e1b25SGreg Roach 638e0e1b25SGreg Roach $module = $this->home_page_service->getBlockModule($tree, $block_id); 648e0e1b25SGreg Roach 658e0e1b25SGreg Roach $html = view('layouts/ajax', [ 668e0e1b25SGreg Roach 'content' => $module->getBlock($tree, $block_id, ModuleBlockInterface::CONTEXT_TREE_PAGE), 678e0e1b25SGreg Roach ]); 688e0e1b25SGreg Roach 698e0e1b25SGreg Roach return response($html); 708e0e1b25SGreg Roach } 718e0e1b25SGreg Roach} 72