]> git.mxchange.org Git - friendica.git/blobdiff - src/Content/Conversation.php
Merge pull request #11647 from Quix0r/fixes/type-error-exception
[friendica.git] / src / Content / Conversation.php
index 04cdab4785e50b0e5efefbdddb322fe8b015e963..a82cb35e008ea2448daabc065adbe864c6765ae7 100644 (file)
@@ -37,7 +37,6 @@ use Friendica\Core\Theme;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
 use Friendica\Model\Item as ItemModel;
-use Friendica\Model\Photo;
 use Friendica\Model\Post;
 use Friendica\Model\Tag;
 use Friendica\Model\User;
@@ -48,7 +47,6 @@ use Friendica\Protocol\Activity;
 use Friendica\Util\Crypto;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Profiler;
-use Friendica\Util\Proxy;
 use Friendica\Util\Strings;
 use Friendica\Util\Temporal;
 use Psr\Log\LoggerInterface;
@@ -443,7 +441,7 @@ class Conversation
                $previewing = (($preview) ? ' preview ' : '');
 
                if ($mode === 'network') {
-                       $items = $this->addChildren($items, false, $order, $uid);
+                       $items = $this->addChildren($items, false, $order, $uid, $mode);
                        if (!$update) {
                                /*
                                * The special div is needed for liveUpdate to kick in for this page.
@@ -469,7 +467,7 @@ class Conversation
                                        . "'; </script>\r\n";
                        }
                } elseif ($mode === 'profile') {
-                       $items = $this->addChildren($items, false, $order, $uid);
+                       $items = $this->addChildren($items, false, $order, $uid, $mode);
 
                        if (!$update) {
                                $tab = !empty($_GET['tab']) ? trim($_GET['tab']) : 'posts';
@@ -486,7 +484,7 @@ class Conversation
                                }
                        }
                } elseif ($mode === 'notes') {
-                       $items = $this->addChildren($items, false, $order, local_user());
+                       $items = $this->addChildren($items, false, $order, local_user(), $mode);
 
                        if (!$update) {
                                $live_update_div = '<div id="live-notes"></div>' . "\r\n"
@@ -494,7 +492,7 @@ class Conversation
                                        . "; var netargs = '/?f='; </script>\r\n";
                        }
                } elseif ($mode === 'display') {
-                       $items = $this->addChildren($items, false, $order, $uid);
+                       $items = $this->addChildren($items, false, $order, $uid, $mode);
 
                        if (!$update) {
                                $live_update_div = '<div id="live-display"></div>' . "\r\n"
@@ -502,17 +500,18 @@ class Conversation
                                        . "</script>";
                        }
                } elseif ($mode === 'community') {
-                       $items = $this->addChildren($items, true, $order, $uid);
+                       $items = $this->addChildren($items, true, $order, $uid, $mode);
 
                        if (!$update) {
                                $live_update_div = '<div id="live-community"></div>' . "\r\n"
                                        . "<script> var profile_uid = -1; var netargs = '" . substr($this->args->getCommand(), 10)
                                        . '?f='
                                        . (!empty($_GET['no_sharer']) ? '&no_sharer=' . rawurlencode($_GET['no_sharer']) : '')
+                                       . (!empty($_GET['accounttype']) ? '&accounttype=' . rawurlencode($_GET['accounttype']) : '')
                                        . "'; </script>\r\n";
                        }
                } elseif ($mode === 'contacts') {
-                       $items = $this->addChildren($items, false, $order, $uid);
+                       $items = $this->addChildren($items, false, $order, $uid, $mode);
 
                        if (!$update) {
                                $live_update_div = '<div id="live-contact"></div>' . "\r\n"
@@ -558,7 +557,7 @@ class Conversation
                        if (in_array($mode, ['community', 'contacts', 'profile'])) {
                                $writable = true;
                        } else {
-                               $writable = ($items[0]['uid'] == 0) && in_array($items[0]['network'], Protocol::FEDERATED);
+                               $writable = $items[0]['writable'] || ($items[0]['uid'] == 0) && in_array($items[0]['network'], Protocol::FEDERATED);
                        }
 
                        if (!local_user()) {
@@ -821,7 +820,7 @@ class Conversation
        {
                $this->profiler->startRecording('rendering');
 
-               if ($row['uid'] == 0) {
+               if (!$row['writable']) {
                        $row['writable'] = in_array($row['network'], Protocol::FEDERATED);
                }
 
@@ -904,15 +903,15 @@ class Conversation
         * The system will fetch the comments for the local user whenever possible.
         * This behaviour is currently needed to allow commenting on Friendica posts.
         *
-        * @param array $parents Parent items
-        *
-        * @param       $block_authors
-        * @param       $order
-        * @param       $uid
+        * @param array  $parents       Parent items
+        * @param bool   $block_authors
+        * @param bool   $order
+        * @param int    $uid
+        * @param string $mode
         * @return array items with parents and comments
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         */
-       private function addChildren(array $parents, $block_authors, $order, $uid)
+       private function addChildren(array $parents, bool $block_authors, string $order, int $uid, string $mode)
        {
                $this->profiler->startRecording('rendering');
                if (count($parents) > 1) {
@@ -974,6 +973,10 @@ class Conversation
                                continue;
                        }
 
+                       if (($mode != 'contacts') && !$row['origin']) {
+                               $row['featured'] = false;
+                       }
+
                        if ($max_comments > 0) {
                                if (($row['gravity'] == GRAVITY_COMMENT) && (++$commentcounter[$row['parent-uri-id']] > $max_comments)) {
                                        continue;