summaryrefslogtreecommitdiff
path: root/app/Note.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Note.php')
-rw-r--r--app/Note.php214
1 files changed, 111 insertions, 103 deletions
diff --git a/app/Note.php b/app/Note.php
index d72dce5a23..adb81ce4a4 100644
--- a/app/Note.php
+++ b/app/Note.php
@@ -18,117 +18,125 @@ namespace Fisharebest\Webtrees;
/**
* A GEDCOM note (NOTE) object.
*/
-class Note extends GedcomRecord {
- const RECORD_TYPE = 'NOTE';
- const ROUTE_NAME = 'note';
+class Note extends GedcomRecord
+{
+ const RECORD_TYPE = 'NOTE';
+ const ROUTE_NAME = 'note';
- /**
- * Get an instance of a note object. For single records,
- * we just receive the XREF. For bulk records (such as lists
- * and search results) we can receive the GEDCOM data as well.
- *
- * @param string $xref
- * @param Tree $tree
- * @param string|null $gedcom
- *
- * @throws \Exception
- *
- * @return Note|null
- */
- public static function getInstance($xref, Tree $tree, $gedcom = null) {
- $record = parent::getInstance($xref, $tree, $gedcom);
+ /**
+ * Get an instance of a note object. For single records,
+ * we just receive the XREF. For bulk records (such as lists
+ * and search results) we can receive the GEDCOM data as well.
+ *
+ * @param string $xref
+ * @param Tree $tree
+ * @param string|null $gedcom
+ *
+ * @throws \Exception
+ *
+ * @return Note|null
+ */
+ public static function getInstance($xref, Tree $tree, $gedcom = null)
+ {
+ $record = parent::getInstance($xref, $tree, $gedcom);
- if ($record instanceof Note) {
- return $record;
- } else {
- return null;
- }
- }
+ if ($record instanceof Note) {
+ return $record;
+ } else {
+ return null;
+ }
+ }
- /**
- * Get the text contents of the note
- *
- * @return string|null
- */
- public function getNote() {
- if (preg_match('/^0 @' . WT_REGEX_XREF . '@ NOTE ?(.*(?:\n1 CONT ?.*)*)/', $this->gedcom . $this->pending, $match)) {
- return preg_replace("/\n1 CONT ?/", "\n", $match[1]);
- } else {
- return null;
- }
- }
+ /**
+ * Get the text contents of the note
+ *
+ * @return string|null
+ */
+ public function getNote()
+ {
+ if (preg_match('/^0 @' . WT_REGEX_XREF . '@ NOTE ?(.*(?:\n1 CONT ?.*)*)/', $this->gedcom . $this->pending, $match)) {
+ return preg_replace("/\n1 CONT ?/", "\n", $match[1]);
+ } else {
+ return null;
+ }
+ }
- /**
- * Each object type may have its own special rules, and re-implement this function.
- *
- * @param int $access_level
- *
- * @return bool
- */
- protected function canShowByType($access_level) {
- // Hide notes if they are attached to private records
- $linked_ids = Database::prepare(
- "SELECT l_from FROM `##link` WHERE l_to=? AND l_file=?"
- )->execute([
- $this->xref, $this->tree->getTreeId(),
- ])->fetchOneColumn();
- foreach ($linked_ids as $linked_id) {
- $linked_record = GedcomRecord::getInstance($linked_id, $this->tree);
- if ($linked_record && !$linked_record->canShow($access_level)) {
- return false;
- }
- }
+ /**
+ * Each object type may have its own special rules, and re-implement this function.
+ *
+ * @param int $access_level
+ *
+ * @return bool
+ */
+ protected function canShowByType($access_level)
+ {
+ // Hide notes if they are attached to private records
+ $linked_ids = Database::prepare(
+ "SELECT l_from FROM `##link` WHERE l_to=? AND l_file=?"
+ )->execute([
+ $this->xref,
+ $this->tree->getTreeId(),
+ ])->fetchOneColumn();
+ foreach ($linked_ids as $linked_id) {
+ $linked_record = GedcomRecord::getInstance($linked_id, $this->tree);
+ if ($linked_record && !$linked_record->canShow($access_level)) {
+ return false;
+ }
+ }
- // Apply default behaviour
- return parent::canShowByType($access_level);
- }
+ // Apply default behaviour
+ return parent::canShowByType($access_level);
+ }
- /**
- * Generate a private version of this record
- *
- * @param int $access_level
- *
- * @return string
- */
- protected function createPrivateGedcomRecord($access_level) {
- return '0 @' . $this->xref . '@ NOTE ' . I18N::translate('Private');
- }
+ /**
+ * Generate a private version of this record
+ *
+ * @param int $access_level
+ *
+ * @return string
+ */
+ protected function createPrivateGedcomRecord($access_level)
+ {
+ return '0 @' . $this->xref . '@ NOTE ' . I18N::translate('Private');
+ }
- /**
- * Fetch data from the database
- *
- * @param string $xref
- * @param int $tree_id
- *
- * @return null|string
- */
- protected static function fetchGedcomRecord($xref, $tree_id) {
- return Database::prepare(
- "SELECT o_gedcom FROM `##other` WHERE o_id = :xref AND o_file = :tree_id AND o_type = 'NOTE'"
- )->execute([
- 'xref' => $xref,
- 'tree_id' => $tree_id,
- ])->fetchOne();
- }
+ /**
+ * Fetch data from the database
+ *
+ * @param string $xref
+ * @param int $tree_id
+ *
+ * @return null|string
+ */
+ protected static function fetchGedcomRecord($xref, $tree_id)
+ {
+ return Database::prepare(
+ "SELECT o_gedcom FROM `##other` WHERE o_id = :xref AND o_file = :tree_id AND o_type = 'NOTE'"
+ )->execute([
+ 'xref' => $xref,
+ 'tree_id' => $tree_id,
+ ])->fetchOne();
+ }
- /**
- * Create a name for this note - apply (and remove) markup, then take
- * a maximum of 100 characters from the first line.
- */
- public function extractNames() {
- $text = $this->getNote();
+ /**
+ * Create a name for this note - apply (and remove) markup, then take
+ * a maximum of 100 characters from the first line.
+ */
+ public function extractNames()
+ {
+ $text = $this->getNote();
- if ($text) {
- switch ($this->getTree()->getPreference('FORMAT_TEXT')) {
- case 'markdown':
- $text = Filter::markdown($text, $this->getTree());
- $text = strip_tags($text);
- $text = html_entity_decode($text, ENT_QUOTES, 'UTF-8');
- break;
- }
+ if ($text) {
+ switch ($this->getTree()->getPreference('FORMAT_TEXT')) {
+ case 'markdown':
+ $text = Filter::markdown($text, $this->getTree());
+ $text = strip_tags($text);
+ $text = html_entity_decode($text, ENT_QUOTES, 'UTF-8');
+ break;
+ }
- list($text) = explode("\n", $text);
- $this->addName('NOTE', strlen($text) > 100 ? mb_substr($text, 0, 100) . I18N::translate('…') : $text, $this->getGedcom());
- }
- }
+ list($text) = explode("\n", $text);
+ $this->addName('NOTE', strlen($text) > 100 ? mb_substr($text, 0, 100) . I18N::translate('…') : $text, $this->getGedcom());
+ }
+ }
}