X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=src%2FContent%2FConversation.php;h=da9aee87b00aee1090954c904e1bda589abcdc4d;hb=2edbd1a3e2b90430b378de32f79a7cbd3537d9de;hp=4ad1890a267ecc60e40d6276bb18f4cd32116aa3;hpb=4729fca5d944dee1ce6bbd7a0f00e9d45973838c;p=friendica.git diff --git a/src/Content/Conversation.php b/src/Content/Conversation.php index 4ad1890a26..da9aee87b0 100644 --- a/src/Content/Conversation.php +++ b/src/Content/Conversation.php @@ -32,7 +32,7 @@ use Friendica\Core\L10n; use Friendica\Core\PConfig\Capability\IManagePersonalConfigValues; use Friendica\Core\Protocol; use Friendica\Core\Renderer; -use Friendica\Core\Session; +use Friendica\Core\Session\Capability\IHandleUserSessions; use Friendica\Core\Theme; use Friendica\Database\DBA; use Friendica\Model\Contact; @@ -47,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; @@ -78,8 +77,10 @@ class Conversation private $page; /** @var App\Mode */ private $mode; + /** @var IHandleUserSessions */ + private $session; - public function __construct(LoggerInterface $logger, Profiler $profiler, Activity $activity, L10n $l10n, Item $item, Arguments $args, BaseURL $baseURL, IManageConfigValues $config, IManagePersonalConfigValues $pConfig, App\Page $page, App\Mode $mode, App $app) + public function __construct(LoggerInterface $logger, Profiler $profiler, Activity $activity, L10n $l10n, Item $item, Arguments $args, BaseURL $baseURL, IManageConfigValues $config, IManagePersonalConfigValues $pConfig, App\Page $page, App\Mode $mode, App $app, IHandleUserSessions $session) { $this->activity = $activity; $this->item = $item; @@ -93,6 +94,7 @@ class Conversation $this->pConfig = $pConfig; $this->page = $page; $this->app = $app; + $this->session = $session; } /** @@ -136,7 +138,7 @@ class Conversation return; } - if (!empty($activity['verb']) && $this->activity->match($activity['verb'], $verb) && ($activity['gravity'] != GRAVITY_PARENT)) { + if (!empty($activity['verb']) && $this->activity->match($activity['verb'], $verb) && ($activity['gravity'] != ItemModel::GRAVITY_PARENT)) { $author = [ 'uid' => 0, 'id' => $activity['author-id'], @@ -144,7 +146,7 @@ class Conversation 'url' => $activity['author-link'] ]; $url = Contact::magicLinkByContact($author); - if (strpos($url, 'redir/') === 0) { + if (strpos($url, 'contact/redir/') === 0) { $sparkle = ' class="sparkle" '; } @@ -155,7 +157,7 @@ class Conversation } // Skip when the causer of the parent is the same as the author of the announce - if (($verb == Activity::ANNOUNCE) && !empty($thread_parent['causer-id'] && ($thread_parent['causer-id'] == $activity['author-id']))) { + if (($verb == Activity::ANNOUNCE) && !empty($thread_parent['causer-id']) && ($thread_parent['causer-id'] == $activity['author-id'])) { continue; } @@ -169,7 +171,7 @@ class Conversation continue; } - if (public_contact() == $activity['author-id']) { + if ($this->session->getPublicContactId() == $activity['author-id']) { $conv_responses[$mode][$activity['thr-parent-id']]['self'] = 1; } @@ -190,7 +192,7 @@ class Conversation * @return string formatted text * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public function formatActivity(array $links, $verb, $id) + public function formatActivity(array $links, string $verb, int $id): string { $this->profiler->startRecording('rendering'); $o = ''; @@ -262,7 +264,7 @@ class Conversation break; } - $expanded .= "\t" . ''; + $expanded .= "\t" . ''; } $o .= Renderer::replaceMacros(Renderer::getMarkupTemplate('voting_fakelink.tpl'), [ @@ -276,7 +278,7 @@ class Conversation return $o; } - public function statusEditor(array $x = [], $notes_cid = 0, $popup = false) + public function statusEditor(array $x = [], int $notes_cid = 0, bool $popup = false): string { $user = User::getById($this->app->getLoggedInUserId(), ['uid', 'nickname', 'allow_location', 'default-location']); if (empty($user['uid'])) { @@ -294,7 +296,7 @@ class Conversation $x['bang'] = $x['bang'] ?? ''; $x['visitor'] = $x['visitor'] ?? 'block'; $x['is_owner'] = $x['is_owner'] ?? true; - $x['profile_uid'] = $x['profile_uid'] ?? local_user(); + $x['profile_uid'] = $x['profile_uid'] ?? $this->session->getLocalUserId(); $geotag = !empty($x['allow_location']) ? Renderer::replaceMacros(Renderer::getMarkupTemplate('jot_geotag.tpl'), []) : ''; @@ -329,7 +331,7 @@ class Conversation $created_at = ''; } - $tpl = Renderer::getMarkupTemplate("jot.tpl"); + $tpl = Renderer::getMarkupTemplate('jot.tpl'); $o .= Renderer::replaceMacros($tpl, [ '$new_post' => $this->l10n->t('New Post'), @@ -357,7 +359,7 @@ class Conversation '$title' => $x['title'] ?? '', '$placeholdertitle' => $this->l10n->t('Set title'), '$category' => $x['category'] ?? '', - '$placeholdercategory' => Feature::isEnabled(local_user(), 'categories') ? $this->l10n->t("Categories \x28comma-separated list\x29") : '', + '$placeholdercategory' => Feature::isEnabled($this->session->getLocalUserId(), 'categories') ? $this->l10n->t("Categories \x28comma-separated list\x29") : '', '$scheduled_at' => Temporal::getDateTimeField( new \DateTime(), new \DateTime('now + 6 months'), @@ -394,7 +396,8 @@ class Conversation '$message' => $this->l10n->t('Message'), '$browser' => $this->l10n->t('Browser'), - '$compose_link_title' => $this->l10n->t('Open Compose page'), + '$compose_link_title' => $this->l10n->t('Open Compose page'), + '$always_open_compose' => $this->pConfig->get($this->session->getLocalUserId(), 'frio', 'always_open_compose', false), ]); @@ -415,8 +418,8 @@ class Conversation * figures out how to determine page owner and other contextual items * that are based on unique features of the calling module. * @param array $items - * @param $mode - * @param $update + * @param string $mode + * @param $update @TODO Which type? * @param bool $preview * @param string $order * @param int $uid @@ -424,7 +427,7 @@ class Conversation * @throws ImagickException * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public function create(array $items, $mode, $update, $preview = false, $order = 'commented', $uid = 0) + public function create(array $items, string $mode, $update, bool $preview = false, string $order = 'commented', int $uid = 0): string { $this->profiler->startRecording('rendering'); @@ -433,7 +436,7 @@ class Conversation $this->page->registerStylesheet(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput.css')); $this->page->registerStylesheet(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput-typeahead.css')); - $ssl_state = (local_user() ? true : false); + $ssl_state = (bool)$this->session->getLocalUserId(); $live_update_div = ''; @@ -442,7 +445,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. @@ -468,7 +471,7 @@ class Conversation . "'; \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'; @@ -485,44 +488,45 @@ class Conversation } } } elseif ($mode === 'notes') { - $items = $this->addChildren($items, false, $order, local_user()); + $items = $this->addChildren($items, false, $order, $this->session->getLocalUserId(), $mode); if (!$update) { $live_update_div = '
' . "\r\n" - . "\r\n"; + . "\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 = '
' . "\r\n" - . ""; } } elseif ($mode === 'community') { - $items = $this->addChildren($items, true, $order, $uid); + $items = $this->addChildren($items, true, $order, $uid, $mode); if (!$update) { $live_update_div = '
' . "\r\n" . "\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 = '
' . "\r\n" . "\r\n"; + ."?f='; \r\n"; } } elseif ($mode === 'search') { $live_update_div = '' . "\r\n"; } - $page_dropping = ((local_user() && local_user() == $uid) ? true : false); + $page_dropping = $this->session->getLocalUserId() && $this->session->getLocalUserId() == $uid; if (!$update) { $_SESSION['return_path'] = $this->args->getQueryString(); @@ -542,7 +546,7 @@ class Conversation 'announce' => [], ]; - if ($this->pConfig->get(local_user(), 'system', 'hide_dislike')) { + if ($this->pConfig->get($this->session->getLocalUserId(), 'system', 'hide_dislike')) { unset($conv_responses['dislike']); } @@ -557,10 +561,10 @@ 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()) { + if (!$this->session->getLocalUserId()) { $writable = false; } @@ -582,7 +586,7 @@ class Conversation $uriids[] = $item['uri-id']; - if (!$this->item->visibleActivity($item)) { + if (!$this->item->isVisibleActivity($item)) { continue; } @@ -593,7 +597,7 @@ class Conversation $threadsid++; // prevent private email from leaking. - if ($item['network'] === Protocol::MAIL && local_user() != $item['uid']) { + if ($item['network'] === Protocol::MAIL && $this->session->getLocalUserId() != $item['uid']) { continue; } @@ -608,7 +612,7 @@ class Conversation $profile_link = Contact::magicLinkByContact($author); $sparkle = ''; - if (strpos($profile_link, 'redir/') === 0) { + if (strpos($profile_link, 'contact/redir/') === 0) { $sparkle = ' sparkle'; } @@ -637,17 +641,17 @@ class Conversation 'announce' => null, ]; - if ($this->pConfig->get(local_user(), 'system', 'hide_dislike')) { + if ($this->pConfig->get($this->session->getLocalUserId(), 'system', 'hide_dislike')) { unset($likebuttons['dislike']); } $body_html = ItemModel::prepareBody($item, true, $preview); - [$categories, $folders] = $this->item->determineCategoriesTerms($item, local_user()); + [$categories, $folders] = $this->item->determineCategoriesTerms($item, $this->session->getLocalUserId()); if (!empty($item['title'])) { $title = $item['title']; - } elseif (!empty($item['content-warning']) && $this->pConfig->get(local_user(), 'system', 'disable_cw', false)) { + } elseif (!empty($item['content-warning']) && $this->pConfig->get($this->session->getLocalUserId(), 'system', 'disable_cw', false)) { $title = ucfirst($item['content-warning']); } else { $title = ''; @@ -659,16 +663,6 @@ class Conversation $pinned = ''; } - if (in_array($item['network'], [Protocol::FEED, Protocol::MAIL])) { - $owner_avatar = $author_avatar = $item['contact-id']; - $owner_updated = $author_updated = ''; - } else { - $owner_avatar = $item['owner-id']; - $owner_updated = $item['owner-updated']; - $author_avatar = $item['author-id']; - $author_updated = $item['author-updated']; - } - $tmp_item = [ 'template' => $tpl, 'id' => ($preview ? 'P0' : $item['id']), @@ -686,7 +680,7 @@ class Conversation 'name' => $profile_name, 'sparkle' => $sparkle, 'lock' => false, - 'thumb' => $this->baseURL->remove(Contact::getAvatarUrlForId($author_avatar, Proxy::SIZE_THUMB, $author_updated)), + 'thumb' => $this->baseURL->remove($this->item->getAuthorAvatar($item)), 'title' => $title, 'body_html' => $body_html, 'tags' => $tags['tags'], @@ -707,7 +701,7 @@ class Conversation 'indent' => '', 'owner_name' => '', 'owner_url' => '', - 'owner_photo' => $this->baseURL->remove(Contact::getAvatarUrlForId($owner_avatar, Proxy::SIZE_THUMB, $owner_updated)), + 'owner_photo' => $this->baseURL->remove($this->item->getOwnerAvatar($item)), 'plink' => ItemModel::getPlink($item), 'edpost' => false, 'pinned' => $pinned, @@ -751,11 +745,11 @@ class Conversation $this->builtinActivityPuller($item, $conv_responses); // Only add what is visible - if ($item['network'] === Protocol::MAIL && local_user() != $item['uid']) { + if ($item['network'] === Protocol::MAIL && $this->session->getLocalUserId() != $item['uid']) { continue; } - if (!$this->item->visibleActivity($item)) { + if (!$this->item->isVisibleActivity($item)) { continue; } @@ -765,7 +759,7 @@ class Conversation $item['pagedrop'] = $page_dropping; - if ($item['gravity'] == GRAVITY_PARENT) { + if ($item['gravity'] == ItemModel::GRAVITY_PARENT) { $item_object = new PostObject($item); $conv->addParent($item_object); } @@ -794,13 +788,13 @@ class Conversation return $o; } - private function getBlocklist() + private function getBlocklist(): array { - if (!local_user()) { + if (!$this->session->getLocalUserId()) { return []; } - $str_blocked = str_replace(["\n", "\r"], ",", $this->pConfig->get(local_user(), 'system', 'blocked')); + $str_blocked = str_replace(["\n", "\r"], ",", $this->pConfig->get($this->session->getLocalUserId(), 'system', 'blocked')); if (empty($str_blocked)) { return []; } @@ -826,16 +820,16 @@ class Conversation * * @return array items with parents and comments */ - private function addRowInformation(array $row, array $activity, array $thr_parent) + private function addRowInformation(array $row, array $activity, array $thr_parent): array { $this->profiler->startRecording('rendering'); - if ($row['uid'] == 0) { + if (!$row['writable']) { $row['writable'] = in_array($row['network'], Protocol::FEDERATED); } if (!empty($activity)) { - if (($row['gravity'] == GRAVITY_PARENT)) { + if (($row['gravity'] == ItemModel::GRAVITY_PARENT)) { $row['post-reason'] = ItemModel::PR_ANNOUNCEMENT; $row = array_merge($row, $activity); @@ -844,7 +838,7 @@ class Conversation $row['causer-link'] = $contact['url']; $row['causer-avatar'] = $contact['thumb']; $row['causer-name'] = $contact['name']; - } elseif (($row['gravity'] == GRAVITY_ACTIVITY) && ($row['verb'] == Activity::ANNOUNCE) && + } elseif (($row['gravity'] == ItemModel::GRAVITY_ACTIVITY) && ($row['verb'] == Activity::ANNOUNCE) && ($row['author-id'] == $activity['causer-id'])) { return $row; } @@ -864,20 +858,20 @@ class Conversation $row['direction'] = ['direction' => 7, 'title' => $this->l10n->t('You had been addressed (%s).', 'bcc')]; break; case ItemModel::PR_FOLLOWER: - $row['direction'] = ['direction' => 6, 'title' => $this->l10n->t('You are following %s.', $row['author-name'])]; + $row['direction'] = ['direction' => 6, 'title' => $this->l10n->t('You are following %s.', $row['causer-name'] ?: $row['author-name'])]; break; case ItemModel::PR_TAG: - $row['direction'] = ['direction' => 4, 'title' => $this->l10n->t('Tagged')]; + $row['direction'] = ['direction' => 4, 'title' => $this->l10n->t('You subscribed to one or more tags in this post.')]; break; case ItemModel::PR_ANNOUNCEMENT: - if (!empty($row['causer-id']) && $this->pConfig->get(local_user(), 'system', 'display_resharer')) { + if (!empty($row['causer-id']) && $this->pConfig->get($this->session->getLocalUserId(), 'system', 'display_resharer')) { $row['owner-id'] = $row['causer-id']; $row['owner-link'] = $row['causer-link']; $row['owner-avatar'] = $row['causer-avatar']; $row['owner-name'] = $row['causer-name']; } - if (in_array($row['gravity'], [GRAVITY_PARENT, GRAVITY_COMMENT]) && !empty($row['causer-id'])) { + if (in_array($row['gravity'], [ItemModel::GRAVITY_PARENT, ItemModel::GRAVITY_COMMENT]) && !empty($row['causer-id'])) { $causer = ['uid' => 0, 'id' => $row['causer-id'], 'network' => $row['causer-network'], 'url' => $row['causer-link']]; $row['reshared'] = $this->l10n->t('%s reshared this.', '' . htmlentities($row['causer-name']) . ''); @@ -888,17 +882,32 @@ class Conversation $row['direction'] = ['direction' => 5, 'title' => $this->l10n->t('%s is participating in this thread.', $row['author-name'])]; break; case ItemModel::PR_STORED: - $row['direction'] = ['direction' => 8, 'title' => $this->l10n->t('Stored')]; + $row['direction'] = ['direction' => 8, 'title' => $this->l10n->t('Stored for general reasons')]; break; case ItemModel::PR_GLOBAL: - $row['direction'] = ['direction' => 9, 'title' => $this->l10n->t('Global')]; + $row['direction'] = ['direction' => 9, 'title' => $this->l10n->t('Global post')]; break; case ItemModel::PR_RELAY: - $row['direction'] = ['direction' => 10, 'title' => (empty($row['causer-id']) ? $this->l10n->t('Relayed') : $this->l10n->t('Relayed by %s <%s>', $row['causer-name'], $row['causer-link']))]; + $row['direction'] = ['direction' => 10, 'title' => (empty($row['causer-id']) ? $this->l10n->t('Sent via an relay server') : $this->l10n->t('Sent via the relay server %s <%s>', $row['causer-name'], $row['causer-link']))]; break; case ItemModel::PR_FETCHED: $row['direction'] = ['direction' => 2, 'title' => (empty($row['causer-id']) ? $this->l10n->t('Fetched') : $this->l10n->t('Fetched because of %s <%s>', $row['causer-name'], $row['causer-link']))]; break; + case ItemModel::PR_COMPLETION: + $row['direction'] = ['direction' => 2, 'title' => $this->l10n->t('Stored because of a child post to complete this thread.')]; + break; + case ItemModel::PR_DIRECT: + $row['direction'] = ['direction' => 6, 'title' => $this->l10n->t('Local delivery')]; + break; + case ItemModel::PR_ACTIVITY: + $row['direction'] = ['direction' => 2, 'title' => $this->l10n->t('Stored because of your activity (like, comment, star, ...)')]; + break; + case ItemModel::PR_DISTRIBUTE: + $row['direction'] = ['direction' => 6, 'title' => $this->l10n->t('Distributed')]; + break; + case ItemModel::PR_PUSHED: + $row['direction'] = ['direction' => 1, 'title' => $this->l10n->t('Pushed to us')]; + break; } $row['thr-parent-row'] = $thr_parent; @@ -913,15 +922,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): array { $this->profiler->startRecording('rendering'); if (count($parents) > 1) { @@ -936,7 +945,7 @@ class Conversation $activitycounter = []; foreach ($parents as $parent) { - if (!empty($parent['thr-parent-id']) && !empty($parent['gravity']) && ($parent['gravity'] == GRAVITY_ACTIVITY)) { + if (!empty($parent['thr-parent-id']) && !empty($parent['gravity']) && ($parent['gravity'] == ItemModel::GRAVITY_ACTIVITY)) { $uriid = $parent['thr-parent-id']; if (!empty($parent['author-id'])) { $activities[$uriid] = ['causer-id' => $parent['author-id']]; @@ -961,9 +970,9 @@ class Conversation } $condition = DBA::mergeConditions($condition, - ["`uid` IN (0, ?) AND (`vid` != ? OR `vid` IS NULL)", $uid, Verb::getID(Activity::FOLLOW)]); + ["`uid` IN (0, ?) AND (NOT `vid` IN (?, ?) OR `vid` IS NULL)", $uid, Verb::getID(Activity::FOLLOW), Verb::getID(Activity::VIEW)]); - $thread_parents = Post::select(['uri-id', 'causer-id'], $condition, ['order' => ['uri-id' => false, 'uid' => true]]); + $thread_parents = Post::select(['uri-id', 'causer-id'], $condition, ['order' => ['uri-id' => false, 'uid']]); $thr_parent = []; @@ -983,11 +992,15 @@ 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)) { + if (($row['gravity'] == ItemModel::GRAVITY_COMMENT) && (++$commentcounter[$row['parent-uri-id']] > $max_comments)) { continue; } - if (($row['gravity'] == GRAVITY_ACTIVITY) && (++$activitycounter[$row['parent-uri-id']] > $max_comments)) { + if (($row['gravity'] == ItemModel::GRAVITY_ACTIVITY) && (++$activitycounter[$row['parent-uri-id']] > $max_comments)) { continue; } } @@ -1011,12 +1024,12 @@ class Conversation * @param bool $recursive * @return array */ - private function getItemChildren(array &$item_list, array $parent, $recursive = true) + private function getItemChildren(array &$item_list, array $parent, bool $recursive = true): array { $this->profiler->startRecording('rendering'); $children = []; foreach ($item_list as $i => $item) { - if ($item['gravity'] != GRAVITY_PARENT) { + if ($item['gravity'] != ItemModel::GRAVITY_PARENT) { if ($recursive) { // Fallback to parent-uri if thr-parent is not set $thr_parent = $item['thr-parent-id']; @@ -1046,7 +1059,7 @@ class Conversation * @param array $items * @return array */ - private function sortItemChildren(array $items) + private function sortItemChildren(array $items): array { $this->profiler->startRecording('rendering'); $result = $items; @@ -1092,7 +1105,7 @@ class Conversation * @param array $parent A tree-like array of items * @return array */ - private function smartFlattenConversation(array $parent) + private function smartFlattenConversation(array $parent): array { $this->profiler->startRecording('rendering'); if (!isset($parent['children']) || count($parent['children']) == 0) { @@ -1148,7 +1161,7 @@ class Conversation * @return array * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - private function convSort(array $item_list, $order) + private function convSort(array $item_list, string $order): array { $this->profiler->startRecording('rendering'); $parents = []; @@ -1173,7 +1186,7 @@ class Conversation // Extract the top level items foreach ($item_array as $item) { - if ($item['gravity'] == GRAVITY_PARENT) { + if ($item['gravity'] == ItemModel::GRAVITY_PARENT) { $parents[] = $item; } } @@ -1203,7 +1216,7 @@ class Conversation $parents[$i]['children'] = $this->sortItemChildren($parents[$i]['children']); } - if (!$this->pConfig->get(local_user(), 'system', 'no_smart_threading', 0)) { + if (!$this->pConfig->get($this->session->getLocalUserId(), 'system', 'no_smart_threading', 0)) { foreach ($parents as $i => $parent) { $parents[$i] = $this->smartFlattenConversation($parent); } @@ -1228,7 +1241,7 @@ class Conversation * @param array $b * @return int */ - private function sortThrFeaturedReceived(array $a, array $b) + private function sortThrFeaturedReceived(array $a, array $b): int { if ($b['featured'] && !$a['featured']) { return 1; @@ -1246,7 +1259,7 @@ class Conversation * @param array $b * @return int */ - private function sortThrFeaturedCommented(array $a, array $b) + private function sortThrFeaturedCommented(array $a, array $b): int { if ($b['featured'] && !$a['featured']) { return 1; @@ -1264,7 +1277,7 @@ class Conversation * @param array $b * @return int */ - private function sortThrReceived(array $a, array $b) + private function sortThrReceived(array $a, array $b): int { return strcmp($b['received'], $a['received']); } @@ -1276,7 +1289,7 @@ class Conversation * @param array $b * @return int */ - private function sortThrReceivedRev(array $a, array $b) + private function sortThrReceivedRev(array $a, array $b): int { return strcmp($a['received'], $b['received']); } @@ -1288,7 +1301,7 @@ class Conversation * @param array $b * @return int */ - private function sortThrCommented(array $a, array $b) + private function sortThrCommented(array $a, array $b): int { return strcmp($b['commented'], $a['commented']); } @@ -1300,7 +1313,7 @@ class Conversation * @param array $b * @return int */ - private function sortThrCreated(array $a, array $b) + private function sortThrCreated(array $a, array $b): int { return strcmp($b['created'], $a['created']); }