Passed
Branch feature/2.1-geodispersion-dev (38d49e)
by Jonathan
04:17
created
src/Webtrees/Module/GeoDispersion/Services/GeoAnalysisViewDataService.php 2 patches
Indentation   +182 added lines, -182 removed lines patch added patch discarded remove patch
@@ -32,186 +32,186 @@
 block discarded – undo
32 32
  */
33 33
 class GeoAnalysisViewDataService
34 34
 {
35
-    /**
36
-     * Find a Geographical dispersion analysis view by ID
37
-     *
38
-     * @param Tree $tree
39
-     * @param int $id
40
-     * @return AbstractGeoAnalysisView|NULL
41
-     */
42
-    public function find(Tree $tree, int $id, bool $include_disabled = false): ?AbstractGeoAnalysisView
43
-    {
44
-        return $this->all($tree, $include_disabled)
45
-            ->first(fn(AbstractGeoAnalysisView $view): bool => $view->id() === $id);
46
-    }
47
-
48
-    /**
49
-     * Get all Geographical dispersion analysis views, with or without the disabled ones.
50
-     *
51
-     * {@internal It would ignore any view for which the class could not be loaded by the container}
52
-     *
53
-     * @param Tree $tree
54
-     * @param bool $include_disabled
55
-     * @return Collection<AbstractGeoAnalysisView>
56
-     */
57
-    public function all(Tree $tree, bool $include_disabled = false): Collection
58
-    {
59
-        return Registry::cache()->array()->remember(
60
-            'all-geodispersion-views',
61
-            function () use ($tree, $include_disabled): Collection {
62
-                return DB::table('maj_geodisp_views')
63
-                    ->select('maj_geodisp_views.*')
64
-                    ->where('majgv_gedcom_id', '=', $tree->id())
65
-                    ->get()
66
-                    ->map($this->viewMapper($tree))
67
-                    ->filter()
68
-                    ->filter($this->enabledFilter($include_disabled));
69
-            }
70
-        );
71
-    }
72
-
73
-    /**
74
-     * Insert a geographical dispersion analysis view object in the database.
75
-     *
76
-     * @param AbstractGeoAnalysisView $view
77
-     * @return int
78
-     */
79
-    public function insertGetId(AbstractGeoAnalysisView $view): int
80
-    {
81
-        return DB::table('maj_geodisp_views')
82
-            ->insertGetId([
83
-                'majgv_gedcom_id' => $view->tree()->id(),
84
-                'majgv_view_class' => get_class($view),
85
-                'majgv_status' => $view->isEnabled() ? 'enabled' : 'disabled',
86
-                'majgv_descr' => mb_substr($view->description(), 0, 248),
87
-                'majgv_analysis' => get_class($view->analysis()),
88
-                'majgv_place_depth' => $view->placesDepth()
89
-            ]);
90
-    }
91
-
92
-    /**
93
-     * Update a geographical dispersion analysis view object in the database.
94
-     *
95
-     * @param AbstractGeoAnalysisView $view
96
-     * @return int
97
-     */
98
-    public function update(AbstractGeoAnalysisView $view): int
99
-    {
100
-        return DB::table('maj_geodisp_views')
101
-            ->where('majgv_id', '=', $view->id())
102
-            ->update([
103
-                'majgv_gedcom_id' => $view->tree()->id(),
104
-                'majgv_view_class' => get_class($view),
105
-                'majgv_status' => $view->isEnabled() ? 'enabled' : 'disabled',
106
-                'majgv_descr' => mb_substr($view->description(), 0, 248),
107
-                'majgv_analysis' => get_class($view->analysis()),
108
-                'majgv_place_depth' => $view->placesDepth(),
109
-                'majgv_top_places' => $view->numberTopPlaces(),
110
-                'majgv_colors' => $view instanceof GeoAnalysisMap ? json_encode($view->colors()) : null
111
-            ]);
112
-    }
113
-
114
-    /**
115
-     * Update the status of a geographical dispersion analysis view object in the database.
116
-     *
117
-     * @param AbstractGeoAnalysisView $view
118
-     * @param bool $status
119
-     * @return int
120
-     */
121
-    public function updateStatus(AbstractGeoAnalysisView $view, bool $status): int
122
-    {
123
-        return DB::table('maj_geodisp_views')
124
-            ->where('majgv_id', '=', $view->id())
125
-            ->update(['majgv_status' => $status ? 'enabled' : 'disabled']);
126
-    }
127
-
128
-    /**
129
-     * Delete a geographical dispersion analysis view object from the database.
130
-     *
131
-     * @param AbstractGeoAnalysisView $view
132
-     * @return int
133
-     */
134
-    public function delete(AbstractGeoAnalysisView $view): int
135
-    {
136
-        return DB::table('maj_geodisp_views')
137
-            ->where('majgv_id', '=', $view->id())
138
-            ->delete();
139
-    }
140
-
141
-    /**
142
-     * Get the closure to create a AbstractGeoAnalysisView object from a row in the database.
143
-     * It returns null if the classes stored in the DB cannot be loaded through the Laravel container,
144
-     * or if the types do not match with the ones expected.
145
-     *
146
-     * @param Tree $tree
147
-     * @return Closure(\stdClass $row):?AbstractGeoAnalysisView
148
-     */
149
-    private function viewMapper(Tree $tree): Closure
150
-    {
151
-        return function (stdClass $row) use ($tree): ?AbstractGeoAnalysisView {
152
-            try {
153
-                $geoanalysis = app($row->majgv_analysis);
154
-                if (!($geoanalysis instanceof GeoAnalysisInterface)) {
155
-                    return null;
156
-                }
157
-
158
-                $view = app()->makeWith($row->majgv_view_class, [
159
-                    'id'                    =>  (int) $row->majgv_id,
160
-                    'tree'                  =>  $tree,
161
-                    'enabled'               =>  $row->majgv_status === 'enabled',
162
-                    'description'           =>  $row->majgv_descr,
163
-                    'geoanalysis'           =>  $geoanalysis,
164
-                    'depth'                 =>  (int) $row->majgv_place_depth,
165
-                    'detailed_top_places'   =>  (int) $row->majgv_top_places
166
-                ]);
167
-
168
-                if ($row->majgv_colors !== null && $view instanceof GeoAnalysisMap) {
169
-                    $view = $view->withColors($this->colorsDecoder($row->majgv_colors));
170
-                }
171
-
172
-                return $view instanceof AbstractGeoAnalysisView ? $view : null;
173
-            } catch (BindingResolutionException $ex) {
174
-                return null;
175
-            }
176
-        };
177
-    }
178
-
179
-    /**
180
-     * Create a MapColorsConfig object from a JSON column value.
181
-     * Returns null if the JSON string is invalid, or if the colors are not valid.
182
-     *
183
-     * @param string $colors_config
184
-     * @return MapColorsConfig|NULL
185
-     */
186
-    private function colorsDecoder(string $colors_config): ?MapColorsConfig
187
-    {
188
-        $colors = json_decode($colors_config, true);
189
-        if (!is_array($colors) && count($colors) !== 4) {
190
-            return null;
191
-        }
192
-        try {
193
-            return new MapColorsConfig(
194
-                \Spatie\Color\Factory::fromString($colors['default'] ?? ''),
195
-                \Spatie\Color\Factory::fromString($colors['stroke'] ?? ''),
196
-                \Spatie\Color\Factory::fromString($colors['maxvalue'] ?? ''),
197
-                \Spatie\Color\Factory::fromString($colors['hover'] ?? '')
198
-            );
199
-        } catch (InvalidColorValue $ex) {
200
-            return null;
201
-        }
202
-    }
203
-
204
-    /**
205
-     * Get a closure to filter views by enabled/disabled status
206
-     *
207
-     * @param bool $include_disabled
208
-     *
209
-     * @return Closure(AbstractGeoAnalysisView $view):bool
210
-     */
211
-    private function enabledFilter(bool $include_disabled): Closure
212
-    {
213
-        return function (AbstractGeoAnalysisView $view) use ($include_disabled): bool {
214
-            return $include_disabled || $view->isEnabled();
215
-        };
216
-    }
35
+	/**
36
+	 * Find a Geographical dispersion analysis view by ID
37
+	 *
38
+	 * @param Tree $tree
39
+	 * @param int $id
40
+	 * @return AbstractGeoAnalysisView|NULL
41
+	 */
42
+	public function find(Tree $tree, int $id, bool $include_disabled = false): ?AbstractGeoAnalysisView
43
+	{
44
+		return $this->all($tree, $include_disabled)
45
+			->first(fn(AbstractGeoAnalysisView $view): bool => $view->id() === $id);
46
+	}
47
+
48
+	/**
49
+	 * Get all Geographical dispersion analysis views, with or without the disabled ones.
50
+	 *
51
+	 * {@internal It would ignore any view for which the class could not be loaded by the container}
52
+	 *
53
+	 * @param Tree $tree
54
+	 * @param bool $include_disabled
55
+	 * @return Collection<AbstractGeoAnalysisView>
56
+	 */
57
+	public function all(Tree $tree, bool $include_disabled = false): Collection
58
+	{
59
+		return Registry::cache()->array()->remember(
60
+			'all-geodispersion-views',
61
+			function () use ($tree, $include_disabled): Collection {
62
+				return DB::table('maj_geodisp_views')
63
+					->select('maj_geodisp_views.*')
64
+					->where('majgv_gedcom_id', '=', $tree->id())
65
+					->get()
66
+					->map($this->viewMapper($tree))
67
+					->filter()
68
+					->filter($this->enabledFilter($include_disabled));
69
+			}
70
+		);
71
+	}
72
+
73
+	/**
74
+	 * Insert a geographical dispersion analysis view object in the database.
75
+	 *
76
+	 * @param AbstractGeoAnalysisView $view
77
+	 * @return int
78
+	 */
79
+	public function insertGetId(AbstractGeoAnalysisView $view): int
80
+	{
81
+		return DB::table('maj_geodisp_views')
82
+			->insertGetId([
83
+				'majgv_gedcom_id' => $view->tree()->id(),
84
+				'majgv_view_class' => get_class($view),
85
+				'majgv_status' => $view->isEnabled() ? 'enabled' : 'disabled',
86
+				'majgv_descr' => mb_substr($view->description(), 0, 248),
87
+				'majgv_analysis' => get_class($view->analysis()),
88
+				'majgv_place_depth' => $view->placesDepth()
89
+			]);
90
+	}
91
+
92
+	/**
93
+	 * Update a geographical dispersion analysis view object in the database.
94
+	 *
95
+	 * @param AbstractGeoAnalysisView $view
96
+	 * @return int
97
+	 */
98
+	public function update(AbstractGeoAnalysisView $view): int
99
+	{
100
+		return DB::table('maj_geodisp_views')
101
+			->where('majgv_id', '=', $view->id())
102
+			->update([
103
+				'majgv_gedcom_id' => $view->tree()->id(),
104
+				'majgv_view_class' => get_class($view),
105
+				'majgv_status' => $view->isEnabled() ? 'enabled' : 'disabled',
106
+				'majgv_descr' => mb_substr($view->description(), 0, 248),
107
+				'majgv_analysis' => get_class($view->analysis()),
108
+				'majgv_place_depth' => $view->placesDepth(),
109
+				'majgv_top_places' => $view->numberTopPlaces(),
110
+				'majgv_colors' => $view instanceof GeoAnalysisMap ? json_encode($view->colors()) : null
111
+			]);
112
+	}
113
+
114
+	/**
115
+	 * Update the status of a geographical dispersion analysis view object in the database.
116
+	 *
117
+	 * @param AbstractGeoAnalysisView $view
118
+	 * @param bool $status
119
+	 * @return int
120
+	 */
121
+	public function updateStatus(AbstractGeoAnalysisView $view, bool $status): int
122
+	{
123
+		return DB::table('maj_geodisp_views')
124
+			->where('majgv_id', '=', $view->id())
125
+			->update(['majgv_status' => $status ? 'enabled' : 'disabled']);
126
+	}
127
+
128
+	/**
129
+	 * Delete a geographical dispersion analysis view object from the database.
130
+	 *
131
+	 * @param AbstractGeoAnalysisView $view
132
+	 * @return int
133
+	 */
134
+	public function delete(AbstractGeoAnalysisView $view): int
135
+	{
136
+		return DB::table('maj_geodisp_views')
137
+			->where('majgv_id', '=', $view->id())
138
+			->delete();
139
+	}
140
+
141
+	/**
142
+	 * Get the closure to create a AbstractGeoAnalysisView object from a row in the database.
143
+	 * It returns null if the classes stored in the DB cannot be loaded through the Laravel container,
144
+	 * or if the types do not match with the ones expected.
145
+	 *
146
+	 * @param Tree $tree
147
+	 * @return Closure(\stdClass $row):?AbstractGeoAnalysisView
148
+	 */
149
+	private function viewMapper(Tree $tree): Closure
150
+	{
151
+		return function (stdClass $row) use ($tree): ?AbstractGeoAnalysisView {
152
+			try {
153
+				$geoanalysis = app($row->majgv_analysis);
154
+				if (!($geoanalysis instanceof GeoAnalysisInterface)) {
155
+					return null;
156
+				}
157
+
158
+				$view = app()->makeWith($row->majgv_view_class, [
159
+					'id'                    =>  (int) $row->majgv_id,
160
+					'tree'                  =>  $tree,
161
+					'enabled'               =>  $row->majgv_status === 'enabled',
162
+					'description'           =>  $row->majgv_descr,
163
+					'geoanalysis'           =>  $geoanalysis,
164
+					'depth'                 =>  (int) $row->majgv_place_depth,
165
+					'detailed_top_places'   =>  (int) $row->majgv_top_places
166
+				]);
167
+
168
+				if ($row->majgv_colors !== null && $view instanceof GeoAnalysisMap) {
169
+					$view = $view->withColors($this->colorsDecoder($row->majgv_colors));
170
+				}
171
+
172
+				return $view instanceof AbstractGeoAnalysisView ? $view : null;
173
+			} catch (BindingResolutionException $ex) {
174
+				return null;
175
+			}
176
+		};
177
+	}
178
+
179
+	/**
180
+	 * Create a MapColorsConfig object from a JSON column value.
181
+	 * Returns null if the JSON string is invalid, or if the colors are not valid.
182
+	 *
183
+	 * @param string $colors_config
184
+	 * @return MapColorsConfig|NULL
185
+	 */
186
+	private function colorsDecoder(string $colors_config): ?MapColorsConfig
187
+	{
188
+		$colors = json_decode($colors_config, true);
189
+		if (!is_array($colors) && count($colors) !== 4) {
190
+			return null;
191
+		}
192
+		try {
193
+			return new MapColorsConfig(
194
+				\Spatie\Color\Factory::fromString($colors['default'] ?? ''),
195
+				\Spatie\Color\Factory::fromString($colors['stroke'] ?? ''),
196
+				\Spatie\Color\Factory::fromString($colors['maxvalue'] ?? ''),
197
+				\Spatie\Color\Factory::fromString($colors['hover'] ?? '')
198
+			);
199
+		} catch (InvalidColorValue $ex) {
200
+			return null;
201
+		}
202
+	}
203
+
204
+	/**
205
+	 * Get a closure to filter views by enabled/disabled status
206
+	 *
207
+	 * @param bool $include_disabled
208
+	 *
209
+	 * @return Closure(AbstractGeoAnalysisView $view):bool
210
+	 */
211
+	private function enabledFilter(bool $include_disabled): Closure
212
+	{
213
+		return function (AbstractGeoAnalysisView $view) use ($include_disabled): bool {
214
+			return $include_disabled || $view->isEnabled();
215
+		};
216
+	}
217 217
 }
Please login to merge, or discard this patch.
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -42,7 +42,7 @@  discard block
 block discarded – undo
42 42
     public function find(Tree $tree, int $id, bool $include_disabled = false): ?AbstractGeoAnalysisView
43 43
     {
44 44
         return $this->all($tree, $include_disabled)
45
-            ->first(fn(AbstractGeoAnalysisView $view): bool => $view->id() === $id);
45
+            ->first(fn(AbstractGeoAnalysisView $view) : bool => $view->id() === $id);
46 46
     }
47 47
 
48 48
     /**
@@ -58,7 +58,7 @@  discard block
 block discarded – undo
58 58
     {
59 59
         return Registry::cache()->array()->remember(
60 60
             'all-geodispersion-views',
61
-            function () use ($tree, $include_disabled): Collection {
61
+            function() use ($tree, $include_disabled): Collection {
62 62
                 return DB::table('maj_geodisp_views')
63 63
                     ->select('maj_geodisp_views.*')
64 64
                     ->where('majgv_gedcom_id', '=', $tree->id())
@@ -148,7 +148,7 @@  discard block
 block discarded – undo
148 148
      */
149 149
     private function viewMapper(Tree $tree): Closure
150 150
     {
151
-        return function (stdClass $row) use ($tree): ?AbstractGeoAnalysisView {
151
+        return function(stdClass $row) use ($tree): ?AbstractGeoAnalysisView {
152 152
             try {
153 153
                 $geoanalysis = app($row->majgv_analysis);
154 154
                 if (!($geoanalysis instanceof GeoAnalysisInterface)) {
@@ -156,13 +156,13 @@  discard block
 block discarded – undo
156 156
                 }
157 157
 
158 158
                 $view = app()->makeWith($row->majgv_view_class, [
159
-                    'id'                    =>  (int) $row->majgv_id,
159
+                    'id'                    =>  (int)$row->majgv_id,
160 160
                     'tree'                  =>  $tree,
161 161
                     'enabled'               =>  $row->majgv_status === 'enabled',
162 162
                     'description'           =>  $row->majgv_descr,
163 163
                     'geoanalysis'           =>  $geoanalysis,
164
-                    'depth'                 =>  (int) $row->majgv_place_depth,
165
-                    'detailed_top_places'   =>  (int) $row->majgv_top_places
164
+                    'depth'                 =>  (int)$row->majgv_place_depth,
165
+                    'detailed_top_places'   =>  (int)$row->majgv_top_places
166 166
                 ]);
167 167
 
168 168
                 if ($row->majgv_colors !== null && $view instanceof GeoAnalysisMap) {
@@ -210,7 +210,7 @@  discard block
 block discarded – undo
210 210
      */
211 211
     private function enabledFilter(bool $include_disabled): Closure
212 212
     {
213
-        return function (AbstractGeoAnalysisView $view) use ($include_disabled): bool {
213
+        return function(AbstractGeoAnalysisView $view) use ($include_disabled): bool {
214 214
             return $include_disabled || $view->isEnabled();
215 215
         };
216 216
     }
Please login to merge, or discard this patch.
src/Webtrees/Module/GeoDispersion/Services/GeoAnalysisDataService.php 2 patches
Indentation   +56 added lines, -56 removed lines patch added patch discarded remove patch
@@ -26,64 +26,64 @@
 block discarded – undo
26 26
  */
27 27
 class GeoAnalysisDataService
28 28
 {
29
-    /**
30
-     * Yields indviduals and family records for a specified tree.
31
-     *
32
-     * @param Tree $tree
33
-     * @return \Generator<\Fisharebest\Webtrees\GedcomRecord>
34
-     */
35
-    public function individualsAndFamilies(Tree $tree): Generator
36
-    {
37
-        yield from DB::table('individuals')
38
-            ->where('i_file', '=', $tree->id())
39
-            ->select(['individuals.*'])
40
-            ->get()
41
-            ->map(Registry::individualFactory()->mapper($tree))
42
-            ->filter(GedcomRecord::accessFilter())
43
-            ->all();
29
+	/**
30
+	 * Yields indviduals and family records for a specified tree.
31
+	 *
32
+	 * @param Tree $tree
33
+	 * @return \Generator<\Fisharebest\Webtrees\GedcomRecord>
34
+	 */
35
+	public function individualsAndFamilies(Tree $tree): Generator
36
+	{
37
+		yield from DB::table('individuals')
38
+			->where('i_file', '=', $tree->id())
39
+			->select(['individuals.*'])
40
+			->get()
41
+			->map(Registry::individualFactory()->mapper($tree))
42
+			->filter(GedcomRecord::accessFilter())
43
+			->all();
44 44
 
45
-        yield from DB::table('families')
46
-            ->where('f_file', '=', $tree->id())
47
-            ->select(['families.*'])
48
-            ->get()
49
-            ->map(Registry::familyFactory()->mapper($tree))
50
-            ->filter(GedcomRecord::accessFilter())
51
-            ->all();
52
-    }
45
+		yield from DB::table('families')
46
+			->where('f_file', '=', $tree->id())
47
+			->select(['families.*'])
48
+			->get()
49
+			->map(Registry::familyFactory()->mapper($tree))
50
+			->filter(GedcomRecord::accessFilter())
51
+			->all();
52
+	}
53 53
 
54
-    /**
55
-     * Returns an example of the place hierarchy, from a place within the GEDCOM file, looking for the deepest
56
-     * hierarchy found. The part order is reversed compared to the normal GEDCOM structure (largest first).
57
-     *
58
-     * {@internal The places are taken only from the individuals and families records.}
59
-     *
60
-     * @param Tree $tree
61
-     * @return array
62
-     */
63
-    public function placeHierarchyExample(Tree $tree): array
64
-    {
65
-        $query_individuals = DB::table('individuals')
66
-            ->select(['i_gedcom AS g_gedcom'])
67
-            ->where('i_file', '=', $tree->id())
68
-            ->where('i_gedcom', 'like', '%2 PLAC %');
54
+	/**
55
+	 * Returns an example of the place hierarchy, from a place within the GEDCOM file, looking for the deepest
56
+	 * hierarchy found. The part order is reversed compared to the normal GEDCOM structure (largest first).
57
+	 *
58
+	 * {@internal The places are taken only from the individuals and families records.}
59
+	 *
60
+	 * @param Tree $tree
61
+	 * @return array
62
+	 */
63
+	public function placeHierarchyExample(Tree $tree): array
64
+	{
65
+		$query_individuals = DB::table('individuals')
66
+			->select(['i_gedcom AS g_gedcom'])
67
+			->where('i_file', '=', $tree->id())
68
+			->where('i_gedcom', 'like', '%2 PLAC %');
69 69
 
70
-        $query_families = DB::table('families')
71
-            ->select(['f_gedcom AS g_gedcom'])
72
-            ->where('f_file', '=', $tree->id())
73
-            ->where('f_gedcom', 'like', '%2 PLAC %');
70
+		$query_families = DB::table('families')
71
+			->select(['f_gedcom AS g_gedcom'])
72
+			->where('f_file', '=', $tree->id())
73
+			->where('f_gedcom', 'like', '%2 PLAC %');
74 74
 
75
-        return $query_individuals->unionAll($query_families)
76
-            ->get()->pluck('g_gedcom')
77
-            ->flatMap(static function (string $gedcom): array {
78
-                preg_match_all('/\n2 PLAC (.+)/', $gedcom, $matches);
79
-                return $matches[1] ?? [];
80
-            })
81
-            ->sort(I18N::comparator())->reverse()
82
-            ->mapWithKeys(static function (string $place): array {
83
-                $place_array = array_reverse(array_filter(array_map('trim', explode(",", $place))));
84
-                return [ count($place_array) => $place_array ];
85
-            })
86
-            ->sortKeys()
87
-            ->last();
88
-    }
75
+		return $query_individuals->unionAll($query_families)
76
+			->get()->pluck('g_gedcom')
77
+			->flatMap(static function (string $gedcom): array {
78
+				preg_match_all('/\n2 PLAC (.+)/', $gedcom, $matches);
79
+				return $matches[1] ?? [];
80
+			})
81
+			->sort(I18N::comparator())->reverse()
82
+			->mapWithKeys(static function (string $place): array {
83
+				$place_array = array_reverse(array_filter(array_map('trim', explode(",", $place))));
84
+				return [ count($place_array) => $place_array ];
85
+			})
86
+			->sortKeys()
87
+			->last();
88
+	}
89 89
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -74,14 +74,14 @@
 block discarded – undo
74 74
 
75 75
         return $query_individuals->unionAll($query_families)
76 76
             ->get()->pluck('g_gedcom')
77
-            ->flatMap(static function (string $gedcom): array {
77
+            ->flatMap(static function(string $gedcom): array {
78 78
                 preg_match_all('/\n2 PLAC (.+)/', $gedcom, $matches);
79 79
                 return $matches[1] ?? [];
80 80
             })
81 81
             ->sort(I18N::comparator())->reverse()
82
-            ->mapWithKeys(static function (string $place): array {
82
+            ->mapWithKeys(static function(string $place): array {
83 83
                 $place_array = array_reverse(array_filter(array_map('trim', explode(",", $place))));
84
-                return [ count($place_array) => $place_array ];
84
+                return [count($place_array) => $place_array];
85 85
             })
86 86
             ->sortKeys()
87 87
             ->last();
Please login to merge, or discard this patch.
src/Webtrees/Module/GeoDispersion/Services/MapAdapterDataService.php 2 patches
Indentation   +142 added lines, -142 removed lines patch added patch discarded remove patch
@@ -30,155 +30,155 @@
 block discarded – undo
30 30
  */
31 31
 class MapAdapterDataService
32 32
 {
33
-    private MapDefinitionsService $mapdefinition_service;
33
+	private MapDefinitionsService $mapdefinition_service;
34 34
 
35
-    /**
36
-     * Constructor for MapAdapterDataService
37
-     *
38
-     * @param MapDefinitionsService $mapdefinition_service
39
-     */
40
-    public function __construct(MapDefinitionsService $mapdefinition_service)
41
-    {
42
-        $this->mapdefinition_service = $mapdefinition_service;
43
-    }
35
+	/**
36
+	 * Constructor for MapAdapterDataService
37
+	 *
38
+	 * @param MapDefinitionsService $mapdefinition_service
39
+	 */
40
+	public function __construct(MapDefinitionsService $mapdefinition_service)
41
+	{
42
+		$this->mapdefinition_service = $mapdefinition_service;
43
+	}
44 44
 
45
-    /**
46
-     * Find a GeoAnalysisMapAdapter by ID
47
-     *
48
-     * @param int $id
49
-     * @return GeoAnalysisMapAdapter|NULL
50
-     */
51
-    public function find(int $id): ?GeoAnalysisMapAdapter
52
-    {
53
-        return DB::table('maj_geodisp_mapviews')
54
-            ->select('maj_geodisp_mapviews.*')
55
-            ->where('majgm_id', '=', $id)
56
-            ->get()
57
-            ->map($this->mapAdapterMapper())
58
-            ->first();
59
-    }
45
+	/**
46
+	 * Find a GeoAnalysisMapAdapter by ID
47
+	 *
48
+	 * @param int $id
49
+	 * @return GeoAnalysisMapAdapter|NULL
50
+	 */
51
+	public function find(int $id): ?GeoAnalysisMapAdapter
52
+	{
53
+		return DB::table('maj_geodisp_mapviews')
54
+			->select('maj_geodisp_mapviews.*')
55
+			->where('majgm_id', '=', $id)
56
+			->get()
57
+			->map($this->mapAdapterMapper())
58
+			->first();
59
+	}
60 60
 
61
-    /**
62
-     * Get all GeoAnalysisMapAdapters linked to a Map View.
63
-     *
64
-     * @param GeoAnalysisMap $map_view
65
-     * @return Collection<GeoAnalysisMapAdapter>
66
-     */
67
-    public function allForView(GeoAnalysisMap $map_view): Collection
68
-    {
69
-        return DB::table('maj_geodisp_mapviews')
70
-            ->select('maj_geodisp_mapviews.*')
71
-            ->where('majgm_majgv_id', '=', $map_view->id())
72
-            ->get()
73
-            ->map($this->mapAdapterMapper())
74
-            ->filter();
75
-    }
61
+	/**
62
+	 * Get all GeoAnalysisMapAdapters linked to a Map View.
63
+	 *
64
+	 * @param GeoAnalysisMap $map_view
65
+	 * @return Collection<GeoAnalysisMapAdapter>
66
+	 */
67
+	public function allForView(GeoAnalysisMap $map_view): Collection
68
+	{
69
+		return DB::table('maj_geodisp_mapviews')
70
+			->select('maj_geodisp_mapviews.*')
71
+			->where('majgm_majgv_id', '=', $map_view->id())
72
+			->get()
73
+			->map($this->mapAdapterMapper())
74
+			->filter();
75
+	}
76 76
 
77
-    /**
78
-     * Insert a GeoAnalysisMapAdapter in the database.
79
-     *
80
-     * @param GeoAnalysisMapAdapter $map_adapter
81
-     * @return int
82
-     */
83
-    public function insertGetId(GeoAnalysisMapAdapter $map_adapter): int
84
-    {
85
-        return DB::table('maj_geodisp_mapviews')
86
-            ->insertGetId([
87
-                'majgm_majgv_id' => $map_adapter->geoAnalysisViewId(),
88
-                'majgm_map_id' => $map_adapter->map()->id(),
89
-                'majgm_mapper' => get_class($map_adapter->placeMapper()),
90
-                'majgm_feature_prop' => $map_adapter->viewConfig()->mapMappingProperty(),
91
-                'majgm_config' => json_encode($map_adapter->viewConfig()->mapperConfig())
92
-            ]);
93
-    }
77
+	/**
78
+	 * Insert a GeoAnalysisMapAdapter in the database.
79
+	 *
80
+	 * @param GeoAnalysisMapAdapter $map_adapter
81
+	 * @return int
82
+	 */
83
+	public function insertGetId(GeoAnalysisMapAdapter $map_adapter): int
84
+	{
85
+		return DB::table('maj_geodisp_mapviews')
86
+			->insertGetId([
87
+				'majgm_majgv_id' => $map_adapter->geoAnalysisViewId(),
88
+				'majgm_map_id' => $map_adapter->map()->id(),
89
+				'majgm_mapper' => get_class($map_adapter->placeMapper()),
90
+				'majgm_feature_prop' => $map_adapter->viewConfig()->mapMappingProperty(),
91
+				'majgm_config' => json_encode($map_adapter->viewConfig()->mapperConfig())
92
+			]);
93
+	}
94 94
 
95
-    /**
96
-     * Update a GeoAnalysisMapAdapter in the database.
97
-     *
98
-     * @param GeoAnalysisMapAdapter $map_adapter
99
-     * @return int
100
-     */
101
-    public function update(GeoAnalysisMapAdapter $map_adapter): int
102
-    {
103
-        return DB::table('maj_geodisp_mapviews')
104
-            ->where('majgm_id', '=', $map_adapter->id())
105
-            ->update([
106
-                'majgm_map_id' => $map_adapter->map()->id(),
107
-                'majgm_mapper' => get_class($map_adapter->placeMapper()),
108
-                'majgm_feature_prop' => $map_adapter->viewConfig()->mapMappingProperty(),
109
-                'majgm_config' => json_encode($map_adapter->placeMapper()->config())
110
-            ]);
111
-    }
95
+	/**
96
+	 * Update a GeoAnalysisMapAdapter in the database.
97
+	 *
98
+	 * @param GeoAnalysisMapAdapter $map_adapter
99
+	 * @return int
100
+	 */
101
+	public function update(GeoAnalysisMapAdapter $map_adapter): int
102
+	{
103
+		return DB::table('maj_geodisp_mapviews')
104
+			->where('majgm_id', '=', $map_adapter->id())
105
+			->update([
106
+				'majgm_map_id' => $map_adapter->map()->id(),
107
+				'majgm_mapper' => get_class($map_adapter->placeMapper()),
108
+				'majgm_feature_prop' => $map_adapter->viewConfig()->mapMappingProperty(),
109
+				'majgm_config' => json_encode($map_adapter->placeMapper()->config())
110
+			]);
111
+	}
112 112
 
113
-    /**
114
-     * Delete a GeoAnalysisMapAdapter from the database.
115
-     *
116
-     * @param GeoAnalysisMapAdapter $map_adapter
117
-     * @return int
118
-     */
119
-    public function delete(GeoAnalysisMapAdapter $map_adapter): int
120
-    {
121
-        return DB::table('maj_geodisp_mapviews')
122
-            ->where('majgm_id', '=', $map_adapter->id())
123
-            ->delete();
124
-    }
113
+	/**
114
+	 * Delete a GeoAnalysisMapAdapter from the database.
115
+	 *
116
+	 * @param GeoAnalysisMapAdapter $map_adapter
117
+	 * @return int
118
+	 */
119
+	public function delete(GeoAnalysisMapAdapter $map_adapter): int
120
+	{
121
+		return DB::table('maj_geodisp_mapviews')
122
+			->where('majgm_id', '=', $map_adapter->id())
123
+			->delete();
124
+	}
125 125
 
126
-    /**
127
-     * Get the closure to create a GeoAnalysisMapAdapter object from a row in the database.
128
-     * It returns null if the classes stored in the DB cannot be loaded through the Laravel container,
129
-     * or if the types do not match with the ones expected.
130
-     *
131
-     * @return Closure(\stdClass $row):?GeoAnalysisMapAdapter
132
-     */
133
-    private function mapAdapterMapper(): Closure
134
-    {
135
-        return function (stdClass $row): ?GeoAnalysisMapAdapter {
136
-            if (null === $map = $this->mapdefinition_service->find($row->majgm_map_id)) {
137
-                return null;
138
-            }
139
-            try {
140
-                $mapper = app($row->majgm_mapper);
141
-                if (!($mapper instanceof PlaceMapperInterface)) {
142
-                    return null;
143
-                }
126
+	/**
127
+	 * Get the closure to create a GeoAnalysisMapAdapter object from a row in the database.
128
+	 * It returns null if the classes stored in the DB cannot be loaded through the Laravel container,
129
+	 * or if the types do not match with the ones expected.
130
+	 *
131
+	 * @return Closure(\stdClass $row):?GeoAnalysisMapAdapter
132
+	 */
133
+	private function mapAdapterMapper(): Closure
134
+	{
135
+		return function (stdClass $row): ?GeoAnalysisMapAdapter {
136
+			if (null === $map = $this->mapdefinition_service->find($row->majgm_map_id)) {
137
+				return null;
138
+			}
139
+			try {
140
+				$mapper = app($row->majgm_mapper);
141
+				if (!($mapper instanceof PlaceMapperInterface)) {
142
+					return null;
143
+				}
144 144
 
145
-                return new GeoAnalysisMapAdapter(
146
-                    (int) $row->majgm_id,
147
-                    (int) $row->majgm_majgv_id,
148
-                    $map,
149
-                    app($row->majgm_mapper),
150
-                    new MapViewConfig($row->majgm_feature_prop, $this->mapperConfigDecoder($row->majgm_config))
151
-                );
152
-            } catch (BindingResolutionException $ex) {
153
-                return null;
154
-            }
155
-        };
156
-    }
145
+				return new GeoAnalysisMapAdapter(
146
+					(int) $row->majgm_id,
147
+					(int) $row->majgm_majgv_id,
148
+					$map,
149
+					app($row->majgm_mapper),
150
+					new MapViewConfig($row->majgm_feature_prop, $this->mapperConfigDecoder($row->majgm_config))
151
+				);
152
+			} catch (BindingResolutionException $ex) {
153
+				return null;
154
+			}
155
+		};
156
+	}
157 157
 
158
-    /**
159
-     * Create a PlaceMapperConfigInterface object from a JSON column value.
160
-     * Returns null if the JSON string is invalid/empty or if the extracted mapper class cannot be loaded
161
-     * through the Laravel container or if the type do not match with the one expected.
162
-     *
163
-     * @param string $json_config
164
-     * @return PlaceMapperConfigInterface|NULL
165
-     */
166
-    private function mapperConfigDecoder(?string $json_config): ?PlaceMapperConfigInterface
167
-    {
168
-        $config = $json_config === null ? [] : json_decode($json_config, true);
169
-        $class = $config['class'] ?? null;
170
-        $json_mapper_config = $config['config'] ?? null;
171
-        if ($class === null || $json_mapper_config === null) {
172
-            return null;
173
-        }
174
-        try {
175
-            $mapper_config = app($class);
176
-            if (!$mapper_config instanceof PlaceMapperConfigInterface) {
177
-                return null;
178
-            }
179
-            return $mapper_config->jsonDeserialize($json_mapper_config);
180
-        } catch (BindingResolutionException $ex) {
181
-            return null;
182
-        }
183
-    }
158
+	/**
159
+	 * Create a PlaceMapperConfigInterface object from a JSON column value.
160
+	 * Returns null if the JSON string is invalid/empty or if the extracted mapper class cannot be loaded
161
+	 * through the Laravel container or if the type do not match with the one expected.
162
+	 *
163
+	 * @param string $json_config
164
+	 * @return PlaceMapperConfigInterface|NULL
165
+	 */
166
+	private function mapperConfigDecoder(?string $json_config): ?PlaceMapperConfigInterface
167
+	{
168
+		$config = $json_config === null ? [] : json_decode($json_config, true);
169
+		$class = $config['class'] ?? null;
170
+		$json_mapper_config = $config['config'] ?? null;
171
+		if ($class === null || $json_mapper_config === null) {
172
+			return null;
173
+		}
174
+		try {
175
+			$mapper_config = app($class);
176
+			if (!$mapper_config instanceof PlaceMapperConfigInterface) {
177
+				return null;
178
+			}
179
+			return $mapper_config->jsonDeserialize($json_mapper_config);
180
+		} catch (BindingResolutionException $ex) {
181
+			return null;
182
+		}
183
+	}
184 184
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -132,7 +132,7 @@  discard block
 block discarded – undo
132 132
      */
133 133
     private function mapAdapterMapper(): Closure
134 134
     {
135
-        return function (stdClass $row): ?GeoAnalysisMapAdapter {
135
+        return function(stdClass $row): ?GeoAnalysisMapAdapter {
136 136
             if (null === $map = $this->mapdefinition_service->find($row->majgm_map_id)) {
137 137
                 return null;
138 138
             }
@@ -143,8 +143,8 @@  discard block
 block discarded – undo
143 143
                 }
144 144
 
145 145
                 return new GeoAnalysisMapAdapter(
146
-                    (int) $row->majgm_id,
147
-                    (int) $row->majgm_majgv_id,
146
+                    (int)$row->majgm_id,
147
+                    (int)$row->majgm_majgv_id,
148 148
                     $map,
149 149
                     app($row->majgm_mapper),
150 150
                     new MapViewConfig($row->majgm_feature_prop, $this->mapperConfigDecoder($row->majgm_config))
Please login to merge, or discard this patch.
src/Webtrees/Module/GeoDispersion/Services/GeoAnalysisService.php 2 patches
Indentation   +32 added lines, -32 removed lines patch added patch discarded remove patch
@@ -25,38 +25,38 @@
 block discarded – undo
25 25
  */
26 26
 class GeoAnalysisService
27 27
 {
28
-    private ModuleService $module_service;
28
+	private ModuleService $module_service;
29 29
 
30
-    /**
31
-     * Constructor for MapDefinitionsService
32
-     *
33
-     * @param ModuleService $module_service
34
-     */
35
-    public function __construct(ModuleService $module_service)
36
-    {
37
-        $this->module_service = $module_service;
38
-    }
30
+	/**
31
+	 * Constructor for MapDefinitionsService
32
+	 *
33
+	 * @param ModuleService $module_service
34
+	 */
35
+	public function __construct(ModuleService $module_service)
36
+	{
37
+		$this->module_service = $module_service;
38
+	}
39 39
 
40
-    /**
41
-     * Get all available geographical dispersion analyses.
42
-     *
43
-     * {@internal The list is generated based on the modules exposing ModuleGeoAnalysisProviderInterface
44
-     *
45
-     * @param bool $include_disabled
46
-     * @return Collection
47
-     */
48
-    public function all(bool $include_disabled = false): Collection
49
-    {
50
-        return $this->module_service
51
-            ->findByInterface(ModuleGeoAnalysisProviderInterface::class, $include_disabled)
52
-            ->flatMap(fn(ModuleGeoAnalysisProviderInterface $module) => $module->listGeoAnalyses())
53
-            ->map(static function (string $analysis_class): ?GeoAnalysisInterface {
54
-                try {
55
-                    $analysis = app($analysis_class);
56
-                    return $analysis instanceof GeoAnalysisInterface ? $analysis : null;
57
-                } catch (BindingResolutionException $ex) {
58
-                    return null;
59
-                }
60
-            })->filter();
61
-    }
40
+	/**
41
+	 * Get all available geographical dispersion analyses.
42
+	 *
43
+	 * {@internal The list is generated based on the modules exposing ModuleGeoAnalysisProviderInterface
44
+	 *
45
+	 * @param bool $include_disabled
46
+	 * @return Collection
47
+	 */
48
+	public function all(bool $include_disabled = false): Collection
49
+	{
50
+		return $this->module_service
51
+			->findByInterface(ModuleGeoAnalysisProviderInterface::class, $include_disabled)
52
+			->flatMap(fn(ModuleGeoAnalysisProviderInterface $module) => $module->listGeoAnalyses())
53
+			->map(static function (string $analysis_class): ?GeoAnalysisInterface {
54
+				try {
55
+					$analysis = app($analysis_class);
56
+					return $analysis instanceof GeoAnalysisInterface ? $analysis : null;
57
+				} catch (BindingResolutionException $ex) {
58
+					return null;
59
+				}
60
+			})->filter();
61
+	}
62 62
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -50,7 +50,7 @@
 block discarded – undo
50 50
         return $this->module_service
51 51
             ->findByInterface(ModuleGeoAnalysisProviderInterface::class, $include_disabled)
52 52
             ->flatMap(fn(ModuleGeoAnalysisProviderInterface $module) => $module->listGeoAnalyses())
53
-            ->map(static function (string $analysis_class): ?GeoAnalysisInterface {
53
+            ->map(static function(string $analysis_class): ?GeoAnalysisInterface {
54 54
                 try {
55 55
                     $analysis = app($analysis_class);
56 56
                     return $analysis instanceof GeoAnalysisInterface ? $analysis : null;
Please login to merge, or discard this patch.
src/Webtrees/Module/GeoDispersion/Services/PlaceMapperService.php 2 patches
Indentation   +33 added lines, -33 removed lines patch added patch discarded remove patch
@@ -25,39 +25,39 @@
 block discarded – undo
25 25
  */
26 26
 class PlaceMapperService
27 27
 {
28
-    private ModuleService $module_service;
28
+	private ModuleService $module_service;
29 29
 
30
-    /**
31
-     * Constructor for PlaceMapperService
32
-     *
33
-     * @param ModuleService $module_service
34
-     */
35
-    public function __construct(ModuleService $module_service)
36
-    {
37
-        $this->module_service = $module_service;
38
-    }
30
+	/**
31
+	 * Constructor for PlaceMapperService
32
+	 *
33
+	 * @param ModuleService $module_service
34
+	 */
35
+	public function __construct(ModuleService $module_service)
36
+	{
37
+		$this->module_service = $module_service;
38
+	}
39 39
 
40
-    /**
41
-     * Get all place mappers available.
42
-     *
43
-     * {@internal The list is generated based on the modules exposing ModulePlaceMapperProviderInterface}
44
-     *
45
-     * @param bool $include_disabled
46
-     * @return Collection
47
-     */
48
-    public function all(bool $include_disabled = false): Collection
49
-    {
50
-        return $this->module_service
51
-            ->findByInterface(ModulePlaceMapperProviderInterface::class, $include_disabled)
52
-            ->flatMap(fn(ModulePlaceMapperProviderInterface $module) => $module->listPlaceMappers())
53
-            ->map(static function (string $mapper_class): ?PlaceMapperInterface {
54
-                try {
55
-                    $mapper = app($mapper_class);
56
-                    return $mapper instanceof PlaceMapperInterface ? $mapper : null;
57
-                } catch (BindingResolutionException $ex) {
58
-                    return null;
59
-                }
60
-            })->filter();
61
-        ;
62
-    }
40
+	/**
41
+	 * Get all place mappers available.
42
+	 *
43
+	 * {@internal The list is generated based on the modules exposing ModulePlaceMapperProviderInterface}
44
+	 *
45
+	 * @param bool $include_disabled
46
+	 * @return Collection
47
+	 */
48
+	public function all(bool $include_disabled = false): Collection
49
+	{
50
+		return $this->module_service
51
+			->findByInterface(ModulePlaceMapperProviderInterface::class, $include_disabled)
52
+			->flatMap(fn(ModulePlaceMapperProviderInterface $module) => $module->listPlaceMappers())
53
+			->map(static function (string $mapper_class): ?PlaceMapperInterface {
54
+				try {
55
+					$mapper = app($mapper_class);
56
+					return $mapper instanceof PlaceMapperInterface ? $mapper : null;
57
+				} catch (BindingResolutionException $ex) {
58
+					return null;
59
+				}
60
+			})->filter();
61
+		;
62
+	}
63 63
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -50,7 +50,7 @@
 block discarded – undo
50 50
         return $this->module_service
51 51
             ->findByInterface(ModulePlaceMapperProviderInterface::class, $include_disabled)
52 52
             ->flatMap(fn(ModulePlaceMapperProviderInterface $module) => $module->listPlaceMappers())
53
-            ->map(static function (string $mapper_class): ?PlaceMapperInterface {
53
+            ->map(static function(string $mapper_class): ?PlaceMapperInterface {
54 54
                 try {
55 55
                     $mapper = app($mapper_class);
56 56
                     return $mapper instanceof PlaceMapperInterface ? $mapper : null;
Please login to merge, or discard this patch.
Webtrees/Module/GeoDispersion/GeoAnalyses/AllEventsByTypeGeoAnalysis.php 1 patch
Indentation   +45 added lines, -45 removed lines patch added patch discarded remove patch
@@ -26,55 +26,55 @@
 block discarded – undo
26 26
  */
27 27
 class AllEventsByTypeGeoAnalysis implements GeoAnalysisInterface
28 28
 {
29
-    private GeoAnalysisDataService $geoanalysis_data_service;
29
+	private GeoAnalysisDataService $geoanalysis_data_service;
30 30
 
31
-    /**
32
-     * Constructor for AllEventsByTypeGeoAnalysis
33
-     *
34
-     * @param GeoAnalysisDataService $geoanalysis_data_service
35
-     */
36
-    public function __construct(GeoAnalysisDataService $geoanalysis_data_service)
37
-    {
38
-        $this->geoanalysis_data_service = $geoanalysis_data_service;
39
-    }
31
+	/**
32
+	 * Constructor for AllEventsByTypeGeoAnalysis
33
+	 *
34
+	 * @param GeoAnalysisDataService $geoanalysis_data_service
35
+	 */
36
+	public function __construct(GeoAnalysisDataService $geoanalysis_data_service)
37
+	{
38
+		$this->geoanalysis_data_service = $geoanalysis_data_service;
39
+	}
40 40
 
41
-    /**
42
-     * {@inheritDoc}
43
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\GeoAnalysisInterface::title()
44
-     */
45
-    public function title(): string
46
-    {
47
-        return I18N::translate('All events places by event type');
48
-    }
41
+	/**
42
+	 * {@inheritDoc}
43
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\GeoAnalysisInterface::title()
44
+	 */
45
+	public function title(): string
46
+	{
47
+		return I18N::translate('All events places by event type');
48
+	}
49 49
 
50
-    /**
51
-     * {@inheritDoc}
52
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\GeoAnalysisInterface::itemsDescription()
53
-     */
54
-    public function itemsDescription(): callable
55
-    {
56
-        return fn(int $count): string => I18N::plural('event', 'events', $count);
57
-    }
50
+	/**
51
+	 * {@inheritDoc}
52
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\GeoAnalysisInterface::itemsDescription()
53
+	 */
54
+	public function itemsDescription(): callable
55
+	{
56
+		return fn(int $count): string => I18N::plural('event', 'events', $count);
57
+	}
58 58
 
59
-    /**
60
-     * {@inheritDoc}
61
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\GeoAnalysisInterface::results()
62
-     */
63
-    public function results(Tree $tree, int $depth): GeoAnalysisResults
64
-    {
65
-        $results = new GeoAnalysisResults();
59
+	/**
60
+	 * {@inheritDoc}
61
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\GeoAnalysisInterface::results()
62
+	 */
63
+	public function results(Tree $tree, int $depth): GeoAnalysisResults
64
+	{
65
+		$results = new GeoAnalysisResults();
66 66
 
67
-        foreach ($this->geoanalysis_data_service->individualsAndFamilies($tree) as $record) {
68
-            foreach ($record->facts([]) as $fact) {
69
-                $place = new GeoAnalysisPlace($tree, $fact->place(), $depth);
70
-                if ($place->isUnknown()) {
71
-                    continue;
72
-                }
73
-                $results->addPlace($place);
74
-                $results->addPlaceInCategory($fact->label(), 0, $place);
75
-            }
76
-        }
67
+		foreach ($this->geoanalysis_data_service->individualsAndFamilies($tree) as $record) {
68
+			foreach ($record->facts([]) as $fact) {
69
+				$place = new GeoAnalysisPlace($tree, $fact->place(), $depth);
70
+				if ($place->isUnknown()) {
71
+					continue;
72
+				}
73
+				$results->addPlace($place);
74
+				$results->addPlaceInCategory($fact->label(), 0, $place);
75
+			}
76
+		}
77 77
 
78
-        return $results;
79
-    }
78
+		return $results;
79
+	}
80 80
 }
Please login to merge, or discard this patch.
Webtrees/Module/GeoDispersion/GeoAnalyses/AllEventsByCenturyGeoAnalysis.php 1 patch
Indentation   +56 added lines, -56 removed lines patch added patch discarded remove patch
@@ -28,66 +28,66 @@
 block discarded – undo
28 28
  */
29 29
 class AllEventsByCenturyGeoAnalysis implements GeoAnalysisInterface
30 30
 {
31
-    private GeoAnalysisDataService $geoanalysis_data_service;
32
-    private CenturyService $century_service;
31
+	private GeoAnalysisDataService $geoanalysis_data_service;
32
+	private CenturyService $century_service;
33 33
 
34
-    /**
35
-     * Constructor for AllEventsByCenturyGeoAnalysis
36
-     *
37
-     * @param GeoAnalysisDataService $geoanalysis_data_service
38
-     * @param CenturyService $century_service
39
-     */
40
-    public function __construct(GeoAnalysisDataService $geoanalysis_data_service, CenturyService $century_service)
41
-    {
42
-        $this->geoanalysis_data_service = $geoanalysis_data_service;
43
-        $this->century_service = $century_service;
44
-    }
34
+	/**
35
+	 * Constructor for AllEventsByCenturyGeoAnalysis
36
+	 *
37
+	 * @param GeoAnalysisDataService $geoanalysis_data_service
38
+	 * @param CenturyService $century_service
39
+	 */
40
+	public function __construct(GeoAnalysisDataService $geoanalysis_data_service, CenturyService $century_service)
41
+	{
42
+		$this->geoanalysis_data_service = $geoanalysis_data_service;
43
+		$this->century_service = $century_service;
44
+	}
45 45
 
46
-    /**
47
-     * {@inheritDoc}
48
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\GeoAnalysisInterface::title()
49
-     */
50
-    public function title(): string
51
-    {
52
-        return I18N::translate('All events places by century');
53
-    }
46
+	/**
47
+	 * {@inheritDoc}
48
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\GeoAnalysisInterface::title()
49
+	 */
50
+	public function title(): string
51
+	{
52
+		return I18N::translate('All events places by century');
53
+	}
54 54
 
55
-    /**
56
-     * {@inheritDoc}
57
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\GeoAnalysisInterface::itemsDescription()
58
-     */
59
-    public function itemsDescription(): callable
60
-    {
61
-        return fn(int $count): string => I18N::plural('event', 'events', $count);
62
-    }
55
+	/**
56
+	 * {@inheritDoc}
57
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\GeoAnalysisInterface::itemsDescription()
58
+	 */
59
+	public function itemsDescription(): callable
60
+	{
61
+		return fn(int $count): string => I18N::plural('event', 'events', $count);
62
+	}
63 63
 
64
-    /**
65
-     * {@inheritDoc}
66
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\GeoAnalysisInterface::results()
67
-     */
68
-    public function results(Tree $tree, int $depth): GeoAnalysisResults
69
-    {
70
-        $results = new GeoAnalysisResults();
64
+	/**
65
+	 * {@inheritDoc}
66
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\GeoAnalysisInterface::results()
67
+	 */
68
+	public function results(Tree $tree, int $depth): GeoAnalysisResults
69
+	{
70
+		$results = new GeoAnalysisResults();
71 71
 
72
-        foreach ($this->geoanalysis_data_service->individualsAndFamilies($tree) as $record) {
73
-            foreach ($record->facts([]) as $fact) {
74
-                $place = new GeoAnalysisPlace($tree, $fact->place(), $depth);
75
-                if ($place->isUnknown()) {
76
-                    continue;
77
-                }
78
-                $results->addPlace($place);
79
-                $date = $fact->date();
80
-                if ($date->isOK()) {
81
-                    $century = intdiv($date->gregorianYear(), 100);
82
-                    $results->addPlaceInCategory(
83
-                        I18N::translate('%s century', $this->century_service->centuryName($century)),
84
-                        $century,
85
-                        $place
86
-                    );
87
-                }
88
-            }
89
-        }
72
+		foreach ($this->geoanalysis_data_service->individualsAndFamilies($tree) as $record) {
73
+			foreach ($record->facts([]) as $fact) {
74
+				$place = new GeoAnalysisPlace($tree, $fact->place(), $depth);
75
+				if ($place->isUnknown()) {
76
+					continue;
77
+				}
78
+				$results->addPlace($place);
79
+				$date = $fact->date();
80
+				if ($date->isOK()) {
81
+					$century = intdiv($date->gregorianYear(), 100);
82
+					$results->addPlaceInCategory(
83
+						I18N::translate('%s century', $this->century_service->centuryName($century)),
84
+						$century,
85
+						$place
86
+					);
87
+				}
88
+			}
89
+		}
90 90
 
91
-        return $results;
92
-    }
91
+		return $results;
92
+	}
93 93
 }
Please login to merge, or discard this patch.
src/Webtrees/Module/GeoDispersion/PlaceMappers/SimplePlaceMapper.php 1 patch
Indentation   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -24,23 +24,23 @@
 block discarded – undo
24 24
  */
25 25
 class SimplePlaceMapper implements PlaceMapperInterface
26 26
 {
27
-    use PlaceMapperTrait;
27
+	use PlaceMapperTrait;
28 28
 
29
-    /**
30
-     * {@inheritDoc}
31
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::title()
32
-     */
33
-    public function title(): string
34
-    {
35
-        return I18N::translate('Mapping on place name');
36
-    }
29
+	/**
30
+	 * {@inheritDoc}
31
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::title()
32
+	 */
33
+	public function title(): string
34
+	{
35
+		return I18N::translate('Mapping on place name');
36
+	}
37 37
 
38
-    /**
39
-     * {@inheritDoc}
40
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::map()
41
-     */
42
-    public function map(Place $place, string $feature_property): ?string
43
-    {
44
-        return $place->firstParts(1)->first();
45
-    }
38
+	/**
39
+	 * {@inheritDoc}
40
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::map()
41
+	 */
42
+	public function map(Place $place, string $feature_property): ?string
43
+	{
44
+		return $place->firstParts(1)->first();
45
+	}
46 46
 }
Please login to merge, or discard this patch.
Module/GeoDispersion/PlaceMappers/Config/FilteredTopPlaceMapperConfig.php 2 patches
Indentation   +98 added lines, -98 removed lines patch added patch discarded remove patch
@@ -28,110 +28,110 @@
 block discarded – undo
28 28
  */
29 29
 class FilteredTopPlaceMapperConfig extends GenericPlaceMapperConfig
30 30
 {
31
-    private TreeService $tree_service;
31
+	private TreeService $tree_service;
32 32
 
33
-    /**
34
-     * FilteredTopPlaceMapperConfig
35
-     *
36
-     * @param TreeService $tree_service
37
-     */
38
-    public function __construct(TreeService $tree_service)
39
-    {
40
-        $this->tree_service = $tree_service;
41
-    }
33
+	/**
34
+	 * FilteredTopPlaceMapperConfig
35
+	 *
36
+	 * @param TreeService $tree_service
37
+	 */
38
+	public function __construct(TreeService $tree_service)
39
+	{
40
+		$this->tree_service = $tree_service;
41
+	}
42 42
 
43
-    /**
44
-     * Get the configured Top Places to filter on
45
-     *
46
-     * @return Collection<Place>
47
-     */
48
-    public function topPlaces(): Collection
49
-    {
50
-        return collect($this->get('topPlaces', []))
51
-            ->filter(
52
-                /** @psalm-suppress MissingClosureParamType */
53
-                fn($item): bool => $item instanceof Place
54
-            );
55
-    }
43
+	/**
44
+	 * Get the configured Top Places to filter on
45
+	 *
46
+	 * @return Collection<Place>
47
+	 */
48
+	public function topPlaces(): Collection
49
+	{
50
+		return collect($this->get('topPlaces', []))
51
+			->filter(
52
+				/** @psalm-suppress MissingClosureParamType */
53
+				fn($item): bool => $item instanceof Place
54
+			);
55
+	}
56 56
 
57
-    /**
58
-     * {@inheritDoc}
59
-     * @see \MyArtJaub\Webtrees\Common\GeoDispersion\Config\GenericPlaceMapperConfig::jsonSerializeConfig()
60
-     */
61
-    public function jsonSerializeConfig()
62
-    {
63
-        return [
64
-            'topPlaces' => $this->topPlaces()
65
-                ->map(fn(Place $place): array => [ $place->tree()->id(), $place->gedcomName() ])
66
-                ->toArray()
67
-        ];
68
-    }
57
+	/**
58
+	 * {@inheritDoc}
59
+	 * @see \MyArtJaub\Webtrees\Common\GeoDispersion\Config\GenericPlaceMapperConfig::jsonSerializeConfig()
60
+	 */
61
+	public function jsonSerializeConfig()
62
+	{
63
+		return [
64
+			'topPlaces' => $this->topPlaces()
65
+				->map(fn(Place $place): array => [ $place->tree()->id(), $place->gedcomName() ])
66
+				->toArray()
67
+		];
68
+	}
69 69
 
70
-    /**
71
-     * {@inheritDoc}
72
-     * @see \MyArtJaub\Webtrees\Common\GeoDispersion\Config\GenericPlaceMapperConfig::jsonDeserialize()
73
-     */
74
-    public function jsonDeserialize($config): self
75
-    {
76
-        if (is_string($config)) {
77
-            return $this->jsonDeserialize(json_decode($config));
78
-        }
79
-        if (is_array($config)) {
80
-            $this->setConfig([
81
-                'topPlaces' => collect($config['topPlaces'] ?? [])
82
-                    ->filter(
83
-                        /** @psalm-suppress MissingClosureParamType */
84
-                        fn($item): bool => is_array($item) && count($item) == 2
85
-                    )->map(function (array $item): ?Place {
86
-                        try {
87
-                            return new Place($item[1], $this->tree_service->find($item[0]));
88
-                        } catch (RuntimeException $ex) {
89
-                            return null;
90
-                        }
91
-                    })
92
-                    ->filter()
93
-                    ->toArray()
94
-                ]);
95
-        }
96
-        return $this;
97
-    }
70
+	/**
71
+	 * {@inheritDoc}
72
+	 * @see \MyArtJaub\Webtrees\Common\GeoDispersion\Config\GenericPlaceMapperConfig::jsonDeserialize()
73
+	 */
74
+	public function jsonDeserialize($config): self
75
+	{
76
+		if (is_string($config)) {
77
+			return $this->jsonDeserialize(json_decode($config));
78
+		}
79
+		if (is_array($config)) {
80
+			$this->setConfig([
81
+				'topPlaces' => collect($config['topPlaces'] ?? [])
82
+					->filter(
83
+						/** @psalm-suppress MissingClosureParamType */
84
+						fn($item): bool => is_array($item) && count($item) == 2
85
+					)->map(function (array $item): ?Place {
86
+						try {
87
+							return new Place($item[1], $this->tree_service->find($item[0]));
88
+						} catch (RuntimeException $ex) {
89
+							return null;
90
+						}
91
+					})
92
+					->filter()
93
+					->toArray()
94
+				]);
95
+		}
96
+		return $this;
97
+	}
98 98
 
99
-    /**
100
-     * {@inheritDoc}
101
-     * @see \MyArtJaub\Webtrees\Common\GeoDispersion\Config\GenericPlaceMapperConfig::configContent()
102
-     */
103
-    public function configContent(ModuleInterface $module, Tree $tree): string
104
-    {
105
-        return view($module->name() . '::mappers/filtered-top-config', [
106
-            'tree'          =>  $tree,
107
-            'top_places'    =>  $this->topPlaces()
108
-        ]);
109
-    }
99
+	/**
100
+	 * {@inheritDoc}
101
+	 * @see \MyArtJaub\Webtrees\Common\GeoDispersion\Config\GenericPlaceMapperConfig::configContent()
102
+	 */
103
+	public function configContent(ModuleInterface $module, Tree $tree): string
104
+	{
105
+		return view($module->name() . '::mappers/filtered-top-config', [
106
+			'tree'          =>  $tree,
107
+			'top_places'    =>  $this->topPlaces()
108
+		]);
109
+	}
110 110
 
111
-    /**
112
-     * {@inheritDoc}
113
-     * @see \MyArtJaub\Webtrees\Common\GeoDispersion\Config\GenericPlaceMapperConfig::withConfigUpdate()
114
-     */
115
-    public function withConfigUpdate(ServerRequestInterface $request): self
116
-    {
117
-        $tree = $request->getAttribute('tree');
118
-        if (!($tree instanceof Tree)) {
119
-            return $this;
120
-        }
111
+	/**
112
+	 * {@inheritDoc}
113
+	 * @see \MyArtJaub\Webtrees\Common\GeoDispersion\Config\GenericPlaceMapperConfig::withConfigUpdate()
114
+	 */
115
+	public function withConfigUpdate(ServerRequestInterface $request): self
116
+	{
117
+		$tree = $request->getAttribute('tree');
118
+		if (!($tree instanceof Tree)) {
119
+			return $this;
120
+		}
121 121
 
122
-        $params = (array) $request->getParsedBody();
122
+		$params = (array) $request->getParsedBody();
123 123
 
124
-        $top_places = $params['mapper_filt_top_places'] ?? [];
125
-        if (is_array($top_places)) {
126
-            $config = ['topPlaces' => []];
127
-            foreach ($top_places as $top_place_id) {
128
-                $place = Place::find((int) $top_place_id, $tree);
129
-                if (mb_strlen($place->gedcomName()) > 0) {
130
-                    $config['topPlaces'][] = $place;
131
-                }
132
-            }
133
-            $this->setConfig($config);
134
-        }
135
-        return $this;
136
-    }
124
+		$top_places = $params['mapper_filt_top_places'] ?? [];
125
+		if (is_array($top_places)) {
126
+			$config = ['topPlaces' => []];
127
+			foreach ($top_places as $top_place_id) {
128
+				$place = Place::find((int) $top_place_id, $tree);
129
+				if (mb_strlen($place->gedcomName()) > 0) {
130
+					$config['topPlaces'][] = $place;
131
+				}
132
+			}
133
+			$this->setConfig($config);
134
+		}
135
+		return $this;
136
+	}
137 137
 }
Please login to merge, or discard this patch.
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -62,7 +62,7 @@  discard block
 block discarded – undo
62 62
     {
63 63
         return [
64 64
             'topPlaces' => $this->topPlaces()
65
-                ->map(fn(Place $place): array => [ $place->tree()->id(), $place->gedcomName() ])
65
+                ->map(fn(Place $place): array => [$place->tree()->id(), $place->gedcomName()])
66 66
                 ->toArray()
67 67
         ];
68 68
     }
@@ -82,7 +82,7 @@  discard block
 block discarded – undo
82 82
                     ->filter(
83 83
                         /** @psalm-suppress MissingClosureParamType */
84 84
                         fn($item): bool => is_array($item) && count($item) == 2
85
-                    )->map(function (array $item): ?Place {
85
+                    )->map(function(array $item): ?Place {
86 86
                         try {
87 87
                             return new Place($item[1], $this->tree_service->find($item[0]));
88 88
                         } catch (RuntimeException $ex) {
@@ -102,7 +102,7 @@  discard block
 block discarded – undo
102 102
      */
103 103
     public function configContent(ModuleInterface $module, Tree $tree): string
104 104
     {
105
-        return view($module->name() . '::mappers/filtered-top-config', [
105
+        return view($module->name().'::mappers/filtered-top-config', [
106 106
             'tree'          =>  $tree,
107 107
             'top_places'    =>  $this->topPlaces()
108 108
         ]);
@@ -119,13 +119,13 @@  discard block
 block discarded – undo
119 119
             return $this;
120 120
         }
121 121
 
122
-        $params = (array) $request->getParsedBody();
122
+        $params = (array)$request->getParsedBody();
123 123
 
124 124
         $top_places = $params['mapper_filt_top_places'] ?? [];
125 125
         if (is_array($top_places)) {
126 126
             $config = ['topPlaces' => []];
127 127
             foreach ($top_places as $top_place_id) {
128
-                $place = Place::find((int) $top_place_id, $tree);
128
+                $place = Place::find((int)$top_place_id, $tree);
129 129
                 if (mb_strlen($place->gedcomName()) > 0) {
130 130
                     $config['topPlaces'][] = $place;
131 131
                 }
Please login to merge, or discard this patch.