* @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)
return $match[0];
}
- $mention = '@{' . $match[2] . '; ' . $contact['addr'] . '}';
+ $mention = $match[1] . '{' . $match[2] . '; ' . $contact['addr'] . '}';
return $mention;
}
if ($for_diaspora) {
$url_search_string = "^\[\]";
$text = preg_replace_callback(
- "/([@]\[(.*?)\])\(([$url_search_string]*?)\)/ism",
+ "/([@!])\[(.*?)\]\(([$url_search_string]*?)\)/ism",
['self', 'bbCodeMention2DiasporaCallback'],
$text
);
* @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]';
}
/*
$s = self::convert($s);
- $regexp = "/@\{(?:([^\}]+?); )?([^\} ]+)\}/";
+ $regexp = "/([@!])\{(?:([^\}]+?); ?)?([^\} ]+)\}/";
$s = preg_replace_callback($regexp, ['self', 'diasporaMention2BBCodeCallback'], $s);
$s = str_replace('#', '#', $s);