mirror of
https://github.com/friendica/friendica
synced 2025-04-26 20:30:11 +00:00
We now handling the contact type
This commit is contained in:
parent
ef5be9668f
commit
8d6aa9914c
4 changed files with 81 additions and 27 deletions
|
@ -1821,8 +1821,12 @@ class Contact extends BaseObject
|
|||
This will reliably kill your communication with old Friendica contacts.
|
||||
*/
|
||||
|
||||
// These fields aren't updated by this routine:
|
||||
// 'location', 'about', 'keywords', 'gender', 'xmpp', 'unsearchable', 'sensitive'];
|
||||
|
||||
$fields = ['avatar', 'uid', 'name', 'nick', 'url', 'addr', 'batch', 'notify',
|
||||
'poll', 'request', 'confirm', 'poco', 'network', 'alias', 'baseurl'];
|
||||
'poll', 'request', 'confirm', 'poco', 'network', 'alias', 'baseurl',
|
||||
'forum', 'prv', 'contact-type'];
|
||||
$contact = DBA::selectFirst('contact', $fields, ['id' => $id]);
|
||||
if (!DBA::isResult($contact)) {
|
||||
return false;
|
||||
|
@ -1847,13 +1851,26 @@ class Contact extends BaseObject
|
|||
return false;
|
||||
}
|
||||
|
||||
if (isset($ret['account-type'])) {
|
||||
$ret['forum'] = false;
|
||||
$ret['prv'] = false;
|
||||
$ret['contact-type'] = $ret['account-type'];
|
||||
if ($ret['contact-type'] == User::ACCOUNT_TYPE_COMMUNITY) {
|
||||
$apcontact = APContact::getByURL($ret['url'], false);
|
||||
if (isset($apcontact['manually-approve'])) {
|
||||
$ret['forum'] = (bool)!$apcontact['manually-approve'];
|
||||
$ret['prv'] = (bool)!$ret['forum'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$update = false;
|
||||
|
||||
// make sure to not overwrite existing values with blank entries
|
||||
foreach ($ret as $key => $val) {
|
||||
if (!array_key_exists($key, $contact)) {
|
||||
unset($ret[$key]);
|
||||
} elseif (($contact[$key] != '') && ($val == '')) {
|
||||
} elseif (($contact[$key] != '') && ($val == '') && !is_bool($ret[$key])) {
|
||||
$ret[$key] = $contact[$key];
|
||||
} elseif ($ret[$key] != $contact[$key]) {
|
||||
$update = true;
|
||||
|
@ -1886,6 +1903,17 @@ class Contact extends BaseObject
|
|||
return true;
|
||||
}
|
||||
|
||||
public static function updateFromProbeByURL($url, $force = false)
|
||||
{
|
||||
$id = self::getIdForURL($url);
|
||||
|
||||
if (empty($id)) {
|
||||
return;
|
||||
}
|
||||
|
||||
self::updateFromProbe($id, '', $force);
|
||||
}
|
||||
|
||||
/**
|
||||
* Detects if a given contact array belongs to a legacy DFRN connection
|
||||
*
|
||||
|
|
|
@ -913,30 +913,27 @@ class GContact
|
|||
$old_gcontact = [];
|
||||
}
|
||||
|
||||
$gcontact = $contact;
|
||||
$gcontact = [];
|
||||
|
||||
// These fields are identical in both contact and gcontact
|
||||
$fields = ['name', 'nick', 'url', 'nurl', 'location', 'about', 'keywords', 'gender',
|
||||
'contact-type', 'network', 'addr', 'notify', 'alias', 'created', 'updated'];
|
||||
|
||||
foreach ($fields as $field) {
|
||||
$gcontact[$field] = $contact[$field];
|
||||
}
|
||||
|
||||
// These fields are having different names but the same content
|
||||
$gcontact['server_url'] = $gcontact['baseurl'];
|
||||
unset($gcontact['baseurl']);
|
||||
$gcontact['nsfw'] = $gcontact['sensitive'];
|
||||
unset($gcontact['sensitive']);
|
||||
$gcontact['hide'] = $gcontact['unsearchable'];
|
||||
unset($gcontact['unsearchable']);
|
||||
$gcontact['archived'] = $gcontact['archive'];
|
||||
unset($gcontact['archive']);
|
||||
$gcontact['archive_date'] = $gcontact['term-date'];
|
||||
unset($gcontact['term-date']);
|
||||
$gcontact['birthday'] = $gcontact['bd'];
|
||||
unset($gcontact['bd']);
|
||||
$gcontact['photo'] = $gcontact['avatar'];
|
||||
unset($gcontact['avatar']);
|
||||
$gcontact['last_contact'] = $gcontact['success_update'];
|
||||
unset($gcontact['success_update']);
|
||||
$gcontact['last_failure'] = $gcontact['failure_update'];
|
||||
unset($gcontact['failure_update']);
|
||||
$gcontact['community'] = ($gcontact['forum'] || $gcontact['prv']);
|
||||
unset($gcontact['forum']);
|
||||
unset($gcontact['prv']);
|
||||
$gcontact['server_url'] = $contact['baseurl'];
|
||||
$gcontact['nsfw'] = $contact['sensitive'];
|
||||
$gcontact['hide'] = $contact['unsearchable'];
|
||||
$gcontact['archived'] = $contact['archive'];
|
||||
$gcontact['archive_date'] = $contact['term-date'];
|
||||
$gcontact['birthday'] = $contact['bd'];
|
||||
$gcontact['photo'] = $contact['avatar'];
|
||||
$gcontact['last_contact'] = $contact['success_update'];
|
||||
$gcontact['last_failure'] = $contact['failure_update'];
|
||||
$gcontact['community'] = ($contact['forum'] || $contact['prv']);
|
||||
|
||||
foreach (['last_contact', 'last_failure', 'updated'] as $field) {
|
||||
if (!empty($old_gcontact[$field]) && ($old_gcontact[$field] >= $gcontact[$field])) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue