Issues (2560)

app/Http/RequestHandlers/SiteLogsDownload.php (1 issue)

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 Fig\Http\Message\StatusCodeInterface;
23
use Fisharebest\Webtrees\Registry;
24
use Fisharebest\Webtrees\Services\SiteLogsService;
25
use Psr\Http\Message\ResponseInterface;
26
use Psr\Http\Message\ServerRequestInterface;
27
use Psr\Http\Server\RequestHandlerInterface;
28
29
use function str_replace;
30
31
/**
32
 * Download logs.
33
 */
34
class SiteLogsDownload implements RequestHandlerInterface
35
{
36
    private SiteLogsService $site_logs_service;
37
38
    /**
39
     * @param SiteLogsService $site_logs_service
40
     */
41
    public function __construct(SiteLogsService $site_logs_service)
42
    {
43
        $this->site_logs_service = $site_logs_service;
44
    }
45
46
    /**
47
     * @param ServerRequestInterface $request
48
     *
49
     * @return ResponseInterface
50
     */
51
    public function handle(ServerRequestInterface $request): ResponseInterface
52
    {
53
        $content = $this->site_logs_service->logsQuery($request)
54
            ->orderBy('log_id')
0 ignored issues
show
'log_id' of type string is incompatible with the type Closure|Illuminate\Datab...\Database\Query\Builder expected by parameter $column of Illuminate\Database\Query\Builder::orderBy(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

54
            ->orderBy(/** @scrutinizer ignore-type */ 'log_id')
Loading history...
55
            ->get()
56
            ->map(static fn (object $row): string => '"' . $row->log_time . '",' .
57
            '"' . $row->log_type . '",' .
58
            '"' . str_replace('"', '""', $row->log_message) . '",' .
59
            '"' . $row->ip_address . '",' .
60
            '"' . str_replace('"', '""', $row->user_name) . '",' .
61
            '"' . str_replace('"', '""', $row->gedcom_name) . '"' .
62
            "\n")
63
            ->implode('');
64
65
        return Registry::responseFactory()->response($content, StatusCodeInterface::STATUS_OK, [
66
            'content-type'        => 'text/csv; charset=UTF-8',
67
            'content-disposition' => 'attachment; filename="webtrees-logs.csv"',
68
        ]);
69
    }
70
}
71