]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Contact.php
Remove deprecated App::getBaseURL() - process methods to DI::baseUrl()->get()
[friendica.git] / src / Model / Contact.php
index 765c44064666c208e3d60478a74b903e29b423f5..84481b9fa5c858b9d194f3657b46cd55b5502a99 100644 (file)
@@ -5,7 +5,6 @@
 namespace Friendica\Model;
 
 use Friendica\App\BaseURL;
-use Friendica\BaseObject;
 use Friendica\Content\Pager;
 use Friendica\Core\Config;
 use Friendica\Core\Hook;
@@ -16,8 +15,8 @@ use Friendica\Core\Session;
 use Friendica\Core\System;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
+use Friendica\DI;
 use Friendica\Network\Probe;
-use Friendica\Object\Image;
 use Friendica\Protocol\Activity;
 use Friendica\Protocol\ActivityPub;
 use Friendica\Protocol\DFRN;
@@ -32,7 +31,7 @@ use Friendica\Util\Strings;
 /**
  * @brief functions for interacting with a contact
  */
-class Contact extends BaseObject
+class Contact
 {
        /**
         * @deprecated since version 2019.03
@@ -406,11 +405,6 @@ class Contact extends BaseObject
                }
 
                DBA::update('user-contact', ['blocked' => $blocked], ['cid' => $cdata['public'], 'uid' => $uid], true);
-
-               if ($blocked) {
-                       // Blocked contact can't be in any group
-                       self::removeFromGroups($cid);
-               }
        }
 
        /**
@@ -1230,7 +1224,7 @@ class Contact extends BaseObject
 
                $follow_link = '';
                $unfollow_link = '';
-               if (in_array($contact['network'], Protocol::NATIVE_SUPPORT)) {
+               if (!$contact['self'] && in_array($contact['network'], Protocol::NATIVE_SUPPORT)) {
                        if ($contact['uid'] && in_array($contact['rel'], [self::SHARING, self::FRIEND])) {
                                $unfollow_link = 'unfollow?url=' . urlencode($contact['url']);
                        } elseif(!$contact['pending']) {
@@ -1457,17 +1451,27 @@ class Contact extends BaseObject
 
                if (DBA::isResult($contact)) {
                        $contact_id = $contact["id"];
+                       $update_contact = false;
 
-                       // Update the contact every 7 days
-                       if (in_array($contact['network'], Protocol::NATIVE_SUPPORT)) {
+                       // Update the contact every 7 days (Don't update mail or feed contacts)
+                       if (in_array($contact['network'], Protocol::FEDERATED)) {
                                $update_contact = ($contact['updated'] < DateTimeFormat::utc('now -7 days'));
 
                                // We force the update if the avatar is empty
                                if (empty($contact['avatar'])) {
                                        $update_contact = true;
                                }
-                       } else {
-                               $update_contact = false;
+                       } elseif (empty($default) && in_array($contact['network'], [Protocol::MAIL, Protocol::PHANTOM]) && ($uid == 0)) {
+                               // Update public mail accounts via their user's accounts
+                               $fields = ['network', 'addr', 'name', 'nick', 'avatar', 'photo', 'thumb', 'micro'];
+                               $mailcontact = DBA::selectFirst('contact', $fields, ["`addr` = ? AND `network` = ? AND `uid` != 0", $url, Protocol::MAIL]);
+                               if (!DBA::isResult($mailcontact)) {
+                                       $mailcontact = DBA::selectFirst('contact', $fields, ["`nurl` = ? AND `network` = ? AND `uid` != 0", $url, Protocol::MAIL]);
+                               }
+
+                               if (DBA::isResult($mailcontact)) {
+                                       DBA::update('contact', $mailcontact, ['id' => $contact_id]);
+                               }
                        }
 
                        // Update the contact in the background if needed but it is called by the frontend
@@ -1509,7 +1513,7 @@ class Contact extends BaseObject
                        $data = array_merge($data, $default);
                }
 
-               if (empty($data)) {
+               if (empty($data) || ($data['network'] == Protocol::PHANTOM)) {
                        return 0;
                }
 
@@ -1728,7 +1732,7 @@ class Contact extends BaseObject
         */
        public static function getPostsFromUrl($contact_url, $thread_mode = false, $update = 0)
        {
-               $a = self::getApp();
+               $a = DI::app();
 
                $cid = self::getIdForURL($contact_url);
 
@@ -1743,7 +1747,7 @@ class Contact extends BaseObject
                        $sql = "`item`.`uid` = ?";
                }
 
-               $contact_field = ($contact["contact-type"] == self::TYPE_COMMUNITY ? 'owner-id' : 'author-id');
+               $contact_field = ((($contact["contact-type"] == self::TYPE_COMMUNITY) || ($contact['network'] == Protocol::MAIL)) ? 'owner-id' : 'author-id');
 
                if ($thread_mode) {
                        $condition = ["`$contact_field` = ? AND `gravity` = ? AND " . $sql,
@@ -2262,13 +2266,13 @@ class Contact extends BaseObject
 
                if (($protocol === Protocol::DFRN) && !DBA::isResult($contact)) {
                        if ($interactive) {
-                               if (strlen($a->getURLPath())) {
+                               if (strlen(DI::baseUrl()->getUrlPath())) {
                                        $myaddr = bin2hex(System::baseUrl() . '/profile/' . $a->user['nickname']);
                                } else {
-                                       $myaddr = bin2hex($a->user['nickname'] . '@' . $a->getHostName());
+                                       $myaddr = bin2hex($a->user['nickname'] . '@' . DI::baseUrl()->getHostname());
                                }
 
-                               $a->internalRedirect($ret['request'] . "&addr=$myaddr");
+                               DI::baseUrl()->redirect($ret['request'] . "&addr=$myaddr");
 
                                // NOTREACHED
                        }
@@ -2322,7 +2326,7 @@ class Contact extends BaseObject
                        $apcontact = APContact::getByURL($url, false);
                        if (isset($apcontact['manually-approve'])) {
                                $pending = (bool)$apcontact['manually-approve'];
-                       }                       
+                       }
                }
 
                if (in_array($protocol, [Protocol::MAIL, Protocol::DIASPORA, Protocol::ACTIVITYPUB])) {