summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@webtrees.net>2018-12-03 21:05:22 +0000
committerGreg Roach <fisharebest@webtrees.net>2018-12-03 21:05:22 +0000
commit20b58d205b81f55b39ac2fefb69820704007abd5 (patch)
tree21376e340de4a82715e90dd933bab0ed509397a5
parent117c5bdf3c5af717ee7f4f9373614fc4863063a4 (diff)
downloadwebtrees-20b58d205b81f55b39ac2fefb69820704007abd5.tar.gz
webtrees-20b58d205b81f55b39ac2fefb69820704007abd5.tar.bz2
webtrees-20b58d205b81f55b39ac2fefb69820704007abd5.zip
New media objects need the correct type
-rw-r--r--app/Http/Controllers/EditMediaController.php2
-rw-r--r--app/Tree.php40
2 files changed, 41 insertions, 1 deletions
diff --git a/app/Http/Controllers/EditMediaController.php b/app/Http/Controllers/EditMediaController.php
index 01f686f523..edae6394bc 100644
--- a/app/Http/Controllers/EditMediaController.php
+++ b/app/Http/Controllers/EditMediaController.php
@@ -371,7 +371,7 @@ class EditMediaController extends AbstractEditController
$gedcom .= "\n1 RESN " . $edit_restriction;
}
- $record = $tree->createRecord($gedcom);
+ $record = $tree->createMediaObject($gedcom);
// Accept the new record to keep the filesystem synchronized with the genealogy.
FunctionsImport::acceptAllChanges($record->xref(), $record->tree());
diff --git a/app/Tree.php b/app/Tree.php
index f4239078d3..f7d5efe135 100644
--- a/app/Tree.php
+++ b/app/Tree.php
@@ -836,6 +836,46 @@ class Tree
}
/**
+ * Create a new media object from GEDCOM data.
+ *
+ * @param string $gedcom
+ *
+ * @return Media
+ * @throws InvalidArgumentException
+ */
+ public function createMediaObject(string $gedcom): Media
+ {
+ if (substr_compare($gedcom, '0 @@ OBJE', 0, 9) !== 0) {
+ throw new InvalidArgumentException('GedcomRecord::createIndividual(' . $gedcom . ') does not begin 0 @@ OBJE');
+ }
+
+ $xref = $this->getNewXref();
+ $gedcom = '0 @' . $xref . '@' . substr($gedcom, 4);
+
+ // Create a change record
+ $gedcom .= "\n1 CHAN\n2 DATE " . date('d M Y') . "\n3 TIME " . date('H:i:s') . "\n2 _WT_USER " . Auth::user()->getUserName();
+
+ // Create a pending change
+ Database::prepare(
+ "INSERT INTO `##change` (gedcom_id, xref, old_gedcom, new_gedcom, user_id) VALUES (?, ?, '', ?, ?)"
+ )->execute([
+ $this->id,
+ $xref,
+ $gedcom,
+ Auth::id(),
+ ]);
+
+ // Accept this pending change
+ if (Auth::user()->getPreference('auto_accept')) {
+ FunctionsImport::acceptAllChanges($xref, $this);
+
+ return new Media($xref, $gedcom, null, $this);
+ }
+
+ return new Media($xref, '', $gedcom, $this);
+ }
+
+ /**
* What is the most significant individual in this tree.
*
* @param User $user