summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/Fact.php4
-rw-r--r--app/Family.php4
-rw-r--r--app/GedcomRecord.php14
-rw-r--r--app/Http/Controllers/Admin/UsersController.php2
-rw-r--r--app/Http/Controllers/AdminSiteController.php2
-rw-r--r--app/Http/Controllers/AdminTreesController.php3
-rw-r--r--app/Http/Controllers/HomePageController.php30
-rw-r--r--app/Http/RequestHandlers/AbstractSelect2Handler.php2
-rw-r--r--app/Http/RequestHandlers/IndividualPage.php4
-rw-r--r--app/Http/RequestHandlers/MediaPage.php2
-rw-r--r--app/Http/RequestHandlers/NotePage.php2
-rw-r--r--app/Http/RequestHandlers/RepositoryPage.php2
-rw-r--r--app/Http/RequestHandlers/Select2Family.php2
-rw-r--r--app/Http/RequestHandlers/Select2Individual.php2
-rw-r--r--app/Http/RequestHandlers/Select2MediaObject.php2
-rw-r--r--app/Http/RequestHandlers/Select2Note.php2
-rw-r--r--app/Http/RequestHandlers/Select2Place.php2
-rw-r--r--app/Http/RequestHandlers/Select2Repository.php2
-rw-r--r--app/Http/RequestHandlers/Select2Source.php2
-rw-r--r--app/Http/RequestHandlers/Select2Submitter.php2
-rw-r--r--app/Http/RequestHandlers/SourcePage.php2
-rw-r--r--app/Individual.php10
-rw-r--r--app/Media.php2
-rw-r--r--app/Module/BritishMonarchs.php2
-rw-r--r--app/Module/BritishPrimeMinisters.php2
-rw-r--r--app/Module/BritishSocialHistory.php2
-rw-r--r--app/Module/FrequentlyAskedQuestionsModule.php2
-rw-r--r--app/Module/IndividualFactsTabModule.php2
-rw-r--r--app/Module/IndividualMetadataModule.php2
-rw-r--r--app/Module/MediaTabModule.php4
-rw-r--r--app/Module/ModuleHistoricEventsInterface.php5
-rw-r--r--app/Module/ModuleHistoricEventsTrait.php2
-rw-r--r--app/Module/ModuleSidebarInterface.php2
-rw-r--r--app/Module/ModuleSidebarTrait.php2
-rw-r--r--app/Module/ModuleTabInterface.php2
-rw-r--r--app/Module/ModuleTabTrait.php2
-rw-r--r--app/Module/NotesTabModule.php4
-rw-r--r--app/Module/PlacesModule.php2
-rw-r--r--app/Module/PrivacyPolicy.php2
-rw-r--r--app/Module/RelativesTabModule.php2
-rw-r--r--app/Module/ResearchTaskModule.php4
-rw-r--r--app/Module/SiteMapModule.php12
-rw-r--r--app/Module/SourcesTabModule.php4
-rw-r--r--app/Module/USPresidents.php2
-rw-r--r--app/Place.php6
-rw-r--r--app/Services/ChartService.php6
-rw-r--r--app/Services/ClipboardService.php4
-rw-r--r--app/Services/MediaFileService.php6
-rw-r--r--app/Services/MessageService.php2
-rw-r--r--app/Services/ModuleService.php16
-rw-r--r--app/Services/SearchService.php29
-rw-r--r--app/Services/ServerCheckService.php10
-rw-r--r--app/Services/TreeService.php2
-rw-r--r--app/Services/UpgradeService.php2
-rw-r--r--app/Services/UserService.php16
55 files changed, 133 insertions, 130 deletions
diff --git a/app/Fact.php b/app/Fact.php
index ad50fe5c1e..70d6e7e0aa 100644
--- a/app/Fact.php
+++ b/app/Fact.php
@@ -695,9 +695,9 @@ class Fact
* using the compare type function
* 3. Then merge the arrays back into the original array using the compare type function
*
- * @param Collection $unsorted
+ * @param Collection<Fact> $unsorted
*
- * @return Collection
+ * @return Collection<Fact>
*/
public static function sortFacts(Collection $unsorted): Collection
{
diff --git a/app/Family.php b/app/Family.php
index 2975a479f8..3c00e885d7 100644
--- a/app/Family.php
+++ b/app/Family.php
@@ -259,7 +259,7 @@ class Family extends GedcomRecord
*
* @param int|null $access_level
*
- * @return Collection
+ * @return Collection<Individual>
*/
public function spouses($access_level = null): Collection
{
@@ -276,7 +276,7 @@ class Family extends GedcomRecord
*
* @param int|null $access_level
*
- * @return Collection
+ * @return Collection<Individual>
*/
public function children($access_level = null): Collection
{
diff --git a/app/GedcomRecord.php b/app/GedcomRecord.php
index 754b33d3de..a3189798e4 100644
--- a/app/GedcomRecord.php
+++ b/app/GedcomRecord.php
@@ -693,7 +693,7 @@ class GedcomRecord
*
* @param string $link
*
- * @return Collection
+ * @return Collection<Individual>
*/
public function linkedIndividuals(string $link): Collection
{
@@ -717,7 +717,7 @@ class GedcomRecord
*
* @param string $link
*
- * @return Collection
+ * @return Collection<Family>
*/
public function linkedFamilies(string $link): Collection
{
@@ -741,7 +741,7 @@ class GedcomRecord
*
* @param string $link
*
- * @return Collection
+ * @return Collection<Source>
*/
public function linkedSources(string $link): Collection
{
@@ -765,7 +765,7 @@ class GedcomRecord
*
* @param string $link
*
- * @return Collection
+ * @return Collection<Media>
*/
public function linkedMedia(string $link): Collection
{
@@ -789,7 +789,7 @@ class GedcomRecord
*
* @param string $link
*
- * @return Collection
+ * @return Collection<Note>
*/
public function linkedNotes(string $link): Collection
{
@@ -814,7 +814,7 @@ class GedcomRecord
*
* @param string $link
*
- * @return Collection
+ * @return Collection<Repository>
*/
public function linkedRepositories(string $link): Collection
{
@@ -886,7 +886,7 @@ class GedcomRecord
* @param int|null $access_level
* @param bool $override Include private records, to allow us to implement $SHOW_PRIVATE_RELATIONSHIPS and $SHOW_LIVING_NAMES.
*
- * @return Collection
+ * @return Collection<Fact>
*/
public function facts(array $filter = [], bool $sort = false, int $access_level = null, bool $override = false): Collection
{
diff --git a/app/Http/Controllers/Admin/UsersController.php b/app/Http/Controllers/Admin/UsersController.php
index 6b69b797b7..e1c786b744 100644
--- a/app/Http/Controllers/Admin/UsersController.php
+++ b/app/Http/Controllers/Admin/UsersController.php
@@ -426,7 +426,7 @@ class UsersController extends AbstractAdminController
}
/**
- * @return Collection
+ * @return Collection<string>
*/
private function themeOptions(): Collection
{
diff --git a/app/Http/Controllers/AdminSiteController.php b/app/Http/Controllers/AdminSiteController.php
index e3027d951b..afbfa4ff1d 100644
--- a/app/Http/Controllers/AdminSiteController.php
+++ b/app/Http/Controllers/AdminSiteController.php
@@ -69,7 +69,7 @@ class AdminSiteController extends AbstractBaseController
}
/**
- * @return Collection
+ * @return Collection<string>
*/
private function themeOptions(): Collection
{
diff --git a/app/Http/Controllers/AdminTreesController.php b/app/Http/Controllers/AdminTreesController.php
index c24a820d9c..6ea3ad5141 100644
--- a/app/Http/Controllers/AdminTreesController.php
+++ b/app/Http/Controllers/AdminTreesController.php
@@ -65,6 +65,7 @@ use function route;
use const UPLOAD_ERR_OK;
/**
+/**
* Controller for tree administration.
*/
class AdminTreesController extends AbstractBaseController
@@ -1787,7 +1788,7 @@ class AdminTreesController extends AbstractBaseController
}
/**
- * @return Collection
+ * @return Collection<string>
*/
private function themeOptions(): Collection
{
diff --git a/app/Http/Controllers/HomePageController.php b/app/Http/Controllers/HomePageController.php
index 4258a4762b..6b7b262375 100644
--- a/app/Http/Controllers/HomePageController.php
+++ b/app/Http/Controllers/HomePageController.php
@@ -675,7 +675,7 @@ class HomePageController extends AbstractBaseController
/**
* Get all the available blocks for a tree page.
*
- * @return Collection
+ * @return Collection<string,ModuleBlockInterface>
*/
private function availableTreeBlocks(): Collection
{
@@ -683,7 +683,7 @@ class HomePageController extends AbstractBaseController
->filter(static function (ModuleBlockInterface $block): bool {
return $block->isTreeBlock();
})
- ->mapWithKeys(static function (ModuleInterface $block): array {
+ ->mapWithKeys(static function (ModuleBlockInterface $block): array {
return [$block->name() => $block];
});
}
@@ -691,7 +691,7 @@ class HomePageController extends AbstractBaseController
/**
* Get all the available blocks for a user page.
*
- * @return Collection
+ * @return Collection<string,ModuleBlockInterface>
*/
private function availableUserBlocks(): Collection
{
@@ -699,7 +699,7 @@ class HomePageController extends AbstractBaseController
->filter(static function (ModuleBlockInterface $block): bool {
return $block->isUserBlock();
})
- ->mapWithKeys(static function (ModuleInterface $block): array {
+ ->mapWithKeys(static function (ModuleBlockInterface $block): array {
return [$block->name() => $block];
});
}
@@ -710,7 +710,7 @@ class HomePageController extends AbstractBaseController
* @param int $tree_id
* @param string $location "main" or "side"
*
- * @return Collection
+ * @return Collection<string,ModuleBlockInterface>
*/
private function treeBlocks(int $tree_id, string $location): Collection
{
@@ -757,7 +757,7 @@ class HomePageController extends AbstractBaseController
* @param int $user_id
* @param string $location "main" or "side"
*
- * @return Collection
+ * @return Collection<string,ModuleBlockInterface>
*/
private function userBlocks(int $user_id, string $location): Collection
{
@@ -801,9 +801,9 @@ class HomePageController extends AbstractBaseController
/**
* Save the updated blocks for a user.
*
- * @param int $user_id
- * @param Collection $main_block_ids
- * @param Collection $side_block_ids
+ * @param int $user_id
+ * @param Collection<int> $main_block_ids
+ * @param Collection<int> $side_block_ids
*
* @return void
*/
@@ -857,9 +857,9 @@ class HomePageController extends AbstractBaseController
/**
* Save the updated blocks for a tree.
*
- * @param int $tree_id
- * @param Collection $main_block_ids
- * @param Collection $side_block_ids
+ * @param int $tree_id
+ * @param Collection<int> $main_block_ids
+ * @param Collection<int> $side_block_ids
*
* @return void
*/
@@ -913,10 +913,10 @@ class HomePageController extends AbstractBaseController
/**
* Take a list of block names, and return block (module) objects.
*
- * @param Collection $blocks
- * @param Collection $active_blocks
+ * @param Collection<string> $blocks
+ * @param Collection<string,ModuleBlockInterface> $active_blocks
*
- * @return Collection
+ * @return Collection<string,ModuleBlockInterface>
*/
private function filterActiveBlocks(Collection $blocks, Collection $active_blocks): Collection
{
diff --git a/app/Http/RequestHandlers/AbstractSelect2Handler.php b/app/Http/RequestHandlers/AbstractSelect2Handler.php
index 0d0d50a708..9f11b43f6c 100644
--- a/app/Http/RequestHandlers/AbstractSelect2Handler.php
+++ b/app/Http/RequestHandlers/AbstractSelect2Handler.php
@@ -94,7 +94,7 @@ abstract class AbstractSelect2Handler implements RequestHandlerInterface
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<array<string,string>>
*/
abstract protected function search(Tree $tree, string $query, int $offset, int $limit): Collection;
}
diff --git a/app/Http/RequestHandlers/IndividualPage.php b/app/Http/RequestHandlers/IndividualPage.php
index 5fc0061673..522b0a7fb0 100644
--- a/app/Http/RequestHandlers/IndividualPage.php
+++ b/app/Http/RequestHandlers/IndividualPage.php
@@ -347,7 +347,7 @@ class IndividualPage implements RequestHandlerInterface
*
* @param Individual $individual
*
- * @return Collection
+ * @return Collection<ModuleSidebarInterface>
*/
public function getSidebars(Individual $individual): Collection
{
@@ -363,7 +363,7 @@ class IndividualPage implements RequestHandlerInterface
*
* @param Individual $individual
*
- * @return Collection
+ * @return Collection<ModuleTabInterface>
*/
public function getTabs(Individual $individual): Collection
{
diff --git a/app/Http/RequestHandlers/MediaPage.php b/app/Http/RequestHandlers/MediaPage.php
index e1d10eef9e..6dc9bab400 100644
--- a/app/Http/RequestHandlers/MediaPage.php
+++ b/app/Http/RequestHandlers/MediaPage.php
@@ -98,7 +98,7 @@ class MediaPage implements RequestHandlerInterface
/**
* @param Media $record
*
- * @return Collection
+ * @return Collection<Fact>
*/
private function facts(Media $record): Collection
{
diff --git a/app/Http/RequestHandlers/NotePage.php b/app/Http/RequestHandlers/NotePage.php
index 3f2c1bc5ac..cf6853b970 100644
--- a/app/Http/RequestHandlers/NotePage.php
+++ b/app/Http/RequestHandlers/NotePage.php
@@ -96,7 +96,7 @@ class NotePage implements RequestHandlerInterface
/**
* @param Note $record
*
- * @return Collection
+ * @return Collection<Fact>
*/
private function facts(Note $record): Collection
{
diff --git a/app/Http/RequestHandlers/RepositoryPage.php b/app/Http/RequestHandlers/RepositoryPage.php
index b4924de342..54db5aac7c 100644
--- a/app/Http/RequestHandlers/RepositoryPage.php
+++ b/app/Http/RequestHandlers/RepositoryPage.php
@@ -106,7 +106,7 @@ class RepositoryPage implements RequestHandlerInterface
/**
* @param Repository $record
*
- * @return Collection
+ * @return Collection<Fact>
*/
private function facts(Repository $record): Collection
{
diff --git a/app/Http/RequestHandlers/Select2Family.php b/app/Http/RequestHandlers/Select2Family.php
index 35fe7da788..a5a099efd4 100644
--- a/app/Http/RequestHandlers/Select2Family.php
+++ b/app/Http/RequestHandlers/Select2Family.php
@@ -38,7 +38,7 @@ class Select2Family extends AbstractSelect2Handler
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<array<string,string>>
*/
protected function search(Tree $tree, string $query, int $offset, int $limit): Collection
{
diff --git a/app/Http/RequestHandlers/Select2Individual.php b/app/Http/RequestHandlers/Select2Individual.php
index 274b862c52..3a64b62130 100644
--- a/app/Http/RequestHandlers/Select2Individual.php
+++ b/app/Http/RequestHandlers/Select2Individual.php
@@ -38,7 +38,7 @@ class Select2Individual extends AbstractSelect2Handler
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<array<string,string>>
*/
protected function search(Tree $tree, string $query, int $offset, int $limit): Collection
{
diff --git a/app/Http/RequestHandlers/Select2MediaObject.php b/app/Http/RequestHandlers/Select2MediaObject.php
index 4d7b405449..8e5e00aa43 100644
--- a/app/Http/RequestHandlers/Select2MediaObject.php
+++ b/app/Http/RequestHandlers/Select2MediaObject.php
@@ -38,7 +38,7 @@ class Select2MediaObject extends AbstractSelect2Handler
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<array<string,string>>
*/
protected function search(Tree $tree, string $query, int $offset, int $limit): Collection
{
diff --git a/app/Http/RequestHandlers/Select2Note.php b/app/Http/RequestHandlers/Select2Note.php
index a1449f707f..62ad32d948 100644
--- a/app/Http/RequestHandlers/Select2Note.php
+++ b/app/Http/RequestHandlers/Select2Note.php
@@ -38,7 +38,7 @@ class Select2Note extends AbstractSelect2Handler
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<array<string,string>>
*/
protected function search(Tree $tree, string $query, int $offset, int $limit): Collection
{
diff --git a/app/Http/RequestHandlers/Select2Place.php b/app/Http/RequestHandlers/Select2Place.php
index c39843f0b3..aa60418df3 100644
--- a/app/Http/RequestHandlers/Select2Place.php
+++ b/app/Http/RequestHandlers/Select2Place.php
@@ -36,7 +36,7 @@ class Select2Place extends AbstractSelect2Handler
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<array<string,string>>
*/
protected function search(Tree $tree, string $query, int $offset, int $limit): Collection
{
diff --git a/app/Http/RequestHandlers/Select2Repository.php b/app/Http/RequestHandlers/Select2Repository.php
index ca7cb0caba..413b3ecef3 100644
--- a/app/Http/RequestHandlers/Select2Repository.php
+++ b/app/Http/RequestHandlers/Select2Repository.php
@@ -38,7 +38,7 @@ class Select2Repository extends AbstractSelect2Handler
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<array<string,string>>
*/
protected function search(Tree $tree, string $query, int $offset, int $limit): Collection
{
diff --git a/app/Http/RequestHandlers/Select2Source.php b/app/Http/RequestHandlers/Select2Source.php
index 1579b64971..7a51b2c793 100644
--- a/app/Http/RequestHandlers/Select2Source.php
+++ b/app/Http/RequestHandlers/Select2Source.php
@@ -38,7 +38,7 @@ class Select2Source extends AbstractSelect2Handler
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<array<string,string>>
*/
protected function search(Tree $tree, string $query, int $offset, int $limit): Collection
{
diff --git a/app/Http/RequestHandlers/Select2Submitter.php b/app/Http/RequestHandlers/Select2Submitter.php
index 1698d8d7cb..efc8b0fb51 100644
--- a/app/Http/RequestHandlers/Select2Submitter.php
+++ b/app/Http/RequestHandlers/Select2Submitter.php
@@ -38,7 +38,7 @@ class Select2Submitter extends AbstractSelect2Handler
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<array<string,string>>
*/
protected function search(Tree $tree, string $query, int $offset, int $limit): Collection
{
diff --git a/app/Http/RequestHandlers/SourcePage.php b/app/Http/RequestHandlers/SourcePage.php
index 9c2a49910d..61562d1484 100644
--- a/app/Http/RequestHandlers/SourcePage.php
+++ b/app/Http/RequestHandlers/SourcePage.php
@@ -114,7 +114,7 @@ class SourcePage implements RequestHandlerInterface
/**
* @param Source $record
*
- * @return Collection
+ * @return Collection<Fact>
*/
private function facts(Source $record): Collection
{
diff --git a/app/Individual.php b/app/Individual.php
index f133b99e31..44f7f650be 100644
--- a/app/Individual.php
+++ b/app/Individual.php
@@ -801,7 +801,7 @@ class Individual extends GedcomRecord
*
* @param int|null $access_level
*
- * @return Collection
+ * @return Collection<Family>
*/
public function spouseFamilies($access_level = null): Collection
{
@@ -867,7 +867,7 @@ class Individual extends GedcomRecord
*
* @param int|null $access_level
*
- * @return Collection
+ * @return Collection<Family>
*/
public function childFamilies($access_level = null): Collection
{
@@ -892,7 +892,7 @@ class Individual extends GedcomRecord
/**
* Get a list of step-parent families.
*
- * @return Collection
+ * @return Collection<Family>
*/
public function childStepFamilies(): Collection
{
@@ -914,7 +914,7 @@ class Individual extends GedcomRecord
/**
* Get a list of step-parent families.
*
- * @return Collection
+ * @return Collection<Family>
*/
public function spouseStepFamilies(): Collection
{
@@ -924,7 +924,7 @@ class Individual extends GedcomRecord
foreach ($families as $family) {
$spouse = $family->spouse($this);
- if ($spouse) {
+ if ($spouse instanceof Individual) {
foreach ($family->spouse($this)->spouseFamilies() as $step_family) {
if (!$families->containsStrict($step_family)) {
$step_families[] = $step_family;
diff --git a/app/Media.php b/app/Media.php
index d2fc0e1b76..40a06c5d07 100644
--- a/app/Media.php
+++ b/app/Media.php
@@ -122,7 +122,7 @@ class Media extends GedcomRecord
/**
* Get the media files for this media object
*
- * @return Collection
+ * @return Collection<MediaFile>
*/
public function mediaFiles(): Collection
{
diff --git a/app/Module/BritishMonarchs.php b/app/Module/BritishMonarchs.php
index 9caea67ba8..6b6348a8d4 100644
--- a/app/Module/BritishMonarchs.php
+++ b/app/Module/BritishMonarchs.php
@@ -51,7 +51,7 @@ class BritishMonarchs extends AbstractModule implements ModuleHistoricEventsInte
/**
* All events provided by this module.
*
- * @return Collection
+ * @return Collection<string>
*/
public function historicEventsAll(): Collection
{
diff --git a/app/Module/BritishPrimeMinisters.php b/app/Module/BritishPrimeMinisters.php
index fab072ee04..880cb7fedb 100644
--- a/app/Module/BritishPrimeMinisters.php
+++ b/app/Module/BritishPrimeMinisters.php
@@ -51,7 +51,7 @@ class BritishPrimeMinisters extends AbstractModule implements ModuleHistoricEven
/**
* All events provided by this module.
*
- * @return Collection
+ * @return Collection<string>
*/
public function historicEventsAll(): Collection
{
diff --git a/app/Module/BritishSocialHistory.php b/app/Module/BritishSocialHistory.php
index b275504e2e..df580ad6df 100644
--- a/app/Module/BritishSocialHistory.php
+++ b/app/Module/BritishSocialHistory.php
@@ -51,7 +51,7 @@ class BritishSocialHistory extends AbstractModule implements ModuleHistoricEvent
/**
* All events provided by this module.
*
- * @return Collection
+ * @return Collection<string>
*/
public function historicEventsAll(): Collection
{
diff --git a/app/Module/FrequentlyAskedQuestionsModule.php b/app/Module/FrequentlyAskedQuestionsModule.php
index 57dcecaf20..bf379f5263 100644
--- a/app/Module/FrequentlyAskedQuestionsModule.php
+++ b/app/Module/FrequentlyAskedQuestionsModule.php
@@ -408,7 +408,7 @@ class FrequentlyAskedQuestionsModule extends AbstractModule implements ModuleCon
/**
* @param Tree $tree
*
- * @return Collection
+ * @return Collection<stdClass>
*/
private function faqsForTree(Tree $tree): Collection
{
diff --git a/app/Module/IndividualFactsTabModule.php b/app/Module/IndividualFactsTabModule.php
index 29844c2901..e58986188e 100644
--- a/app/Module/IndividualFactsTabModule.php
+++ b/app/Module/IndividualFactsTabModule.php
@@ -533,7 +533,7 @@ class IndividualFactsTabModule extends AbstractModule implements ModuleTabInterf
/**
* This module handles the following facts - so don't show them on the "Facts and events" tab.
*
- * @return Collection
+ * @return Collection<string>
*/
public function supportedFacts(): Collection
{
diff --git a/app/Module/IndividualMetadataModule.php b/app/Module/IndividualMetadataModule.php
index 9319f5f191..57dbe1f9a0 100644
--- a/app/Module/IndividualMetadataModule.php
+++ b/app/Module/IndividualMetadataModule.php
@@ -106,7 +106,7 @@ class IndividualMetadataModule extends AbstractModule implements ModuleSidebarIn
/**
* This module handles the following facts - so don't show them on the "Facts and events" tab.
*
- * @return Collection
+ * @return Collection<string>
*/
public function supportedFacts(): Collection
{
diff --git a/app/Module/MediaTabModule.php b/app/Module/MediaTabModule.php
index 80a582aaef..31efe487ca 100644
--- a/app/Module/MediaTabModule.php
+++ b/app/Module/MediaTabModule.php
@@ -128,7 +128,7 @@ class MediaTabModule extends AbstractModule implements ModuleTabInterface
*
* @param Individual $individual
*
- * @return Collection
+ * @return Collection<Fact>
*/
private function getFactsWithMedia(Individual $individual): Collection
{
@@ -168,7 +168,7 @@ class MediaTabModule extends AbstractModule implements ModuleTabInterface
/**
* This module handles the following facts - so don't show them on the "Facts and events" tab.
*
- * @return Collection
+ * @return Collection<string>
*/
public function supportedFacts(): Collection
{
diff --git a/app/Module/ModuleHistoricEventsInterface.php b/app/Module/ModuleHistoricEventsInterface.php
index 33a7ab6e88..64da7158d8 100644
--- a/app/Module/ModuleHistoricEventsInterface.php
+++ b/app/Module/ModuleHistoricEventsInterface.php
@@ -19,6 +19,7 @@ declare(strict_types=1);
namespace Fisharebest\Webtrees\Module;
+use Fisharebest\Webtrees\Fact;
use Fisharebest\Webtrees\Individual;
use Illuminate\Support\Collection;
@@ -30,7 +31,7 @@ interface ModuleHistoricEventsInterface extends ModuleInterface
/**
* All events provided by this module.
*
- * @return Collection
+ * @return Collection<string>
*/
public function historicEventsAll(): Collection;
@@ -39,7 +40,7 @@ interface ModuleHistoricEventsInterface extends ModuleInterface
*
* @param Individual $individual
*
- * @return Collection
+ * @return Collection<Fact>
*/
public function historicEventsForIndividual(Individual $individual): Collection;
}
diff --git a/app/Module/ModuleHistoricEventsTrait.php b/app/Module/ModuleHistoricEventsTrait.php
index cdeccdf361..a81b6fe0bb 100644
--- a/app/Module/ModuleHistoricEventsTrait.php
+++ b/app/Module/ModuleHistoricEventsTrait.php
@@ -57,7 +57,7 @@ trait ModuleHistoricEventsTrait
*
* @param Individual $individual
*
- * @return Collection
+ * @return Collection<Fact>
*/
public function historicEventsForIndividual(Individual $individual): Collection
{
diff --git a/app/Module/ModuleSidebarInterface.php b/app/Module/ModuleSidebarInterface.php
index 6fc09aabb1..c05fb78b8e 100644
--- a/app/Module/ModuleSidebarInterface.php
+++ b/app/Module/ModuleSidebarInterface.php
@@ -77,7 +77,7 @@ interface ModuleSidebarInterface extends ModuleInterface
/**
* This module handles the following facts - so don't show them on the "Facts and events" tab.
*
- * @return Collection
+ * @return Collection<string>
*/
public function supportedFacts(): Collection;
}
diff --git a/app/Module/ModuleSidebarTrait.php b/app/Module/ModuleSidebarTrait.php
index 15a6127d87..959fccdc7b 100644
--- a/app/Module/ModuleSidebarTrait.php
+++ b/app/Module/ModuleSidebarTrait.php
@@ -80,7 +80,7 @@ trait ModuleSidebarTrait
/**
* This module handles the following facts - so don't show them on the "Facts and events" tab.
*
- * @return Collection
+ * @return Collection<string>
*/
public function supportedFacts(): Collection
{
diff --git a/app/Module/ModuleTabInterface.php b/app/Module/ModuleTabInterface.php
index 333862d518..1ca679b84b 100644
--- a/app/Module/ModuleTabInterface.php
+++ b/app/Module/ModuleTabInterface.php
@@ -97,7 +97,7 @@ interface ModuleTabInterface extends ModuleInterface
/**
* This module handles the following facts - so don't show them on the "Facts and events" tab.
*
- * @return Collection
+ * @return Collection<string>
*/
public function supportedFacts(): Collection;
diff --git a/app/Module/ModuleTabTrait.php b/app/Module/ModuleTabTrait.php
index 10f1313aa6..e032ba5473 100644
--- a/app/Module/ModuleTabTrait.php
+++ b/app/Module/ModuleTabTrait.php
@@ -108,7 +108,7 @@ trait ModuleTabTrait
/**
* This module handles the following facts - so don't show them on the "Facts and events" tab.
*
- * @return Collection
+ * @return Collection<string>
*/
public function supportedFacts(): Collection
{
diff --git a/app/Module/NotesTabModule.php b/app/Module/NotesTabModule.php
index 88a2d5b97b..0838638507 100644
--- a/app/Module/NotesTabModule.php
+++ b/app/Module/NotesTabModule.php
@@ -127,7 +127,7 @@ class NotesTabModule extends AbstractModule implements ModuleTabInterface
*
* @param Individual $individual
*
- * @return Collection
+ * @return Collection<Fact>
*/
private function getFactsWithNotes(Individual $individual): Collection
{
@@ -168,7 +168,7 @@ class NotesTabModule extends AbstractModule implements ModuleTabInterface
/**
* This module handles the following facts - so don't show them on the "Facts and events" tab.
*
- * @return Collection
+ * @return Collection<string>
*/
public function supportedFacts(): Collection
{
diff --git a/app/Module/PlacesModule.php b/app/Module/PlacesModule.php
index aa11d3e41c..032f87012c 100644
--- a/app/Module/PlacesModule.php
+++ b/app/Module/PlacesModule.php
@@ -189,7 +189,7 @@ class PlacesModule extends AbstractModule implements ModuleTabInterface
/**
* @param Individual $individual
*
- * @return Collection
+ * @return Collection<Fact>
* @throws Exception
*/
private function getPersonalFacts(Individual $individual): Collection
diff --git a/app/Module/PrivacyPolicy.php b/app/Module/PrivacyPolicy.php
index 877e20294e..18fba89abf 100644
--- a/app/Module/PrivacyPolicy.php
+++ b/app/Module/PrivacyPolicy.php
@@ -139,7 +139,7 @@ class PrivacyPolicy extends AbstractModule implements ModuleFooterInterface
* @param Tree $tree
* @param UserInterface $user
*
- * @return Collection
+ * @return Collection<ModuleAnalyticsInterface>
*/
protected function analyticsModules(Tree $tree, UserInterface $user): Collection
{
diff --git a/app/Module/RelativesTabModule.php b/app/Module/RelativesTabModule.php
index 1a6b5b031c..0eb09f6be6 100644
--- a/app/Module/RelativesTabModule.php
+++ b/app/Module/RelativesTabModule.php
@@ -128,7 +128,7 @@ class RelativesTabModule extends AbstractModule implements ModuleTabInterface
/**
* This module handles the following facts - so don't show them on the "Facts and events" tab.
*
- * @return Collection
+ * @return Collection<string>
*/
public function supportedFacts(): Collection
{
diff --git a/app/Module/ResearchTaskModule.php b/app/Module/ResearchTaskModule.php
index c161be0bb6..cbbf073cfc 100644
--- a/app/Module/ResearchTaskModule.php
+++ b/app/Module/ResearchTaskModule.php
@@ -201,7 +201,7 @@ class ResearchTaskModule extends AbstractModule implements ModuleBlockInterface
* @param Tree $tree
* @param int $max_julian_day
*
- * @return Collection
+ * @return Collection<Family>
*/
private function familiesWithTasks(Tree $tree, int $max_julian_day): Collection
{
@@ -225,7 +225,7 @@ class ResearchTaskModule extends AbstractModule implements ModuleBlockInterface
* @param Tree $tree
* @param int $max_julian_day
*
- * @return Collection
+ * @return Collection<Individual>
*/
private function individualsWithTasks(Tree $tree, int $max_julian_day): Collection
{
diff --git a/app/Module/SiteMapModule.php b/app/Module/SiteMapModule.php
index 6a9ac3534b..35cfc68dd9 100644
--- a/app/Module/SiteMapModule.php
+++ b/app/Module/SiteMapModule.php
@@ -241,7 +241,7 @@ class SiteMapModule extends AbstractModule implements ModuleConfigInterface
* @param int $limit
* @param int $offset
*
- * @return Collection
+ * @return Collection<GedcomRecord>
*/
private function sitemapRecords(Tree $tree, string $type, int $limit, int $offset): Collection
{
@@ -281,7 +281,7 @@ class SiteMapModule extends AbstractModule implements ModuleConfigInterface
* @param int $limit
* @param int $offset
*
- * @return Collection
+ * @return Collection<Individual>
*/
private function sitemapIndividuals(Tree $tree, int $limit, int $offset): Collection
{
@@ -299,7 +299,7 @@ class SiteMapModule extends AbstractModule implements ModuleConfigInterface
* @param int $limit
* @param int $offset
*
- * @return Collection
+ * @return Collection<Media>
*/
private function sitemapMedia(Tree $tree, int $limit, int $offset): Collection
{
@@ -317,7 +317,7 @@ class SiteMapModule extends AbstractModule implements ModuleConfigInterface
* @param int $limit
* @param int $offset
*
- * @return Collection
+ * @return Collection<Note>
*/
private function sitemapNotes(Tree $tree, int $limit, int $offset): Collection
{
@@ -336,7 +336,7 @@ class SiteMapModule extends AbstractModule implements ModuleConfigInterface
* @param int $limit
* @param int $offset
*
- * @return Collection
+ * @return Collection<Repository>
*/
private function sitemapRepositories(Tree $tree, int $limit, int $offset): Collection
{
@@ -355,7 +355,7 @@ class SiteMapModule extends AbstractModule implements ModuleConfigInterface
* @param int $limit
* @param int $offset
*
- * @return Collection
+ * @return Collection<Source>
*/
private function sitemapSources(Tree $tree, int $limit, int $offset): Collection
{
diff --git a/app/Module/SourcesTabModule.php b/app/Module/SourcesTabModule.php
index 045aeeda40..101540c9fa 100644
--- a/app/Module/SourcesTabModule.php
+++ b/app/Module/SourcesTabModule.php
@@ -127,7 +127,7 @@ class SourcesTabModule extends AbstractModule implements ModuleTabInterface
*
* @param Individual $individual
*
- * @return Collection
+ * @return Collection<Fact>
*/
private function getFactsWithSources(Individual $individual): Collection
{
@@ -169,7 +169,7 @@ class SourcesTabModule extends AbstractModule implements ModuleTabInterface
/**
* This module handles the following facts - so don't show them on the "Facts and events" tab.
*
- * @return Collection
+ * @return Collection<string>
*/
public function supportedFacts(): Collection
{
diff --git a/app/Module/USPresidents.php b/app/Module/USPresidents.php
index 460d978e32..46d464a5dd 100644
--- a/app/Module/USPresidents.php
+++ b/app/Module/USPresidents.php
@@ -51,7 +51,7 @@ class USPresidents extends AbstractModule implements ModuleHistoricEventsInterfa
/**
* All events provided by this module.
*
- * @return Collection
+ * @return Collection<string>
*/
public function historicEventsAll(): Collection
{
diff --git a/app/Place.php b/app/Place.php
index 0cac9b8583..f04245a3e8 100644
--- a/app/Place.php
+++ b/app/Place.php
@@ -35,7 +35,7 @@ class Place
/** @var string e.g. "Westminster, London, England" */
private $place_name;
- /** @var Collection The parts of a place name, e.g. ["Westminster", "London", "England"] */
+ /** @var Collection<string> The parts of a place name, e.g. ["Westminster", "London", "England"] */
private $parts;
/** @var Tree We may have the same place name in different trees. */
@@ -114,7 +114,7 @@ class Place
*
* @param int $n
*
- * @return Collection
+ * @return Collection<string>
*/
public function firstParts(int $n): Collection
{
@@ -126,7 +126,7 @@ class Place
*
* @param int $n
*
- * @return Collection
+ * @return Collection<string>
*/
public function lastParts(int $n): Collection
{
diff --git a/app/Services/ChartService.php b/app/Services/ChartService.php
index 41c2125b22..6debb0c120 100644
--- a/app/Services/ChartService.php
+++ b/app/Services/ChartService.php
@@ -34,7 +34,7 @@ class ChartService
* @param Individual $individual Start with this individual
* @param int $generations Fetch this number of generations
*
- * @return Collection
+ * @return Collection<Individual>
*/
public function sosaStradonitzAncestors(Individual $individual, int $generations): Collection
{
@@ -75,7 +75,7 @@ class ChartService
* @param Individual $individual Start with this individual
* @param int $generations Fetch this number of generations
*
- * @return Collection
+ * @return Collection<Individual>
*/
public function descendants(Individual $individual, int $generations): Collection
{
@@ -98,7 +98,7 @@ class ChartService
* @param Individual $individual Start with this individual
* @param int $generations Fetch this number of generations
*
- * @return Collection
+ * @return Collection<Individual>
*/
public function descendantFamilies(Individual $individual, int $generations): Collection
{
diff --git a/app/Services/ClipboardService.php b/app/Services/ClipboardService.php
index 2d3c2195ed..ee78b77a49 100644
--- a/app/Services/ClipboardService.php
+++ b/app/Services/ClipboardService.php
@@ -86,7 +86,7 @@ class ClipboardService
* @param GedcomRecord $record
* @param Collection $exclude_types
*
- * @return Collection
+ * @return Collection<Fact>
*/
public function pastableFacts(GedcomRecord $record, Collection $exclude_types): Collection
{
@@ -108,7 +108,7 @@ class ClipboardService
* @param GedcomRecord $record
* @param Collection $types
*
- * @return Collection
+ * @return Collection<Fact>
*/
public function pastableFactsOfType(GedcomRecord $record, Collection $types): Collection
{
diff --git a/app/Services/MediaFileService.php b/app/Services/MediaFileService.php
index 4eb0212587..b2c3569cea 100644
--- a/app/Services/MediaFileService.php
+++ b/app/Services/MediaFileService.php
@@ -290,7 +290,7 @@ class MediaFileService
* @param string $media_folder Root folder
* @param bool $subfolders Include subfolders
*
- * @return Collection
+ * @return Collection<string>
*/
public function allFilesOnDisk(FilesystemInterface $data_filesystem, string $media_folder, bool $subfolders): Collection
{
@@ -314,7 +314,7 @@ class MediaFileService
* @param string $media_folder Root folder
* @param bool $subfolders Include subfolders
*
- * @return Collection
+ * @return Collection<string>
*/
public function allFilesInDatabase(string $media_folder, bool $subfolders): Collection
{
@@ -340,7 +340,7 @@ class MediaFileService
*
* @param FilesystemInterface $data_filesystem
*
- * @return Collection
+ * @return Collection<string,string>
*/
public function allMediaFolders(FilesystemInterface $data_filesystem): Collection
{
diff --git a/app/Services/MessageService.php b/app/Services/MessageService.php
index eb06124c8a..fcbd473873 100644
--- a/app/Services/MessageService.php
+++ b/app/Services/MessageService.php
@@ -174,7 +174,7 @@ class MessageService
*
* @param string $to
*
- * @return Collection
+ * @return Collection<User>
*/
public function recipientUsers(string $to): Collection
{
diff --git a/app/Services/ModuleService.php b/app/Services/ModuleService.php
index 0f007318d8..89e2654d7e 100644
--- a/app/Services/ModuleService.php
+++ b/app/Services/ModuleService.php
@@ -451,7 +451,7 @@ class ModuleService
* @param Tree $tree
* @param UserInterface $user
*
- * @return Collection
+ * @return Collection<ModuleInterface>
*/
public function findByComponent(string $interface, Tree $tree, UserInterface $user): Collection
{
@@ -468,7 +468,7 @@ class ModuleService
* @param bool $include_disabled
* @param bool $sort
*
- * @return Collection
+ * @return Collection<ModuleInterface>
*/
public function findByInterface(string $interface, $include_disabled = false, $sort = false): Collection
{
@@ -502,7 +502,7 @@ class ModuleService
*
* @param bool $include_disabled
*
- * @return Collection
+ * @return Collection<ModuleInterface>
*/
public function all(bool $include_disabled = false): Collection
{
@@ -555,7 +555,7 @@ class ModuleService
/**
* All core modules in the system.
*
- * @return Collection
+ * @return Collection<ModuleInterface>
*/
private function coreModules(): Collection
{
@@ -572,7 +572,7 @@ class ModuleService
/**
* All custom modules in the system. Custom modules are defined in modules_v4/
*
- * @return Collection
+ * @return Collection<ModuleCustomInterface>
*/
private function customModules(): Collection
{
@@ -615,7 +615,7 @@ class ModuleService
/**
* During setup, we'll need access to some languages.
*
- * @return Collection
+ * @return Collection<ModuleLanguageInterface>
*/
public function setupLanguages(): Collection
{
@@ -764,7 +764,7 @@ class ModuleService
*
* @param bool $include_disabled
*
- * @return Collection
+ * @return Collection<ModuleInterface>
*/
public function otherModules(bool $include_disabled = false): Collection
{
@@ -783,7 +783,7 @@ class ModuleService
/**
* Generate a list of module names which exist in the database but not on disk.
*
- * @return Collection
+ * @return Collection<string>
*/
public function deletedModules(): Collection
{
diff --git a/app/Services/SearchService.php b/app/Services/SearchService.php
index 37517fa874..2139525f9a 100644
--- a/app/Services/SearchService.php
+++ b/app/Services/SearchService.php
@@ -33,6 +33,7 @@ use Fisharebest\Webtrees\Place;
use Fisharebest\Webtrees\Repository;
use Fisharebest\Webtrees\Soundex;
use Fisharebest\Webtrees\Source;
+use Fisharebest\Webtrees\Submitter;
use Fisharebest\Webtrees\Tree;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Database\Query\Builder;
@@ -65,7 +66,7 @@ class SearchService
* @param Tree[] $trees
* @param string[] $search
*
- * @return Collection
+ * @return Collection<Family>
*/
public function searchFamilies(array $trees, array $search): Collection
{
@@ -90,7 +91,7 @@ class SearchService
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<Family>
*/
public function searchFamilyNames(array $trees, array $search, int $offset = 0, int $limit = PHP_INT_MAX): Collection
{
@@ -127,7 +128,7 @@ class SearchService
* @param Tree[] $trees
* @param string[] $search
*
- * @return Collection
+ * @return Collection<Individual>
*/
public function searchIndividuals(array $trees, array $search): Collection
{
@@ -152,7 +153,7 @@ class SearchService
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<Individual>
*/
public function searchIndividualNames(array $trees, array $search, int $offset = 0, int $limit = PHP_INT_MAX): Collection
{
@@ -180,7 +181,7 @@ class SearchService
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<Media>
*/
public function searchMedia(array $trees, array $search, int $offset = 0, int $limit = PHP_INT_MAX): Collection
{
@@ -200,7 +201,7 @@ class SearchService
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<Note>
*/
public function searchNotes(array $trees, array $search, int $offset = 0, int $limit = PHP_INT_MAX): Collection
{
@@ -221,7 +222,7 @@ class SearchService
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<Repository>
*/
public function searchRepositories(array $trees, array $search, int $offset = 0, int $limit = PHP_INT_MAX): Collection
{
@@ -242,7 +243,7 @@ class SearchService
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<Source>
*/
public function searchSources(array $trees, array $search, int $offset = 0, int $limit = PHP_INT_MAX): Collection
{
@@ -262,7 +263,7 @@ class SearchService
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<Source>
*/
public function searchSourcesByName(array $trees, array $search, int $offset = 0, int $limit = PHP_INT_MAX): Collection
{
@@ -283,7 +284,7 @@ class SearchService
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<Submitter>
*/
public function searchSubmitters(array $trees, array $search, int $offset = 0, int $limit = PHP_INT_MAX): Collection
{
@@ -304,7 +305,7 @@ class SearchService
* @param int $offset
* @param int $limit
*
- * @return Collection
+ * @return Collection<Place>
*/
public function searchPlaces(Tree $tree, string $search, int $offset = 0, int $limit = PHP_INT_MAX): Collection
{
@@ -362,7 +363,7 @@ class SearchService
* @param string[] $fields
* @param string[] $modifiers
*
- * @return Collection
+ * @return Collection<Individual>
*/
public function searchIndividualsAdvanced(array $trees, array $fields, array $modifiers): Collection
{
@@ -775,7 +776,7 @@ class SearchService
* @param string $place
* @param Tree[] $search_trees
*
- * @return Collection
+ * @return Collection<Individual>
*/
public function searchIndividualsPhonetic(string $soundex, string $lastname, string $firstname, string $place, array $search_trees): Collection
{
@@ -852,7 +853,7 @@ class SearchService
* @param int $offset Skip this many rows.
* @param int $limit Take this many rows.
*
- * @return Collection
+ * @return Collection<mixed>
*/
private function paginateQuery(Builder $query, Closure $row_mapper, Closure $row_filter, int $offset, int $limit): Collection
{
diff --git a/app/Services/ServerCheckService.php b/app/Services/ServerCheckService.php
index b7f24c6acd..ae2d4164bc 100644
--- a/app/Services/ServerCheckService.php
+++ b/app/Services/ServerCheckService.php
@@ -68,7 +68,7 @@ class ServerCheckService
*
* @param string $driver
*
- * @return Collection
+ * @return Collection<string>
*/
public function serverErrors($driver = ''): Collection
{
@@ -92,7 +92,7 @@ class ServerCheckService
*
* @param string $driver
*
- * @return Collection
+ * @return Collection<string>
*/
public function serverWarnings($driver = ''): Collection
{
@@ -276,7 +276,7 @@ class ServerCheckService
/**
* @param string $driver
*
- * @return Collection
+ * @return Collection<string>
*/
private function databaseDriverErrors(string $driver): Collection
{
@@ -315,7 +315,7 @@ class ServerCheckService
/**
* @param string $driver
*
- * @return Collection
+ * @return Collection<string>
*/
private function databaseDriverWarnings(string $driver): Collection
{
@@ -341,7 +341,7 @@ class ServerCheckService
}
/**
- * @return Collection
+ * @return Collection<string>
*/
private function databaseEngineWarnings(): Collection
{
diff --git a/app/Services/TreeService.php b/app/Services/TreeService.php
index de2d0aab86..54bb82bb74 100644
--- a/app/Services/TreeService.php
+++ b/app/Services/TreeService.php
@@ -54,7 +54,7 @@ class TreeService
/**
* All the trees that the current user has permission to access.
*
- * @return Collection
+ * @return Collection<Tree>
*/
public function all(): Collection
{
diff --git a/app/Services/UpgradeService.php b/app/Services/UpgradeService.php
index 52d48e4666..6aefdde9b5 100644
--- a/app/Services/UpgradeService.php
+++ b/app/Services/UpgradeService.php
@@ -101,7 +101,7 @@ class UpgradeService
*
* @param string $zip_file
*
- * @return Collection
+ * @return Collection<string>
*/
public function webtreesZipContents(string $zip_file): Collection
{
diff --git a/app/Services/UserService.php b/app/Services/UserService.php
index c8b2b3a3d6..2b62c6dee5 100644
--- a/app/Services/UserService.php
+++ b/app/Services/UserService.php
@@ -99,7 +99,7 @@ class UserService
*
* @param Individual $individual
*
- * @return Collection
+ * @return Collection<User>
*/
public function findByIndividual(Individual $individual): Collection
{
@@ -188,7 +188,7 @@ class UserService
/**
* Get a list of all users.
*
- * @return Collection
+ * @return Collection<User>
*/
public function all(): Collection
{
@@ -202,7 +202,7 @@ class UserService
/**
* Get a list of all administrators.
*
- * @return Collection
+ * @return Collection<User>
*/
public function administrators(): Collection
{
@@ -220,7 +220,7 @@ class UserService
/**
* Get a list of all managers.
*
- * @return Collection
+ * @return Collection<User>
*/
public function managers(): Collection
{
@@ -239,7 +239,7 @@ class UserService
/**
* Get a list of all moderators.
*
- * @return Collection
+ * @return Collection<User>
*/
public function moderators(): Collection
{
@@ -258,7 +258,7 @@ class UserService
/**
* Get a list of all verified users.
*
- * @return Collection
+ * @return Collection<User>
*/
public function unapproved(): Collection
{
@@ -283,7 +283,7 @@ class UserService
/**
* Get a list of all verified users.
*
- * @return Collection
+ * @return Collection<User>
*/
public function unverified(): Collection
{
@@ -308,7 +308,7 @@ class UserService
/**
* Get a list of all users who are currently logged in.
*
- * @return Collection
+ * @return Collection<User>
*/
public function allLoggedIn(): Collection
{