mirror of
https://github.com/friendica/friendica
synced 2025-04-26 01:10:15 +00:00
Query the same contact only once a month
This commit is contained in:
parent
9adf09be51
commit
d6905e29cf
5 changed files with 49 additions and 10 deletions
|
@ -1282,8 +1282,30 @@ class GContact
|
|||
* @param string $url URL of a profile
|
||||
* @return void
|
||||
*/
|
||||
public static function discoverFollowers(string $url)
|
||||
public static function discoverFollowers(string $url, int $following_gcid = 0, int $follower_gcid = 0)
|
||||
{
|
||||
$gcontact = DBA::selectFirst('gcontact', ['id', 'last_discovery'], ['nurl' => Strings::normaliseLink(($url))]);
|
||||
if (!DBA::isResult($gcontact)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($gcontact['last_discovery'] > DateTimeFormat::utc('now - 1 month')) {
|
||||
Logger::info('Last discovery was less then a month before.', ['url' => $url, 'discovery' => $gcontact['last_discovery']]);
|
||||
return;
|
||||
}
|
||||
|
||||
$gcid = $gcontact['id'];
|
||||
|
||||
if (!empty($following_gcid)) {
|
||||
$fields = ['gcid' => $following_gcid, 'follower-gcid' => $gcid];
|
||||
Logger::info('Set relation for followed gcontact', $fields);
|
||||
DBA::update('gfollower', ['deleted' => false], $fields, true);
|
||||
} elseif (!empty($follower_gcid)) {
|
||||
$fields = ['gcid' => $gcid, 'follower-gcid' => $follower_gcid];
|
||||
Logger::info('Set relation for following gcontact', $fields);
|
||||
DBA::update('gfollower', ['deleted' => false], $fields, true);
|
||||
}
|
||||
|
||||
$apcontact = APContact::getByURL($url);
|
||||
|
||||
if (!empty($apcontact['followers']) && is_string($apcontact['followers'])) {
|
||||
|
@ -1299,8 +1321,6 @@ class GContact
|
|||
}
|
||||
|
||||
if (!empty($followers) || !empty($followings)) {
|
||||
$gcontact = DBA::selectFirst('gcontact', ['id'], ['nurl' => Strings::normaliseLink(($url))]);
|
||||
$gcid = $gcontact['id'];
|
||||
if (!empty($followers)) {
|
||||
// Clear the follower list, since it will be recreated in the next step
|
||||
DBA::update('gfollower', ['deleted' => true], ['gcid' => $gcid]);
|
||||
|
@ -1320,14 +1340,26 @@ class GContact
|
|||
DBA::update('gfollower', ['deleted' => false], $fields, true);
|
||||
continue;
|
||||
}
|
||||
|
||||
$follower_gcid = 0;
|
||||
$following_gcid = 0;
|
||||
|
||||
if (in_array($contact, $followers)) {
|
||||
$following_gcid = $gcid;
|
||||
} elseif (in_array($contact, $followings)) {
|
||||
$follower_gcid = $gcid;
|
||||
}
|
||||
|
||||
Logger::info('Discover new AP contact', ['url' => $contact]);
|
||||
Worker::add(PRIORITY_LOW, 'UpdateGContact', $contact);
|
||||
Worker::add(PRIORITY_LOW, 'UpdateGContact', $contact, '', $following_gcid, $follower_gcid);
|
||||
}
|
||||
if (!empty($followers)) {
|
||||
// Delete all followers that aren't undeleted
|
||||
DBA::delete('gfollower', ['gcid' => $gcid, 'deleted' => true]);
|
||||
}
|
||||
Logger::info('AP contacts discovery finished', ['url' => $url]);
|
||||
|
||||
DBA::update('gcontact', ['last_discovery' => DateTimeFormat::utcNow()], ['id' => $gcid]);
|
||||
Logger::info('AP contacts discovery finished, last discovery set', ['url' => $url]);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1360,6 +1392,8 @@ class GContact
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
DBA::update('gcontact', ['last_discovery' => DateTimeFormat::utcNow()], ['id' => $gcid]);
|
||||
Logger::info('PoCo Discovery finished', ['url' => $url]);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue