xref: /webtrees/app/Statistics/Repository/Interfaces/PlaceRepositoryInterface.php (revision 8add1155cb77caede54752196ff44696d1346431)
1*8add1155SRico Sonntag<?php
2*8add1155SRico Sonntag/**
3*8add1155SRico Sonntag * webtrees: online genealogy
4*8add1155SRico Sonntag * Copyright (C) 2018 webtrees development team
5*8add1155SRico Sonntag * This program is free software: you can redistribute it and/or modify
6*8add1155SRico Sonntag * it under the terms of the GNU General Public License as published by
7*8add1155SRico Sonntag * the Free Software Foundation, either version 3 of the License, or
8*8add1155SRico Sonntag * (at your option) any later version.
9*8add1155SRico Sonntag * This program is distributed in the hope that it will be useful,
10*8add1155SRico Sonntag * but WITHOUT ANY WARRANTY; without even the implied warranty of
11*8add1155SRico Sonntag * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12*8add1155SRico Sonntag * GNU General Public License for more details.
13*8add1155SRico Sonntag * You should have received a copy of the GNU General Public License
14*8add1155SRico Sonntag * along with this program. If not, see <http://www.gnu.org/licenses/>.
15*8add1155SRico Sonntag */
16*8add1155SRico Sonntagdeclare(strict_types=1);
17*8add1155SRico Sonntag
18*8add1155SRico Sonntagnamespace Fisharebest\Webtrees\Statistics\Repository\Interfaces;
19*8add1155SRico Sonntag
20*8add1155SRico Sonntag/**
21*8add1155SRico Sonntag * A repository providing methods for place related statistics.
22*8add1155SRico Sonntag */
23*8add1155SRico Sonntaginterface PlaceRepositoryInterface
24*8add1155SRico Sonntag{
25*8add1155SRico Sonntag    /**
26*8add1155SRico Sonntag     * Places
27*8add1155SRico Sonntag     *
28*8add1155SRico Sonntag     * @param string $what
29*8add1155SRico Sonntag     * @param string $fact
30*8add1155SRico Sonntag     * @param int    $parent
31*8add1155SRico Sonntag     * @param bool   $country
32*8add1155SRico Sonntag     *
33*8add1155SRico Sonntag     * @return int[]|\stdClass[]
34*8add1155SRico Sonntag     */
35*8add1155SRico Sonntag    public function statsPlaces(string $what = 'ALL', string $fact = '', int $parent = 0, bool $country = false): array;
36*8add1155SRico Sonntag
37*8add1155SRico Sonntag    /**
38*8add1155SRico Sonntag     * A list of common birth places.
39*8add1155SRico Sonntag     *
40*8add1155SRico Sonntag     * @return string
41*8add1155SRico Sonntag     */
42*8add1155SRico Sonntag    public function commonBirthPlacesList(): string;
43*8add1155SRico Sonntag
44*8add1155SRico Sonntag    /**
45*8add1155SRico Sonntag     * A list of common death places.
46*8add1155SRico Sonntag     *
47*8add1155SRico Sonntag     * @return string
48*8add1155SRico Sonntag     */
49*8add1155SRico Sonntag    public function commonDeathPlacesList(): string;
50*8add1155SRico Sonntag
51*8add1155SRico Sonntag    /**
52*8add1155SRico Sonntag     * A list of common marriage places.
53*8add1155SRico Sonntag     *
54*8add1155SRico Sonntag     * @return string
55*8add1155SRico Sonntag     */
56*8add1155SRico Sonntag    public function commonMarriagePlacesList(): string;
57*8add1155SRico Sonntag
58*8add1155SRico Sonntag    /**
59*8add1155SRico Sonntag     * A list of common countries.
60*8add1155SRico Sonntag     *
61*8add1155SRico Sonntag     * @return string
62*8add1155SRico Sonntag     */
63*8add1155SRico Sonntag    public function commonCountriesList(): string;
64*8add1155SRico Sonntag
65*8add1155SRico Sonntag    /**
66*8add1155SRico Sonntag     * Count total places.
67*8add1155SRico Sonntag     *
68*8add1155SRico Sonntag     * @return string
69*8add1155SRico Sonntag     */
70*8add1155SRico Sonntag    public function totalPlaces(): string;
71*8add1155SRico Sonntag
72*8add1155SRico Sonntag    /**
73*8add1155SRico Sonntag     * Create a chart showing where events occurred.
74*8add1155SRico Sonntag     *
75*8add1155SRico Sonntag     * @param string $chart_shows
76*8add1155SRico Sonntag     * @param string $chart_type
77*8add1155SRico Sonntag     * @param string $surname
78*8add1155SRico Sonntag     *
79*8add1155SRico Sonntag     * @return string
80*8add1155SRico Sonntag     */
81*8add1155SRico Sonntag    public function chartDistribution(
82*8add1155SRico Sonntag        string $chart_shows = 'world',
83*8add1155SRico Sonntag        string $chart_type  = '',
84*8add1155SRico Sonntag        string $surname     = ''
85*8add1155SRico Sonntag    ) : string;
86*8add1155SRico Sonntag}
87