Relocated functions
This commit is contained in:
parent
4024d725db
commit
fab85255b6
5 changed files with 78 additions and 55 deletions
|
@ -783,7 +783,7 @@ class GContact
|
|||
return;
|
||||
}
|
||||
|
||||
if (!$force && !PortableContact::updateNeeded($gcontact['created'], $gcontact['updated'], $gcontact['last_failure'], $gcontact['last_contact'])) {
|
||||
if (!$force && !GServer::updateNeeded($gcontact['created'], $gcontact['updated'], $gcontact['last_failure'], $gcontact['last_contact'])) {
|
||||
Logger::info("Don't update profile", ['url' => $data['url'], 'updated' => $gcontact['updated']]);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -49,6 +49,61 @@ class GServer
|
|||
return self::check($server, $network, $force);
|
||||
}
|
||||
|
||||
/**
|
||||
* Decides if a server needs to be updated, based upon several date fields
|
||||
*
|
||||
* @param date $created Creation date of that server entry
|
||||
* @param date $updated When had the server entry be updated
|
||||
* @param date $last_failure Last failure when contacting that server
|
||||
* @param date $last_contact Last time the server had been contacted
|
||||
*
|
||||
* @return boolean Does the server record needs an update?
|
||||
*/
|
||||
public static function updateNeeded($created, $updated, $last_failure, $last_contact)
|
||||
{
|
||||
$now = strtotime(DateTimeFormat::utcNow());
|
||||
|
||||
if ($updated > $last_contact) {
|
||||
$contact_time = strtotime($updated);
|
||||
} else {
|
||||
$contact_time = strtotime($last_contact);
|
||||
}
|
||||
|
||||
$failure_time = strtotime($last_failure);
|
||||
$created_time = strtotime($created);
|
||||
|
||||
// If there is no "created" time then use the current time
|
||||
if ($created_time <= 0) {
|
||||
$created_time = $now;
|
||||
}
|
||||
|
||||
// If the last contact was less than 24 hours then don't update
|
||||
if (($now - $contact_time) < (60 * 60 * 24)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// If the last failure was less than 24 hours then don't update
|
||||
if (($now - $failure_time) < (60 * 60 * 24)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// If the last contact was less than a week ago and the last failure is older than a week then don't update
|
||||
//if ((($now - $contact_time) < (60 * 60 * 24 * 7)) && ($contact_time > $failure_time))
|
||||
// return false;
|
||||
|
||||
// If the last contact time was more than a week ago and the contact was created more than a week ago, then only try once a week
|
||||
if ((($now - $contact_time) > (60 * 60 * 24 * 7)) && (($now - $created_time) > (60 * 60 * 24 * 7)) && (($now - $failure_time) < (60 * 60 * 24 * 7))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// If the last contact time was more than a month ago and the contact was created more than a month ago, then only try once a month
|
||||
if ((($now - $contact_time) > (60 * 60 * 24 * 30)) && (($now - $created_time) > (60 * 60 * 24 * 30)) && (($now - $failure_time) < (60 * 60 * 24 * 30))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the state of the given server.
|
||||
*
|
||||
|
@ -89,7 +144,7 @@ class GServer
|
|||
$last_failure = DBA::NULL_DATETIME;
|
||||
}
|
||||
|
||||
if (!$force && !PortableContact::updateNeeded($gserver['created'], '', $last_failure, $last_contact)) {
|
||||
if (!$force && !self::updateNeeded($gserver['created'], '', $last_failure, $last_contact)) {
|
||||
Logger::info('No update needed', ['server' => $server_url]);
|
||||
return ($last_contact >= $last_failure);
|
||||
}
|
||||
|
@ -1184,4 +1239,18 @@ class GServer
|
|||
}
|
||||
return $serverdata;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the user directory of a given gserver record
|
||||
*
|
||||
* @param array $gserver gserver record
|
||||
*/
|
||||
public static function updateDirectory(array $gserver)
|
||||
{
|
||||
/// @todo Add Mastodon API directory
|
||||
|
||||
if (!empty($gserver['poco'])) {
|
||||
PortableContact::discoverSingleServer($gserver['id']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -219,51 +219,6 @@ class PortableContact
|
|||
return(preg_match("=https?://.+/user/\d+=ism", $url, $matches));
|
||||
}
|
||||
|
||||
public static function updateNeeded($created, $updated, $last_failure, $last_contact)
|
||||
{
|
||||
$now = strtotime(DateTimeFormat::utcNow());
|
||||
|
||||
if ($updated > $last_contact) {
|
||||
$contact_time = strtotime($updated);
|
||||
} else {
|
||||
$contact_time = strtotime($last_contact);
|
||||
}
|
||||
|
||||
$failure_time = strtotime($last_failure);
|
||||
$created_time = strtotime($created);
|
||||
|
||||
// If there is no "created" time then use the current time
|
||||
if ($created_time <= 0) {
|
||||
$created_time = $now;
|
||||
}
|
||||
|
||||
// If the last contact was less than 24 hours then don't update
|
||||
if (($now - $contact_time) < (60 * 60 * 24)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// If the last failure was less than 24 hours then don't update
|
||||
if (($now - $failure_time) < (60 * 60 * 24)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// If the last contact was less than a week ago and the last failure is older than a week then don't update
|
||||
//if ((($now - $contact_time) < (60 * 60 * 24 * 7)) && ($contact_time > $failure_time))
|
||||
// return false;
|
||||
|
||||
// If the last contact time was more than a week ago and the contact was created more than a week ago, then only try once a week
|
||||
if ((($now - $contact_time) > (60 * 60 * 24 * 7)) && (($now - $created_time) > (60 * 60 * 24 * 7)) && (($now - $failure_time) < (60 * 60 * 24 * 7))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// If the last contact time was more than a month ago and the contact was created more than a month ago, then only try once a month
|
||||
if ((($now - $contact_time) > (60 * 60 * 24 * 30)) && (($now - $created_time) > (60 * 60 * 24 * 30)) && (($now - $failure_time) < (60 * 60 * 24 * 30))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Returns a list of all known servers
|
||||
* @return array List of server urls
|
||||
|
@ -470,7 +425,7 @@ class PortableContact
|
|||
|
||||
$last_update = date('c', time() - (60 * 60 * 24 * $requery_days));
|
||||
|
||||
$gservers = q("SELECT `id`, `url`, `nurl`, `network`
|
||||
$gservers = q("SELECT `id`, `url`, `nurl`, `network`, `poco`
|
||||
FROM `gserver`
|
||||
WHERE `last_contact` >= `last_failure`
|
||||
AND `poco` != ''
|
||||
|
@ -488,7 +443,7 @@ class PortableContact
|
|||
}
|
||||
|
||||
Logger::log('Update directory from server ' . $gserver['url'] . ' with ID ' . $gserver['id'], Logger::DEBUG);
|
||||
Worker::add(PRIORITY_LOW, 'UpdateServerDirectory', (int)$gserver['id']);
|
||||
Worker::add(PRIORITY_LOW, 'UpdateServerDirectory', $gserver);
|
||||
|
||||
if (!$complete && ( --$no_of_queries == 0)) {
|
||||
break;
|
||||
|
|
|
@ -5,14 +5,13 @@
|
|||
namespace Friendica\Worker;
|
||||
|
||||
use Friendica\Core\Logger;
|
||||
use Friendica\Protocol\PortableContact;
|
||||
use Friendica\Model\GServer;
|
||||
|
||||
class UpdateServerDirectory
|
||||
{
|
||||
// Discover the given server id for their contacts
|
||||
public static function execute($gserverid)
|
||||
public static function execute($gserver)
|
||||
{
|
||||
PortableContact::discoverSingleServer($gserverid);
|
||||
GServer::updateDirectory($gserver);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ namespace Friendica\Worker;
|
|||
use Friendica\Core\Logger;
|
||||
use Friendica\Core\Worker;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\Protocol\PortableContact;
|
||||
use Friendica\Model\GServer;
|
||||
|
||||
class UpdateServers
|
||||
{
|
||||
|
@ -25,7 +25,7 @@ class UpdateServers
|
|||
$updated = 0;
|
||||
|
||||
while ($gserver = DBA::fetch($gservers)) {
|
||||
if (!PortableContact::updateNeeded($gserver['created'], '', $gserver['last_failure'], $gserver['last_contact'])) {
|
||||
if (!GServer::updateNeeded($gserver['created'], '', $gserver['last_failure'], $gserver['last_contact'])) {
|
||||
continue;
|
||||
}
|
||||
Logger::info('Update server status', ['server' => $gserver['url']]);
|
||||
|
|
Loading…
Reference in a new issue