Issues (2502)

app/Http/RequestHandlers/AddMediaFileAction.php (4 issues)

Labels
Severity
1
<?php
2
3
/**
4
 * webtrees: online genealogy
5
 * Copyright (C) 2025 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\Auth;
0 ignored issues
show
The type Fisharebest\Webtrees\Auth was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
23
use Fisharebest\Webtrees\FlashMessages;
0 ignored issues
show
The type Fisharebest\Webtrees\FlashMessages was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
24
use Fisharebest\Webtrees\I18N;
0 ignored issues
show
The type Fisharebest\Webtrees\I18N was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
25
use Fisharebest\Webtrees\Registry;
26
use Fisharebest\Webtrees\Services\MediaFileService;
0 ignored issues
show
The type Fisharebest\Webtrees\Services\MediaFileService was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
27
use Fisharebest\Webtrees\Services\PendingChangesService;
28
use Fisharebest\Webtrees\Validator;
29
use Psr\Http\Message\ResponseInterface;
30
use Psr\Http\Message\ServerRequestInterface;
31
use Psr\Http\Server\RequestHandlerInterface;
32
33
use function redirect;
34
35
final class AddMediaFileAction implements RequestHandlerInterface
36
{
37
    public function __construct(
38
        private readonly MediaFileService $media_file_service,
39
        private readonly PendingChangesService $pending_changes_service,
40
    ) {
41
    }
42
43
    public function handle(ServerRequestInterface $request): ResponseInterface
44
    {
45
        $tree   = Validator::attributes($request)->tree();
46
        $xref   = Validator::attributes($request)->isXref()->string('xref');
47
        $media  = Registry::mediaFactory()->make($xref, $tree);
48
        $media  = Auth::checkMediaAccess($media, true);
49
        $title  = Validator::parsedBody($request)->string('title');
50
        $type   = Validator::parsedBody($request)->string('type');
51
52
        $type  = Registry::elementFactory()->make('OBJE:FILE:FORM:TYPE')->canonical($type);
53
        $title = Registry::elementFactory()->make('OBJE:FILE:TITL')->canonical($title);
54
55
        $file = $this->media_file_service->uploadFile($request);
56
57
        if ($file === '') {
58
            FlashMessages::addMessage(I18N::translate('There was an error uploading your file.'));
59
60
            return redirect($media->url());
61
        }
62
63
        $gedcom = $this->media_file_service->createMediaFileGedcom($file, $type, $title, '');
64
65
        $media->createFact($gedcom, true);
66
67
        // Accept the changes, to keep the filesystem in sync with the GEDCOM data.
68
        $this->pending_changes_service->acceptRecord($media);
69
70
        return redirect($media->url());
71
    }
72
}
73