1c2ed51d1SGreg Roach<?php 2c2ed51d1SGreg Roach 3c2ed51d1SGreg Roach/** 4c2ed51d1SGreg Roach * webtrees: online genealogy 5*d11be702SGreg Roach * Copyright (C) 2023 webtrees development team 6c2ed51d1SGreg Roach * This program is free software: you can redistribute it and/or modify 7c2ed51d1SGreg Roach * it under the terms of the GNU General Public License as published by 8c2ed51d1SGreg Roach * the Free Software Foundation, either version 3 of the License, or 9c2ed51d1SGreg Roach * (at your option) any later version. 10c2ed51d1SGreg Roach * This program is distributed in the hope that it will be useful, 11c2ed51d1SGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of 12c2ed51d1SGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13c2ed51d1SGreg Roach * GNU General Public License for more details. 14c2ed51d1SGreg Roach * You should have received a copy of the GNU General Public License 15c2ed51d1SGreg Roach * along with this program. If not, see <https://www.gnu.org/licenses/>. 16c2ed51d1SGreg Roach */ 17c2ed51d1SGreg Roach 18c2ed51d1SGreg Roachdeclare(strict_types=1); 19c2ed51d1SGreg Roach 20c2ed51d1SGreg Roachnamespace Fisharebest\Webtrees\Elements; 21c2ed51d1SGreg Roach 229313feb8SGreg Roachuse Fisharebest\Webtrees\I18N; 23455a30feSGreg Roachuse Fisharebest\Webtrees\Tree; 24455a30feSGreg Roach 259313feb8SGreg Roachuse function view; 269313feb8SGreg Roach 27c2ed51d1SGreg Roach/** 28c2ed51d1SGreg Roach * MULTIMEDIA_FILE_REFERENCE := {Size=1:30} 29c2ed51d1SGreg Roach * A complete local or remote file reference to the auxiliary data to be linked 30c2ed51d1SGreg Roach * to the GEDCOM context. Remote reference would include a network address 31c2ed51d1SGreg Roach * where the multimedia data may be obtained. 32c2ed51d1SGreg Roach */ 33c2ed51d1SGreg Roachclass MultimediaFileReference extends AbstractElement 34c2ed51d1SGreg Roach{ 35c2ed51d1SGreg Roach protected const SUBTAGS = [ 36c2ed51d1SGreg Roach 'FORM' => '0:1', 37c2ed51d1SGreg Roach 'TITL' => '0:1', 38c2ed51d1SGreg Roach ]; 39455a30feSGreg Roach 40455a30feSGreg Roach /** 41455a30feSGreg Roach * Convert a value to a canonical form. 42455a30feSGreg Roach * 43455a30feSGreg Roach * @param string $value 44455a30feSGreg Roach * 45455a30feSGreg Roach * @return string 46455a30feSGreg Roach */ 47455a30feSGreg Roach public function canonical(string $value): string 48455a30feSGreg Roach { 49455a30feSGreg Roach // Leading/trailing/multiple spaces are valid in filenames. 50455a30feSGreg Roach return strtr($value, ["\t" => '', "\r" => '', "\n" => '']); 51455a30feSGreg Roach } 52455a30feSGreg Roach 53455a30feSGreg Roach /** 549313feb8SGreg Roach * Should we collapse the children of this element when editing? 559313feb8SGreg Roach * 569313feb8SGreg Roach * @return bool 579313feb8SGreg Roach */ 589313feb8SGreg Roach public function collapseChildren(): bool 599313feb8SGreg Roach { 609313feb8SGreg Roach return true; 619313feb8SGreg Roach } 629313feb8SGreg Roach 639313feb8SGreg Roach /** 649313feb8SGreg Roach * An edit control for this data. 659313feb8SGreg Roach * 669313feb8SGreg Roach * @param string $id 679313feb8SGreg Roach * @param string $name 689313feb8SGreg Roach * @param string $value 699313feb8SGreg Roach * @param Tree $tree 709313feb8SGreg Roach * 719313feb8SGreg Roach * @return string 729313feb8SGreg Roach */ 739313feb8SGreg Roach public function edit(string $id, string $name, string $value, Tree $tree): string 749313feb8SGreg Roach { 759313feb8SGreg Roach $icon = view('icons/warning'); 769313feb8SGreg Roach $warning = I18N::translate('If you modify the filename, you should also rename the file.'); 779313feb8SGreg Roach 789313feb8SGreg Roach return parent::edit($id, $name, $value, $tree) . '<div class="alert alert-warning mb-0">' . $icon . ' ' . $warning . '</div>'; 799313feb8SGreg Roach } 809313feb8SGreg Roach 819313feb8SGreg Roach /** 82455a30feSGreg Roach * Display the value of this type of element. 83455a30feSGreg Roach * 84455a30feSGreg Roach * @param string $value 85455a30feSGreg Roach * @param Tree $tree 86455a30feSGreg Roach * 87455a30feSGreg Roach * @return string 88455a30feSGreg Roach */ 89455a30feSGreg Roach public function value(string $value, Tree $tree): string 90455a30feSGreg Roach { 91cef4fcc0SGreg Roach return $this->valueLink($value); 92455a30feSGreg Roach } 93c2ed51d1SGreg Roach} 94