]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Conversation/Network.php
Merge pull request #9963 from mexon/mat/support-cid-scheme
[friendica.git] / src / Module / Conversation / Network.php
index b19f409025d33f63db4ad070d262add7444ff981..c093cc9ca6a0d0891f3f250c6ff5ddb2238b0e2c 100644 (file)
@@ -17,6 +17,7 @@ use Friendica\DI;
 use Friendica\Model\Contact;
 use Friendica\Model\Group;
 use Friendica\Model\Item;
+use Friendica\Model\Post;
 use Friendica\Model\Profile;
 use Friendica\Model\User;
 use Friendica\Module\Contact as ModuleContact;
@@ -192,8 +193,8 @@ class Network extends BaseModule
                        $pager = new BoundariesPager(
                                DI::l10n(),
                                DI::args()->getQueryString(),
-                               $items[0][self::$order],
-                               $items[count($items) - 1][self::$order],
+                               $items[0][self::$order] ?? null,
+                               $items[count($items) - 1][self::$order] ?? null,
                                self::$itemsPerPage
                        );
 
@@ -215,9 +216,10 @@ class Network extends BaseModule
                        return;
                }
 
-               $unseen = Item::exists($condition);
+               $unseen = Post::exists($condition);
 
                if ($unseen) {
+                       /// @todo handle huge "unseen" updates in the background to avoid timeout errors
                        Item::update(['unseen' => false], $condition);
                }
        }
@@ -285,24 +287,40 @@ class Network extends BaseModule
 
                self::$selectedTab = Session::get('network-tab', DI::pConfig()->get(local_user(), 'network.view', 'selected_tab', ''));
 
+               self::$order = 'commented';
+
                if (!empty($get['star'])) {
                        self::$selectedTab = 'star';
+                       self::$star = true;
+               } else {
+                       self::$star = self::$selectedTab == 'star';
                }
 
                if (!empty($get['mention'])) {
                        self::$selectedTab = 'mention';
+                       self::$mention = true;
+               } else {
+                       self::$mention = self::$selectedTab == 'mention';
                }
 
                if (!empty($get['order'])) {
                        self::$selectedTab = $get['order'];
+                       self::$order = $get['order'];
+                       self::$star = false;
+                       self::$mention = false;
+               } elseif (in_array(self::$selectedTab, ['received', 'star', 'mention'])) {
+                       self::$order = 'received';
                }
 
-               self::$star    = intval($get['star'] ?? 0);
-               self::$mention = intval($get['mention'] ?? 0);
-               self::$order   = $get['order'] ?? Session::get('network-order', 'commented');
-
                self::$selectedTab = self::$selectedTab ?? self::$order;
 
+               // Prohibit combined usage of "star" and "mention"
+               if (self::$selectedTab == 'star') {
+                       self::$mention = false;
+               } elseif (self::$selectedTab == 'mention') {
+                       self::$star = false;
+               }
+
                Session::set('network-tab', self::$selectedTab);
                DI::pConfig()->set(local_user(), 'network.view', 'selected_tab', self::$selectedTab);
 
@@ -339,8 +357,6 @@ class Network extends BaseModule
                                self::$order = 'commented';
                                self::$max_id = $get['last_commented'] ?? self::$max_id;
                }
-
-               Session::set('network-order', self::$order);
        }
 
        protected static function getItems(string $table, array $params, array $conditionFields = [])
@@ -427,7 +443,7 @@ class Network extends BaseModule
                }
 
                if (DBA::isResult($items)) {
-                       $parents = array_column($items, 'parent');
+                       $parents = array_column($items, 'parent-uri-id');
                } else {
                        $parents = [];
                }
@@ -439,7 +455,7 @@ class Network extends BaseModule
                        $condition = ['unseen' => true, 'uid' => local_user()];
                        self::setItemsSeenByCondition($condition);
                } elseif (!empty($parents)) {
-                       $condition = ['unseen' => true, 'uid' => local_user(), 'parent' => $parents];
+                       $condition = ['unseen' => true, 'uid' => local_user(), 'parent-uri-id' => $parents];
                        self::setItemsSeenByCondition($condition);
                }