summaryrefslogtreecommitdiff
path: root/app/Services/GedcomEditService.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Services/GedcomEditService.php')
-rw-r--r--app/Services/GedcomEditService.php27
1 files changed, 25 insertions, 2 deletions
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