diff options
| author | Greg Roach <fisharebest@webtrees.net> | 2018-12-03 21:05:22 +0000 |
|---|---|---|
| committer | Greg Roach <fisharebest@webtrees.net> | 2018-12-03 21:05:22 +0000 |
| commit | 20b58d205b81f55b39ac2fefb69820704007abd5 (patch) | |
| tree | 21376e340de4a82715e90dd933bab0ed509397a5 | |
| parent | 117c5bdf3c5af717ee7f4f9373614fc4863063a4 (diff) | |
| download | webtrees-20b58d205b81f55b39ac2fefb69820704007abd5.tar.gz webtrees-20b58d205b81f55b39ac2fefb69820704007abd5.tar.bz2 webtrees-20b58d205b81f55b39ac2fefb69820704007abd5.zip | |
New media objects need the correct type
| -rw-r--r-- | app/Http/Controllers/EditMediaController.php | 2 | ||||
| -rw-r--r-- | app/Tree.php | 40 |
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 |
