xref: /webtrees/app/Http/RequestHandlers/PendingChangesAcceptRecord.php (revision b6ec1ccf23d5adc5a335304551953cfb6f52eef2)
122e73debSGreg Roach<?php
222e73debSGreg Roach
322e73debSGreg Roach/**
422e73debSGreg Roach * webtrees: online genealogy
5d11be702SGreg Roach * Copyright (C) 2023 webtrees development team
622e73debSGreg Roach * This program is free software: you can redistribute it and/or modify
722e73debSGreg Roach * it under the terms of the GNU General Public License as published by
822e73debSGreg Roach * the Free Software Foundation, either version 3 of the License, or
922e73debSGreg Roach * (at your option) any later version.
1022e73debSGreg Roach * This program is distributed in the hope that it will be useful,
1122e73debSGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of
1222e73debSGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1322e73debSGreg Roach * GNU General Public License for more details.
1422e73debSGreg 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/>.
1622e73debSGreg Roach */
1722e73debSGreg Roach
1822e73debSGreg Roachdeclare(strict_types=1);
1922e73debSGreg Roach
2022e73debSGreg Roachnamespace Fisharebest\Webtrees\Http\RequestHandlers;
2122e73debSGreg Roach
2222e73debSGreg Roachuse Fisharebest\Webtrees\FlashMessages;
23*b6ec1ccfSGreg Roachuse Fisharebest\Webtrees\GedcomRecord;
2422e73debSGreg Roachuse Fisharebest\Webtrees\I18N;
256b9cb339SGreg Roachuse Fisharebest\Webtrees\Registry;
2622e73debSGreg Roachuse Fisharebest\Webtrees\Services\PendingChangesService;
27b55cbc6bSGreg Roachuse Fisharebest\Webtrees\Validator;
2822e73debSGreg Roachuse Psr\Http\Message\ResponseInterface;
2922e73debSGreg Roachuse Psr\Http\Message\ServerRequestInterface;
3022e73debSGreg Roachuse Psr\Http\Server\RequestHandlerInterface;
3122e73debSGreg Roach
3222e73debSGreg Roachuse function response;
3322e73debSGreg Roach
3422e73debSGreg Roach/**
3522e73debSGreg Roach * Accept pending changes for a record.
3622e73debSGreg Roach */
3722e73debSGreg Roachclass PendingChangesAcceptRecord implements RequestHandlerInterface
3822e73debSGreg Roach{
39c4943cffSGreg Roach    private PendingChangesService $pending_changes_service;
4022e73debSGreg Roach
4122e73debSGreg Roach    /**
4222e73debSGreg Roach     * @param PendingChangesService $pending_changes_service
4322e73debSGreg Roach     */
4422e73debSGreg Roach    public function __construct(PendingChangesService $pending_changes_service)
4522e73debSGreg Roach    {
4622e73debSGreg Roach        $this->pending_changes_service = $pending_changes_service;
4722e73debSGreg Roach    }
4822e73debSGreg Roach
4922e73debSGreg Roach    /**
5022e73debSGreg Roach     * @param ServerRequestInterface $request
5122e73debSGreg Roach     *
5222e73debSGreg Roach     * @return ResponseInterface
5322e73debSGreg Roach     */
5422e73debSGreg Roach    public function handle(ServerRequestInterface $request): ResponseInterface
5522e73debSGreg Roach    {
56b55cbc6bSGreg Roach        $tree   = Validator::attributes($request)->tree();
57b55cbc6bSGreg Roach        $xref   = Validator::attributes($request)->isXref()->string('xref', '');
586b9cb339SGreg Roach        $record = Registry::gedcomRecordFactory()->make($xref, $tree);
5922e73debSGreg Roach
60*b6ec1ccfSGreg Roach        if ($record instanceof GedcomRecord) {
6122e73debSGreg Roach            if ($record->isPendingDeletion()) {
6222e73debSGreg Roach                /* I18N: %s is the name of a genealogy record */
6322e73debSGreg Roach                FlashMessages::addMessage(I18N::translate('“%s” has been deleted.', $record->fullName()));
6422e73debSGreg Roach            } else {
6522e73debSGreg Roach                /* I18N: %s is the name of a genealogy record */
6622e73debSGreg Roach                FlashMessages::addMessage(I18N::translate('The changes to “%s” have been accepted.', $record->fullName()));
6722e73debSGreg Roach            }
6822e73debSGreg Roach
6922e73debSGreg Roach            $this->pending_changes_service->acceptRecord($record);
7022e73debSGreg Roach        }
7122e73debSGreg Roach
7222e73debSGreg Roach        return response();
7322e73debSGreg Roach    }
7422e73debSGreg Roach}
75