]> git.mxchange.org Git - friendica.git/commitdiff
"inform" functionality moved / unified functionality
authorMichael <heluecht@pirati.ca>
Sun, 30 Jan 2022 10:56:13 +0000 (10:56 +0000)
committerMichael <heluecht@pirati.ca>
Sun, 30 Jan 2022 10:56:13 +0000 (10:56 +0000)
mod/item.php
src/Content/Item.php
src/Content/Text/BBCode.php

index fd284fa2d053175748bb6acc8a1d034849c96820..d47a78053fddda346767e7de90b0f3bb0cdceae2 100644 (file)
@@ -394,57 +394,37 @@ function item_post(App $a) {
        // Personal notes must never be altered to a forum post.
        if ($posttype != Item::PT_PERSONAL_NOTE) {
                // Convert mentions in the body to a unified format
-               $body = BBCode::performWithEscapedTags($body, ['noparse', 'pre', 'code', 'img'], function ($body) use ($profile_uid, $network, &$inform) {
-                       $tags = BBCode::getTags($body);
+               $body = BBCode::setMentions($body, local_user() ? local_user() : $profile_uid, $network);
 
-                       $tagged = [];
-
-                       foreach ($tags as $tag) {
-                               $tag_type = substr($tag, 0, 1);
-
-                               if ($tag_type == Tag::TAG_CHARACTER[Tag::HASHTAG]) {
-                                       continue;
-                               }
-
-                               // If we already tagged 'Robert Johnson', don't try and tag 'Robert'.
-                               // Robert Johnson should be first in the $tags array
-                               foreach ($tagged as $nextTag) {
-                                       if (stristr($nextTag, $tag . ' ')) {
-                                               continue 2;
-                                       }
-                               }
-
-                               ItemHelper::replaceTag($body, $inform, local_user() ? local_user() : $profile_uid, $tag, $network);
+               // Search for forum mentions
+               foreach (Tag::getFromBody($body, Tag::TAG_CHARACTER[Tag::MENTION] . Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]) as $tag) {
+                       $contact = Contact::getByURL($tag[2], false, [], $profile_uid);
+                       if (!empty($inform)) {
+                               $inform .= ',';
                        }
+                       $inform .= 'cid:' . $contact['id'];
 
-                       return $body;
-               });
-
-               // Search for forum mentions
-               if (!$toplevel_item_id) {
-                       foreach (Tag::getFromBody($body, Tag::TAG_CHARACTER[Tag::MENTION] . Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]) as $tag) {
-                               $contact = Contact::getByURL($tag[2], false, [], $profile_uid);
-                               if ($contact['contact-type'] != Contact::TYPE_COMMUNITY) {
-                                       continue;
-                               }
+                       if (!$toplevel_item_id || ($contact['contact-type'] != Contact::TYPE_COMMUNITY)) {
+                               continue;
+                       }
 
-                               if (!empty($contact['prv']) || ($tag[1] == Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION])) {
-                                       $private_forum = $contact['prv'];
-                                       $only_to_forum = ($tag[1] == Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]);
-                                       $private_id = $contact['id'];
-                                       $forum_contact = $contact;
-                                       Logger::info('Private forum or exclusive mention', ['url' => $tag[2], 'mention' => $tag[1]]);
-                               } elseif ($str_contact_allow == '<' . $contact['id'] . '>') {
-                                       $private_forum = false;
-                                       $only_to_forum = true;
-                                       $private_id = $contact['id'];
-                                       $forum_contact = $contact;
-                                       Logger::info('Public forum', ['url' => $tag[2], 'mention' => $tag[1]]);
-                               } else {
-                                       Logger::info('Post with forum mention will not be converted to a forum post', ['url' => $tag[2], 'mention' => $tag[1]]);
-                               }
+                       if (!empty($contact['prv']) || ($tag[1] == Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION])) {
+                               $private_forum = $contact['prv'];
+                               $only_to_forum = ($tag[1] == Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]);
+                               $private_id = $contact['id'];
+                               $forum_contact = $contact;
+                               Logger::info('Private forum or exclusive mention', ['url' => $tag[2], 'mention' => $tag[1]]);
+                       } elseif ($str_contact_allow == '<' . $contact['id'] . '>') {
+                               $private_forum = false;
+                               $only_to_forum = true;
+                               $private_id = $contact['id'];
+                               $forum_contact = $contact;
+                               Logger::info('Public forum', ['url' => $tag[2], 'mention' => $tag[1]]);
+                       } else {
+                               Logger::info('Post with forum mention will not be converted to a forum post', ['url' => $tag[2], 'mention' => $tag[1]]);
                        }
                }
+               Logger::info('Got inform', ['inform' => $inform]);
        }
 
        $original_contact_id = $contact_id;
index 694ef52d96ea5193c55b04434ded19fe26b1d733..5037be80e2f01c82eb89034f9767c59bf49d030d 100644 (file)
@@ -135,7 +135,6 @@ class Item
         * the appropriate link.
         *
         * @param string  $body        the text to replace the tag in
-        * @param string  $inform      a comma-seperated string containing everybody to inform
         * @param integer $profile_uid the user id to replace the tag for (0 = anyone)
         * @param string  $tag         the tag to replace
         * @param string  $network     The network of the post
@@ -144,7 +143,7 @@ class Item
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         * @throws \ImagickException
         */
-       public static function replaceTag(&$body, &$inform, $profile_uid, $tag, $network = '')
+       public static function replaceTag(&$body, $profile_uid, $tag, $network = '')
        {
                $replaced = false;
 
@@ -218,16 +217,6 @@ class Item
 
                        // Check if $contact has been successfully loaded
                        if (DBA::isResult($contact)) {
-                               if (strlen($inform) && (isset($contact['notify']) || isset($contact['id']))) {
-                                       $inform .= ',';
-                               }
-
-                               if (isset($contact['id'])) {
-                                       $inform .= 'cid:' . $contact['id'];
-                               } elseif (isset($contact['notify'])) {
-                                       $inform  .= $contact['notify'];
-                               }
-
                                $profile = $contact['url'];
                                $newname = ($contact['name'] ?? '') ?: $contact['nick'];
                        }
index 4c895f533774afd07645a228f05ad3fb36ec6065..0bb55215ecec6b5144fa8612a9fb592ba641229f 100644 (file)
@@ -2358,11 +2358,10 @@ class BBCode
        public static function setMentions($body, $profile_uid = 0, $network = '')
        {
                DI::profiler()->startRecording('rendering');
-               self::performWithEscapedTags($body, ['noparse', 'pre', 'code', 'img'], function ($body) use ($profile_uid, $network) {
+               $body = self::performWithEscapedTags($body, ['noparse', 'pre', 'code', 'img'], function ($body) use ($profile_uid, $network) {
                        $tags = self::getTags($body);
 
                        $tagged = [];
-                       $inform = '';
 
                        foreach ($tags as $tag) {
                                $tag_type = substr($tag, 0, 1);
@@ -2381,7 +2380,7 @@ class BBCode
                                        }
                                }
 
-                               if (($success = Item::replaceTag($body, $inform, $profile_uid, $tag, $network)) && $success['replaced']) {
+                               if (($success = Item::replaceTag($body, $profile_uid, $tag, $network)) && $success['replaced']) {
                                        $tagged[] = $tag;
                                }
                        }