]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Contact.php
[frio] Fix event time display
[friendica.git] / src / Module / Contact.php
index ca895c5f4bd119616bf024697033dc3392a9b895..4aebc4c93acf9d84435ed11be9d2dfbbd3d141f4 100644 (file)
@@ -52,6 +52,7 @@ class Contact extends BaseModule
        const TAB_PROFILE = 3;
        const TAB_CONTACTS = 4;
        const TAB_ADVANCED = 5;
+       const TAB_MEDIA = 6;
 
        private static function batchActions()
        {
@@ -68,7 +69,8 @@ class Contact extends BaseModule
                $count_actions = 0;
                foreach ($orig_records as $orig_record) {
                        $cdata = Model\Contact::getPublicAndUserContactID($orig_record['id'], local_user());
-                       if (empty($cdata)) {
+                       if (empty($cdata) || public_contact() === $cdata['public']) {
+                               // No action available on your own contact
                                continue;
                        }
 
@@ -78,7 +80,7 @@ class Contact extends BaseModule
                        }
 
                        if (!empty($_POST['contacts_batch_block'])) {
-                               self::toggleBlockContact($cdata['public']);
+                               self::toggleBlockContact($cdata['public'], local_user());
                                $count_actions++;
                        }
 
@@ -86,12 +88,6 @@ class Contact extends BaseModule
                                self::toggleIgnoreContact($cdata['public']);
                                $count_actions++;
                        }
-
-                       if (!empty($_POST['contacts_batch_drop']) && $cdata['user']
-                               && self::dropContact($cdata['user'], local_user())
-                       ) {
-                               $count_actions++;
-                       }
                }
                if ($count_actions > 0) {
                        info(DI::l10n()->tt('%d contact edited.', '%d contacts edited.', $count_actions));
@@ -143,7 +139,7 @@ class Contact extends BaseModule
 
                $info = Strings::escapeHtml(trim($_POST['info'] ?? ''));
 
-               $r = DBA::update('contact', [
+               $r = Model\Contact::update([
                        'priority'   => $priority,
                        'info'       => $info,
                        'hidden'     => $hidden,
@@ -179,7 +175,7 @@ class Contact extends BaseModule
                        $result = Model\Contact::createFromProbeForUser($contact['uid'], $contact['url'], $contact['network']);
 
                        if ($result['success']) {
-                               DBA::update('contact', ['subhub' => 1], ['id' => $contact_id]);
+                               Model\Contact::update(['subhub' => 1], ['id' => $contact_id]);
                        }
 
                        // pull feed and consume it, which should subscribe to the hub.
@@ -209,12 +205,13 @@ class Contact extends BaseModule
         * Toggles the blocked status of a contact identified by id.
         *
         * @param int $contact_id Id of the contact with uid = 0
+        * @param int $owner_id   Id of the user we want to block the contact for
         * @throws \Exception
         */
-       private static function toggleBlockContact(int $contact_id)
+       private static function toggleBlockContact(int $contact_id, int $owner_id)
        {
-               $blocked = !Model\Contact\User::isBlocked($contact_id, local_user());
-               Model\Contact\User::setBlocked($contact_id, local_user(), $blocked);
+               $blocked = !Model\Contact\User::isBlocked($contact_id, $owner_id);
+               Model\Contact\User::setBlocked($contact_id, $owner_id, $blocked);
        }
 
        /**
@@ -229,31 +226,6 @@ class Contact extends BaseModule
                Model\Contact\User::setIgnored($contact_id, local_user(), $ignored);
        }
 
-       /**
-        * @param int $contact_id Id for contact with uid != 0
-        * @param int $uid        Id for user we want to drop the contact for
-        * @return bool
-        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
-        * @throws \ImagickException
-        */
-       private static function dropContact(int $contact_id, int $uid): bool
-       {
-               $contact = Model\Contact::getContactForUser($contact_id, $uid);
-               if (!DBA::isResult($contact)) {
-                       return false;
-               }
-
-               $owner = Model\User::getOwnerDataById($uid);
-               if (!DBA::isResult($owner)) {
-                       return false;
-               }
-
-               Model\Contact::terminateFriendship($owner, $contact, true);
-               Model\Contact::remove($contact['id']);
-
-               return true;
-       }
-
        public static function content(array $parameters = [], $update = 0)
        {
                if (!local_user()) {
@@ -372,7 +344,7 @@ class Contact extends BaseModule
                        }
 
                        if ($cmd === 'posts') {
-                               return self::getPostsHTML($a, $contact_id);
+                               return self::getPostsHTML($contact_id);
                        }
 
                        if ($cmd === 'conversations') {
@@ -403,7 +375,7 @@ class Contact extends BaseModule
                                        throw new BadRequestException(DI::l10n()->t('You can\'t block yourself'));
                                }
 
-                               self::toggleBlockContact($cdata['public']);
+                               self::toggleBlockContact($cdata['public'], local_user());
 
                                $blocked = Model\Contact\User::isBlocked($contact_id, local_user());
                                info(($blocked ? DI::l10n()->t('Contact has been blocked') : DI::l10n()->t('Contact has been unblocked')));
@@ -425,36 +397,6 @@ class Contact extends BaseModule
                                DI::baseUrl()->redirect('contact/' . $cdata['public']);
                                // NOTREACHED
                        }
-
-                       if ($cmd === 'drop' && $cdata['user']) {
-                               // Check if we should do HTML-based delete confirmation
-                               if (!empty($_REQUEST['confirm'])) {
-                                       DI::page()['aside'] = '';
-
-                                       return Renderer::replaceMacros(Renderer::getMarkupTemplate('contact_drop_confirm.tpl'), [
-                                               '$header' => DI::l10n()->t('Drop contact'),
-                                               '$contact' => self::getContactTemplateVars($orig_record),
-                                               '$method' => 'get',
-                                               '$message' => DI::l10n()->t('Do you really want to delete this contact?'),
-                                               '$confirm' => DI::l10n()->t('Yes'),
-                                               '$confirm_url' => DI::args()->getCommand(),
-                                               '$confirm_name' => 't',
-                                               '$confirm_value' => BaseModule::getFormSecurityToken('contact_action'),
-                                               '$cancel' => DI::l10n()->t('Cancel'),
-                                       ]);
-                               }
-                               // Now check how the user responded to the confirmation query
-                               if (!empty($_REQUEST['canceled'])) {
-                                       DI::baseUrl()->redirect('contact');
-                               }
-
-                               if (self::dropContact($cdata['user'], local_user())) {
-                                       info(DI::l10n()->t('Contact has been removed.'));
-                               }
-
-                               DI::baseUrl()->redirect('contact');
-                               // NOTREACHED
-                       }
                }
 
                $_SESSION['return_path'] = DI::args()->getQueryString();
@@ -856,13 +798,11 @@ class Contact extends BaseModule
                        '$cmd'        => DI::args()->getCommand(),
                        '$contacts'   => $contacts,
                        '$form_security_token'  => BaseModule::getFormSecurityToken('contact_batch_actions'),
-                       '$contact_drop_confirm' => DI::l10n()->t('Do you really want to delete this contact?'),
                        '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_drop'    => DI::l10n()->t('Delete'),
                        ],
                        '$h_batch_actions' => DI::l10n()->t('Batch Actions'),
                        '$paginate'   => $pager->renderFull($total),
@@ -911,6 +851,14 @@ class Contact extends BaseModule
                                'id'    => 'posts-tab',
                                'accesskey' => 'p',
                        ],
+                       [
+                               'label' => DI::l10n()->t('Media'),
+                               'url'   => 'contact/' . $pcid . '/media',
+                               'sel'   => (($active_tab == self::TAB_MEDIA) ? 'active' : ''),
+                               'title' => DI::l10n()->t('Posts containing media objects'),
+                               'id'    => 'media-tab',
+                               'accesskey' => 'd',
+                       ],
                        [
                                'label' => DI::l10n()->t('Profile'),
                                'url'   => 'contact/' . $cid,
@@ -979,7 +927,7 @@ class Contact extends BaseModule
                return $o;
        }
 
-       private static function getPostsHTML($a, $contact_id)
+       private static function getPostsHTML(int $contact_id)
        {
                $contact = DBA::selectFirst('contact', ['uid', 'url', 'id'], ['id' => $contact_id, 'deleted' => false]);
 
@@ -1145,13 +1093,13 @@ class Contact extends BaseModule
                        'id'    => 'toggle-ignore',
                ];
 
-               if ($contact['uid'] != 0) {
-                       $contact_actions['delete'] = [
-                               'label' => DI::l10n()->t('Delete'),
-                               'url'   => 'contact/' . $contact['id'] . '/drop?t=' . $formSecurityToken,
-                               'title' => DI::l10n()->t('Delete contact'),
+               if ($contact['uid'] != 0 && Protocol::supportsRevokeFollow($contact['network']) && in_array($contact['rel'], [Model\Contact::FOLLOWER, Model\Contact::FRIEND])) {
+                       $contact_actions['revoke_follow'] = [
+                               'label' => DI::l10n()->t('Revoke Follow'),
+                               'url'   => 'contact/' . $contact['id'] . '/revoke',
+                               'title' => DI::l10n()->t('Revoke the follow from this contact'),
                                'sel'   => '',
-                               'id'    => 'delete',
+                               'id'    => 'revoke_follow',
                        ];
                }