X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FContact.php;h=a70db02345c681c77e46055e67c8ef870f96821d;hb=53aba7b37e019d4093d0985e394d393ae77ef0df;hp=e8c9d2241a43a0577c7da637cbcb7dfa20a2c9a9;hpb=20374ab5a26c0acf1d5452343d7b6f9e11a65d6a;p=friendica.git diff --git a/src/Module/Contact.php b/src/Module/Contact.php index e8c9d2241a..a70db02345 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -1,6 +1,6 @@ 0) { DI::sysmsg()->addInfo(DI::l10n()->tt('%d contact edited.', '%d contacts edited.', $count_actions)); @@ -129,7 +137,11 @@ class Contact extends BaseModule // pull feed and consume it, which should subscribe to the hub. Worker::add(Worker::PRIORITY_HIGH, 'OnePoll', $contact_id, 'force'); } else { - Worker::add(Worker::PRIORITY_HIGH, 'UpdateContact', $contact_id); + try { + UpdateContact::add(Worker::PRIORITY_HIGH, $contact_id); + } catch (\InvalidArgumentException $e) { + Logger::notice($e->getMessage(), ['contact' => $contact, 'callstack' => System::callstack()]); + } } } @@ -158,6 +170,18 @@ class Contact extends BaseModule Model\Contact\User::setIgnored($contact_id, DI::userSession()->getLocalUserId(), $ignored); } + /** + * Toggles the collapsed status of a contact identified by id. + * + * @param int $contact_id Id of the contact with uid = 0 + * @throws \Exception + */ + private static function toggleCollapseContact(int $contact_id) + { + $collapsed = !Model\Contact\User::isCollapsed($contact_id, DI::userSession()->getLocalUserId()); + Model\Contact\User::setCollapsed($contact_id, DI::userSession()->getLocalUserId(), $collapsed); + } + protected function content(array $request = []): string { if (!DI::userSession()->getLocalUserId()) { @@ -196,7 +220,6 @@ class Contact extends BaseModule $tpl = Renderer::getMarkupTemplate('contacts-head.tpl'); DI::page()['htmlhead'] .= Renderer::replaceMacros($tpl, [ - '$baseurl' => DI::baseUrl()->get(true), ]); $o = ''; @@ -223,6 +246,11 @@ class Contact extends BaseModule // This makes the query look for contact.uid = 0 array_unshift($sql_values, 0); break; + case 'collapsed': + $sql_extra = " AND `id` IN (SELECT `cid` FROM `user-contact` WHERE `user-contact`.`uid` = ? AND `user-contact`.`collapsed`)"; + // This makes the query look for contact.uid = 0 + array_unshift($sql_values, 0); + break; case 'archived': $sql_extra = " AND `archive` AND NOT `blocked` AND NOT `pending`"; break; @@ -338,6 +366,14 @@ class Contact extends BaseModule 'id' => 'showignored-tab', 'accesskey' => 'i', ], + [ + 'label' => DI::l10n()->t('Collapsed'), + 'url' => 'contact/collapsed', + 'sel' => $type == 'collapsed' ? 'active' : '', + 'title' => DI::l10n()->t('Only show collapsed contacts'), + 'id' => 'showcollapsed-tab', + 'accesskey' => 'c', + ], [ 'label' => DI::l10n()->t('Archived'), 'url' => 'contact/archived', @@ -375,11 +411,12 @@ class Contact extends BaseModule } switch ($type) { - case 'pending': $header .= ' - ' . DI::l10n()->t('Pending'); break; - case 'blocked': $header .= ' - ' . DI::l10n()->t('Blocked'); break; - case 'hidden': $header .= ' - ' . DI::l10n()->t('Hidden'); break; - case 'ignored': $header .= ' - ' . DI::l10n()->t('Ignored'); break; - case 'archived': $header .= ' - ' . DI::l10n()->t('Archived'); break; + case 'pending': $header .= ' - ' . DI::l10n()->t('Pending'); break; + case 'blocked': $header .= ' - ' . DI::l10n()->t('Blocked'); break; + case 'hidden': $header .= ' - ' . DI::l10n()->t('Hidden'); break; + case 'ignored': $header .= ' - ' . DI::l10n()->t('Ignored'); break; + case 'collapsed': $header .= ' - ' . DI::l10n()->t('Collapsed'); break; + case 'archived': $header .= ' - ' . DI::l10n()->t('Archived'); break; } $header .= $nets ? ' - ' . ContactSelector::networkToName($nets) : ''; @@ -398,9 +435,10 @@ class Contact extends BaseModule '$form_security_token' => BaseModule::getFormSecurityToken('contact_batch_actions'), 'multiselect' => 1, '$batch_actions' => [ - 'contacts_batch_update' => DI::l10n()->t('Update'), - 'contacts_batch_block' => DI::l10n()->t('Block') . '/' . DI::l10n()->t('Unblock'), - 'contacts_batch_ignore' => DI::l10n()->t('Ignore') . '/' . DI::l10n()->t('Unignore'), + 'contacts_batch_update' => DI::l10n()->t('Update'), + 'contacts_batch_block' => DI::l10n()->t('Block') . '/' . DI::l10n()->t('Unblock'), + 'contacts_batch_ignore' => DI::l10n()->t('Ignore') . '/' . DI::l10n()->t('Unignore'), + 'contacts_batch_collapse' => DI::l10n()->t('Collapse') . '/' . DI::l10n()->t('Uncollapse'), ], '$h_batch_actions' => DI::l10n()->t('Batch Actions'), '$paginate' => $pager->renderFull($total), @@ -412,7 +450,7 @@ class Contact extends BaseModule /** * List of pages for the Contact TabBar * - * Available Pages are 'Status', 'Profile', 'Contacts' and 'Common Friends' + * Available Pages are 'Conversations', 'Profile', 'Contacts' and 'Common Friends' * * @param array $contact The contact array * @param int $active_tab 1 if tab should be marked as active @@ -434,7 +472,15 @@ class Contact extends BaseModule // tabs $tabs = [ [ - 'label' => DI::l10n()->t('Status'), + 'label' => DI::l10n()->t('Profile'), + 'url' => 'contact/' . $cid, + 'sel' => (($active_tab == self::TAB_PROFILE) ? 'active' : ''), + 'title' => DI::l10n()->t('Profile Details'), + 'id' => 'profile-tab', + 'accesskey' => 'o', + ], + [ + 'label' => DI::l10n()->t('Conversations'), 'url' => 'contact/' . $pcid . '/conversations', 'sel' => (($active_tab == self::TAB_CONVERSATIONS) ? 'active' : ''), 'title' => DI::l10n()->t('Conversations started by this contact'), @@ -445,7 +491,7 @@ class Contact extends BaseModule 'label' => DI::l10n()->t('Posts and Comments'), 'url' => 'contact/' . $pcid . '/posts', 'sel' => (($active_tab == self::TAB_POSTS) ? 'active' : ''), - 'title' => DI::l10n()->t('Status Messages and Posts'), + 'title' => DI::l10n()->t('Individual Posts and Replies'), 'id' => 'posts-tab', 'accesskey' => 'p', ], @@ -457,14 +503,6 @@ class Contact extends BaseModule 'id' => 'media-tab', 'accesskey' => 'd', ], - [ - 'label' => DI::l10n()->t('Profile'), - 'url' => 'contact/' . $cid, - 'sel' => (($active_tab == self::TAB_PROFILE) ? 'active' : ''), - 'title' => DI::l10n()->t('Profile Details'), - 'id' => 'profile-tab', - 'accesskey' => 'o', - ], ['label' => DI::l10n()->t('Contacts'), 'url' => 'contact/' . $pcid . '/contacts', 'sel' => (($active_tab == self::TAB_CONTACTS) ? 'active' : ''),