. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Module; use Fisharebest\Webtrees\Date; use Fisharebest\Webtrees\Fact; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Individual; use Illuminate\Support\Collection; trait ModuleHistoricEventsTrait { public function description(): string { return I18N::translate('Add historic events to an individual’s page.'); } /** * @return Collection */ public function historicEventsAll(): Collection { return new Collection(); } /** * @return Collection */ public function historicEventsForIndividual(Individual $individual): Collection { $min_date = $individual->getEstimatedBirthDate(); $max_date = $individual->getEstimatedDeathDate(); return $this->historicEventsAll() ->map(static fn (string $gedcom): Fact => new Fact($gedcom, $individual, 'histo')) ->filter(static fn (Fact $fact): bool => Date::compare($fact->date(), $min_date) >= 0) ->filter(static fn (Fact $fact): bool => Date::compare($fact->date(), $max_date) <= 0); } }