xref: /webtrees/app/Census/Census.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\Census;
20
21/**
22 * Definitions for a census
23 */
24class Census
25{
26    /**
27     * @param string $locale
28     *
29     * @return CensusPlaceInterface[]
30     */
31    public static function censusPlaces(string $locale): array
32    {
33        $all_census_places = [
34            new CensusOfCzechRepublic(),
35            new CensusOfDenmark(),
36            new CensusOfDeutschland(),
37            new CensusOfEngland(),
38            new CensusOfFrance(),
39            new CensusOfScotland(),
40            new CensusOfUnitedStates(),
41            new CensusOfWales(),
42        ];
43
44        switch ($locale) {
45            case 'cs':
46                $census_places = [new CensusOfCzechRepublic()];
47                break;
48
49            case 'en-AU':
50            case 'en-GB':
51                $census_places = [
52                    new CensusOfEngland(),
53                    new CensusOfWales(),
54                    new CensusOfScotland(),
55                ];
56                break;
57
58            case 'en-US':
59                $census_places = [new CensusOfUnitedStates()];
60                break;
61
62            case 'fr':
63            case 'fr-CA':
64                $census_places = [new CensusOfFrance()];
65                break;
66
67            case 'da':
68                $census_places = [new CensusOfDenmark()];
69                break;
70
71            case 'de':
72                $census_places = [new CensusOfDeutschland()];
73                break;
74
75            default:
76                $census_places = [];
77                break;
78        }
79
80        foreach ($all_census_places as $census_place) {
81            if (!in_array($census_place, $census_places, false)) {
82                $census_places[] = $census_place;
83            }
84        }
85
86        return $census_places;
87    }
88}
89