summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGreg Roach <greg@subaqua.co.uk>2021-06-24 14:31:32 +0100
committerGreg Roach <greg@subaqua.co.uk>2021-06-24 14:31:32 +0100
commitabdaad0d9fecead08c23d3eb00187f320a625403 (patch)
tree4dbaa7f5bbeee9041127eb8826367662a2ee0e18 /app
parent2b2f83f3b92f78f20b0f5840909db306ec219684 (diff)
downloadwebtrees-abdaad0d9fecead08c23d3eb00187f320a625403.tar.gz
webtrees-abdaad0d9fecead08c23d3eb00187f320a625403.tar.bz2
webtrees-abdaad0d9fecead08c23d3eb00187f320a625403.zip
Working on elements
Diffstat (limited to 'app')
-rw-r--r--app/Elements/AttributeDescriptor.php1
-rw-r--r--app/Elements/EventDescriptor.php1
-rw-r--r--app/Elements/IndividualRecord.php2
-rw-r--r--app/Http/RequestHandlers/AddNewFact.php4
-rw-r--r--app/Http/RequestHandlers/EditFactPage.php4
-rw-r--r--app/Services/GedcomEditService.php27
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