xref: /webtrees/app/Statistics/Repository/Interfaces/PlaceRepositoryInterface.php (revision d812eb6b3dd6c33a96d07cd964cb4c3b88cec447)
1<?php
2
3/**
4 * webtrees: online genealogy
5 * Copyright (C) 2019 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 <http://www.gnu.org/licenses/>.
16 */
17declare(strict_types=1);
18
19namespace Fisharebest\Webtrees\Statistics\Repository\Interfaces;
20
21use stdClass;
22
23/**
24 * A repository providing methods for place related statistics.
25 */
26interface PlaceRepositoryInterface
27{
28    /**
29     * Places
30     *
31     * @param string $what
32     * @param string $fact
33     * @param int    $parent
34     * @param bool   $country
35     *
36     * @return int[]|stdClass[]
37     */
38    public function statsPlaces(string $what = 'ALL', string $fact = '', int $parent = 0, bool $country = false): array;
39
40    /**
41     * A list of common birth places.
42     *
43     * @return string
44     */
45    public function commonBirthPlacesList(): string;
46
47    /**
48     * A list of common death places.
49     *
50     * @return string
51     */
52    public function commonDeathPlacesList(): string;
53
54    /**
55     * A list of common marriage places.
56     *
57     * @return string
58     */
59    public function commonMarriagePlacesList(): string;
60
61    /**
62     * A list of common countries.
63     *
64     * @return string
65     */
66    public function commonCountriesList(): string;
67
68    /**
69     * Count total places.
70     *
71     * @return string
72     */
73    public function totalPlaces(): string;
74
75    /**
76     * Create a chart showing where events occurred.
77     *
78     * @param string $chart_shows
79     * @param string $chart_type
80     * @param string $surname
81     *
82     * @return string
83     */
84    public function chartDistribution(
85        string $chart_shows = 'world',
86        string $chart_type = '',
87        string $surname = ''
88    ): string;
89}
90