X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FContact.php;h=3eb261d0d524ee31d20b852cff160d3bca036b4d;hb=1792046a4f270f15d904d591c1e9eb0444ff2349;hp=8a7be5c893741d31b332e6987588ecfe992a64a8;hpb=e3cf708dd819ffabe53fb299cad5cb76b24aaf5c;p=friendica.git diff --git a/src/Module/Contact.php b/src/Module/Contact.php index 8a7be5c893..3eb261d0d5 100644 --- a/src/Module/Contact.php +++ b/src/Module/Contact.php @@ -21,7 +21,6 @@ namespace Friendica\Module; -use Friendica\App; use Friendica\BaseModule; use Friendica\Content\ContactSelector; use Friendica\Content\Nav; @@ -132,6 +131,8 @@ class Contact extends BaseModule $fetch_further_information = intval($_POST['fetch_further_information'] ?? 0); + $remote_self = $_POST['remote_self'] ?? false; + $ffi_keyword_denylist = Strings::escapeHtml(trim($_POST['ffi_keyword_denylist'] ?? '')); $priority = intval($_POST['poll'] ?? 0); @@ -147,6 +148,7 @@ class Contact extends BaseModule 'hidden' => $hidden, 'notify_new_posts' => $notify, 'fetch_further_information' => $fetch_further_information, + 'remote_self' => $remote_self, 'ffi_keyword_denylist' => $ffi_keyword_denylist], ['id' => $contact_id, 'uid' => local_user()] ); @@ -179,9 +181,11 @@ class Contact extends BaseModule if ($result['success']) { DBA::update('contact', ['subhub' => 1], ['id' => $contact_id]); } - } else { + // pull feed and consume it, which should subscribe to the hub. Worker::add(PRIORITY_HIGH, 'OnePoll', $contact_id, 'force'); + } else { + Worker::add(PRIORITY_HIGH, 'UpdateContact', $contact_id); } } @@ -314,9 +318,9 @@ class Contact extends BaseModule $unfollow_link = ''; if (in_array($contact['network'], Protocol::NATIVE_SUPPORT)) { if ($contact['uid'] && in_array($contact['rel'], [Model\Contact::SHARING, Model\Contact::FRIEND])) { - $unfollow_link = 'unfollow?url=' . urlencode($contact['url']); + $unfollow_link = 'unfollow?url=' . urlencode($contact['url']) . '&auto=1'; } elseif(!$contact['pending']) { - $follow_link = 'follow?url=' . urlencode($contact['url']); + $follow_link = 'follow?url=' . urlencode($contact['url']) . '&auto=1'; } } @@ -514,7 +518,7 @@ class Contact extends BaseModule $relation_text = sprintf($relation_text, $contact['name']); - $url = Model\Contact::magicLink($contact['url']); + $url = Model\Contact::magicLinkByContact($contact); if (strpos($url, 'redir/') === 0) { $sparkle = ' class="sparkle" '; } else { @@ -526,7 +530,7 @@ class Contact extends BaseModule $last_update = (($contact['last-update'] <= DBA::NULL_DATETIME) ? DI::l10n()->t('Never') : DateTimeFormat::local($contact['last-update'], 'D, j M Y, g:i A')); if ($contact['last-update'] > DBA::NULL_DATETIME) { - $last_update .= ' ' . (($contact['last-update'] <= $contact['success_update']) ? DI::l10n()->t('(Update was successful)') : DI::l10n()->t('(Update was not successful)')); + $last_update .= ' ' . ($contact['failed'] ? DI::l10n()->t('(Update was not successful)') : DI::l10n()->t('(Update was successful)')); } $lblsuggest = (($contact['network'] === Protocol::DFRN) ? DI::l10n()->t('Suggest friends') : ''); @@ -555,6 +559,28 @@ class Contact extends BaseModule ]; } + // Disable remote self for everything except feeds. + // There is an issue when you repeat an item from maybe twitter and you got comments from friendica and twitter + // Problem is, you couldn't reply to both networks. + $allow_remote_self = in_array($contact['network'], [Protocol::ACTIVITYPUB, Protocol::FEED, Protocol::DFRN, Protocol::DIASPORA, Protocol::TWITTER]) + && DI::config()->get('system', 'allow_users_remote_self'); + + if ($contact['network'] == Protocol::FEED) { + $remote_self_options = [Model\Contact::MIRROR_DEACTIVATED => DI::l10n()->t('No mirroring'), + Model\Contact::MIRROR_FORWARDED => DI::l10n()->t('Mirror as forwarded posting'), + Model\Contact::MIRROR_OWN_POST => DI::l10n()->t('Mirror as my own posting')]; + } elseif (in_array($contact['network'], [Protocol::ACTIVITYPUB])) { + $remote_self_options = [Model\Contact::MIRROR_DEACTIVATED => DI::l10n()->t('No mirroring'), + Model\Contact::MIRROR_NATIVE_RESHARE => DI::l10n()->t('Native reshare')]; + } elseif (in_array($contact['network'], [Protocol::DFRN])) { + $remote_self_options = [Model\Contact::MIRROR_DEACTIVATED => DI::l10n()->t('No mirroring'), + Model\Contact::MIRROR_OWN_POST => DI::l10n()->t('Mirror as my own posting'), + Model\Contact::MIRROR_NATIVE_RESHARE => DI::l10n()->t('Native reshare')]; + } else { + $remote_self_options = [Model\Contact::MIRROR_DEACTIVATED => DI::l10n()->t('No mirroring'), + Model\Contact::MIRROR_OWN_POST => DI::l10n()->t('Mirror as my own posting')]; + } + $poll_interval = null; if ((($contact['network'] == Protocol::FEED) && !DI::config()->get('system', 'adjust_poll_frequency')) || ($contact['network']== Protocol::MAIL)) { $poll_interval = ContactSelector::pollInterval($contact['priority'], !$poll_enabled); @@ -629,6 +655,13 @@ class Contact extends BaseModule '$contact_status' => DI::l10n()->t('Status'), '$contact_settings_label' => $contact_settings_label, '$contact_profile_label' => DI::l10n()->t('Profile'), + '$allow_remote_self' => $allow_remote_self, + '$remote_self' => ['remote_self', + DI::l10n()->t('Mirror postings from this contact'), + $contact['remote_self'], + DI::l10n()->t('Mark this contact as remote_self, this will cause friendica to repost new entries from this contact.'), + $remote_self_options + ], ]); $arr = ['contact' => $contact, 'output' => $o]; @@ -658,7 +691,7 @@ class Contact extends BaseModule array_unshift($sql_values, 0); break; case 'archived': - $sql_extra = " AND (`archive` OR `failed`) AND NOT `blocked` AND NOT `pending`"; + $sql_extra = " AND `archive` AND NOT `blocked` AND NOT `pending`"; break; case 'pending': $sql_extra = " AND `pending` AND NOT `archive` AND NOT `failed` AND ((`rel` = ?) @@ -666,7 +699,7 @@ class Contact extends BaseModule $sql_values[] = Model\Contact::SHARING; break; default: - $sql_extra = " AND NOT `archive` AND NOT `blocked` AND NOT `pending` AND NOT `failed`"; + $sql_extra = " AND NOT `archive` AND NOT `blocked` AND NOT `pending`"; break; } @@ -916,7 +949,7 @@ class Contact extends BaseModule ], ]; - if ($cid != $pcid) { + if (!empty($contact['network']) && in_array($contact['network'], [Protocol::FEED, Protocol::MAIL]) && ($cid != $pcid)) { $tabs[] = ['label' => DI::l10n()->t('Advanced'), 'url' => 'contact/' . $cid . '/advanced/', 'sel' => (($active_tab == self::TAB_ADVANCED) ? 'active' : ''), @@ -1043,7 +1076,7 @@ class Contact extends BaseModule } } - $url = Model\Contact::magicLink($contact['url']); + $url = Model\Contact::magicLinkByContact($contact); if (strpos($url, 'redir/') === 0) { $sparkle = ' class="sparkle" '; @@ -1118,7 +1151,7 @@ class Contact extends BaseModule ]; } - if (in_array($contact['network'], Protocol::FEDERATED)) { + if (in_array($contact['network'], Protocol::NATIVE_SUPPORT)) { $contact_actions['updateprofile'] = [ 'label' => DI::l10n()->t('Refetch contact data'), 'url' => 'contact/' . $contact['id'] . '/updateprofile',