Passed
Push — master ( 89f718...4b3ef6 )
by Greg
06:43
created

FixLevel0MediaAction::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
rs 10
1
<?php
2
3
/**
4
 * webtrees: online genealogy
5
 * Copyright (C) 2021 webtrees development team
6
 * This program is free software: you can redistribute it and/or modify
7
 * it under the terms of the GNU General Public License as published by
8
 * the Free Software Foundation, either version 3 of the License, or
9
 * (at your option) any later version.
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
 * GNU General Public License for more details.
14
 * You should have received a copy of the GNU General Public License
15
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
16
 */
17
18
declare(strict_types=1);
19
20
namespace Fisharebest\Webtrees\Http\RequestHandlers;
21
22
use Fisharebest\Webtrees\Registry;
23
use Fisharebest\Webtrees\Services\TreeService;
24
use Psr\Http\Message\ResponseInterface;
25
use Psr\Http\Message\ServerRequestInterface;
26
use Psr\Http\Server\RequestHandlerInterface;
27
28
use function response;
29
30
/**
31
 * Move media links from records to facts.
32
 */
33
class FixLevel0MediaAction implements RequestHandlerInterface
34
{
35
    /** @var TreeService */
36
    private $tree_service;
37
38
    /**
39
     * FixLevel0MediaController constructor.
40
     *
41
     * @param TreeService $tree_service
42
     */
43
    public function __construct(TreeService $tree_service)
44
    {
45
        $this->tree_service = $tree_service;
46
    }
47
48
    /**
49
     * Move a link to a media object from a level 0 record to a level 1 record.
50
     *
51
     * @param ServerRequestInterface $request
52
     *
53
     * @return ResponseInterface
54
     */
55
    public function handle(ServerRequestInterface $request): ResponseInterface
56
    {
57
        $params = (array) $request->getParsedBody();
58
59
        $fact_id   = $params['fact_id'];
60
        $indi_xref = $params['indi_xref'];
61
        $obje_xref = $params['obje_xref'];
62
        $tree_id   = (int) $params['tree_id'];
63
64
        $tree       = $this->tree_service->find($tree_id);
65
        $individual = Registry::individualFactory()->make($indi_xref, $tree);
66
        $media      = Registry::mediaFactory()->make($obje_xref, $tree);
67
68
        if ($individual !== null && $media !== null) {
69
            foreach ($individual->facts() as $fact1) {
70
                if ($fact1->id() === $fact_id) {
71
                    $individual->updateFact($fact_id, $fact1->gedcom() . "\n2 OBJE @" . $obje_xref . '@', false);
72
                    foreach ($individual->facts(['OBJE']) as $fact2) {
73
                        if ($fact2->target() === $media) {
74
                            $individual->deleteFact($fact2->id(), false);
75
                        }
76
                    }
77
                    break;
78
                }
79
            }
80
        }
81
82
        return response();
83
    }
84
}
85