. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Module; use Fisharebest\Webtrees\Functions\FunctionsPrintFacts; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Individual; use Illuminate\Support\Collection; /** * Class ExtraInformationModule * A sidebar to show non-genealogy information about an individual */ class IndividualMetadataModule extends AbstractModule implements ModuleSidebarInterface { use ModuleSidebarTrait; // A list of facts that are handled by this module. protected const HANDLED_FACTS = [ 'AFN', 'CHAN', 'IDNO', 'REFN', 'RESN', 'RFN', 'RIN', 'SSN', '_UID', '_WEBTAG', ]; /** * How should this module be identified in the control panel, etc.? * * @return string */ public function title(): string { /* I18N: Name of a module/sidebar */ return I18N::translate('Extra information'); } /** * A sentence describing what this module does. * * @return string */ public function description(): string { /* I18N: Description of the “Extra information” module */ return I18N::translate('A sidebar showing non-genealogy information about an individual.'); } /** * The default position for this sidebar. It can be changed in the control panel. * * @return int */ public function defaultSidebarOrder(): int { return 1; } /** * @param Individual $individual * * @return bool */ public function hasSidebarContent(Individual $individual): bool { return $individual->facts(static::HANDLED_FACTS)->isNotEmpty(); } /** * Load this sidebar synchronously. * * @param Individual $individual * * @return string */ public function getSidebarContent(Individual $individual): string { ob_start(); foreach ($individual->facts(static::HANDLED_FACTS) as $fact) { FunctionsPrintFacts::printFact($fact, $individual); } $html = ob_get_clean(); return strip_tags($html, '
'); } /** * This module handles the following facts - so don't show them on the "Facts and events" tab. * * @return Collection */ public function supportedFacts(): Collection { return new Collection(static::HANDLED_FACTS); } }