X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fbb2diaspora.php;h=f18a0f3c276399cea0910a0e80df320577b85b03;hb=2c959b925d20898579d4562d8d42669682de0957;hp=6ddbb6ef30f59f403a8ac7726ec3ef02da7750cf;hpb=91d9ac0d1e53b6bd53bfc0d9a9949586d6462d94;p=friendica.git diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index 6ddbb6ef30..f18a0f3c27 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -7,6 +7,27 @@ require_once("include/html2bbcode.php"); require_once("include/bbcode.php"); require_once("library/html-to-markdown/HTML_To_Markdown.php"); +/** + * @brief Callback function to replace a Diaspora style mention in a mention for Friendica + * + * @param array $match Matching values for the callback + * @return string Replaced mention + */ +function diaspora_mention2bb($match) { + if ($match[2] == '') { + return; + } + + $data = get_contact_details_by_addr($match[2]); + + $name = $match[1]; + + if ($name == '') { + $name = $data['name']; + } + + return '@[url='.$data['url'].']'.$name.'[/url]'; +} // we don't want to support a bbcode specific markdown interpreter // and the markdown library we have is pretty good, but provides HTML output. @@ -33,7 +54,8 @@ function diaspora2bb($s) { $s = Markdown($s); - $s = preg_replace('/\@\{(.+?)\; (.+?)\@(.+?)\}/', '@[url=https://$3/u/$2]$1[/url]', $s); + $regexp = "/@\{(?:([^\}]+?); )?([^\} ]+)\}/"; + $s = preg_replace_callback($regexp, 'diaspora_mention2bb', $s); $s = str_replace('#', '#', $s); @@ -73,7 +95,7 @@ function diaspora2bb($s) { * @brief Callback function to replace a Friendica style mention in a mention for Diaspora * * @param array $match Matching values for the callback - * @return text Replaced mention + * @return string Replaced mention */ function diaspora_mentions($match) {