X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FContent%2FConversation.php;h=0c3a6c988d30ddcc7e520095e35ffbcd63a27a41;hb=72a3ab6382551811f22391b7e82e7398628b235b;hp=8027bb23f0e03c25fcb0cde2cefb9d77636c3df3;hpb=f696fce824e436acb5f603bbc521c096338b621d;p=friendica.git diff --git a/src/Content/Conversation.php b/src/Content/Conversation.php index 8027bb23f0..0c3a6c988d 100644 --- a/src/Content/Conversation.php +++ b/src/Content/Conversation.php @@ -1,6 +1,6 @@ activity = $activity; $this->item = $item; @@ -157,7 +154,7 @@ class Conversation // Skip when the causer of the parent is the same than the author of the announce if (($verb == Activity::ANNOUNCE) && Post::exists(['uri-id' => $activity['thr-parent-id'], - 'uid' => $activity['uid'], 'causer-id' => $activity['author-id'], 'gravity' => GRAVITY_PARENT])) { + 'uid' => $activity['uid'], 'causer-id' => $activity['author-id'], 'gravity' => [GRAVITY_PARENT, GRAVITY_COMMENT]])) { continue; } @@ -192,11 +189,12 @@ class Conversation * @return string formatted text * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public function formatActivity(array $links, $verb, $id) { + public function formatActivity(array $links, $verb, $id) + { $this->profiler->startRecording('rendering'); - $o = ''; + $o = ''; $expanded = ''; - $phrase = ''; + $phrase = ''; $total = count($links); if ($total == 1) { @@ -205,32 +203,32 @@ class Conversation // Phrase if there is only one liker. In other cases it will be uses for the expanded // list which show all likers switch ($verb) { - case 'like' : + case 'like': $phrase = $this->l10n->t('%s likes this.', $likers); break; - case 'dislike' : + case 'dislike': $phrase = $this->l10n->t('%s doesn\'t like this.', $likers); break; - case 'attendyes' : + case 'attendyes': $phrase = $this->l10n->t('%s attends.', $likers); break; - case 'attendno' : + case 'attendno': $phrase = $this->l10n->t('%s doesn\'t attend.', $likers); break; - case 'attendmaybe' : + case 'attendmaybe': $phrase = $this->l10n->t('%s attends maybe.', $likers); break; - case 'announce' : + case 'announce': $phrase = $this->l10n->t('%s reshared this.', $likers); break; } } elseif ($total > 1) { - if ($total < MAX_LIKERS) { + if ($total < $this->config->get('system', 'max_likers')) { $likers = implode(', ', array_slice($links, 0, -1)); - $likers .= ' ' . $this->l10n->t('and') . ' ' . $links[count($links)-1]; - } else { - $likers = implode(', ', array_slice($links, 0, MAX_LIKERS - 1)); - $likers .= ' ' . $this->l10n->t('and %d other people', $total - MAX_LIKERS); + $likers .= ' ' . $this->l10n->t('and') . ' ' . $links[count($links) - 1]; + } else { + $likers = implode(', ', array_slice($links, 0, $this->config->get('system', 'max_likers') - 1)); + $likers .= ' ' . $this->l10n->t('and %d other people', $total - $this->config->get('system', 'max_likers')); } $spanatts = "class=\"fakelink\" onclick=\"openClose('{$verb}list-$id');\""; @@ -246,7 +244,7 @@ class Conversation $explikers = $this->l10n->t('%s don\'t like this.', $likers); break; case 'attendyes': - $phrase = $this->l10n->t('%2$d people attend', $spanatts, $total); + $phrase = $this->l10n->t('%2$d people attend', $spanatts, $total); $explikers = $this->l10n->t('%s attend.', $likers); break; case 'attendno': @@ -268,8 +266,8 @@ class Conversation $o .= Renderer::replaceMacros(Renderer::getMarkupTemplate('voting_fakelink.tpl'), [ '$phrase' => $phrase, - '$type' => $verb, - '$id' => $id + '$type' => $verb, + '$id' => $id ]); $o .= $expanded; @@ -376,7 +374,7 @@ class Conversation '$rand_num' => Crypto::randomDigits(12), // ACL permissions box - '$acl' => $x['acl'], + '$acl' => $x['acl'], //jot nav tab (used in some themes) '$message' => $this->l10n->t('Message'), @@ -456,7 +454,7 @@ class Conversation . "'; \r\n"; } } elseif ($mode === 'profile') { - $items = $this->addChildren($items, false, $order, local_user()); + $items = $this->addChildren($items, false, $order, $uid); if (!$update) { $tab = !empty($_GET['tab']) ? trim($_GET['tab']) : 'posts'; @@ -535,10 +533,10 @@ class Conversation } // array with html for each thread (parent+comments) - $threads = []; + $threads = []; $threadsid = -1; - $page_template = Renderer::getMarkupTemplate("conversation.tpl"); + $page_template = Renderer::getMarkupTemplate("conversation.tpl"); $formSecurityToken = BaseModule::getFormSecurityToken('contact_action'); if (!empty($items)) { @@ -592,8 +590,7 @@ class Conversation $tags = Tag::populateFromItem($item); - $author = ['uid' => 0, 'id' => $item['author-id'], - 'network' => $item['author-network'], 'url' => $item['author-link']]; + $author = ['uid' => 0, 'id' => $item['author-id'], 'network' => $item['author-network'], 'url' => $item['author-link']]; $profile_link = Contact::magicLinkByContact($author); $sparkle = ''; @@ -615,8 +612,8 @@ class Conversation $drop = [ 'dropping' => $dropping, 'pagedrop' => $page_dropping, - 'select' => $this->l10n->t('Select'), - 'delete' => $this->l10n->t('Delete'), + 'select' => $this->l10n->t('Select'), + 'delete' => $this->l10n->t('Delete'), ]; $likebuttons = [ @@ -632,12 +629,14 @@ class Conversation $body_html = ItemModel::prepareBody($item, true, $preview); - list($categories, $folders) = $this->item->determineCategoriesTerms($item, local_user()); + [$categories, $folders] = $this->item->determineCategoriesTerms($item, local_user()); - if (!empty($item['content-warning']) && $this->pConfig->get(local_user(), 'system', 'disable_cw', false)) { + if (!empty($item['title'])) { + $title = $item['title']; + } elseif (!empty($item['content-warning']) && $this->pConfig->get(local_user(), 'system', 'disable_cw', false)) { $title = ucfirst($item['content-warning']); } else { - $title = $item['title']; + $title = ''; } $tmp_item = [ @@ -672,6 +671,7 @@ class Conversation 'folders' => $folders, 'text' => strip_tags($body_html), 'localtime' => DateTimeFormat::local($item['created'], 'r'), + 'utc' => DateTimeFormat::utc($item['created'], 'c'), 'ago' => (($item['app']) ? $this->l10n->t('%s from %s', Temporal::getRelativeDate($item['created']), $item['app']) : Temporal::getRelativeDate($item['created'])), 'location_html' => $location_html, 'indent' => '', @@ -687,7 +687,7 @@ class Conversation 'like_html' => '', 'dislike_html ' => '', 'comment_html' => '', - 'conv' => (($preview) ? '' : ['href'=> 'display/'.$item['guid'], 'title'=> $this->l10n->t('View in context')]), + 'conv' => ($preview ? '' : ['href' => 'display/' . $item['guid'], 'title' => $this->l10n->t('View in context')]), 'previewing' => $previewing, 'wait' => $this->l10n->t('Please wait'), 'thread_level' => 1, @@ -696,10 +696,9 @@ class Conversation $arr = ['item' => $item, 'output' => $tmp_item]; Hook::callAll('display_item', $arr); - $threads[$threadsid]['id'] = $item['id']; + $threads[$threadsid]['id'] = $item['id']; $threads[$threadsid]['network'] = $item['network']; - $threads[$threadsid]['items'] = [$arr['output']]; - + $threads[$threadsid]['items'] = [$arr['output']]; } } else { // Normal View @@ -750,14 +749,14 @@ class Conversation } $o = Renderer::replaceMacros($page_template, [ - '$baseurl' => $this->baseURL->get($ssl_state), + '$baseurl' => $this->baseURL->get($ssl_state), '$return_path' => $this->args->getQueryString(), '$live_update' => $live_update_div, - '$remove' => $this->l10n->t('remove'), - '$mode' => $mode, - '$update' => $update, - '$threads' => $threads, - '$dropping' => ($page_dropping ? $this->l10n->t('Delete Selected Items') : False), + '$remove' => $this->l10n->t('remove'), + '$mode' => $mode, + '$update' => $update, + '$threads' => $threads, + '$dropping' => ($page_dropping ? $this->l10n->t('Delete Selected Items') : false), ]); $this->profiler->stopRecording(); @@ -795,7 +794,8 @@ class Conversation * * @return array items with parents and comments */ - private function addRowInformation(array $row, array $activity) { + private function addRowInformation(array $row, array $activity) + { $this->profiler->startRecording('rendering'); if ($row['uid'] == 0) { @@ -845,9 +845,9 @@ class Conversation $row['owner-name'] = $row['causer-name']; } - if (($row['gravity'] == GRAVITY_PARENT) && !empty($row['causer-id'])) { - $causer = ['uid' => 0, 'id' => $row['causer-id'], - 'network' => $row['causer-network'], 'url' => $row['causer-link']]; + if (in_array($row['gravity'], [GRAVITY_PARENT, 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']) . ''); } $row['direction'] = ['direction' => 3, 'title' => (empty($row['causer-id']) ? $this->l10n->t('Reshared') : $this->l10n->t('Reshared by %s <%s>', $row['causer-name'], $row['causer-link']))]; @@ -887,7 +887,8 @@ class Conversation * @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, $block_authors, $order, $uid) + { $this->profiler->startRecording('rendering'); if (count($parents) > 1) { $max_comments = $this->config->get('system', 'max_comments', 100); @@ -902,7 +903,7 @@ class Conversation $commentcounter = []; $activitycounter = []; - foreach ($parents AS $parent) { + foreach ($parents as $parent) { if (!empty($parent['thr-parent-id']) && !empty($parent['gravity']) && ($parent['gravity'] == GRAVITY_ACTIVITY)) { $uriid = $parent['thr-parent-id']; if (!empty($parent['author-id'])) { @@ -930,7 +931,7 @@ class Conversation $condition = DBA::mergeConditions($condition, ["`uid` IN (0, ?) AND (`vid` != ? OR `vid` IS NULL)", $uid, Verb::getID(Activity::FOLLOW)]); - $thread_items = Post::selectForUser(local_user(), array_merge(ItemModel::DISPLAY_FIELDLIST, ['pinned', 'contact-uid', 'gravity', 'post-type', 'post-reason']), $condition, $params); + $thread_items = Post::selectForUser($uid, array_merge(ItemModel::DISPLAY_FIELDLIST, ['pinned', 'contact-uid', 'gravity', 'post-type', 'post-reason']), $condition, $params); $items = []; @@ -981,6 +982,7 @@ class Conversation if ($thr_parent == $parent['uri-id']) { $item['children'] = $this->getItemChildren($item_list, $item); + $children[] = $item; unset($item_list[$i]); } @@ -1060,7 +1062,7 @@ class Conversation if (isset($child['children']) && count($child['children'])) { // This helps counting only the regular posts - $count_post_closure = function($var) { + $count_post_closure = function ($var) { $this->profiler->stopRecording(); return $var['verb'] === Activity::POST; }; @@ -1074,7 +1076,7 @@ class Conversation // Searches the post item in the children $j = 0; - while($child['children'][$j]['verb'] !== Activity::POST && $j < count($child['children'])) { + while ($child['children'][$j]['verb'] !== Activity::POST && $j < count($child['children'])) { $j ++; } @@ -1145,9 +1147,8 @@ class Conversation * items and add them as children of their top-level post. */ foreach ($parents as $i => $parent) { - $parents[$i]['children'] = - array_merge($this->getItemChildren($item_array, $parent, true), - $this->getItemChildren($item_array, $parent, false)); + $parents[$i]['children'] = array_merge($this->getItemChildren($item_array, $parent, true), + $this->getItemChildren($item_array, $parent, false)); } foreach ($parents as $i => $parent) {