diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/Elements/AttributeDescriptor.php | 1 | ||||
| -rw-r--r-- | app/Elements/EventDescriptor.php | 1 | ||||
| -rw-r--r-- | app/Elements/IndividualRecord.php | 2 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/AddNewFact.php | 4 | ||||
| -rw-r--r-- | app/Http/RequestHandlers/EditFactPage.php | 4 | ||||
| -rw-r--r-- | app/Services/GedcomEditService.php | 27 |
6 files changed, 33 insertions, 6 deletions
diff --git a/app/Elements/AttributeDescriptor.php b/app/Elements/AttributeDescriptor.php index 75fa2872a4..a0e7016cf3 100644 --- a/app/Elements/AttributeDescriptor.php +++ b/app/Elements/AttributeDescriptor.php @@ -32,6 +32,7 @@ namespace Fisharebest\Webtrees\Elements; class AttributeDescriptor extends AbstractElement { protected const SUBTAGS = [ + 'TYPE' => '0:1', 'DATE' => '0:1', 'PLAC' => '0:1', 'NOTE' => '0:M', diff --git a/app/Elements/EventDescriptor.php b/app/Elements/EventDescriptor.php index 11cadb74d9..7ca7005440 100644 --- a/app/Elements/EventDescriptor.php +++ b/app/Elements/EventDescriptor.php @@ -39,6 +39,7 @@ class EventDescriptor extends AbstractEventElement protected const MAXIMUM_LENGTH = 90; protected const SUBTAGS = [ + 'TYPE' => '0:1', 'DATE' => '0:1', 'PLAC' => '0:1', 'ADDR' => '0:1', diff --git a/app/Elements/IndividualRecord.php b/app/Elements/IndividualRecord.php index db2693a9c9..b11807c787 100644 --- a/app/Elements/IndividualRecord.php +++ b/app/Elements/IndividualRecord.php @@ -28,6 +28,8 @@ class IndividualRecord extends AbstractElement 'SEX' => '1:1', 'BIRT' => '0:1', 'DEAT' => '0:1', + 'EVEN' => '0:1', + 'FACT' => '0:1', 'RESN' => '0:1', 'CHAN' => '0:1', ]; diff --git a/app/Http/RequestHandlers/AddNewFact.php b/app/Http/RequestHandlers/AddNewFact.php index 9e38a21e73..09e0bdef54 100644 --- a/app/Http/RequestHandlers/AddNewFact.php +++ b/app/Http/RequestHandlers/AddNewFact.php @@ -75,8 +75,8 @@ class AddNewFact implements RequestHandlerInterface $element = Registry::elementFactory()->make($record->tag() . ':' . $subtag); $title = $record->fullName() . ' - ' . $element->label(); $fact = new Fact(trim('1 ' . $subtag . ' ' . $element->default($tree)), $record, 'new'); - $gedcom = $this->gedcom_edit_service->insertMissingSubtags($fact, $include_hidden); - $hidden = $this->gedcom_edit_service->insertMissingSubtags($fact, true); + $gedcom = $this->gedcom_edit_service->insertMissingFactSubtags($fact, $include_hidden); + $hidden = $this->gedcom_edit_service->insertMissingFactSubtags($fact, true); $url = $record->url(); if ($gedcom === $hidden) { diff --git a/app/Http/RequestHandlers/EditFactPage.php b/app/Http/RequestHandlers/EditFactPage.php index f8c304f434..df04f8c897 100644 --- a/app/Http/RequestHandlers/EditFactPage.php +++ b/app/Http/RequestHandlers/EditFactPage.php @@ -82,8 +82,8 @@ class EditFactPage implements RequestHandlerInterface $can_edit_raw = Auth::isAdmin() || $tree->getPreference('SHOW_GEDCOM_RECORD'); - $gedcom = $this->gedcom_edit_service->insertMissingSubtags($fact, $include_hidden); - $hidden = $this->gedcom_edit_service->insertMissingSubtags($fact, true); + $gedcom = $this->gedcom_edit_service->insertMissingFactSubtags($fact, $include_hidden); + $hidden = $this->gedcom_edit_service->insertMissingFactSubtags($fact, true); $url = $request->getQueryParams()['url'] ?? $record->url(); if ($gedcom === $hidden) { diff --git a/app/Services/GedcomEditService.php b/app/Services/GedcomEditService.php index 2954df1283..4c8d48fea6 100644 --- a/app/Services/GedcomEditService.php +++ b/app/Services/GedcomEditService.php @@ -20,8 +20,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Services; use Fisharebest\Webtrees\Fact; +use Fisharebest\Webtrees\Family; use Fisharebest\Webtrees\Gedcom; use Fisharebest\Webtrees\GedcomRecord; +use Fisharebest\Webtrees\Individual; +use Fisharebest\Webtrees\Note; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Site; use Fisharebest\Webtrees\Tree; @@ -525,7 +528,7 @@ class GedcomEditService * * @return string */ - public function insertMissingSubtags(Fact $fact, bool $include_hidden): string + public function insertMissingFactSubtags(Fact $fact, bool $include_hidden): string { return $this->insertMissingLevels($fact->record()->tree(), $fact->tag(), $fact->gedcom(), $include_hidden); } @@ -543,7 +546,7 @@ class GedcomEditService $gedcom = $this->insertMissingLevels($record->tree(), $record->tag(), $record->gedcom(), $include_hidden); // NOTE records have data at level 0. Move it to 1 CONC. - if ($record->tag() === 'NOTE') { + if ($record instanceof Note) { return preg_replace('/^0 @[^@]+@ NOTE/', '1 CONC', $gedcom); } @@ -551,6 +554,26 @@ class GedcomEditService } /** + * List of facts/events to add to families and individuals. + * + * @param Family|Individual $record + * @param bool $include_hidden + * + * @return array<string> + */ + public function factsToAdd(GedcomRecord $record, bool $include_hidden): array + { + $subtags = Registry::elementFactory()->make($record->tag())->subtags(); + + if (!$include_hidden) { + $fn_hidden = fn (string $t): bool => !$this->isHiddenTag($record->tag() . ':' . $t); + $subtags = array_filter($subtags, $fn_hidden); + } + + return $subtags; + } + + /** * @param Tree $tree * @param string $tag * @param string $gedcom |
