]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Contact.php
Use centralized function to fetch query results
[friendica.git] / src / Model / Contact.php
index e1152b4081950efe5d4ede4ba69edf69312ea530..df1a25cd7d81ef0a966b74a6821059b87f5dbaef 100644 (file)
@@ -39,9 +39,6 @@ use Friendica\Network\HTTPException;
 use Friendica\Network\Probe;
 use Friendica\Protocol\Activity;
 use Friendica\Protocol\ActivityPub;
-use Friendica\Protocol\Diaspora;
-use Friendica\Protocol\OStatus;
-use Friendica\Protocol\Salmon;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Images;
 use Friendica\Util\Network;
@@ -1459,11 +1456,29 @@ class Contact
                }
 
                if ($thread_mode) {
-                       $items = Post::toArray(Post::selectForUser(local_user(), ['uri-id', 'gravity', 'parent-uri-id', 'thr-parent-id', 'author-id'], $condition, $params));
+                       $items = Post::toArray(Post::selectForUser(local_user(), ['uri-id'], $condition, $params));
 
-                       $o .= DI::conversation()->create($items, 'contacts', $update, false, 'commented', local_user());
+                       if ($pager->getStart() == 0) {
+                               $cdata = Contact::getPublicAndUserContactID($cid, local_user());
+                               if (!empty($cdata['public'])) {
+                                       $pinned = Post\Collection::selectToArrayForContact($cdata['public'], Post\Collection::FEATURED, ['uri-id']);
+                                       $items = array_merge($items, $pinned);
+                               }
+                       }
+
+                       $o .= DI::conversation()->create($items, 'contacts', $update, false, 'pinned_commented', local_user());
                } else {
-                       $items = Post::toArray(Post::selectForUser(local_user(), Item::DISPLAY_FIELDLIST, $condition, $params));
+                       $fields = array_merge(Item::DISPLAY_FIELDLIST, ['featured']);
+                       $items = Post::toArray(Post::selectForUser(local_user(), $fields, $condition, $params));
+
+                       if ($pager->getStart() == 0) {
+                               $cdata = Contact::getPublicAndUserContactID($cid, local_user());
+                               if (!empty($cdata['public'])) {
+                                       $condition = ["`uri-id` IN (SELECT `uri-id` FROM `collection-view` WHERE `cid` = ?)", $cdata['public']];
+                                       $pinned = Post::toArray(Post::selectForUser(local_user(), $fields, $condition, $params));
+                                       $items = array_merge($pinned, $items);
+                                       }
+                       }
 
                        $o .= DI::conversation()->create($items, 'contact-posts', $update);
                }
@@ -2256,6 +2271,10 @@ class Contact
                $new_pubkey = $ret['pubkey'] ?? '';
 
                if ($uid == 0) {
+                       if ($ret['network'] == Protocol::ACTIVITYPUB) {
+                               ActivityPub\Processor::fetchFeaturedPosts($ret['url']);
+                       }
+       
                        $ret['last-item'] = Probe::getLastUpdate($ret);
                        Logger::info('Fetched last item', ['id' => $id, 'probed_url' => $ret['url'], 'last-item' => $ret['last-item'], 'callstack' => System::callstack(20)]);
                }