. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\Http\Controllers\AbstractBaseController; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\TreeService; use Fisharebest\Webtrees\Tree; use InvalidArgumentException; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use function assert; use function e; use function response; /** * Delete a tree. */ class DeleteTreeAction extends AbstractBaseController { /** @var TreeService */ private $tree_service; /** * CreateTreePage constructor. * * @param TreeService $tree_service */ public function __construct(TreeService $tree_service) { $this->tree_service = $tree_service; } /** * @param ServerRequestInterface $request * * @return ResponseInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { $tree = $request->getAttribute('tree'); assert($tree instanceof Tree, new InvalidArgumentException()); $this->tree_service->delete($tree); /* I18N: %s is the name of a family tree */ FlashMessages::addMessage(I18N::translate('The family tree ā€œ%sā€ has been deleted.', e($tree->title())), 'success'); return response('', StatusCodeInterface::STATUS_NO_CONTENT); } }