Passed
Push — main ( 9fcb9f...c808ff )
by Jonathan
04:18
created
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/Module/AdminTasks/Services/HealthCheckService.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -79,7 +79,7 @@  discard block
 block discarded – undo
79 79
     public function changesByRecordType(Tree $tree, int $nb_days): Collection
80 80
     {
81 81
         return DB::table('change')
82
-            ->joinSub($this->allGedcomRecords($tree), 'gedrecords', function (JoinClause $join) use ($tree): void {
82
+            ->joinSub($this->allGedcomRecords($tree), 'gedrecords', function(JoinClause $join) use ($tree): void {
83 83
 
84 84
                 $join->on('change.xref', '=', 'gedrecords.ged_id')
85 85
                     ->where('change.gedcom_id', '=', $tree->id());
@@ -115,7 +115,7 @@  discard block
 block discarded – undo
115 115
                 new Expression('MAX(log_time) AS lastoccurred')
116 116
             )
117 117
             ->where('log_type', '=', 'error')
118
-            ->where(function (Builder $query) use ($tree): void {
118
+            ->where(function(Builder $query) use ($tree): void {
119 119
                 $query->where('gedcom_id', '=', $tree->id())
120 120
                     ->orWhereNull('gedcom_id');
121 121
             })
Please login to merge, or discard this patch.
Indentation   +93 added lines, -93 removed lines patch added patch discarded remove patch
@@ -27,101 +27,101 @@
 block discarded – undo
27 27
  */
28 28
 class HealthCheckService
29 29
 {
30
-    /**
31
-     * Returns a query collating all gedcom records, for use in other queries
32
-     *
33
-     * @param Tree $tree
34
-     * @return Builder
35
-     */
36
-    private function allGedcomRecords(Tree $tree): Builder
37
-    {
38
-        return DB::table('individuals')
39
-            ->select(DB::raw("'indi' AS ged_type"), 'i_id AS ged_id')->where('i_file', '=', $tree->id())
40
-            ->unionAll(DB::table('families')
41
-                ->select(DB::raw("'fam' AS ged_type"), 'f_id AS ged_id')->where('f_file', '=', $tree->id()))
42
-            ->unionAll(DB::table('sources')
43
-                ->select(DB::raw("'sour' AS ged_type"), 's_id AS ged_id')->where('s_file', '=', $tree->id()))
44
-            ->unionAll(DB::table('media')
45
-                ->select(DB::raw("'media' AS ged_type"), 'm_id AS ged_id')->where('m_file', '=', $tree->id()))
46
-            ->unionAll(DB::table('other')
47
-                ->select(DB::raw('LOWER(o_type) AS ged_type'), 'o_id AS ged_id')->where('o_file', '=', $tree->id()));
48
-    }
30
+	/**
31
+	 * Returns a query collating all gedcom records, for use in other queries
32
+	 *
33
+	 * @param Tree $tree
34
+	 * @return Builder
35
+	 */
36
+	private function allGedcomRecords(Tree $tree): Builder
37
+	{
38
+		return DB::table('individuals')
39
+			->select(DB::raw("'indi' AS ged_type"), 'i_id AS ged_id')->where('i_file', '=', $tree->id())
40
+			->unionAll(DB::table('families')
41
+				->select(DB::raw("'fam' AS ged_type"), 'f_id AS ged_id')->where('f_file', '=', $tree->id()))
42
+			->unionAll(DB::table('sources')
43
+				->select(DB::raw("'sour' AS ged_type"), 's_id AS ged_id')->where('s_file', '=', $tree->id()))
44
+			->unionAll(DB::table('media')
45
+				->select(DB::raw("'media' AS ged_type"), 'm_id AS ged_id')->where('m_file', '=', $tree->id()))
46
+			->unionAll(DB::table('other')
47
+				->select(DB::raw('LOWER(o_type) AS ged_type'), 'o_id AS ged_id')->where('o_file', '=', $tree->id()));
48
+	}
49 49
 
50
-    /**
51
-     * Returns the count of gedcom records by type in a Tree, as a keyed Collection.
52
-     *
53
-     * Collection output:
54
-     *      - Key : gedcom record type
55
-     *      - Value: count of records
56
-     *
57
-     * @param Tree $tree
58
-     * @return Collection<string, int>
59
-     */
60
-    public function countByRecordType(Tree $tree): Collection
61
-    {
62
-        return DB::query()
63
-            ->fromSub($this->allGedcomRecords($tree), 'gedrecords')
64
-            ->select('ged_type', new Expression('COUNT(ged_id) AS total'))
65
-            ->groupBy('ged_type')
66
-            ->pluck('total', 'ged_type');
67
-    }
50
+	/**
51
+	 * Returns the count of gedcom records by type in a Tree, as a keyed Collection.
52
+	 *
53
+	 * Collection output:
54
+	 *      - Key : gedcom record type
55
+	 *      - Value: count of records
56
+	 *
57
+	 * @param Tree $tree
58
+	 * @return Collection<string, int>
59
+	 */
60
+	public function countByRecordType(Tree $tree): Collection
61
+	{
62
+		return DB::query()
63
+			->fromSub($this->allGedcomRecords($tree), 'gedrecords')
64
+			->select('ged_type', new Expression('COUNT(ged_id) AS total'))
65
+			->groupBy('ged_type')
66
+			->pluck('total', 'ged_type');
67
+	}
68 68
 
69
-    /**
70
-     * Returns the count of gedcom records changes by type in a Tree across a number of days, as a keyed Collection.
71
-     *
72
-     * Collection output:
73
-     *      - Key : gedcom record type
74
-     *      - Value: count of changes
75
-     *
76
-     * @param Tree $tree
77
-     * @return Collection<string, int>
78
-     */
79
-    public function changesByRecordType(Tree $tree, int $nb_days): Collection
80
-    {
81
-        return DB::table('change')
82
-            ->joinSub($this->allGedcomRecords($tree), 'gedrecords', function (JoinClause $join) use ($tree): void {
69
+	/**
70
+	 * Returns the count of gedcom records changes by type in a Tree across a number of days, as a keyed Collection.
71
+	 *
72
+	 * Collection output:
73
+	 *      - Key : gedcom record type
74
+	 *      - Value: count of changes
75
+	 *
76
+	 * @param Tree $tree
77
+	 * @return Collection<string, int>
78
+	 */
79
+	public function changesByRecordType(Tree $tree, int $nb_days): Collection
80
+	{
81
+		return DB::table('change')
82
+			->joinSub($this->allGedcomRecords($tree), 'gedrecords', function (JoinClause $join) use ($tree): void {
83 83
 
84
-                $join->on('change.xref', '=', 'gedrecords.ged_id')
85
-                    ->where('change.gedcom_id', '=', $tree->id());
86
-            })
87
-            ->select('ged_type AS type', new Expression('COUNT(change_id) AS count'))
88
-            ->where('change.status', '', 'accepted')
89
-            ->where('change.change_time', '>=', Carbon::now()->subDays($nb_days))
90
-            ->groupBy('ged_type')
91
-            ->pluck('total', 'ged_type');
92
-    }
84
+				$join->on('change.xref', '=', 'gedrecords.ged_id')
85
+					->where('change.gedcom_id', '=', $tree->id());
86
+			})
87
+			->select('ged_type AS type', new Expression('COUNT(change_id) AS count'))
88
+			->where('change.status', '', 'accepted')
89
+			->where('change.change_time', '>=', Carbon::now()->subDays($nb_days))
90
+			->groupBy('ged_type')
91
+			->pluck('total', 'ged_type');
92
+	}
93 93
 
94
-    /**
95
-     * Return the error logs associated with a tree across a number of days, grouped by error message, as a Collection.
96
-     *
97
-     * Collection output:
98
-     *      - Value: stdClass object
99
-     *          - log message:  Error log message
100
-     *          - type:         'site' if no associated Tree, the Tree ID otherwise
101
-     *          - nblogs:       The number of occurrence of the same error message
102
-     *          - lastoccurred: Date/time of the last occurrence of the error message
103
-     *
104
-     * @param Tree $tree
105
-     * @param int $nb_days
106
-     * @return Collection<\stdClass>
107
-     */
108
-    public function errorLogs(Tree $tree, int $nb_days): Collection
109
-    {
110
-        return DB::table('log')
111
-            ->select(
112
-                'log_message',
113
-                new Expression("IFNULL(gedcom_id, 'site') as type"),
114
-                new Expression('COUNT(log_id) AS nblogs'),
115
-                new Expression('MAX(log_time) AS lastoccurred')
116
-            )
117
-            ->where('log_type', '=', 'error')
118
-            ->where(function (Builder $query) use ($tree): void {
119
-                $query->where('gedcom_id', '=', $tree->id())
120
-                    ->orWhereNull('gedcom_id');
121
-            })
122
-            ->where('log_time', '>=', Carbon::now()->subDays($nb_days))
123
-            ->groupBy('log_message', 'gedcom_id')
124
-            ->orderByDesc('lastoccurred')
125
-            ->get();
126
-    }
94
+	/**
95
+	 * Return the error logs associated with a tree across a number of days, grouped by error message, as a Collection.
96
+	 *
97
+	 * Collection output:
98
+	 *      - Value: stdClass object
99
+	 *          - log message:  Error log message
100
+	 *          - type:         'site' if no associated Tree, the Tree ID otherwise
101
+	 *          - nblogs:       The number of occurrence of the same error message
102
+	 *          - lastoccurred: Date/time of the last occurrence of the error message
103
+	 *
104
+	 * @param Tree $tree
105
+	 * @param int $nb_days
106
+	 * @return Collection<\stdClass>
107
+	 */
108
+	public function errorLogs(Tree $tree, int $nb_days): Collection
109
+	{
110
+		return DB::table('log')
111
+			->select(
112
+				'log_message',
113
+				new Expression("IFNULL(gedcom_id, 'site') as type"),
114
+				new Expression('COUNT(log_id) AS nblogs'),
115
+				new Expression('MAX(log_time) AS lastoccurred')
116
+			)
117
+			->where('log_type', '=', 'error')
118
+			->where(function (Builder $query) use ($tree): void {
119
+				$query->where('gedcom_id', '=', $tree->id())
120
+					->orWhereNull('gedcom_id');
121
+			})
122
+			->where('log_time', '>=', Carbon::now()->subDays($nb_days))
123
+			->groupBy('log_message', 'gedcom_id')
124
+			->orderByDesc('lastoccurred')
125
+			->get();
126
+	}
127 127
 }
Please login to merge, or discard this patch.
app/Module/AdminTasks/AdminTasksModule.php 2 patches
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -55,7 +55,7 @@  discard block
 block discarded – undo
55 55
     //How to update the database schema for this module
56 56
     private const SCHEMA_TARGET_VERSION   = 2;
57 57
     private const SCHEMA_SETTING_NAME     = 'MAJ_ADMTASKS_SCHEMA_VERSION';
58
-    private const SCHEMA_MIGRATION_PREFIX = __NAMESPACE__ . '\Schema';
58
+    private const SCHEMA_MIGRATION_PREFIX = __NAMESPACE__.'\Schema';
59 59
 
60 60
     /**
61 61
      * {@inheritDoc}
@@ -95,12 +95,12 @@  discard block
 block discarded – undo
95 95
      */
96 96
     public function loadRoutes(Map $router): void
97 97
     {
98
-        $router->attach('', '', static function (Map $router): void {
98
+        $router->attach('', '', static function(Map $router): void {
99 99
 
100
-            $router->attach('', '/module-maj/admintasks', static function (Map $router): void {
100
+            $router->attach('', '/module-maj/admintasks', static function(Map $router): void {
101 101
                 $router->tokens(['enable' => '[01]']);
102 102
 
103
-                $router->attach('', '/admin', static function (Map $router): void {
103
+                $router->attach('', '/admin', static function(Map $router): void {
104 104
 
105 105
                     $router->extras([
106 106
                         'middleware' => [
@@ -109,7 +109,7 @@  discard block
 block discarded – undo
109 109
                     ]);
110 110
                     $router->get(AdminConfigPage::class, '/config', AdminConfigPage::class);
111 111
 
112
-                    $router->attach('', '/tasks', static function (Map $router): void {
112
+                    $router->attach('', '/tasks', static function(Map $router): void {
113 113
 
114 114
                         $router->get(TasksList::class, '', TasksList::class);
115 115
                         $router->get(TaskEditPage::class, '/{task}', TaskEditPage::class);
@@ -151,7 +151,7 @@  discard block
 block discarded – undo
151 151
      */
152 152
     public function bodyContent(): string
153 153
     {
154
-        return view($this->name() . '::snippet', [ 'url' => route(TaskTrigger::class) ]);
154
+        return view($this->name().'::snippet', ['url' => route(TaskTrigger::class)]);
155 155
     }
156 156
 
157 157
     /**
Please login to merge, or discard this patch.
Indentation   +122 added lines, -122 removed lines patch added patch discarded remove patch
@@ -41,127 +41,127 @@
 block discarded – undo
41 41
  * Allow for tasks to be run on a (nearly-)regular schedule
42 42
  */
43 43
 class AdminTasksModule extends AbstractModule implements
44
-    ModuleMyArtJaubInterface,
45
-    ModuleConfigInterface,
46
-    ModuleGlobalInterface,
47
-    ModuleTasksProviderInterface
44
+	ModuleMyArtJaubInterface,
45
+	ModuleConfigInterface,
46
+	ModuleGlobalInterface,
47
+	ModuleTasksProviderInterface
48 48
 {
49
-    use ModuleMyArtJaubTrait {
50
-        boot as traitBoot;
51
-    }
52
-    use ModuleConfigTrait;
53
-    use ModuleGlobalTrait;
54
-
55
-    //How to update the database schema for this module
56
-    private const SCHEMA_TARGET_VERSION   = 2;
57
-    private const SCHEMA_SETTING_NAME     = 'MAJ_ADMTASKS_SCHEMA_VERSION';
58
-    private const SCHEMA_MIGRATION_PREFIX = __NAMESPACE__ . '\Schema';
59
-
60
-    /**
61
-     * {@inheritDoc}
62
-     * @see \Fisharebest\Webtrees\Module\AbstractModule::title()
63
-     */
64
-    public function title(): string
65
-    {
66
-        return I18N::translate('Administration Tasks');
67
-    }
68
-
69
-    /**
70
-     * {@inheritDoc}
71
-     * @see \Fisharebest\Webtrees\Module\AbstractModule::description()
72
-     */
73
-    public function description(): string
74
-    {
75
-        return I18N::translate('Manage and run nearly-scheduled administration tasks.');
76
-    }
77
-
78
-    /**
79
-     * {@inheritDoc}
80
-     * @see \Fisharebest\Webtrees\Module\AbstractModule::boot()
81
-     */
82
-    public function boot(): void
83
-    {
84
-        $this->traitBoot();
85
-        app(MigrationService::class)->updateSchema(
86
-            self::SCHEMA_MIGRATION_PREFIX,
87
-            self::SCHEMA_SETTING_NAME,
88
-            self::SCHEMA_TARGET_VERSION
89
-        );
90
-    }
91
-
92
-    /**
93
-     * {@inheritDoc}
94
-     * @see \MyArtJaub\Webtrees\Module\ModuleMyArtJaubInterface::loadRoutes()
95
-     */
96
-    public function loadRoutes(Map $router): void
97
-    {
98
-        $router->attach('', '', static function (Map $router): void {
99
-
100
-            $router->attach('', '/module-maj/admintasks', static function (Map $router): void {
101
-                $router->tokens(['enable' => '[01]']);
102
-
103
-                $router->attach('', '/admin', static function (Map $router): void {
104
-
105
-                    $router->extras([
106
-                        'middleware' => [
107
-                            AuthAdministrator::class,
108
-                        ],
109
-                    ]);
110
-                    $router->get(AdminConfigPage::class, '/config', AdminConfigPage::class);
111
-
112
-                    $router->attach('', '/tasks', static function (Map $router): void {
113
-
114
-                        $router->get(TasksList::class, '', TasksList::class);
115
-                        $router->get(TaskEditPage::class, '/{task}', TaskEditPage::class);
116
-                        $router->post(TaskEditAction::class, '/{task}', TaskEditAction::class);
117
-                        $router->get(TaskStatusAction::class, '/{task}/status/{enable}', TaskStatusAction::class);
118
-                    });
119
-                });
120
-
121
-                $router->get(TaskTrigger::class, '/trigger{/task}', TaskTrigger::class)
122
-                    ->allows(RequestMethodInterface::METHOD_POST);
123
-
124
-                $router->post(TokenGenerate::class, '/token', TokenGenerate::class)
125
-                    ->extras(['middleware' => [AuthAdministrator::class]]);
126
-            });
127
-        });
128
-    }
129
-
130
-    /**
131
-     * {@inheritDoc}
132
-     * @see \Fisharebest\Webtrees\Module\ModuleCustomInterface::customModuleLatestVersion()
133
-     */
134
-    public function customModuleVersion(): string
135
-    {
136
-        return '2.1.3-v.1';
137
-    }
138
-
139
-    /**
140
-     * {@inheritDoc}
141
-     * @see \Fisharebest\Webtrees\Module\ModuleConfigInterface::getConfigLink()
142
-     */
143
-    public function getConfigLink(): string
144
-    {
145
-        return route(AdminConfigPage::class);
146
-    }
147
-
148
-    /**
149
-     * {@inheritDoc}
150
-     * @see \Fisharebest\Webtrees\Module\ModuleGlobalInterface::bodyContent()
151
-     */
152
-    public function bodyContent(): string
153
-    {
154
-        return view($this->name() . '::snippet', [ 'url' => route(TaskTrigger::class) ]);
155
-    }
156
-
157
-    /**
158
-     * {@inheritDoc}
159
-     * @see ModuleTasksProviderInterface::listTasks()
160
-     */
161
-    public function listTasks(): array
162
-    {
163
-        return [
164
-            'maj-healthcheck' => HealthCheckEmailTask::class
165
-        ];
166
-    }
49
+	use ModuleMyArtJaubTrait {
50
+		boot as traitBoot;
51
+	}
52
+	use ModuleConfigTrait;
53
+	use ModuleGlobalTrait;
54
+
55
+	//How to update the database schema for this module
56
+	private const SCHEMA_TARGET_VERSION   = 2;
57
+	private const SCHEMA_SETTING_NAME     = 'MAJ_ADMTASKS_SCHEMA_VERSION';
58
+	private const SCHEMA_MIGRATION_PREFIX = __NAMESPACE__ . '\Schema';
59
+
60
+	/**
61
+	 * {@inheritDoc}
62
+	 * @see \Fisharebest\Webtrees\Module\AbstractModule::title()
63
+	 */
64
+	public function title(): string
65
+	{
66
+		return I18N::translate('Administration Tasks');
67
+	}
68
+
69
+	/**
70
+	 * {@inheritDoc}
71
+	 * @see \Fisharebest\Webtrees\Module\AbstractModule::description()
72
+	 */
73
+	public function description(): string
74
+	{
75
+		return I18N::translate('Manage and run nearly-scheduled administration tasks.');
76
+	}
77
+
78
+	/**
79
+	 * {@inheritDoc}
80
+	 * @see \Fisharebest\Webtrees\Module\AbstractModule::boot()
81
+	 */
82
+	public function boot(): void
83
+	{
84
+		$this->traitBoot();
85
+		app(MigrationService::class)->updateSchema(
86
+			self::SCHEMA_MIGRATION_PREFIX,
87
+			self::SCHEMA_SETTING_NAME,
88
+			self::SCHEMA_TARGET_VERSION
89
+		);
90
+	}
91
+
92
+	/**
93
+	 * {@inheritDoc}
94
+	 * @see \MyArtJaub\Webtrees\Module\ModuleMyArtJaubInterface::loadRoutes()
95
+	 */
96
+	public function loadRoutes(Map $router): void
97
+	{
98
+		$router->attach('', '', static function (Map $router): void {
99
+
100
+			$router->attach('', '/module-maj/admintasks', static function (Map $router): void {
101
+				$router->tokens(['enable' => '[01]']);
102
+
103
+				$router->attach('', '/admin', static function (Map $router): void {
104
+
105
+					$router->extras([
106
+						'middleware' => [
107
+							AuthAdministrator::class,
108
+						],
109
+					]);
110
+					$router->get(AdminConfigPage::class, '/config', AdminConfigPage::class);
111
+
112
+					$router->attach('', '/tasks', static function (Map $router): void {
113
+
114
+						$router->get(TasksList::class, '', TasksList::class);
115
+						$router->get(TaskEditPage::class, '/{task}', TaskEditPage::class);
116
+						$router->post(TaskEditAction::class, '/{task}', TaskEditAction::class);
117
+						$router->get(TaskStatusAction::class, '/{task}/status/{enable}', TaskStatusAction::class);
118
+					});
119
+				});
120
+
121
+				$router->get(TaskTrigger::class, '/trigger{/task}', TaskTrigger::class)
122
+					->allows(RequestMethodInterface::METHOD_POST);
123
+
124
+				$router->post(TokenGenerate::class, '/token', TokenGenerate::class)
125
+					->extras(['middleware' => [AuthAdministrator::class]]);
126
+			});
127
+		});
128
+	}
129
+
130
+	/**
131
+	 * {@inheritDoc}
132
+	 * @see \Fisharebest\Webtrees\Module\ModuleCustomInterface::customModuleLatestVersion()
133
+	 */
134
+	public function customModuleVersion(): string
135
+	{
136
+		return '2.1.3-v.1';
137
+	}
138
+
139
+	/**
140
+	 * {@inheritDoc}
141
+	 * @see \Fisharebest\Webtrees\Module\ModuleConfigInterface::getConfigLink()
142
+	 */
143
+	public function getConfigLink(): string
144
+	{
145
+		return route(AdminConfigPage::class);
146
+	}
147
+
148
+	/**
149
+	 * {@inheritDoc}
150
+	 * @see \Fisharebest\Webtrees\Module\ModuleGlobalInterface::bodyContent()
151
+	 */
152
+	public function bodyContent(): string
153
+	{
154
+		return view($this->name() . '::snippet', [ 'url' => route(TaskTrigger::class) ]);
155
+	}
156
+
157
+	/**
158
+	 * {@inheritDoc}
159
+	 * @see ModuleTasksProviderInterface::listTasks()
160
+	 */
161
+	public function listTasks(): array
162
+	{
163
+		return [
164
+			'maj-healthcheck' => HealthCheckEmailTask::class
165
+		];
166
+	}
167 167
 }
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/Hooks/AbstractHookCollector.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -57,7 +57,7 @@
 block discarded – undo
57 57
      */
58 58
     public function name(): string
59 59
     {
60
-        return $this->module->name() . '-' .
60
+        return $this->module->name().'-'.
61 61
             mb_substr(str_replace('collector', '', mb_strtolower((new ReflectionClass($this))->getShortName())), 0, 64);
62 62
     }
63 63
 
Please login to merge, or discard this patch.
Indentation   +64 added lines, -64 removed lines patch added patch discarded remove patch
@@ -27,77 +27,77 @@
 block discarded – undo
27 27
  */
28 28
 abstract class AbstractHookCollector implements HookCollectorInterface, HookInterface
29 29
 {
30
-    /** @var Collection<int, array<THook>> $hooks */
31
-    protected Collection $hooks;
30
+	/** @var Collection<int, array<THook>> $hooks */
31
+	protected Collection $hooks;
32 32
 
33
-    private ModuleInterface $module;
33
+	private ModuleInterface $module;
34 34
 
35
-    /**
36
-     * Constructor for AbstractHookCollector
37
-     *
38
-     * @param ModuleInterface $module
39
-     */
40
-    public function __construct(ModuleInterface $module)
41
-    {
42
-        $this->hooks = new Collection();
43
-        $this->module = $module;
44
-    }
35
+	/**
36
+	 * Constructor for AbstractHookCollector
37
+	 *
38
+	 * @param ModuleInterface $module
39
+	 */
40
+	public function __construct(ModuleInterface $module)
41
+	{
42
+		$this->hooks = new Collection();
43
+		$this->module = $module;
44
+	}
45 45
 
46
-    /**
47
-     * {@inheritDoc}
48
-     * @see \MyArtJaub\Webtrees\Contracts\Hooks\HookInterface::module()
49
-     */
50
-    public function module(): ModuleInterface
51
-    {
52
-        return $this->module;
53
-    }
46
+	/**
47
+	 * {@inheritDoc}
48
+	 * @see \MyArtJaub\Webtrees\Contracts\Hooks\HookInterface::module()
49
+	 */
50
+	public function module(): ModuleInterface
51
+	{
52
+		return $this->module;
53
+	}
54 54
 
55
-    /**
56
-     * {@inheritDoc}
57
-     * @see \MyArtJaub\Webtrees\Contracts\Hooks\HookCollectorInterface::name()
58
-     */
59
-    public function name(): string
60
-    {
61
-        return $this->module->name() . '-' .
62
-            mb_substr(str_replace('collector', '', mb_strtolower((new ReflectionClass($this))->getShortName())), 0, 64);
63
-    }
55
+	/**
56
+	 * {@inheritDoc}
57
+	 * @see \MyArtJaub\Webtrees\Contracts\Hooks\HookCollectorInterface::name()
58
+	 */
59
+	public function name(): string
60
+	{
61
+		return $this->module->name() . '-' .
62
+			mb_substr(str_replace('collector', '', mb_strtolower((new ReflectionClass($this))->getShortName())), 0, 64);
63
+	}
64 64
 
65
-    /**
66
-     * {@inheritDoc}
67
-     * @see \MyArtJaub\Webtrees\Contracts\Hooks\HookCollectorInterface::title()
68
-     */
69
-    abstract public function title(): string;
65
+	/**
66
+	 * {@inheritDoc}
67
+	 * @see \MyArtJaub\Webtrees\Contracts\Hooks\HookCollectorInterface::title()
68
+	 */
69
+	abstract public function title(): string;
70 70
 
71
-    /**
72
-     * {@inheritDoc}
73
-     * @see \MyArtJaub\Webtrees\Contracts\Hooks\HookCollectorInterface::description()
74
-     */
75
-    abstract public function description(): string;
71
+	/**
72
+	 * {@inheritDoc}
73
+	 * @see \MyArtJaub\Webtrees\Contracts\Hooks\HookCollectorInterface::description()
74
+	 */
75
+	abstract public function description(): string;
76 76
 
77
-    /**
78
-     * {@inheritDoc}
79
-     * @see \MyArtJaub\Webtrees\Contracts\Hooks\HookCollectorInterface::hookInterface()
80
-     */
81
-    abstract public function hookInterface(): string;
77
+	/**
78
+	 * {@inheritDoc}
79
+	 * @see \MyArtJaub\Webtrees\Contracts\Hooks\HookCollectorInterface::hookInterface()
80
+	 */
81
+	abstract public function hookInterface(): string;
82 82
 
83
-    /**
84
-     * {@inheritDoc}
85
-     * @see \MyArtJaub\Webtrees\Contracts\Hooks\HookCollectorInterface::register()
86
-     */
87
-    public function register(HookInterface $hook_instance, int $order): void
88
-    {
89
-        $this->hooks->put($order, [...$this->hooks->get($order, []), $hook_instance]);
90
-    }
83
+	/**
84
+	 * {@inheritDoc}
85
+	 * @see \MyArtJaub\Webtrees\Contracts\Hooks\HookCollectorInterface::register()
86
+	 */
87
+	public function register(HookInterface $hook_instance, int $order): void
88
+	{
89
+		$this->hooks->put($order, [...$this->hooks->get($order, []), $hook_instance]);
90
+	}
91 91
 
92
-    /**
93
-     * {@inheritDoc}
94
-     * @see \MyArtJaub\Webtrees\Contracts\Hooks\HookCollectorInterface::hooks()
95
-     *
96
-     * @return Collection<THook>
97
-     */
98
-    public function hooks(): Collection
99
-    {
100
-        /** @var Collection<THook> */
101
-        return $this->hooks->sortKeys()->flatten();
102
-    }
92
+	/**
93
+	 * {@inheritDoc}
94
+	 * @see \MyArtJaub\Webtrees\Contracts\Hooks\HookCollectorInterface::hooks()
95
+	 *
96
+	 * @return Collection<THook>
97
+	 */
98
+	public function hooks(): Collection
99
+	{
100
+		/** @var Collection<THook> */
101
+		return $this->hooks->sortKeys()->flatten();
102
+	}
103 103
 }
Please login to merge, or discard this patch.
app/Common/GeoDispersion/GeoAnalysis/GeoAnalysisResult.php 2 patches
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.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -134,7 +134,7 @@  discard block
 block discarded – undo
134 134
      */
135 135
     public function merge(GeoAnalysisResult $other): self
136 136
     {
137
-        $this->places->each(function (GeoAnalysisResultItem $item) use ($other): void {
137
+        $this->places->each(function(GeoAnalysisResultItem $item) use ($other): void {
138 138
             if ($other->places->has($item->key())) {
139 139
                 $item->place()->exclude(
140 140
                     $item->place()->isExcluded()
@@ -143,7 +143,7 @@  discard block
 block discarded – undo
143 143
             }
144 144
         });
145 145
 
146
-        $other->places->each(function (GeoAnalysisResultItem $item): void {
146
+        $other->places->each(function(GeoAnalysisResultItem $item): void {
147 147
             if (!$this->places->has($item->key())) {
148 148
                 $this->addPlace($item->place());
149 149
             }
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/MapColorsConfig.php 2 patches
Indentation   +81 added lines, -81 removed lines patch added patch discarded remove patch
@@ -23,92 +23,92 @@
 block discarded – undo
23 23
  */
24 24
 class MapColorsConfig implements JsonSerializable
25 25
 {
26
-    private Color $default;
27
-    private Color $stroke;
28
-    private Color $max_value;
29
-    private Color $hover;
26
+	private Color $default;
27
+	private Color $stroke;
28
+	private Color $max_value;
29
+	private Color $hover;
30 30
 
31
-    /**
32
-     * Constructor for MapColorsConfig
33
-     *
34
-     * @param Color $default
35
-     * @param Color $stroke
36
-     * @param Color $max_value
37
-     * @param Color $hover
38
-     */
39
-    public function __construct(
40
-        Color $default,
41
-        Color $stroke,
42
-        Color $max_value,
43
-        Color $hover
44
-    ) {
45
-        $this->default = $default;
46
-        $this->stroke = $stroke;
47
-        $this->max_value = $max_value;
48
-        $this->hover = $hover;
49
-    }
31
+	/**
32
+	 * Constructor for MapColorsConfig
33
+	 *
34
+	 * @param Color $default
35
+	 * @param Color $stroke
36
+	 * @param Color $max_value
37
+	 * @param Color $hover
38
+	 */
39
+	public function __construct(
40
+		Color $default,
41
+		Color $stroke,
42
+		Color $max_value,
43
+		Color $hover
44
+	) {
45
+		$this->default = $default;
46
+		$this->stroke = $stroke;
47
+		$this->max_value = $max_value;
48
+		$this->hover = $hover;
49
+	}
50 50
 
51
-    /**
52
-     * Get the default color for the features
53
-     *
54
-     * @return Color
55
-     */
56
-    public function defaultColor(): Color
57
-    {
58
-        return $this->default;
59
-    }
51
+	/**
52
+	 * Get the default color for the features
53
+	 *
54
+	 * @return Color
55
+	 */
56
+	public function defaultColor(): Color
57
+	{
58
+		return $this->default;
59
+	}
60 60
 
61
-    /**
62
-     * Get the color for the features' strokes
63
-     *
64
-     * @return Color
65
-     */
66
-    public function strokeColor(): Color
67
-    {
68
-        return $this->stroke;
69
-    }
61
+	/**
62
+	 * Get the color for the features' strokes
63
+	 *
64
+	 * @return Color
65
+	 */
66
+	public function strokeColor(): Color
67
+	{
68
+		return $this->stroke;
69
+	}
70 70
 
71
-    /**
72
-     * Get the color for the features with the lowest count
73
-     *
74
-     * @return Color
75
-     */
76
-    public function minValueColor(): Color
77
-    {
78
-        return new Rgb(255, 255, 255);
79
-    }
71
+	/**
72
+	 * Get the color for the features with the lowest count
73
+	 *
74
+	 * @return Color
75
+	 */
76
+	public function minValueColor(): Color
77
+	{
78
+		return new Rgb(255, 255, 255);
79
+	}
80 80
 
81
-    /**
82
-     * Get the color for the features with the highest count
83
-     *
84
-     * @return Color
85
-     */
86
-    public function maxValueColor(): Color
87
-    {
88
-        return $this->max_value;
89
-    }
81
+	/**
82
+	 * Get the color for the features with the highest count
83
+	 *
84
+	 * @return Color
85
+	 */
86
+	public function maxValueColor(): Color
87
+	{
88
+		return $this->max_value;
89
+	}
90 90
 
91
-    /**
92
-     * Get the color for feature hovering
93
-     *
94
-     * @return Color
95
-     */
96
-    public function hoverColor(): Color
97
-    {
98
-        return $this->hover;
99
-    }
91
+	/**
92
+	 * Get the color for feature hovering
93
+	 *
94
+	 * @return Color
95
+	 */
96
+	public function hoverColor(): Color
97
+	{
98
+		return $this->hover;
99
+	}
100 100
 
101
-    /**
102
-     * {@inheritDoc}
103
-     * @see JsonSerializable::jsonSerialize()
104
-     */
105
-    public function jsonSerialize()
106
-    {
107
-        return [
108
-            'default'   => (string) $this->defaultColor()->toHex(),
109
-            'stroke'    => (string) $this->strokeColor()->toHex(),
110
-            'maxvalue'  => (string) $this->maxValueColor()->toHex(),
111
-            'hover'     => (string) $this->hoverColor()->toHex(),
112
-        ];
113
-    }
101
+	/**
102
+	 * {@inheritDoc}
103
+	 * @see JsonSerializable::jsonSerialize()
104
+	 */
105
+	public function jsonSerialize()
106
+	{
107
+		return [
108
+			'default'   => (string) $this->defaultColor()->toHex(),
109
+			'stroke'    => (string) $this->strokeColor()->toHex(),
110
+			'maxvalue'  => (string) $this->maxValueColor()->toHex(),
111
+			'hover'     => (string) $this->hoverColor()->toHex(),
112
+		];
113
+	}
114 114
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -105,10 +105,10 @@
 block discarded – undo
105 105
     public function jsonSerialize()
106 106
     {
107 107
         return [
108
-            'default'   => (string) $this->defaultColor()->toHex(),
109
-            'stroke'    => (string) $this->strokeColor()->toHex(),
110
-            'maxvalue'  => (string) $this->maxValueColor()->toHex(),
111
-            'hover'     => (string) $this->hoverColor()->toHex(),
108
+            'default'   => (string)$this->defaultColor()->toHex(),
109
+            'stroke'    => (string)$this->strokeColor()->toHex(),
110
+            'maxvalue'  => (string)$this->maxValueColor()->toHex(),
111
+            'hover'     => (string)$this->hoverColor()->toHex(),
112 112
         ];
113 113
     }
114 114
 }
Please login to merge, or discard this patch.
app/Common/GeoDispersion/Config/NullPlaceMapperConfig.php 1 patch
Indentation   +52 added lines, -52 removed lines patch added patch discarded remove patch
@@ -26,61 +26,61 @@
 block discarded – undo
26 26
  */
27 27
 class NullPlaceMapperConfig implements PlaceMapperConfigInterface
28 28
 {
29
-    /**
30
-     * {@inheritDoc}
31
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperConfigInterface::get()
32
-     */
33
-    public function get(string $key, $default = null)
34
-    {
35
-        return $default;
36
-    }
29
+	/**
30
+	 * {@inheritDoc}
31
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperConfigInterface::get()
32
+	 */
33
+	public function get(string $key, $default = null)
34
+	{
35
+		return $default;
36
+	}
37 37
 
38
-    /**
39
-     * {@inheritDoc}
40
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperConfigInterface::has()
41
-     */
42
-    public function has(string $key): bool
43
-    {
44
-        return false;
45
-    }
38
+	/**
39
+	 * {@inheritDoc}
40
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperConfigInterface::has()
41
+	 */
42
+	public function has(string $key): bool
43
+	{
44
+		return false;
45
+	}
46 46
 
47
-    /**
48
-     * {@inheritDoc}
49
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperConfigInterface::jsonDeserialize()
50
-     *
51
-     * @param mixed $config
52
-     * @return $this
53
-     */
54
-    public function jsonDeserialize($config): self
55
-    {
56
-        return $this;
57
-    }
47
+	/**
48
+	 * {@inheritDoc}
49
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperConfigInterface::jsonDeserialize()
50
+	 *
51
+	 * @param mixed $config
52
+	 * @return $this
53
+	 */
54
+	public function jsonDeserialize($config): self
55
+	{
56
+		return $this;
57
+	}
58 58
 
59
-    /**
60
-     * {@inheritDoc}
61
-     * @see JsonSerializable::jsonSerialize()
62
-     */
63
-    public function jsonSerialize()
64
-    {
65
-        return [];
66
-    }
59
+	/**
60
+	 * {@inheritDoc}
61
+	 * @see JsonSerializable::jsonSerialize()
62
+	 */
63
+	public function jsonSerialize()
64
+	{
65
+		return [];
66
+	}
67 67
 
68
-    /**
69
-     * {@inheritDoc}
70
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperConfigInterface::configContent()
71
-     */
72
-    public function configContent(ModuleInterface $module, Tree $tree): string
73
-    {
74
-        return '';
75
-    }
68
+	/**
69
+	 * {@inheritDoc}
70
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperConfigInterface::configContent()
71
+	 */
72
+	public function configContent(ModuleInterface $module, Tree $tree): string
73
+	{
74
+		return '';
75
+	}
76 76
 
77
-    /**
78
-     * {@inheritDoc}
79
-     * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperConfigInterface::withConfigUpdate()
80
-     * @return $this
81
-     */
82
-    public function withConfigUpdate(ServerRequestInterface $request): self
83
-    {
84
-        return $this;
85
-    }
77
+	/**
78
+	 * {@inheritDoc}
79
+	 * @see \MyArtJaub\Webtrees\Contracts\GeoDispersion\PlaceMapperConfigInterface::withConfigUpdate()
80
+	 * @return $this
81
+	 */
82
+	public function withConfigUpdate(ServerRequestInterface $request): self
83
+	{
84
+		return $this;
85
+	}
86 86
 }
Please login to merge, or discard this patch.