Passed
Push — main ( c808ff...4e47c4 )
by Jonathan
13:05
created
app/Module/GeoDispersion/PlaceMappers/SimpleTopFilteredPlaceMapper.php 1 patch
Indentation   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -28,51 +28,51 @@
 block discarded – undo
28 28
  */
29 29
 class SimpleTopFilteredPlaceMapper extends SimplePlaceMapper implements PlaceMapperInterface
30 30
 {
31
-    use TopFilteredPlaceMapperTrait;
31
+	use TopFilteredPlaceMapperTrait;
32 32
 
33
-    /**
34
-     * {@inheritDoc}
35
-     * @see \MyArtJaub\Webtrees\Module\GeoDispersion\PlaceMappers\SimplePlaceMapper::title()
36
-     */
37
-    public function title(): string
38
-    {
39
-        return I18N::translate('Mapping on place name with filter');
40
-    }
33
+	/**
34
+	 * {@inheritDoc}
35
+	 * @see \MyArtJaub\Webtrees\Module\GeoDispersion\PlaceMappers\SimplePlaceMapper::title()
36
+	 */
37
+	public function title(): string
38
+	{
39
+		return I18N::translate('Mapping on place name with filter');
40
+	}
41 41
 
42
-    /**
43
-     * {@inheritDoc}
44
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::boot()
45
-     */
46
-    public function boot(): void
47
-    {
48
-        parent::boot();
49
-        $top_places = $this->config()->get('topPlaces');
50
-        if (is_array($top_places)) {
51
-            $this->setTopPlaces($top_places);
52
-        }
53
-    }
42
+	/**
43
+	 * {@inheritDoc}
44
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::boot()
45
+	 */
46
+	public function boot(): void
47
+	{
48
+		parent::boot();
49
+		$top_places = $this->config()->get('topPlaces');
50
+		if (is_array($top_places)) {
51
+			$this->setTopPlaces($top_places);
52
+		}
53
+	}
54 54
 
55
-    /**
56
-     * {@inheritDoc}
57
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::config()
58
-     */
59
-    public function config(): PlaceMapperConfigInterface
60
-    {
61
-        if (!(parent::config() instanceof FilteredTopPlaceMapperConfig)) {
62
-            $this->setConfig(app(FilteredTopPlaceMapperConfig::class));
63
-        }
64
-        return parent::config();
65
-    }
55
+	/**
56
+	 * {@inheritDoc}
57
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::config()
58
+	 */
59
+	public function config(): PlaceMapperConfigInterface
60
+	{
61
+		if (!(parent::config() instanceof FilteredTopPlaceMapperConfig)) {
62
+			$this->setConfig(app(FilteredTopPlaceMapperConfig::class));
63
+		}
64
+		return parent::config();
65
+	}
66 66
 
67
-    /**
68
-     * {@inheritDoc}
69
-     * @see \MyArtJaub\Webtrees\Module\GeoDispersion\PlaceMappers\SimplePlaceMapper::map()
70
-     */
71
-    public function map(Place $place, string $feature_property): ?string
72
-    {
73
-        if (!$this->belongsToTopLevels($place)) {
74
-            return null;
75
-        }
76
-        return parent::map($place, $feature_property);
77
-    }
67
+	/**
68
+	 * {@inheritDoc}
69
+	 * @see \MyArtJaub\Webtrees\Module\GeoDispersion\PlaceMappers\SimplePlaceMapper::map()
70
+	 */
71
+	public function map(Place $place, string $feature_property): ?string
72
+	{
73
+		if (!$this->belongsToTopLevels($place)) {
74
+			return null;
75
+		}
76
+		return parent::map($place, $feature_property);
77
+	}
78 78
 }
Please login to merge, or discard this patch.
app/Module/AdminTasks/Services/TokenService.php 1 patch
Indentation   +28 added lines, -28 removed lines patch added patch discarded remove patch
@@ -20,32 +20,32 @@
 block discarded – undo
20 20
  */
21 21
 class TokenService
22 22
 {
23
-    /**
24
-     * Returns a random-ish generated token of a given size
25
-     *
26
-     * @param int $length Length of the token, default to 32
27
-     * @return string Random token
28
-     */
29
-    public function generateRandomToken(int $length = 32): string
30
-    {
31
-        $chars = str_split('abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789');
32
-        $len_chars = count($chars);
33
-        $token = '';
34
-
35
-        for ($i = 0; $i < $length; $i++) {
36
-            $token .= $chars[mt_rand(0, $len_chars - 1)];
37
-        }
38
-
39
-        # Number of 32 char chunks
40
-        $chunks = ceil(strlen($token) / 32);
41
-        $md5token = '';
42
-
43
-        # Run each chunk through md5
44
-        for ($i = 1; $i <= $chunks; $i++) {
45
-            $md5token .= md5(substr($token, $i * 32 - 32, 32));
46
-        }
47
-
48
-        # Trim the token to the required length
49
-        return substr($md5token, 0, $length);
50
-    }
23
+	/**
24
+	 * Returns a random-ish generated token of a given size
25
+	 *
26
+	 * @param int $length Length of the token, default to 32
27
+	 * @return string Random token
28
+	 */
29
+	public function generateRandomToken(int $length = 32): string
30
+	{
31
+		$chars = str_split('abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789');
32
+		$len_chars = count($chars);
33
+		$token = '';
34
+
35
+		for ($i = 0; $i < $length; $i++) {
36
+			$token .= $chars[mt_rand(0, $len_chars - 1)];
37
+		}
38
+
39
+		# Number of 32 char chunks
40
+		$chunks = ceil(strlen($token) / 32);
41
+		$md5token = '';
42
+
43
+		# Run each chunk through md5
44
+		for ($i = 1; $i <= $chunks; $i++) {
45
+			$md5token .= md5(substr($token, $i * 32 - 32, 32));
46
+		}
47
+
48
+		# Trim the token to the required length
49
+		return substr($md5token, 0, $length);
50
+	}
51 51
 }
Please login to merge, or discard this patch.
app/Helpers/functions.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -28,15 +28,15 @@  discard block
 block discarded – undo
28 28
  */
29 29
 function hook(string $hook_interface, callable $apply, $default = null)
30 30
 {
31
-    try {
32
-        $hook_collector = app(HookServiceInterface::class)->use($hook_interface);
33
-        if ($hook_collector !== null) {
34
-            return $apply($hook_collector);
35
-        }
36
-    } catch (BindingResolutionException $ex) {
37
-    }
31
+	try {
32
+		$hook_collector = app(HookServiceInterface::class)->use($hook_interface);
33
+		if ($hook_collector !== null) {
34
+			return $apply($hook_collector);
35
+		}
36
+	} catch (BindingResolutionException $ex) {
37
+	}
38 38
 
39
-    return $default;
39
+	return $default;
40 40
 }
41 41
 
42 42
 /**
@@ -48,5 +48,5 @@  discard block
 block discarded – undo
48 48
  */
49 49
 function columnIndex(int $initial_index, Collection $new_column_indexes): int
50 50
 {
51
-    return $initial_index + $new_column_indexes->filter(fn(int $i) => $i <= $initial_index)->count();
51
+	return $initial_index + $new_column_indexes->filter(fn(int $i) => $i <= $initial_index)->count();
52 52
 }
Please login to merge, or discard this patch.
app/Common/GeoDispersion/GeoAnalysis/GeoAnalysisResult.php 1 patch
Indentation   +221 added lines, -221 removed lines patch added patch discarded remove patch
@@ -24,225 +24,225 @@
 block discarded – undo
24 24
  */
25 25
 class GeoAnalysisResult
26 26
 {
27
-    private string $description;
28
-    private int $order;
29
-    private int $unknown_count;
30
-    /**
31
-     * @var Collection<GeoAnalysisResultItem>
32
-     */
33
-    private Collection $places;
34
-
35
-    /**
36
-     * Constructor for GeoAnalysisResult
37
-     *
38
-     * @param string $description
39
-     * @param int $order
40
-     * @param Collection<GeoAnalysisResultItem> $places
41
-     * @param int $unknown
42
-     */
43
-    final public function __construct(
44
-        string $description,
45
-        int $order = 0,
46
-        Collection $places = null,
47
-        int $unknown = 0
48
-    ) {
49
-        $this->description = $description;
50
-        $this->order = $order;
51
-        $this->places = $places ?? new Collection();
52
-        $this->unknown_count = $unknown;
53
-    }
54
-
55
-    /**
56
-     * Get the category description
57
-     *
58
-     * @return string
59
-     */
60
-    public function description(): string
61
-    {
62
-        return $this->description;
63
-    }
64
-
65
-    /**
66
-     * Get the category order
67
-     *
68
-     * @return int
69
-     */
70
-    public function order(): int
71
-    {
72
-        return $this->order;
73
-    }
74
-
75
-    /**
76
-     * Add a place to the analysis result
77
-     *
78
-     * @param GeoAnalysisPlace $place
79
-     */
80
-    public function addPlace(GeoAnalysisPlace $place): void
81
-    {
82
-        if ($place->isKnown()) {
83
-            /** @var GeoAnalysisResultItem $item */
84
-            $item = $this->places->get($place->key(), new GeoAnalysisResultItem($place));
85
-            $this->places->put($item->key(), $item->increment());
86
-        } else {
87
-            $this->addUnknown();
88
-        }
89
-    }
90
-
91
-    /**
92
-     * Exclude a place from the analysis result
93
-     *
94
-     * @param GeoAnalysisPlace $place
95
-     */
96
-    public function exclude(GeoAnalysisPlace $place): void
97
-    {
98
-        /** @var GeoAnalysisResultItem|null $item */
99
-        $item = $this->places->get($place->key());
100
-        if ($item !== null) {
101
-            $item->place()->exclude();
102
-        }
103
-    }
104
-
105
-    /**
106
-     * Add an unknown place to the analysis result
107
-     */
108
-    public function addUnknown(): void
109
-    {
110
-        $this->unknown_count++;
111
-    }
112
-
113
-    /**
114
-     * Take a copy of the current analysis result
115
-     *
116
-     * @return static
117
-     */
118
-    public function copy(): self
119
-    {
120
-        return new static(
121
-            $this->description(),
122
-            $this->order(),
123
-            $this->places->map(fn(GeoAnalysisResultItem $item): GeoAnalysisResultItem => clone $item),
124
-            $this->countUnknown()
125
-        );
126
-    }
127
-
128
-    /**
129
-     * Merge the current analysis result with another.
130
-     * The current object is modified, not the second one.
131
-     *
132
-     * @param GeoAnalysisResult $other
133
-     * @return $this
134
-     */
135
-    public function merge(GeoAnalysisResult $other): self
136
-    {
137
-        $this->places->each(function (GeoAnalysisResultItem $item) use ($other): void {
138
-            if ($other->places->has($item->key())) {
139
-                $item->place()->exclude(
140
-                    $item->place()->isExcluded()
141
-                    && $other->places->get($item->key())->place()->isExcluded()
142
-                );
143
-            }
144
-        });
145
-
146
-        $other->places->each(function (GeoAnalysisResultItem $item): void {
147
-            if (!$this->places->has($item->key())) {
148
-                $this->addPlace($item->place());
149
-            }
150
-        });
151
-
152
-        return $this;
153
-    }
154
-
155
-    /**
156
-     * Get the count of Known places
157
-     *
158
-     * @return int
159
-     */
160
-    public function countKnown(): int
161
-    {
162
-        return $this->places->sum(fn(GeoAnalysisResultItem $item): int => $item->count()) ?? 0;
163
-    }
164
-
165
-    /**
166
-     * Get the count of Found places
167
-     *
168
-     * @return int
169
-     */
170
-    public function countFound(): int
171
-    {
172
-        return $this->places
173
-            ->reject(fn(GeoAnalysisResultItem $item): bool => $item->place()->isExcluded())
174
-            ->sum(fn(GeoAnalysisResultItem $item): int => $item->count()) ?? 0;
175
-    }
176
-
177
-    /**
178
-     * Get the count of Excluded places
179
-     *
180
-     * @return int
181
-     */
182
-    public function countExcluded(): int
183
-    {
184
-        return $this->places
185
-            ->filter(fn(GeoAnalysisResultItem $item): bool => $item->place()->isExcluded())
186
-            ->sum(fn(GeoAnalysisResultItem $item): int => $item->count()) ?? 0;
187
-    }
188
-
189
-    /**
190
-     * Get the count of Unknown places
191
-     *
192
-     * @return int
193
-     */
194
-    public function countUnknown(): int
195
-    {
196
-        return $this->unknown_count;
197
-    }
198
-
199
-    /**
200
-     * Get the count of the most represented Place in the analysis result
201
-     *
202
-     * @return int
203
-     */
204
-    public function maxCount(): int
205
-    {
206
-        return $this->places->max(fn(GeoAnalysisResultItem $item): int => $item->count()) ?? 0;
207
-    }
208
-
209
-    /**
210
-     * Get the list of Known places with their associated count
211
-     *
212
-     * @param bool $exclude_other
213
-     * @return Collection<GeoAnalysisResultItem>
214
-     */
215
-    public function knownPlaces(bool $exclude_other = false): Collection
216
-    {
217
-        if ($exclude_other) {
218
-            return $this->places->reject(fn(GeoAnalysisResultItem $item): bool => $item->place()->isExcluded());
219
-        }
220
-        return $this->places;
221
-    }
222
-
223
-    /**
224
-     * Get the list of Known places with their associated count.
225
-     * The list is sorted first by descending count, then by ascending Place name
226
-     *
227
-     * @param bool $exclude_other
228
-     * @return Collection<GeoAnalysisResultItem>
229
-     */
230
-    public function sortedKnownPlaces(bool $exclude_other = false): Collection
231
-    {
232
-        return $this->knownPlaces($exclude_other)->sortBy([
233
-            fn (GeoAnalysisResultItem $a, GeoAnalysisResultItem $b): int => $b->count() <=> $a->count(),
234
-            fn (GeoAnalysisResultItem $a, GeoAnalysisResultItem $b): int =>
235
-                I18N::comparator()($a->place()->place()->gedcomName(), $b->place()->place()->gedcomName())
236
-        ]);
237
-    }
238
-
239
-    /**
240
-     * Get the list of Excluded places
241
-     *
242
-     * @return Collection<GeoAnalysisResultItem>
243
-     */
244
-    public function excludedPlaces(): Collection
245
-    {
246
-        return $this->places->filter(fn(GeoAnalysisResultItem $item): bool => $item->place()->isExcluded());
247
-    }
27
+	private string $description;
28
+	private int $order;
29
+	private int $unknown_count;
30
+	/**
31
+	 * @var Collection<GeoAnalysisResultItem>
32
+	 */
33
+	private Collection $places;
34
+
35
+	/**
36
+	 * Constructor for GeoAnalysisResult
37
+	 *
38
+	 * @param string $description
39
+	 * @param int $order
40
+	 * @param Collection<GeoAnalysisResultItem> $places
41
+	 * @param int $unknown
42
+	 */
43
+	final public function __construct(
44
+		string $description,
45
+		int $order = 0,
46
+		Collection $places = null,
47
+		int $unknown = 0
48
+	) {
49
+		$this->description = $description;
50
+		$this->order = $order;
51
+		$this->places = $places ?? new Collection();
52
+		$this->unknown_count = $unknown;
53
+	}
54
+
55
+	/**
56
+	 * Get the category description
57
+	 *
58
+	 * @return string
59
+	 */
60
+	public function description(): string
61
+	{
62
+		return $this->description;
63
+	}
64
+
65
+	/**
66
+	 * Get the category order
67
+	 *
68
+	 * @return int
69
+	 */
70
+	public function order(): int
71
+	{
72
+		return $this->order;
73
+	}
74
+
75
+	/**
76
+	 * Add a place to the analysis result
77
+	 *
78
+	 * @param GeoAnalysisPlace $place
79
+	 */
80
+	public function addPlace(GeoAnalysisPlace $place): void
81
+	{
82
+		if ($place->isKnown()) {
83
+			/** @var GeoAnalysisResultItem $item */
84
+			$item = $this->places->get($place->key(), new GeoAnalysisResultItem($place));
85
+			$this->places->put($item->key(), $item->increment());
86
+		} else {
87
+			$this->addUnknown();
88
+		}
89
+	}
90
+
91
+	/**
92
+	 * Exclude a place from the analysis result
93
+	 *
94
+	 * @param GeoAnalysisPlace $place
95
+	 */
96
+	public function exclude(GeoAnalysisPlace $place): void
97
+	{
98
+		/** @var GeoAnalysisResultItem|null $item */
99
+		$item = $this->places->get($place->key());
100
+		if ($item !== null) {
101
+			$item->place()->exclude();
102
+		}
103
+	}
104
+
105
+	/**
106
+	 * Add an unknown place to the analysis result
107
+	 */
108
+	public function addUnknown(): void
109
+	{
110
+		$this->unknown_count++;
111
+	}
112
+
113
+	/**
114
+	 * Take a copy of the current analysis result
115
+	 *
116
+	 * @return static
117
+	 */
118
+	public function copy(): self
119
+	{
120
+		return new static(
121
+			$this->description(),
122
+			$this->order(),
123
+			$this->places->map(fn(GeoAnalysisResultItem $item): GeoAnalysisResultItem => clone $item),
124
+			$this->countUnknown()
125
+		);
126
+	}
127
+
128
+	/**
129
+	 * Merge the current analysis result with another.
130
+	 * The current object is modified, not the second one.
131
+	 *
132
+	 * @param GeoAnalysisResult $other
133
+	 * @return $this
134
+	 */
135
+	public function merge(GeoAnalysisResult $other): self
136
+	{
137
+		$this->places->each(function (GeoAnalysisResultItem $item) use ($other): void {
138
+			if ($other->places->has($item->key())) {
139
+				$item->place()->exclude(
140
+					$item->place()->isExcluded()
141
+					&& $other->places->get($item->key())->place()->isExcluded()
142
+				);
143
+			}
144
+		});
145
+
146
+		$other->places->each(function (GeoAnalysisResultItem $item): void {
147
+			if (!$this->places->has($item->key())) {
148
+				$this->addPlace($item->place());
149
+			}
150
+		});
151
+
152
+		return $this;
153
+	}
154
+
155
+	/**
156
+	 * Get the count of Known places
157
+	 *
158
+	 * @return int
159
+	 */
160
+	public function countKnown(): int
161
+	{
162
+		return $this->places->sum(fn(GeoAnalysisResultItem $item): int => $item->count()) ?? 0;
163
+	}
164
+
165
+	/**
166
+	 * Get the count of Found places
167
+	 *
168
+	 * @return int
169
+	 */
170
+	public function countFound(): int
171
+	{
172
+		return $this->places
173
+			->reject(fn(GeoAnalysisResultItem $item): bool => $item->place()->isExcluded())
174
+			->sum(fn(GeoAnalysisResultItem $item): int => $item->count()) ?? 0;
175
+	}
176
+
177
+	/**
178
+	 * Get the count of Excluded places
179
+	 *
180
+	 * @return int
181
+	 */
182
+	public function countExcluded(): int
183
+	{
184
+		return $this->places
185
+			->filter(fn(GeoAnalysisResultItem $item): bool => $item->place()->isExcluded())
186
+			->sum(fn(GeoAnalysisResultItem $item): int => $item->count()) ?? 0;
187
+	}
188
+
189
+	/**
190
+	 * Get the count of Unknown places
191
+	 *
192
+	 * @return int
193
+	 */
194
+	public function countUnknown(): int
195
+	{
196
+		return $this->unknown_count;
197
+	}
198
+
199
+	/**
200
+	 * Get the count of the most represented Place in the analysis result
201
+	 *
202
+	 * @return int
203
+	 */
204
+	public function maxCount(): int
205
+	{
206
+		return $this->places->max(fn(GeoAnalysisResultItem $item): int => $item->count()) ?? 0;
207
+	}
208
+
209
+	/**
210
+	 * Get the list of Known places with their associated count
211
+	 *
212
+	 * @param bool $exclude_other
213
+	 * @return Collection<GeoAnalysisResultItem>
214
+	 */
215
+	public function knownPlaces(bool $exclude_other = false): Collection
216
+	{
217
+		if ($exclude_other) {
218
+			return $this->places->reject(fn(GeoAnalysisResultItem $item): bool => $item->place()->isExcluded());
219
+		}
220
+		return $this->places;
221
+	}
222
+
223
+	/**
224
+	 * Get the list of Known places with their associated count.
225
+	 * The list is sorted first by descending count, then by ascending Place name
226
+	 *
227
+	 * @param bool $exclude_other
228
+	 * @return Collection<GeoAnalysisResultItem>
229
+	 */
230
+	public function sortedKnownPlaces(bool $exclude_other = false): Collection
231
+	{
232
+		return $this->knownPlaces($exclude_other)->sortBy([
233
+			fn (GeoAnalysisResultItem $a, GeoAnalysisResultItem $b): int => $b->count() <=> $a->count(),
234
+			fn (GeoAnalysisResultItem $a, GeoAnalysisResultItem $b): int =>
235
+				I18N::comparator()($a->place()->place()->gedcomName(), $b->place()->place()->gedcomName())
236
+		]);
237
+	}
238
+
239
+	/**
240
+	 * Get the list of Excluded places
241
+	 *
242
+	 * @return Collection<GeoAnalysisResultItem>
243
+	 */
244
+	public function excludedPlaces(): Collection
245
+	{
246
+		return $this->places->filter(fn(GeoAnalysisResultItem $item): bool => $item->place()->isExcluded());
247
+	}
248 248
 }
Please login to merge, or discard this patch.
app/Common/GeoDispersion/Maps/SimpleFilesystemMap.php 1 patch
Indentation   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -27,59 +27,59 @@
 block discarded – undo
27 27
  */
28 28
 class SimpleFilesystemMap implements MapDefinitionInterface
29 29
 {
30
-    private string $id;
31
-    private string $title;
32
-    private string $path;
33
-    private FilesystemReader $filesystem;
30
+	private string $id;
31
+	private string $title;
32
+	private string $path;
33
+	private FilesystemReader $filesystem;
34 34
 
35
-    /**
36
-     * Constructor for SimpleFilesystemMap
37
-     *
38
-     * @param string $id
39
-     * @param string $title
40
-     * @param FilesystemReader $filesystem
41
-     * @param string $path
42
-     */
43
-    public function __construct(string $id, string $title, FilesystemReader $filesystem, string $path)
44
-    {
45
-        $this->id = $id;
46
-        $this->title = $title;
47
-        $this->filesystem = $filesystem;
48
-        $this->path = $path;
49
-    }
35
+	/**
36
+	 * Constructor for SimpleFilesystemMap
37
+	 *
38
+	 * @param string $id
39
+	 * @param string $title
40
+	 * @param FilesystemReader $filesystem
41
+	 * @param string $path
42
+	 */
43
+	public function __construct(string $id, string $title, FilesystemReader $filesystem, string $path)
44
+	{
45
+		$this->id = $id;
46
+		$this->title = $title;
47
+		$this->filesystem = $filesystem;
48
+		$this->path = $path;
49
+	}
50 50
 
51
-    /**
52
-     * {@inheritDoc}
53
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\MapDefinitionInterface::id()
54
-     */
55
-    public function id(): string
56
-    {
57
-        return $this->id;
58
-    }
51
+	/**
52
+	 * {@inheritDoc}
53
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\MapDefinitionInterface::id()
54
+	 */
55
+	public function id(): string
56
+	{
57
+		return $this->id;
58
+	}
59 59
 
60
-    /**
61
-     * {@inheritDoc}
62
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\MapDefinitionInterface::title()
63
-     */
64
-    public function title(): string
65
-    {
66
-        return $this->title;
67
-    }
60
+	/**
61
+	 * {@inheritDoc}
62
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\MapDefinitionInterface::title()
63
+	 */
64
+	public function title(): string
65
+	{
66
+		return $this->title;
67
+	}
68 68
 
69
-    /**
70
-     * {@inheritDoc}
71
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\MapDefinitionInterface::features()
72
-     */
73
-    public function features(): array
74
-    {
75
-        $reader = new GeoJSONReader();
76
-        try {
77
-            $feature_collection = $reader->read($this->filesystem->read($this->path));
78
-            if ($feature_collection instanceof FeatureCollection) {
79
-                return $feature_collection->getFeatures();
80
-            }
81
-        } catch (Throwable $ex) {
82
-        }
83
-        return [];
84
-    }
69
+	/**
70
+	 * {@inheritDoc}
71
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\MapDefinitionInterface::features()
72
+	 */
73
+	public function features(): array
74
+	{
75
+		$reader = new GeoJSONReader();
76
+		try {
77
+			$feature_collection = $reader->read($this->filesystem->read($this->path));
78
+			if ($feature_collection instanceof FeatureCollection) {
79
+				return $feature_collection->getFeatures();
80
+			}
81
+		} catch (Throwable $ex) {
82
+		}
83
+		return [];
84
+	}
85 85
 }
Please login to merge, or discard this patch.
app/Common/GeoDispersion/Config/MapViewConfig.php 1 patch
Indentation   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -23,51 +23,51 @@
 block discarded – undo
23 23
  */
24 24
 class MapViewConfig implements MapViewConfigInterface
25 25
 {
26
-    private string $map_mapping_property;
27
-    private PlaceMapperConfigInterface $mapper_config;
26
+	private string $map_mapping_property;
27
+	private PlaceMapperConfigInterface $mapper_config;
28 28
 
29
-    /**
30
-     * Constructor for MapViewConfig
31
-     *
32
-     * @param string $map_mapping_property
33
-     * @param PlaceMapperConfigInterface $mapper_config
34
-     */
35
-    public function __construct(
36
-        string $map_mapping_property,
37
-        PlaceMapperConfigInterface $mapper_config = null
38
-    ) {
39
-        $this->map_mapping_property = $map_mapping_property;
40
-        $this->mapper_config = $mapper_config ?? new NullPlaceMapperConfig();
41
-    }
29
+	/**
30
+	 * Constructor for MapViewConfig
31
+	 *
32
+	 * @param string $map_mapping_property
33
+	 * @param PlaceMapperConfigInterface $mapper_config
34
+	 */
35
+	public function __construct(
36
+		string $map_mapping_property,
37
+		PlaceMapperConfigInterface $mapper_config = null
38
+	) {
39
+		$this->map_mapping_property = $map_mapping_property;
40
+		$this->mapper_config = $mapper_config ?? new NullPlaceMapperConfig();
41
+	}
42 42
 
43
-    /**
44
-     * {@inheritDoc}
45
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\MapViewConfigInterface::mapMappingProperty()
46
-     */
47
-    public function mapMappingProperty(): string
48
-    {
49
-        return $this->map_mapping_property;
50
-    }
43
+	/**
44
+	 * {@inheritDoc}
45
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\MapViewConfigInterface::mapMappingProperty()
46
+	 */
47
+	public function mapMappingProperty(): string
48
+	{
49
+		return $this->map_mapping_property;
50
+	}
51 51
 
52
-    /**
53
-     * {@inheritDoc}
54
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\MapViewConfigInterface::mapperConfig()
55
-     */
56
-    public function mapperConfig(): PlaceMapperConfigInterface
57
-    {
58
-        return $this->mapper_config;
59
-    }
52
+	/**
53
+	 * {@inheritDoc}
54
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\MapViewConfigInterface::mapperConfig()
55
+	 */
56
+	public function mapperConfig(): PlaceMapperConfigInterface
57
+	{
58
+		return $this->mapper_config;
59
+	}
60 60
 
61
-    /**
62
-     * {@inheritDoc}
63
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\MapViewConfigInterface::with()
64
-     * @return static
65
-     */
66
-    public function with(string $mapping_property, PlaceMapperConfigInterface $mapper_config): self
67
-    {
68
-        $new = clone $this;
69
-        $new->map_mapping_property = $mapping_property;
70
-        $new->mapper_config = $mapper_config;
71
-        return $new;
72
-    }
61
+	/**
62
+	 * {@inheritDoc}
63
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\MapViewConfigInterface::with()
64
+	 * @return static
65
+	 */
66
+	public function with(string $mapping_property, PlaceMapperConfigInterface $mapper_config): self
67
+	{
68
+		$new = clone $this;
69
+		$new->map_mapping_property = $mapping_property;
70
+		$new->mapper_config = $mapper_config;
71
+		return $new;
72
+	}
73 73
 }
Please login to merge, or discard this patch.
app/Module/ModuleMyArtJaubTrait.php 1 patch
Indentation   +78 added lines, -78 removed lines patch added patch discarded remove patch
@@ -26,82 +26,82 @@
 block discarded – undo
26 26
  */
27 27
 trait ModuleMyArtJaubTrait
28 28
 {
29
-    use ModuleCustomTrait;
30
-
31
-    /**
32
-     * @see \Fisharebest\Webtrees\Module\AbstractModule::boot()
33
-     */
34
-    public function boot(): void
35
-    {
36
-        View::registerNamespace($this->name(), $this->resourcesFolder() . 'views/');
37
-
38
-        $this->loadRoutes(app(RouterContainer::class)->getMap());
39
-    }
40
-
41
-    /**
42
-     * @see \Fisharebest\Webtrees\Module\AbstractModule::resourcesFolder()
43
-     */
44
-    public function resourcesFolder(): string
45
-    {
46
-        return Webtrees::MODULES_DIR . trim($this->name(), '_') . '/resources/';
47
-    }
48
-
49
-    /**
50
-     * @see \Fisharebest\Webtrees\Module\ModuleCustomInterface::customModuleAuthorName()
51
-     */
52
-    public function customModuleAuthorName(): string
53
-    {
54
-        return 'Jonathan Jaubart';
55
-    }
56
-
57
-    /**
58
-     * @see \Fisharebest\Webtrees\Module\ModuleCustomInterface::customModuleSupportUrl()
59
-     */
60
-    public function customModuleSupportUrl(): string
61
-    {
62
-        return 'https://github.com/jon48/webtrees-lib';
63
-    }
64
-
65
-    /**
66
-     * @see \Fisharebest\Webtrees\Module\ModuleCustomInterface::customTranslations()
67
-     *
68
-     * @return array<string, string>
69
-     */
70
-    public function customTranslations(string $language): array
71
-    {
72
-        $translation_file = $this->resourcesFolder() . 'lang/' . $language . '/messages.php';
73
-
74
-        try {
75
-            $translation  = new Translation($translation_file);
76
-            return $translation->asArray();
77
-        } catch (\Exception $e) {
78
-        }
79
-
80
-        return [];
81
-    }
82
-
83
-    /**
84
-     * @see \MyArtJaub\Webtrees\Module\ModuleMyArtJaubInterface::loadRoutes
85
-     *
86
-     * @param Map<\Aura\Router\Route> $router
87
-     */
88
-    public function loadRoutes(Map $router): void
89
-    {
90
-    }
91
-
92
-    /**
93
-     * @see \MyArtJaub\Webtrees\Module\ModuleMyArtJaubInterface::moduleCssUrl
94
-     */
95
-    public function moduleCssUrl(): string
96
-    {
97
-        /** @var ModuleThemeInterface $theme */
98
-        $theme = app(ModuleThemeInterface::class);
99
-        $css_file = $this->resourcesFolder() . 'css/' . $theme->name() . '.min.css';
100
-
101
-        if (file_exists($css_file)) {
102
-            return $this->assetUrl('css/' . $theme->name() . '.min.css');
103
-        } else {
104
-            return $this->assetUrl('css/default.min.css');
105
-        }
106
-    }
29
+	use ModuleCustomTrait;
30
+
31
+	/**
32
+	 * @see \Fisharebest\Webtrees\Module\AbstractModule::boot()
33
+	 */
34
+	public function boot(): void
35
+	{
36
+		View::registerNamespace($this->name(), $this->resourcesFolder() . 'views/');
37
+
38
+		$this->loadRoutes(app(RouterContainer::class)->getMap());
39
+	}
40
+
41
+	/**
42
+	 * @see \Fisharebest\Webtrees\Module\AbstractModule::resourcesFolder()
43
+	 */
44
+	public function resourcesFolder(): string
45
+	{
46
+		return Webtrees::MODULES_DIR . trim($this->name(), '_') . '/resources/';
47
+	}
48
+
49
+	/**
50
+	 * @see \Fisharebest\Webtrees\Module\ModuleCustomInterface::customModuleAuthorName()
51
+	 */
52
+	public function customModuleAuthorName(): string
53
+	{
54
+		return 'Jonathan Jaubart';
55
+	}
56
+
57
+	/**
58
+	 * @see \Fisharebest\Webtrees\Module\ModuleCustomInterface::customModuleSupportUrl()
59
+	 */
60
+	public function customModuleSupportUrl(): string
61
+	{
62
+		return 'https://github.com/jon48/webtrees-lib';
63
+	}
64
+
65
+	/**
66
+	 * @see \Fisharebest\Webtrees\Module\ModuleCustomInterface::customTranslations()
67
+	 *
68
+	 * @return array<string, string>
69
+	 */
70
+	public function customTranslations(string $language): array
71
+	{
72
+		$translation_file = $this->resourcesFolder() . 'lang/' . $language . '/messages.php';
73
+
74
+		try {
75
+			$translation  = new Translation($translation_file);
76
+			return $translation->asArray();
77
+		} catch (\Exception $e) {
78
+		}
79
+
80
+		return [];
81
+	}
82
+
83
+	/**
84
+	 * @see \MyArtJaub\Webtrees\Module\ModuleMyArtJaubInterface::loadRoutes
85
+	 *
86
+	 * @param Map<\Aura\Router\Route> $router
87
+	 */
88
+	public function loadRoutes(Map $router): void
89
+	{
90
+	}
91
+
92
+	/**
93
+	 * @see \MyArtJaub\Webtrees\Module\ModuleMyArtJaubInterface::moduleCssUrl
94
+	 */
95
+	public function moduleCssUrl(): string
96
+	{
97
+		/** @var ModuleThemeInterface $theme */
98
+		$theme = app(ModuleThemeInterface::class);
99
+		$css_file = $this->resourcesFolder() . 'css/' . $theme->name() . '.min.css';
100
+
101
+		if (file_exists($css_file)) {
102
+			return $this->assetUrl('css/' . $theme->name() . '.min.css');
103
+		} else {
104
+			return $this->assetUrl('css/default.min.css');
105
+		}
106
+	}
107 107
 }
Please login to merge, or discard this patch.
app/Module/Certificates/Services/CertificateFilesystemService.php 1 patch
Indentation   +117 added lines, -117 removed lines patch added patch discarded remove patch
@@ -32,129 +32,129 @@
 block discarded – undo
32 32
  */
33 33
 class CertificateFilesystemService
34 34
 {
35
-    /**
36
-     * @var array<int,FilesystemOperator> $filesystem
37
-     */
38
-    private array $filesystem = [];
35
+	/**
36
+	 * @var array<int,FilesystemOperator> $filesystem
37
+	 */
38
+	private array $filesystem = [];
39 39
 
40
-    /**
41
-     * Get the filesystem containing certificates for a tree.
42
-     *
43
-     * @param Tree $tree
44
-     * @return FilesystemOperator
45
-     */
46
-    public function filesystem(Tree $tree): FilesystemOperator
47
-    {
48
-        if (!isset($this->filesystem[$tree->id()])) {
49
-            $cert_dir = $tree->getPreference('MAJ_CERTIF_ROOTDIR', 'certificates/');
50
-            $adapter   = new ChrootAdapter(Registry::filesystem()->data(), $cert_dir);
40
+	/**
41
+	 * Get the filesystem containing certificates for a tree.
42
+	 *
43
+	 * @param Tree $tree
44
+	 * @return FilesystemOperator
45
+	 */
46
+	public function filesystem(Tree $tree): FilesystemOperator
47
+	{
48
+		if (!isset($this->filesystem[$tree->id()])) {
49
+			$cert_dir = $tree->getPreference('MAJ_CERTIF_ROOTDIR', 'certificates/');
50
+			$adapter   = new ChrootAdapter(Registry::filesystem()->data(), $cert_dir);
51 51
 
52
-            $this->filesystem[$tree->id()] = new FileSystem($adapter);
53
-        }
54
-        return $this->filesystem[$tree->id()];
55
-    }
52
+			$this->filesystem[$tree->id()] = new FileSystem($adapter);
53
+		}
54
+		return $this->filesystem[$tree->id()];
55
+	}
56 56
 
57
-    /**
58
-     * Set the filesystem containing certificates for a tree.
59
-     *
60
-     * @param Tree $tree
61
-     * @param FilesystemOperator $filesystem
62
-     */
63
-    public function setFilesystem(Tree $tree, FilesystemOperator $filesystem): void
64
-    {
65
-        $this->filesystem[$tree->id()] = $filesystem;
66
-    }
57
+	/**
58
+	 * Set the filesystem containing certificates for a tree.
59
+	 *
60
+	 * @param Tree $tree
61
+	 * @param FilesystemOperator $filesystem
62
+	 */
63
+	public function setFilesystem(Tree $tree, FilesystemOperator $filesystem): void
64
+	{
65
+		$this->filesystem[$tree->id()] = $filesystem;
66
+	}
67 67
 
68
-    /**
69
-     * Create the Certificate object defined by a path on the filesystem.
70
-     *
71
-     * @param Tree $tree
72
-     * @param string $path
73
-     * @return Certificate|NULL
74
-     */
75
-    public function certificate(Tree $tree, string $path): ?Certificate
76
-    {
77
-        $filesystem = $this->filesystem($tree);
78
-        if ($filesystem->fileExists($path) && $this->isFileSupported($filesystem, $path)) {
79
-            return new Certificate($tree, $path);
80
-        }
81
-        return null;
82
-    }
68
+	/**
69
+	 * Create the Certificate object defined by a path on the filesystem.
70
+	 *
71
+	 * @param Tree $tree
72
+	 * @param string $path
73
+	 * @return Certificate|NULL
74
+	 */
75
+	public function certificate(Tree $tree, string $path): ?Certificate
76
+	{
77
+		$filesystem = $this->filesystem($tree);
78
+		if ($filesystem->fileExists($path) && $this->isFileSupported($filesystem, $path)) {
79
+			return new Certificate($tree, $path);
80
+		}
81
+		return null;
82
+	}
83 83
 
84
-    /**
85
-     * Get the cities (first-level folder) available in a the filesystem.
86
-     *
87
-     * @param Tree $tree
88
-     * @return string[]
89
-     */
90
-    public function cities(Tree $tree): array
91
-    {
92
-        $cities =  $this->filesystem($tree)
93
-            ->listContents('')
94
-            ->filter(fn (StorageAttributes $attributes): bool => $attributes->isDir())
95
-            ->map(fn (StorageAttributes $attributes): string => $attributes->path())
96
-            ->toArray();
97
-        usort($cities, I18N::comparator());
98
-        return $cities;
99
-    }
84
+	/**
85
+	 * Get the cities (first-level folder) available in a the filesystem.
86
+	 *
87
+	 * @param Tree $tree
88
+	 * @return string[]
89
+	 */
90
+	public function cities(Tree $tree): array
91
+	{
92
+		$cities =  $this->filesystem($tree)
93
+			->listContents('')
94
+			->filter(fn (StorageAttributes $attributes): bool => $attributes->isDir())
95
+			->map(fn (StorageAttributes $attributes): string => $attributes->path())
96
+			->toArray();
97
+		usort($cities, I18N::comparator());
98
+		return $cities;
99
+	}
100 100
 
101
-    /**
102
-     * Get the certificates available for a city (first-level folder).
103
-     *
104
-     * @param Tree $tree
105
-     * @param string $city
106
-     * @return Collection<Certificate>
107
-     */
108
-    public function certificatesForCity(Tree $tree, string $city): Collection
109
-    {
110
-        $filesystem = $this->filesystem($tree);
111
-        $certificates_paths = $filesystem->listContents($city)
112
-            ->filter(fn (StorageAttributes $attributes): bool  =>
113
-                $attributes->isFile() && $this->isFileSupported($filesystem, $attributes->path()))
114
-            ->map(fn (StorageAttributes $attributes): string => $attributes->path())
115
-            ->toArray();
116
-        usort($certificates_paths, I18N::comparator());
117
-        return collect($certificates_paths)->map(fn (string $path): Certificate => new Certificate($tree, $path));
118
-    }
101
+	/**
102
+	 * Get the certificates available for a city (first-level folder).
103
+	 *
104
+	 * @param Tree $tree
105
+	 * @param string $city
106
+	 * @return Collection<Certificate>
107
+	 */
108
+	public function certificatesForCity(Tree $tree, string $city): Collection
109
+	{
110
+		$filesystem = $this->filesystem($tree);
111
+		$certificates_paths = $filesystem->listContents($city)
112
+			->filter(fn (StorageAttributes $attributes): bool  =>
113
+				$attributes->isFile() && $this->isFileSupported($filesystem, $attributes->path()))
114
+			->map(fn (StorageAttributes $attributes): string => $attributes->path())
115
+			->toArray();
116
+		usort($certificates_paths, I18N::comparator());
117
+		return collect($certificates_paths)->map(fn (string $path): Certificate => new Certificate($tree, $path));
118
+	}
119 119
 
120
-    /**
121
-     * Get the certificates available for a city (first-level folder), containing a specified text.
122
-     *
123
-     * @param Tree $tree
124
-     * @param string $city
125
-     * @param string $contains
126
-     * @return Collection<Certificate>
127
-     */
128
-    public function certificatesForCityContaining(Tree $tree, string $city, string $contains): Collection
129
-    {
130
-        $filesystem = $this->filesystem($tree);
131
-        $certificates_paths = $filesystem->listContents($city)
132
-            ->filter(fn (StorageAttributes $attributes): bool  =>
133
-                $attributes->isFile() && $this->isFileSupported($filesystem, $attributes->path())
134
-                && mb_stripos($attributes->path(), $contains) !== false)
135
-            ->map(fn (StorageAttributes $attributes): string => $attributes->path())
136
-            ->toArray();
137
-        usort($certificates_paths, I18N::comparator());
138
-        return collect($certificates_paths)->map(fn (string $path): Certificate => new Certificate($tree, $path));
139
-    }
120
+	/**
121
+	 * Get the certificates available for a city (first-level folder), containing a specified text.
122
+	 *
123
+	 * @param Tree $tree
124
+	 * @param string $city
125
+	 * @param string $contains
126
+	 * @return Collection<Certificate>
127
+	 */
128
+	public function certificatesForCityContaining(Tree $tree, string $city, string $contains): Collection
129
+	{
130
+		$filesystem = $this->filesystem($tree);
131
+		$certificates_paths = $filesystem->listContents($city)
132
+			->filter(fn (StorageAttributes $attributes): bool  =>
133
+				$attributes->isFile() && $this->isFileSupported($filesystem, $attributes->path())
134
+				&& mb_stripos($attributes->path(), $contains) !== false)
135
+			->map(fn (StorageAttributes $attributes): string => $attributes->path())
136
+			->toArray();
137
+		usort($certificates_paths, I18N::comparator());
138
+		return collect($certificates_paths)->map(fn (string $path): Certificate => new Certificate($tree, $path));
139
+	}
140 140
 
141
-    /**
142
-     * Check if a file on the filesystem is supported by the certificate module.
143
-     *
144
-     * @param FilesystemOperator $filesystem
145
-     * @param string $path
146
-     * @return bool
147
-     */
148
-    protected function isFileSupported(FilesystemOperator $filesystem, string $path): bool
149
-    {
150
-        try {
151
-            $mime = $filesystem->mimeType($path);
152
-            return Registry::cache()->array()->remember(
153
-                'maj-certif-supportedfiles-' . $mime,
154
-                fn (): bool => app(CertificateImageFactory::class)->isMimeTypeSupported($mime)
155
-            );
156
-        } catch (UnableToRetrieveMetadata | FilesystemException $ex) {
157
-        }
158
-        return false;
159
-    }
141
+	/**
142
+	 * Check if a file on the filesystem is supported by the certificate module.
143
+	 *
144
+	 * @param FilesystemOperator $filesystem
145
+	 * @param string $path
146
+	 * @return bool
147
+	 */
148
+	protected function isFileSupported(FilesystemOperator $filesystem, string $path): bool
149
+	{
150
+		try {
151
+			$mime = $filesystem->mimeType($path);
152
+			return Registry::cache()->array()->remember(
153
+				'maj-certif-supportedfiles-' . $mime,
154
+				fn (): bool => app(CertificateImageFactory::class)->isMimeTypeSupported($mime)
155
+			);
156
+		} catch (UnableToRetrieveMetadata | FilesystemException $ex) {
157
+		}
158
+		return false;
159
+	}
160 160
 }
Please login to merge, or discard this patch.
app/Module/ModuleMyArtJaubInterface.php 1 patch
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -21,19 +21,19 @@
 block discarded – undo
21 21
  */
22 22
 interface ModuleMyArtJaubInterface extends ModuleCustomInterface
23 23
 {
24
-    /**
25
-     * Add module routes to webtrees route loader
26
-     *
27
-     * @param Map<\Aura\Router\Route> $router
28
-     */
29
-    public function loadRoutes(Map $router): void;
24
+	/**
25
+	 * Add module routes to webtrees route loader
26
+	 *
27
+	 * @param Map<\Aura\Router\Route> $router
28
+	 */
29
+	public function loadRoutes(Map $router): void;
30 30
 
31
-    /**
32
-     * Returns the URL of the module specific stylesheets.
33
-     * It will look for a CSS file matching the theme name (e.g. xenea.min.css),
34
-     * and fallback to default.min.css if none are found
35
-     *
36
-     * @return string
37
-     */
38
-    public function moduleCssUrl(): string;
31
+	/**
32
+	 * Returns the URL of the module specific stylesheets.
33
+	 * It will look for a CSS file matching the theme name (e.g. xenea.min.css),
34
+	 * and fallback to default.min.css if none are found
35
+	 *
36
+	 * @return string
37
+	 */
38
+	public function moduleCssUrl(): string;
39 39
 }
Please login to merge, or discard this patch.