X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fconversation.php;h=507add97d61ef5f79a9c8db6bc0c21431dea1616;hb=a2532ad7554602d631d9caabb5c74564328d1fff;hp=93ec728baaa9c870846278628a1dd90860df739a;hpb=c31cb54e9f8b7c4d37457ed010cc4f5b31f4cf6e;p=friendica.git diff --git a/include/conversation.php b/include/conversation.php index 93ec728baa..507add97d6 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -20,8 +20,10 @@ */ use Friendica\App; +use Friendica\BaseModule; use Friendica\Content\ContactSelector; use Friendica\Content\Feature; +use Friendica\Core\ACL; use Friendica\Core\Hook; use Friendica\Core\Logger; use Friendica\Core\Protocol; @@ -34,6 +36,7 @@ use Friendica\Model\Contact; use Friendica\Model\Item; use Friendica\Model\Post; use Friendica\Model\Tag; +use Friendica\Model\User; use Friendica\Model\Verb; use Friendica\Object\Post as PostObject; use Friendica\Object\Thread; @@ -309,7 +312,7 @@ function conversation(App $a, array $items, $mode, $update, $preview = false, $o . "'; \r\n"; } } elseif ($mode === 'profile') { - $items = conversation_add_children($items, false, $order, $uid); + $items = conversation_add_children($items, false, $order, local_user()); if (!$update) { $tab = 'posts'; @@ -394,9 +397,10 @@ function conversation(App $a, array $items, $mode, $update, $preview = false, $o $threadsid = -1; $page_template = Renderer::getMarkupTemplate("conversation.tpl"); + $formSecurityToken = BaseModule::getFormSecurityToken('contact_action'); if (!empty($items)) { - if (in_array($mode, ['community', 'contacts'])) { + if (in_array($mode, ['community', 'contacts', 'profile'])) { $writable = true; } else { $writable = ($items[0]['uid'] == 0) && in_array($items[0]['network'], Protocol::FEDERATED); @@ -415,7 +419,14 @@ function conversation(App $a, array $items, $mode, $update, $preview = false, $o $tpl = 'search_item.tpl'; + $uriids = []; + foreach ($items as $item) { + if (in_array($item['uri-id'], $uriids)) { + continue; + } + + $uriids[] = $item['uri-id']; if (!visible_activity($item)) { continue; @@ -479,7 +490,7 @@ function conversation(App $a, array $items, $mode, $update, $preview = false, $o $body_html = Item::prepareBody($item, true, $preview); - list($categories, $folders) = DI::contentItem()->determineCategoriesTerms($item); + list($categories, $folders) = DI::contentItem()->determineCategoriesTerms($item, local_user()); if (!empty($item['content-warning']) && DI::pConfig()->get(local_user(), 'system', 'disable_cw', false)) { $title = ucfirst($item['content-warning']); @@ -500,7 +511,7 @@ function conversation(App $a, array $items, $mode, $update, $preview = false, $o 'network_icon' => ContactSelector::networkToIcon($item['network'], $item['author-link']), 'linktitle' => DI::l10n()->t('View %s\'s profile @ %s', $profile_name, $item['author-link']), 'profile_url' => $profile_link, - 'item_photo_menu_html' => item_photo_menu($item), + 'item_photo_menu_html' => item_photo_menu($item, $formSecurityToken), 'name' => $profile_name, 'sparkle' => $sparkle, 'lock' => false, @@ -588,7 +599,7 @@ function conversation(App $a, array $items, $mode, $update, $preview = false, $o } } - $threads = $conv->getTemplateData($conv_responses); + $threads = $conv->getTemplateData($conv_responses, $formSecurityToken); if (!$threads) { Logger::log('[ERROR] conversation : Failed to get template data.', Logger::DEBUG); $threads = []; @@ -757,6 +768,10 @@ function conversation_add_children(array $parents, $block_authors, $order, $uid) $items = []; while ($row = Post::fetch($thread_items)) { + if (!empty($items[$row['uri-id']]) && ($row['uid'] == 0)) { + continue; + } + if ($max_comments > 0) { if (($row['gravity'] == GRAVITY_COMMENT) && (++$commentcounter[$row['parent-uri-id']] > $max_comments)) { continue; @@ -765,7 +780,7 @@ function conversation_add_children(array $parents, $block_authors, $order, $uid) continue; } } - $items[] = conversation_add_row_information($row, $activities[$row['uri-id']] ?? []); + $items[$row['uri-id']] = conversation_add_row_information($row, $activities[$row['uri-id']] ?? []); } DBA::close($thread_items); @@ -776,7 +791,7 @@ function conversation_add_children(array $parents, $block_authors, $order, $uid) return $items; } -function item_photo_menu($item) +function item_photo_menu($item, string $formSecurityToken) { DI::profiler()->startRecording('rendering'); $sub_link = ''; @@ -819,8 +834,8 @@ function item_photo_menu($item) if (!empty($pcid)) { $contact_url = 'contact/' . $pcid; $posts_link = $contact_url . '/posts'; - $block_link = $item['self'] ? '' : $contact_url . '/block'; - $ignore_link = $item['self'] ? '' : $contact_url . '/ignore'; + $block_link = $item['self'] ? '' : $contact_url . '/block?t=' . $formSecurityToken; + $ignore_link = $item['self'] ? '' : $contact_url . '/ignore?t=' . $formSecurityToken; } if ($cid && !$item['self']) { @@ -1060,11 +1075,27 @@ function format_activity(array $links, $verb, $id) { return $o; } -function status_editor(App $a, $x, $notes_cid = 0, $popup = false) +function status_editor(App $a, array $x = [], $notes_cid = 0, $popup = false) { + $user = User::getById($a->getLoggedInUserId(), ['uid', 'nickname', 'allow_location', 'default-location']); + if (empty($user['uid'])) { + return ''; + } + DI::profiler()->startRecording('rendering'); $o = ''; + $x['allow_location'] = $x['allow_location'] ?? $user['allow_location']; + $x['default_location'] = $x['default_location'] ?? $user['default-location']; + $x['nickname'] = $x['nickname'] ?? $user['nickname']; + $x['lockstate'] = $x['lockstate'] ?? ACL::getLockstateForUserId($user['uid']) ? 'lock' : 'unlock'; + $x['acl'] = $x['acl'] ?? ACL::getFullSelectorHTML(DI::page(), $user['uid'], true); + $x['bang'] = $x['bang'] ?? ''; + $x['visitor'] = $x['visitor'] ?? 'block'; + $x['is_owner'] = $x['is_owner'] ?? true; + $x['profile_uid'] = $x['profile_uid'] ?? local_user(); + + $geotag = !empty($x['allow_location']) ? Renderer::replaceMacros(Renderer::getMarkupTemplate('jot_geotag.tpl'), []) : ''; $tpl = Renderer::getMarkupTemplate('jot-header.tpl'); @@ -1116,10 +1147,10 @@ function status_editor(App $a, $x, $notes_cid = 0, $popup = false) '$placeholdercategory' => Feature::isEnabled(local_user(), 'categories') ? DI::l10n()->t("Categories \x28comma-separated list\x29") : '', '$scheduled_at' => Temporal::getDateTimeField( new DateTime(), - DateTime::createFromFormat(DateTimeFormat::MYSQL, DateTimeFormat::local('now + 6 months')), + new DateTime('now + 6 months'), null, DI::l10n()->t('Scheduled at'), - 'scheduled_at', + 'scheduled_at' ), '$wait' => DI::l10n()->t('Please wait'), '$permset' => DI::l10n()->t('Permission settings'),