]> git.mxchange.org Git - friendica.git/blobdiff - src/Content/Item.php
Blanks replaced
[friendica.git] / src / Content / Item.php
index 334507861b6e1406910132e7de62ea2647716e88..240de4c741cba9f63a7a5dddbda42e4077a2c474 100644 (file)
@@ -26,16 +26,16 @@ use Friendica\Core\Hook;
 use Friendica\Core\L10n;
 use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
-use Friendica\Core\Session;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
 use Friendica\Model\Group;
 use Friendica\Model\Item as ModelItem;
+use Friendica\Model\Photo;
 use Friendica\Model\Tag;
 use Friendica\Model\Post;
 use Friendica\Protocol\Activity;
 use Friendica\Util\Profiler;
-use Friendica\Util\Strings;
+use Friendica\Util\Proxy;
 use Friendica\Util\XML;
 
 /**
@@ -93,6 +93,10 @@ class Item
 
                $uid = $item['uid'] ?: $uid;
 
+               if (!Post\Category::existsForURIId($item['uri-id'], $uid)) {
+                       return [$categories, $folders];
+               }
+
                foreach (Post\Category::getArrayByURIId($item['uri-id'], $uid, Post\Category::CATEGORY) as $savedFolderName) {
                        if (!empty($item['author-link'])) {
                                $url = $item['author-link'] . "?category=" . rawurlencode($savedFolderName);
@@ -353,22 +357,6 @@ class Item
                        }
                }
 
-               $matches = null;
-               if (preg_match_all('/@\[url=(.*?)\]/is', $item['body'], $matches, PREG_SET_ORDER)) {
-                       foreach ($matches as $mtch) {
-                               if (!strpos($mtch[1], 'zrl=')) {
-                                       $item['body'] = str_replace($mtch[0], '@[url=' . Contact::magicLink($mtch[1]) . ']', $item['body']);
-                               }
-                       }
-               }
-
-               // add sparkle links to appropriate permalinks
-               // Only create a redirection to a magic link when logged in
-               if (!empty($item['plink']) && Session::isAuthenticated() && $item['private'] == ModelItem::PRIVATE) {
-                       $author = ['uid' => 0, 'id' => $item['author-id'],
-                               'network' => $item['author-network'], 'url' => $item['author-link']];
-                       $item['plink'] = Contact::magicLinkByContact($author, $item['plink']);
-               }
                $this->profiler->stopRecording();
        }
 
@@ -398,7 +386,7 @@ class Item
                $pcid = $item['author-id'];
                $network = '';
                $rel = 0;
-               $condition = ['uid' => local_user(), 'nurl' => Strings::normaliseLink($item['author-link'])];
+               $condition = ['uid' => local_user(), 'uri-id' => $item['author-uri-id']];
                $contact = DBA::selectFirst('contact', ['id', 'network', 'rel'], $condition);
                if (DBA::isResult($contact)) {
                        $cid = $contact['id'];
@@ -494,7 +482,7 @@ class Item
                return true;
        }
 
-       public function expandTags(array $item)
+       public function expandTags(array $item, bool $setPermissions = false)
        {
                // Look for any tags and linkify them
                $item['inform'] = '';
@@ -502,6 +490,7 @@ class Item
                $private_id     = null;
                $only_to_forum  = false;
                $forum_contact  = [];
+               $receivers      = [];
 
                // Convert mentions in the body to a unified format
                $item['body'] = BBCode::setMentions($item['body'], $item['uid'], $item['network']);
@@ -509,6 +498,9 @@ class Item
                // Search for forum mentions
                foreach (Tag::getFromBody($item['body'], Tag::TAG_CHARACTER[Tag::MENTION] . Tag::TAG_CHARACTER[Tag::EXCLUSIVE_MENTION]) as $tag) {
                        $contact = Contact::getByURLForUser($tag[2], $item['uid']);
+
+                       $receivers[] = $contact['id'];
+
                        if (!empty($item['inform'])) {
                                $item['inform'] .= ',';
                        }
@@ -554,7 +546,62 @@ class Item
                                $item['allow_cid'] = '';
                                $item['allow_gid'] = '';
                        }
+               } elseif ($setPermissions && ($item['gravity'] == GRAVITY_PARENT)) {
+                       if (empty($receivers)) {
+                               // For security reasons direct posts without any receiver will be posts to yourself
+                               $self = Contact::selectFirst(['id'], ['uid' => $item['uid'], 'self' => true]);
+                               $receivers[] = $self['id'];
+                       }
+
+                       $item['private']   = ModelItem::PRIVATE;
+                       $item['allow_cid'] = '';
+                       $item['allow_gid'] = '';
+                       $item['deny_cid']  = '';
+                       $item['deny_gid']  = '';
+
+                       foreach ($receivers as $receiver) {
+                               $item['allow_cid'] .= '<' . $receiver . '>';
+                       }
                }
                return $item;
        }
+
+       public function getAuthorAvatar(array $item): string
+       {
+               if (in_array($item['network'], [Protocol::FEED, Protocol::MAIL])) {
+                       $author_avatar  = $item['contact-id'];
+                       $author_updated = '';
+                       $author_thumb   = $item['contact-avatar'];
+               } else {
+                       $author_avatar  = $item['author-id'];
+                       $author_updated = $item['author-updated'];
+                       $author_thumb   = $item['author-avatar'];
+               }
+
+
+               if (empty($author_thumb) || Photo::isPhotoURI($author_thumb)) {
+                       $author_thumb = Contact::getAvatarUrlForId($author_avatar, Proxy::SIZE_THUMB, $author_updated);
+               }
+
+               return $author_thumb;
+       }
+
+       public function getOwnerAvatar(array $item): string
+       {
+               if (in_array($item['network'], [Protocol::FEED, Protocol::MAIL])) {
+                       $owner_avatar  = $item['contact-id'];
+                       $owner_updated = '';
+                       $owner_thumb   = $item['contact-avatar'];
+               } else {
+                       $owner_avatar   = $item['owner-id'];
+                       $owner_updated  = $item['owner-updated'];
+                       $owner_thumb    = $item['owner-avatar'];
+               }
+
+               if (empty($owner_thumb) || Photo::isPhotoURI($owner_thumb)) {
+                       $owner_thumb = Contact::getAvatarUrlForId($owner_avatar, Proxy::SIZE_THUMB, $owner_updated);
+               }
+
+               return $owner_thumb;
+       }
 }