Passed
Push — feature/code-analysis ( 60fe63...00c5b4 )
by Jonathan
11:49
created
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.
app/Module/GeoDispersion/Services/MapAdapterDataService.php 1 patch
Indentation   +157 added lines, -157 removed lines patch added patch discarded remove patch
@@ -31,171 +31,171 @@
 block discarded – undo
31 31
  */
32 32
 class MapAdapterDataService
33 33
 {
34
-    private MapDefinitionsService $mapdefinition_service;
34
+	private MapDefinitionsService $mapdefinition_service;
35 35
 
36
-    /**
37
-     * Constructor for MapAdapterDataService
38
-     *
39
-     * @param MapDefinitionsService $mapdefinition_service
40
-     */
41
-    public function __construct(MapDefinitionsService $mapdefinition_service)
42
-    {
43
-        $this->mapdefinition_service = $mapdefinition_service;
44
-    }
36
+	/**
37
+	 * Constructor for MapAdapterDataService
38
+	 *
39
+	 * @param MapDefinitionsService $mapdefinition_service
40
+	 */
41
+	public function __construct(MapDefinitionsService $mapdefinition_service)
42
+	{
43
+		$this->mapdefinition_service = $mapdefinition_service;
44
+	}
45 45
 
46
-    /**
47
-     * Find a GeoAnalysisMapAdapter by ID
48
-     *
49
-     * @param int $id
50
-     * @return GeoAnalysisMapAdapter|NULL
51
-     */
52
-    public function find(int $id): ?GeoAnalysisMapAdapter
53
-    {
54
-        return DB::table('maj_geodisp_mapviews')
55
-            ->select('maj_geodisp_mapviews.*')
56
-            ->where('majgm_id', '=', $id)
57
-            ->get()
58
-            ->map($this->mapAdapterMapper())
59
-            ->first();
60
-    }
46
+	/**
47
+	 * Find a GeoAnalysisMapAdapter by ID
48
+	 *
49
+	 * @param int $id
50
+	 * @return GeoAnalysisMapAdapter|NULL
51
+	 */
52
+	public function find(int $id): ?GeoAnalysisMapAdapter
53
+	{
54
+		return DB::table('maj_geodisp_mapviews')
55
+			->select('maj_geodisp_mapviews.*')
56
+			->where('majgm_id', '=', $id)
57
+			->get()
58
+			->map($this->mapAdapterMapper())
59
+			->first();
60
+	}
61 61
 
62
-    /**
63
-     * Get all GeoAnalysisMapAdapters linked to a Map View.
64
-     *
65
-     * @param GeoAnalysisMap $map_view
66
-     * @param bool $show_invalid
67
-     * @return Collection<GeoAnalysisMapAdapter|null>
68
-     */
69
-    public function allForView(GeoAnalysisMap $map_view, bool $show_invalid = false): Collection
70
-    {
71
-        $map_adapters = DB::table('maj_geodisp_mapviews')
72
-            ->select('maj_geodisp_mapviews.*')
73
-            ->where('majgm_majgv_id', '=', $map_view->id())
74
-            ->get()
75
-            ->map($this->mapAdapterMapper());
76
-        return $show_invalid ? $map_adapters : $map_adapters->filter();
77
-    }
62
+	/**
63
+	 * Get all GeoAnalysisMapAdapters linked to a Map View.
64
+	 *
65
+	 * @param GeoAnalysisMap $map_view
66
+	 * @param bool $show_invalid
67
+	 * @return Collection<GeoAnalysisMapAdapter|null>
68
+	 */
69
+	public function allForView(GeoAnalysisMap $map_view, bool $show_invalid = false): Collection
70
+	{
71
+		$map_adapters = DB::table('maj_geodisp_mapviews')
72
+			->select('maj_geodisp_mapviews.*')
73
+			->where('majgm_majgv_id', '=', $map_view->id())
74
+			->get()
75
+			->map($this->mapAdapterMapper());
76
+		return $show_invalid ? $map_adapters : $map_adapters->filter();
77
+	}
78 78
 
79
-    /**
80
-     * Insert a GeoAnalysisMapAdapter in the database.
81
-     *
82
-     * @param GeoAnalysisMapAdapter $map_adapter
83
-     * @return int
84
-     */
85
-    public function insertGetId(GeoAnalysisMapAdapter $map_adapter): int
86
-    {
87
-        return DB::table('maj_geodisp_mapviews')
88
-            ->insertGetId([
89
-                'majgm_majgv_id' => $map_adapter->geoAnalysisViewId(),
90
-                'majgm_map_id' => $map_adapter->map()->id(),
91
-                'majgm_mapper' => get_class($map_adapter->placeMapper()),
92
-                'majgm_feature_prop' => $map_adapter->viewConfig()->mapMappingProperty(),
93
-                'majgm_config' => json_encode($map_adapter->viewConfig()->mapperConfig())
94
-            ]);
95
-    }
79
+	/**
80
+	 * Insert a GeoAnalysisMapAdapter in the database.
81
+	 *
82
+	 * @param GeoAnalysisMapAdapter $map_adapter
83
+	 * @return int
84
+	 */
85
+	public function insertGetId(GeoAnalysisMapAdapter $map_adapter): int
86
+	{
87
+		return DB::table('maj_geodisp_mapviews')
88
+			->insertGetId([
89
+				'majgm_majgv_id' => $map_adapter->geoAnalysisViewId(),
90
+				'majgm_map_id' => $map_adapter->map()->id(),
91
+				'majgm_mapper' => get_class($map_adapter->placeMapper()),
92
+				'majgm_feature_prop' => $map_adapter->viewConfig()->mapMappingProperty(),
93
+				'majgm_config' => json_encode($map_adapter->viewConfig()->mapperConfig())
94
+			]);
95
+	}
96 96
 
97
-    /**
98
-     * Update a GeoAnalysisMapAdapter in the database.
99
-     *
100
-     * @param GeoAnalysisMapAdapter $map_adapter
101
-     * @return int
102
-     */
103
-    public function update(GeoAnalysisMapAdapter $map_adapter): int
104
-    {
105
-        return DB::table('maj_geodisp_mapviews')
106
-            ->where('majgm_id', '=', $map_adapter->id())
107
-            ->update([
108
-                'majgm_map_id' => $map_adapter->map()->id(),
109
-                'majgm_mapper' => get_class($map_adapter->placeMapper()),
110
-                'majgm_feature_prop' => $map_adapter->viewConfig()->mapMappingProperty(),
111
-                'majgm_config' => json_encode($map_adapter->placeMapper()->config())
112
-            ]);
113
-    }
97
+	/**
98
+	 * Update a GeoAnalysisMapAdapter in the database.
99
+	 *
100
+	 * @param GeoAnalysisMapAdapter $map_adapter
101
+	 * @return int
102
+	 */
103
+	public function update(GeoAnalysisMapAdapter $map_adapter): int
104
+	{
105
+		return DB::table('maj_geodisp_mapviews')
106
+			->where('majgm_id', '=', $map_adapter->id())
107
+			->update([
108
+				'majgm_map_id' => $map_adapter->map()->id(),
109
+				'majgm_mapper' => get_class($map_adapter->placeMapper()),
110
+				'majgm_feature_prop' => $map_adapter->viewConfig()->mapMappingProperty(),
111
+				'majgm_config' => json_encode($map_adapter->placeMapper()->config())
112
+			]);
113
+	}
114 114
 
115
-    /**
116
-     * Delete a GeoAnalysisMapAdapter from the database.
117
-     *
118
-     * @param GeoAnalysisMapAdapter $map_adapter
119
-     * @return int
120
-     */
121
-    public function delete(GeoAnalysisMapAdapter $map_adapter): int
122
-    {
123
-        return DB::table('maj_geodisp_mapviews')
124
-            ->where('majgm_id', '=', $map_adapter->id())
125
-            ->delete();
126
-    }
115
+	/**
116
+	 * Delete a GeoAnalysisMapAdapter from the database.
117
+	 *
118
+	 * @param GeoAnalysisMapAdapter $map_adapter
119
+	 * @return int
120
+	 */
121
+	public function delete(GeoAnalysisMapAdapter $map_adapter): int
122
+	{
123
+		return DB::table('maj_geodisp_mapviews')
124
+			->where('majgm_id', '=', $map_adapter->id())
125
+			->delete();
126
+	}
127 127
 
128
-    /**
129
-     * Delete invalid GeoAnalysisMapAdapters from the database.
130
-     *
131
-     * @param AbstractGeoAnalysisView $view
132
-     * @param Collection<int> $valid_map_adapters
133
-     * @return int
134
-     */
135
-    public function deleteInvalid(AbstractGeoAnalysisView $view, Collection $valid_map_adapters): int
136
-    {
137
-        return DB::table('maj_geodisp_mapviews')
138
-            ->where('majgm_majgv_id', '=', $view->id())
139
-            ->whereNotIn('majgm_id', $valid_map_adapters)
140
-            ->delete();
141
-    }
128
+	/**
129
+	 * Delete invalid GeoAnalysisMapAdapters from the database.
130
+	 *
131
+	 * @param AbstractGeoAnalysisView $view
132
+	 * @param Collection<int> $valid_map_adapters
133
+	 * @return int
134
+	 */
135
+	public function deleteInvalid(AbstractGeoAnalysisView $view, Collection $valid_map_adapters): int
136
+	{
137
+		return DB::table('maj_geodisp_mapviews')
138
+			->where('majgm_majgv_id', '=', $view->id())
139
+			->whereNotIn('majgm_id', $valid_map_adapters)
140
+			->delete();
141
+	}
142 142
 
143
-    /**
144
-     * Get the closure to create a GeoAnalysisMapAdapter object from a row in the database.
145
-     * It returns null if the classes stored in the DB cannot be loaded through the Laravel container,
146
-     * or if the types do not match with the ones expected.
147
-     *
148
-     * @return Closure(\stdClass $row):?GeoAnalysisMapAdapter
149
-     */
150
-    private function mapAdapterMapper(): Closure
151
-    {
152
-        return function (stdClass $row): ?GeoAnalysisMapAdapter {
153
-            if (null === $map = $this->mapdefinition_service->find($row->majgm_map_id)) {
154
-                return null;
155
-            }
156
-            try {
157
-                $mapper = app($row->majgm_mapper);
158
-                if (!($mapper instanceof PlaceMapperInterface)) {
159
-                    return null;
160
-                }
143
+	/**
144
+	 * Get the closure to create a GeoAnalysisMapAdapter object from a row in the database.
145
+	 * It returns null if the classes stored in the DB cannot be loaded through the Laravel container,
146
+	 * or if the types do not match with the ones expected.
147
+	 *
148
+	 * @return Closure(\stdClass $row):?GeoAnalysisMapAdapter
149
+	 */
150
+	private function mapAdapterMapper(): Closure
151
+	{
152
+		return function (stdClass $row): ?GeoAnalysisMapAdapter {
153
+			if (null === $map = $this->mapdefinition_service->find($row->majgm_map_id)) {
154
+				return null;
155
+			}
156
+			try {
157
+				$mapper = app($row->majgm_mapper);
158
+				if (!($mapper instanceof PlaceMapperInterface)) {
159
+					return null;
160
+				}
161 161
 
162
-                return new GeoAnalysisMapAdapter(
163
-                    (int) $row->majgm_id,
164
-                    (int) $row->majgm_majgv_id,
165
-                    $map,
166
-                    app($row->majgm_mapper),
167
-                    new MapViewConfig($row->majgm_feature_prop, $this->mapperConfigDecoder($row->majgm_config))
168
-                );
169
-            } catch (BindingResolutionException $ex) {
170
-                return null;
171
-            }
172
-        };
173
-    }
162
+				return new GeoAnalysisMapAdapter(
163
+					(int) $row->majgm_id,
164
+					(int) $row->majgm_majgv_id,
165
+					$map,
166
+					app($row->majgm_mapper),
167
+					new MapViewConfig($row->majgm_feature_prop, $this->mapperConfigDecoder($row->majgm_config))
168
+				);
169
+			} catch (BindingResolutionException $ex) {
170
+				return null;
171
+			}
172
+		};
173
+	}
174 174
 
175
-    /**
176
-     * Create a PlaceMapperConfigInterface object from a JSON column value.
177
-     * Returns null if the JSON string is invalid/empty or if the extracted mapper class cannot be loaded
178
-     * through the Laravel container or if the type do not match with the one expected.
179
-     *
180
-     * @param string $json_config
181
-     * @return PlaceMapperConfigInterface|NULL
182
-     */
183
-    private function mapperConfigDecoder(?string $json_config): ?PlaceMapperConfigInterface
184
-    {
185
-        $config = $json_config === null ? [] : json_decode($json_config, true);
186
-        $class = $config['class'] ?? null;
187
-        $json_mapper_config = $config['config'] ?? null;
188
-        if ($class === null || $json_mapper_config === null) {
189
-            return null;
190
-        }
191
-        try {
192
-            $mapper_config = app($class);
193
-            if (!$mapper_config instanceof PlaceMapperConfigInterface) {
194
-                return null;
195
-            }
196
-            return $mapper_config->jsonDeserialize($json_mapper_config);
197
-        } catch (BindingResolutionException $ex) {
198
-            return null;
199
-        }
200
-    }
175
+	/**
176
+	 * Create a PlaceMapperConfigInterface object from a JSON column value.
177
+	 * Returns null if the JSON string is invalid/empty or if the extracted mapper class cannot be loaded
178
+	 * through the Laravel container or if the type do not match with the one expected.
179
+	 *
180
+	 * @param string $json_config
181
+	 * @return PlaceMapperConfigInterface|NULL
182
+	 */
183
+	private function mapperConfigDecoder(?string $json_config): ?PlaceMapperConfigInterface
184
+	{
185
+		$config = $json_config === null ? [] : json_decode($json_config, true);
186
+		$class = $config['class'] ?? null;
187
+		$json_mapper_config = $config['config'] ?? null;
188
+		if ($class === null || $json_mapper_config === null) {
189
+			return null;
190
+		}
191
+		try {
192
+			$mapper_config = app($class);
193
+			if (!$mapper_config instanceof PlaceMapperConfigInterface) {
194
+				return null;
195
+			}
196
+			return $mapper_config->jsonDeserialize($json_mapper_config);
197
+		} catch (BindingResolutionException $ex) {
198
+			return null;
199
+		}
200
+	}
201 201
 }
Please login to merge, or discard this patch.
app/Module/GeoDispersion/Services/GeoAnalysisService.php 1 patch
Indentation   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -25,41 +25,41 @@
 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<GeoAnalysisInterface>
47
-     */
48
-    public function all(bool $include_disabled = false): Collection
49
-    {
50
-        /** @var Collection<GeoAnalysisInterface> $geoanalyses */
51
-        $geoanalyses = $this->module_service
52
-            ->findByInterface(ModuleGeoAnalysisProviderInterface::class, $include_disabled)
53
-            ->flatMap(fn(ModuleGeoAnalysisProviderInterface $module) => $module->listGeoAnalyses())
54
-            ->map(static function (string $analysis_class): ?GeoAnalysisInterface {
55
-                try {
56
-                    $analysis = app($analysis_class);
57
-                    return $analysis instanceof GeoAnalysisInterface ? $analysis : null;
58
-                } catch (BindingResolutionException $ex) {
59
-                    return null;
60
-                }
61
-            })->filter();
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<GeoAnalysisInterface>
47
+	 */
48
+	public function all(bool $include_disabled = false): Collection
49
+	{
50
+		/** @var Collection<GeoAnalysisInterface> $geoanalyses */
51
+		$geoanalyses = $this->module_service
52
+			->findByInterface(ModuleGeoAnalysisProviderInterface::class, $include_disabled)
53
+			->flatMap(fn(ModuleGeoAnalysisProviderInterface $module) => $module->listGeoAnalyses())
54
+			->map(static function (string $analysis_class): ?GeoAnalysisInterface {
55
+				try {
56
+					$analysis = app($analysis_class);
57
+					return $analysis instanceof GeoAnalysisInterface ? $analysis : null;
58
+				} catch (BindingResolutionException $ex) {
59
+					return null;
60
+				}
61
+			})->filter();
62 62
 
63
-        return $geoanalyses;
64
-    }
63
+		return $geoanalyses;
64
+	}
65 65
 }
Please login to merge, or discard this patch.
app/Module/GeoDispersion/Services/PlaceMapperService.php 1 patch
Indentation   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -25,41 +25,41 @@
 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<PlaceMapperInterface>
47
-     */
48
-    public function all(bool $include_disabled = false): Collection
49
-    {
50
-        /** @var Collection<PlaceMapperInterface> $place_mappers */
51
-        $place_mappers =  $this->module_service
52
-            ->findByInterface(ModulePlaceMapperProviderInterface::class, $include_disabled)
53
-            ->flatMap(fn(ModulePlaceMapperProviderInterface $module) => $module->listPlaceMappers())
54
-            ->map(static function (string $mapper_class): ?PlaceMapperInterface {
55
-                try {
56
-                    $mapper = app($mapper_class);
57
-                    return $mapper instanceof PlaceMapperInterface ? $mapper : null;
58
-                } catch (BindingResolutionException $ex) {
59
-                    return null;
60
-                }
61
-            })->filter();
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<PlaceMapperInterface>
47
+	 */
48
+	public function all(bool $include_disabled = false): Collection
49
+	{
50
+		/** @var Collection<PlaceMapperInterface> $place_mappers */
51
+		$place_mappers =  $this->module_service
52
+			->findByInterface(ModulePlaceMapperProviderInterface::class, $include_disabled)
53
+			->flatMap(fn(ModulePlaceMapperProviderInterface $module) => $module->listPlaceMappers())
54
+			->map(static function (string $mapper_class): ?PlaceMapperInterface {
55
+				try {
56
+					$mapper = app($mapper_class);
57
+					return $mapper instanceof PlaceMapperInterface ? $mapper : null;
58
+				} catch (BindingResolutionException $ex) {
59
+					return null;
60
+				}
61
+			})->filter();
62 62
 
63
-        return $place_mappers;
64
-    }
63
+		return $place_mappers;
64
+	}
65 65
 }
Please login to merge, or discard this patch.
app/Module/GeoDispersion/Services/GeoAnalysisDataService.php 1 patch
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<int, string[]>
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<int, string[]>
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.
app/Module/GeoDispersion/PlaceMappers/PlaceMapperTrait.php 1 patch
Indentation   +57 added lines, -57 removed lines patch added patch discarded remove patch
@@ -24,67 +24,67 @@
 block discarded – undo
24 24
  */
25 25
 trait PlaceMapperTrait
26 26
 {
27
-    private ?PlaceMapperConfigInterface $config = null;
27
+	private ?PlaceMapperConfigInterface $config = null;
28 28
 
29
-    /** @var array<string, mixed> $data */
30
-    private array $data = [];
29
+	/** @var array<string, mixed> $data */
30
+	private array $data = [];
31 31
 
32
-    /**
33
-     * Implementation of PlaceMapperInterface::boot
34
-     *
35
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::boot()
36
-     */
37
-    public function boot(): void
38
-    {
39
-    }
32
+	/**
33
+	 * Implementation of PlaceMapperInterface::boot
34
+	 *
35
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::boot()
36
+	 */
37
+	public function boot(): void
38
+	{
39
+	}
40 40
 
41
-    /**
42
-     * Implementation of PlaceMapperInterface::config
43
-     *
44
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::config()
45
-     *
46
-     * @return PlaceMapperConfigInterface
47
-     */
48
-    public function config(): PlaceMapperConfigInterface
49
-    {
50
-        return $this->config ?? new NullPlaceMapperConfig();
51
-    }
41
+	/**
42
+	 * Implementation of PlaceMapperInterface::config
43
+	 *
44
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::config()
45
+	 *
46
+	 * @return PlaceMapperConfigInterface
47
+	 */
48
+	public function config(): PlaceMapperConfigInterface
49
+	{
50
+		return $this->config ?? new NullPlaceMapperConfig();
51
+	}
52 52
 
53
-    /**
54
-     * Implementation of PlaceMapperInterface::setConfig
55
-     *
56
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::setConfig()
57
-     *
58
-     * @param PlaceMapperConfigInterface $config
59
-     */
60
-    public function setConfig(PlaceMapperConfigInterface $config): void
61
-    {
62
-        $this->config = $config;
63
-    }
53
+	/**
54
+	 * Implementation of PlaceMapperInterface::setConfig
55
+	 *
56
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::setConfig()
57
+	 *
58
+	 * @param PlaceMapperConfigInterface $config
59
+	 */
60
+	public function setConfig(PlaceMapperConfigInterface $config): void
61
+	{
62
+		$this->config = $config;
63
+	}
64 64
 
65
-    /**
66
-     * Implementation of PlaceMapperInterface::data
67
-     *
68
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::data()
69
-     *
70
-     * @param string $key
71
-     * @return NULL|mixed
72
-     */
73
-    public function data(string $key)
74
-    {
75
-        return $this->data[$key] ?? null;
76
-    }
65
+	/**
66
+	 * Implementation of PlaceMapperInterface::data
67
+	 *
68
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::data()
69
+	 *
70
+	 * @param string $key
71
+	 * @return NULL|mixed
72
+	 */
73
+	public function data(string $key)
74
+	{
75
+		return $this->data[$key] ?? null;
76
+	}
77 77
 
78
-    /**
79
-     * Implementation of PlaceMapperInterface::setData
80
-     *
81
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::setData()
82
-     *
83
-     * @param string $key
84
-     * @param mixed|null $data
85
-     */
86
-    public function setData(string $key, $data): void
87
-    {
88
-        $this->data[$key] = $data;
89
-    }
78
+	/**
79
+	 * Implementation of PlaceMapperInterface::setData
80
+	 *
81
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperInterface::setData()
82
+	 *
83
+	 * @param string $key
84
+	 * @param mixed|null $data
85
+	 */
86
+	public function setData(string $key, $data): void
87
+	{
88
+		$this->data[$key] = $data;
89
+	}
90 90
 }
Please login to merge, or discard this patch.