xref: /webtrees/app/Helpers/functions.php (revision 30ea777a422d9d3e19b06fddc510c7d1edc5ee2d)
1<?php
2/**
3 * webtrees: online genealogy
4 * Copyright (C) 2018 webtrees development team
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16declare(strict_types=1);
17
18/**
19 * Generate a CSRF token form field.
20 *
21 * @return string
22 */
23function csrf_field()
24{
25    return '<input type="hidden" name="csrf" value="' . e(\Fisharebest\Webtrees\Session::getCsrfToken()) . '">';
26}
27
28/**
29 * Get the CSRF token value.
30 *
31 * @return string
32 */
33function csrf_token()
34{
35    return \Fisharebest\Webtrees\Session::getCsrfToken();
36}
37
38/**
39 * Generate a URL for a named route.
40 *
41 * @param string $route
42 * @param array  $parameters
43 * @param bool   $absolute
44 *
45 * @return string
46 */
47function route(string $route, array $parameters = [], bool $absolute = true): string
48{
49    $parameters = ['route' => $route] + $parameters;
50
51    if ($absolute) {
52        return \Fisharebest\Webtrees\Html::url(WT_BASE_URL . 'index.php', $parameters);
53    }
54
55    return \Fisharebest\Webtrees\Html::url('index.php', $parameters);
56}
57
58/**
59 * Cerate and render a view in a single operation.
60 *
61 * @param string  $name
62 * @param mixed[] $data
63 *
64 * @return string
65 */
66function view(string $name, array $data = [])
67{
68    return \Fisharebest\Webtrees\View::make($name, $data);
69}
70