From b7b7b1b664b07f3a8c82ba72c9dcfab16dd5979a Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Tue, 8 Jan 2019 20:55:36 -0500 Subject: [PATCH] Add support for Hubzilla forum mentions (starting with !) --- src/Content/Text/BBCode.php | 7 +++++-- src/Content/Text/Markdown.php | 13 ++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 6d2b152ee..1ddae09ea 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1809,6 +1809,9 @@ class BBCode extends BaseObject * @brief Callback function to replace a Friendica style mention in a mention for Diaspora * * @param array $match Matching values for the callback + * [1] = Mention type (! or @) + * [2] = Name + * [3] = Address * @return string Replaced mention */ private static function bbCodeMention2DiasporaCallback($match) @@ -1823,7 +1826,7 @@ class BBCode extends BaseObject return $match[0]; } - $mention = '@{' . $match[2] . '; ' . $contact['addr'] . '}'; + $mention = $match[1] . '{' . $match[2] . '; ' . $contact['addr'] . '}'; return $mention; } @@ -1908,7 +1911,7 @@ class BBCode extends BaseObject if ($for_diaspora) { $url_search_string = "^\[\]"; $text = preg_replace_callback( - "/([@]\[(.*?)\])\(([$url_search_string]*?)\)/ism", + "/([@!])\[(.*?)\]\(([$url_search_string]*?)\)/ism", ['self', 'bbCodeMention2DiasporaCallback'], $text ); diff --git a/src/Content/Text/Markdown.php b/src/Content/Text/Markdown.php index 2289bee86..994d96833 100644 --- a/src/Content/Text/Markdown.php +++ b/src/Content/Text/Markdown.php @@ -44,27 +44,30 @@ class Markdown extends BaseObject * @brief Callback function to replace a Diaspora style mention in a mention for Friendica * * @param array $match Matching values for the callback + * [1] = mention type (@ or !) + * [2] = name (optional) + * [3] = address * @return string Replaced mention */ private static function diasporaMention2BBCodeCallback($match) { - if ($match[2] == '') { + if ($match[3] == '') { return; } - $data = Contact::getDetailsByAddr($match[2]); + $data = Contact::getDetailsByAddr($match[3]); if (empty($data)) { return; } - $name = $match[1]; + $name = $match[2]; if ($name == '') { $name = $data['name']; } - return '@[url=' . $data['url'] . ']' . $name . '[/url]'; + return $match[1] . '[url=' . $data['url'] . ']' . $name . '[/url]'; } /* @@ -93,7 +96,7 @@ class Markdown extends BaseObject $s = self::convert($s); - $regexp = "/@\{(?:([^\}]+?); )?([^\} ]+)\}/"; + $regexp = "/([@!])\{(?:([^\}]+?); ?)?([^\} ]+)\}/"; $s = preg_replace_callback($regexp, ['self', 'diasporaMention2BBCodeCallback'], $s); $s = str_replace('#', '#', $s);