. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Elements; use Fisharebest\Webtrees\Factories\MarkdownFactory; use Fisharebest\Webtrees\Gedcom; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Note; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Tree; use Illuminate\Support\Str; use Ramsey\Uuid\Uuid; use function e; use function explode; use function preg_match; use function strip_tags; use function substr_count; use function view; /** * NOTE can be text or an XREF. */ class NoteStructure extends SubmitterText { /** * An edit control for this data. * * @param string $id * @param string $name * @param string $value * @param Tree $tree * * @return string */ public function edit(string $id, string $name, string $value, Tree $tree): string { $submitter_text = new SubmitterText(''); $xref_note = new XrefNote(''); // Existing shared note. if (preg_match('/^@' . Gedcom::REGEX_XREF . '@$/', $value)) { return $xref_note->edit($id, $name, $value, $tree); } // Existing inline note. if ($value !== '') { return $submitter_text->edit($id, $name, $value, $tree); } $options = [ 'inline' => I18N::translate('inline note'), 'shared' => I18N::translate('shared note'), ]; // New note - either inline or shared return '
' . strip_tags($note->fullName()) . '
') { $value = '' . strip_tags($html) . ''; return I18N::translate('%1$s: %2$s', $label, $value); } return '') === 1) { $html = strip_tags($html, ['a', 'em', 'strong']); $value = '' . $html . ''; return I18N::translate('%1$s: %2$s', $label, $value); } $value = e(Note::firstLineOfTextFromHtml($html)); $value = ' '; return '