X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FContact.php;h=0bd5d06f68ddde8115c8af351bc602f207d745fa;hb=a785d8c2f9a95b933c8a81566331874e47926dd5;hp=d184dacdbfaa0ec79f9028261d605e9e1f52ed04;hpb=30113dd6efe9f08715b69279295fa2a483e3f545;p=friendica.git diff --git a/src/Model/Contact.php b/src/Model/Contact.php index d184dacdbf..0bd5d06f68 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -167,35 +167,41 @@ class Contact extends BaseObject return; } - $avatar = dba::selectFirst('photo', ['resource-id', 'type'], ['uid' => $uid, 'profile' => true]); - $fields = ['name' => $profile['name'], 'nick' => $user['nickname'], 'avatar-date' => $self['avatar-date'], 'location' => Profile::formatLocation($profile), 'about' => $profile['about'], 'keywords' => $profile['pub_keywords'], 'gender' => $profile['gender'], 'avatar' => $profile['photo'], 'contact-type' => $user['account-type'], 'xmpp' => $profile['xmpp']]; - if ($update_avatar) { - $fields['avatar-date'] = DateTimeFormat::utcNow(); - } + $avatar = dba::selectFirst('photo', ['resource-id', 'type'], ['uid' => $uid, 'profile' => true]); + if (DBM::is_result($avatar)) { + if ($update_avatar) { + $fields['avatar-date'] = DateTimeFormat::utcNow(); + } - // Creating the path to the avatar, beginning with the file suffix - $types = Image::supportedTypes(); - if (isset($types[$avatar['type']])) { - $file_suffix = $types[$avatar['type']]; - } else { - $file_suffix = 'jpg'; - } + // Creating the path to the avatar, beginning with the file suffix + $types = Image::supportedTypes(); + if (isset($types[$avatar['type']])) { + $file_suffix = $types[$avatar['type']]; + } else { + $file_suffix = 'jpg'; + } - // We are adding a timestamp value so that other systems won't use cached content - $timestamp = strtotime($fields['avatar-date']); + // We are adding a timestamp value so that other systems won't use cached content + $timestamp = strtotime($fields['avatar-date']); - $prefix = System::baseUrl() . '/photo/' .$avatar['resource-id'] . '-'; - $suffix = '.' . $file_suffix . '?ts=' . $timestamp; + $prefix = System::baseUrl() . '/photo/' .$avatar['resource-id'] . '-'; + $suffix = '.' . $file_suffix . '?ts=' . $timestamp; - $fields['photo'] = $prefix . '4' . $suffix; - $fields['thumb'] = $prefix . '5' . $suffix; - $fields['micro'] = $prefix . '6' . $suffix; + $fields['photo'] = $prefix . '4' . $suffix; + $fields['thumb'] = $prefix . '5' . $suffix; + $fields['micro'] = $prefix . '6' . $suffix; + } else { + // We hadn't found a photo entry, so we use the default avatar + $fields['photo'] = System::baseUrl() . '/images/person-175.jpg'; + $fields['thumb'] = System::baseUrl() . '/images/person-80.jpg'; + $fields['micro'] = System::baseUrl() . '/images/person-48.jpg'; + } $fields['forum'] = $user['page-flags'] == PAGE_COMMUNITY; $fields['prv'] = $user['page-flags'] == PAGE_PRVGROUP; @@ -214,6 +220,11 @@ class Contact extends BaseObject // Update the public contact as well dba::update('contact', $fields, ['uid' => 0, 'nurl' => $self['nurl']]); + + // Update the profile + $fields = ['photo' => System::baseUrl() . '/photo/profile/' .$uid . '.jpg', + 'thumb' => System::baseUrl() . '/photo/avatar/' . $uid .'.jpg']; + dba::update('profile', $fields, ['uid' => $uid, 'is-default' => true]); } } @@ -300,7 +311,9 @@ class Contact extends BaseObject */ /// @todo Check for contact vitality via probing - $expiry = $contact['term-date'] . ' + 32 days '; + $archival_days = Config::get('system', 'archival_days', 32); + + $expiry = $contact['term-date'] . ' + ' . $archival_days . ' days '; if (DateTimeFormat::utcNow() > DateTimeFormat::utc($expiry)) { /* Relationship is really truly dead. archive them rather than * delete, though if the owner tries to unarchive them we'll start @@ -337,9 +350,14 @@ class Contact extends BaseObject $fields = ['term-date' => NULL_DATE, 'archive' => false]; dba::update('contact', $fields, ['id' => $contact['id']]); - if ($contact['url'] != '') { + if (!empty($contact['url'])) { dba::update('contact', $fields, ['nurl' => normalise_link($contact['url'])]); } + + if (!empty($contact['batch'])) { + $condition = ['batch' => $contact['batch'], 'contact-type' => ACCOUNT_TYPE_RELAY]; + dba::update('contact', $fields, $condition); + } } /** @@ -405,7 +423,7 @@ class Contact extends BaseObject // Fetch the data from the gcontact table if (!DBM::is_result($r)) { $s = dba::p("SELECT 0 AS `id`, 0 AS `cid`, `id` AS `gid`, 0 AS `zid`, 0 AS `uid`, `url`, `nurl`, `alias`, `network`, `name`, `nick`, `addr`, `location`, `about`, '' AS `xmpp`, - `keywords`, `gender`, `photo`, `photo` AS `thumb`, `photo` AS `micro`, `community` AS `forum`, 0 AS `prv`, `community`, `contact-type`, `birthday`, 0 AS `self` + `keywords`, `gender`, `photo`, `photo` AS `thumb`, `photo` AS `micro`, 0 AS `forum`, 0 AS `prv`, `community`, `contact-type`, `birthday`, 0 AS `self` FROM `gcontact` WHERE `nurl` = ?", normalise_link($url)); $r = dba::inArray($s); } @@ -1464,6 +1482,11 @@ class Contact extends BaseObject } // send email notification to owner? } else { + if (dba::exists('contact', ['nurl' => normalise_link($url), 'uid' => $importer['uid'], 'pending' => true])) { + logger('ignoring duplicated connection request from pending contact ' . $url); + return; + } + // create contact record q("INSERT INTO `contact` (`uid`, `created`, `url`, `nurl`, `name`, `nick`, `photo`, `network`, `rel`, `blocked`, `readonly`, `pending`, `writable`)