<?php
/**
- * @copyright Copyright (C) 2010-2022, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Contact;
-use Friendica\Model\Group;
+use Friendica\Model\Circle;
use Friendica\Module;
use Friendica\Module\Response;
use Friendica\Network\HTTPException;
DI::sysmsg()->addInfo($message);
}
+ if ($cmd === 'collapse') {
+ if ($localRelationship->collapsed) {
+ // @TODO Backward compatibility, replace with $localRelationship->unblock()
+ Contact\User::setCollapsed($contact['id'], DI::userSession()->getLocalUserId(), false);
+
+ $message = $this->t('Contact has been uncollapsed');
+ } else {
+ // @TODO Backward compatibility, replace with $localRelationship->block()
+ Contact\User::setCollapsed($contact['id'], DI::userSession()->getLocalUserId(), true);
+ $message = $this->t('Contact has been collapsed');
+ }
+
+ // @TODO: add $this->localRelationship->save($localRelationship);
+ DI::sysmsg()->addInfo($message);
+ }
+
$this->baseUrl->redirect('contact/' . $contact['id']);
}
$vcard_widget = Widget\VCard::getHTML($contact);
- $groups_widget = '';
+ $circles_widget = '';
if (!in_array($localRelationship->rel, [Contact::NOTHING, Contact::SELF])) {
- $groups_widget = Group::sidebarWidget('contact', 'group', 'full', 'everyone', $data['user']);
+ $circles_widget = Circle::sidebarWidget('contact', 'circle', 'full', 'everyone', $data['user']);
}
- $this->page['aside'] .= $vcard_widget . $groups_widget;
+ $this->page['aside'] .= $vcard_widget . $circles_widget;
$o = '';
Nav::setSelected('contact');
$_SESSION['return_path'] = $this->args->getQueryString();
$this->page['htmlhead'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('contact_head.tpl'), [
- '$baseurl' => $this->baseUrl->get(true),
]);
- $contact['blocked'] = Contact\User::isBlocked($contact['id'], DI::userSession()->getLocalUserId());
- $contact['readonly'] = Contact\User::isIgnored($contact['id'], DI::userSession()->getLocalUserId());
-
switch ($localRelationship->rel) {
case Contact::FRIEND: $relation_text = $this->t('You are mutual friends with %s', $contact['name']); break;
case Contact::FOLLOWER: $relation_text = $this->t('You are sharing with %s', $contact['name']); break;
$relation_text = '';
}
- if (!in_array($contact['network'], array_merge(Protocol::FEDERATED, [Protocol::TWITTER]))) {
+ if (!Protocol::supportsFollow($contact['network'])) {
$relation_text = '';
}
$localRelationship->fetchFurtherInformation,
$this->t('Fetch information like preview pictures, title and teaser from the feed item. You can activate this if the feed doesn\'t contain much text. Keywords are taken from the meta header in the feed item and are posted as hash tags.'),
[
- '0' => $this->t('Disabled'),
- '1' => $this->t('Fetch information'),
- '3' => $this->t('Fetch keywords'),
- '2' => $this->t('Fetch information and keywords')
+ Entity\LocalRelationship::FFI_NONE => $this->t('Disabled'),
+ Entity\LocalRelationship::FFI_INFORMATION => $this->t('Fetch information'),
+ Entity\LocalRelationship::FFI_KEYWORD => $this->t('Fetch keywords'),
+ Entity\LocalRelationship::FFI_BOTH => $this->t('Fetch information and keywords')
]
];
}
if ($contact['network'] == Protocol::FEED) {
$remote_self_options = [
Contact::MIRROR_DEACTIVATED => $this->t('No mirroring'),
- Contact::MIRROR_FORWARDED => $this->t('Mirror as forwarded posting'),
Contact::MIRROR_OWN_POST => $this->t('Mirror as my own posting')
];
} elseif ($contact['network'] == Protocol::ACTIVITYPUB) {
'$submit' => $this->t('Submit'),
'$lbl_info1' => $lbl_info1,
'$lbl_info2' => $this->t('Their personal note'),
- '$reason' => trim($contact['reason']),
+ '$reason' => trim($contact['reason'] ?? ''),
'$infedit' => $this->t('Edit contact notes'),
'$common_link' => 'contact/' . $contact['id'] . '/contacts/common',
'$relation_text' => $relation_text,
'$last_update' => $last_update,
'$udnow' => $this->t('Update now'),
'$contact_id' => $contact['id'],
- '$block_text' => ($contact['blocked'] ? $this->t('Unblock') : $this->t('Block')),
- '$ignore_text' => ($contact['readonly'] ? $this->t('Unignore') : $this->t('Ignore')),
+ '$pending' => $localRelationship->pending ? $this->t('Awaiting connection acknowledge') : '',
+ '$blocked' => $localRelationship->blocked ? $this->t('Currently blocked') : '',
+ '$ignored' => $localRelationship->ignored ? $this->t('Currently ignored') : '',
+ '$collapsed' => $localRelationship->collapsed ? $this->t('Currently collapsed') : '',
+ '$archived' => ($contact['archive'] ? $this->t('Currently archived') : ''),
'$insecure' => (in_array($contact['network'], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::MAIL, Protocol::DIASPORA]) ? '' : $insecure),
- '$info' => $localRelationship->info,
'$cinfo' => ['info', '', $localRelationship->info, ''],
- '$blocked' => ($contact['blocked'] ? $this->t('Currently blocked') : ''),
- '$ignored' => ($contact['readonly'] ? $this->t('Currently ignored') : ''),
- '$archived' => ($contact['archive'] ? $this->t('Currently archived') : ''),
- '$pending' => ($contact['pending'] ? $this->t('Awaiting connection acknowledge') : ''),
'$hidden' => ['hidden', $this->t('Hide this contact from others'), $localRelationship->hidden, $this->t('Replies/likes to your public posts <strong>may</strong> still be visible')],
'$notify_new_posts' => ['notify_new_posts', $this->t('Notification for new posts'), ($localRelationship->notifyNewPosts), $this->t('Send a notification of every new post of this contact')],
'$fetch_further_information' => $fetch_further_information,
'$remote_self' => [
'remote_self',
$this->t('Mirror postings from this contact'),
- $localRelationship->isRemoteSelf,
+ $localRelationship->remoteSelf,
$this->t('Mark this contact as remote_self, this will cause friendica to repost new entries from this contact.'),
$remote_self_options
],
];
}
- if (in_array($contact['network'], Protocol::NATIVE_SUPPORT)) {
+ if (Protocol::supportsProbe($contact['network'])) {
$contact_actions['updateprofile'] = [
'label' => $this->t('Refetch contact data'),
'url' => 'contact/' . $contact['id'] . '/updateprofile?t=' . $formSecurityToken,
'id' => 'toggle-ignore',
];
+ $contact_actions['collapse'] = [
+ 'label' => $localRelationship->collapsed ? $this->t('Uncollapse') : $this->t('Collapse'),
+ 'url' => 'contact/' . $contact['id'] . '/collapse?t=' . $formSecurityToken,
+ 'title' => $this->t('Toggle Collapsed status'),
+ 'sel' => $localRelationship->collapsed ? 'active' : '',
+ 'id' => 'toggle-collapse',
+ ];
+
if (Protocol::supportsRevokeFollow($contact['network']) && in_array($localRelationship->rel, [Contact::FOLLOWER, Contact::FRIEND])) {
$contact_actions['revoke_follow'] = [
'label' => $this->t('Revoke Follow'),