]> git.mxchange.org Git - friendica.git/blobdiff - include/bb2diaspora.php
Replace the direct access of config variables
[friendica.git] / include / bb2diaspora.php
index 842dbf0b1cf4595212a5c363f790867a0689cd7c..6ddbb6ef30f59f403a8ac7726ec3ef02da7750cf 100644 (file)
@@ -69,6 +69,28 @@ function diaspora2bb($s) {
        return $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
+ */
+function diaspora_mentions($match) {
+
+       $contact = get_contact_details_by_url($match[3]);
+
+       if (!isset($contact['addr'])) {
+               $contact = Probe::uri($match[3]);
+       }
+
+       if (!isset($contact['addr'])) {
+               return $match[0];
+       }
+
+       $mention = '@{'.$match[2].'; '.$contact['addr'].'}';
+       return $mention;
+}
+
 function bb2diaspora($Text,$preserve_nl = false, $fordiaspora = true) {
 
        $a = get_app();
@@ -108,8 +130,8 @@ function bb2diaspora($Text,$preserve_nl = false, $fordiaspora = true) {
        } else
                $Text = bbcode($Text, $preserve_nl, false, 4);
 
-    // mask some special HTML chars from conversation to markdown
-    $Text = str_replace(array('<','>','&'),array('&_lt_;','&_gt_;','&_amp_;'),$Text);
+       // mask some special HTML chars from conversation to markdown
+       $Text = str_replace(array('<','>','&'),array('&_lt_;','&_gt_;','&_amp_;'),$Text);
 
        // If a link is followed by a quote then there should be a newline before it
        // Maybe we should make this newline at every time before a quote.
@@ -120,8 +142,8 @@ function bb2diaspora($Text,$preserve_nl = false, $fordiaspora = true) {
        // Now convert HTML to Markdown
        $Text = new HTML_To_Markdown($Text);
 
-    // unmask the special chars back to HTML
-    $Text = str_replace(array('&_lt_;','&_gt_;','&_amp_;'),array('<','>','&'),$Text);
+       // unmask the special chars back to HTML
+       $Text = str_replace(array('&_lt_;','&_gt_;','&_amp_;'),array('<','>','&'),$Text);
 
        $a->save_timestamp($stamp1, "parser");
 
@@ -132,6 +154,11 @@ function bb2diaspora($Text,$preserve_nl = false, $fordiaspora = true) {
        // the Diaspora signature verification and cause the item to disappear
        $Text = trim($Text);
 
+       if ($fordiaspora) {
+               $URLSearchString = "^\[\]";
+               $Text = preg_replace_callback("/([@]\[(.*?)\])\(([$URLSearchString]*?)\)/ism", 'diaspora_mentions', $Text);
+       }
+
        call_hooks('bb2diaspora',$Text);
 
        return $Text;