diff --git a/include/discover_poco.php b/include/discover_poco.php index 687698b44f..e93b449b98 100644 --- a/include/discover_poco.php +++ b/include/discover_poco.php @@ -83,9 +83,10 @@ function discover_poco_run(&$argv, &$argc){ function discover_users() { logger("Discover users", LOGGER_DEBUG); - // To-Do: Maybe we should check old contact as well. + $users = q("SELECT `url`, `created`, `updated`, `last_failure`, `last_contact`, `server_url` FROM `gcontact` - WHERE `last_contact` = '0000-00-00 00:00:00' AND `last_failure` = '0000-00-00 00:00:00' AND + WHERE `last_contact` < UTC_TIMESTAMP - INTERVAL 1 MONTH AND + `last_failure` < UTC_TIMESTAMP - INTERVAL 1 MONTH AND `network` IN ('%s', '%s', '%s') ORDER BY rand()", dbesc(NETWORK_DFRN), dbesc(NETWORK_DIASPORA), dbesc(NETWORK_OSTATUS)); @@ -104,7 +105,7 @@ function discover_users() { if (poco_check_server($server_url, $gcontacts[0]["network"])) { logger('Check user '.$user["url"]); - poco_last_updated($user["url"]); + poco_last_updated($user["url"], true); if (++$checked > 100) return; diff --git a/include/socgraph.php b/include/socgraph.php index 04374f3e54..5671891df5 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -425,7 +425,7 @@ function poco_detect_server($profile) { return $server_url; } -function poco_last_updated($profile) { +function poco_last_updated($profile, $force = false) { $gcontacts = q("SELECT * FROM `gcontact` WHERE `nurl` = '%s'", dbesc(normalise_link($profile))); @@ -451,7 +451,7 @@ function poco_last_updated($profile) { if ($server) { $noscraperet = z_fetch_url($server[0]["noscrape"]."/".$gcontacts[0]["nick"]); - if ($noscraperet["success"]) { + if ($noscraperet["success"] AND ($noscraperet["body"] = "")) { $noscrape = json_decode($noscraperet["body"], true); if (($noscrape["name"] != "") AND ($noscrape["name"] != $gcontacts[0]["name"])) @@ -514,7 +514,7 @@ function poco_last_updated($profile) { } // If we only can poll the feed, then we only do this once a while - if (!poco_do_update($gcontacts[0]["created"], $gcontacts[0]["updated"], $gcontacts[0]["last_failure"], $gcontacts[0]["last_contact"])) + if (!$force AND !poco_do_update($gcontacts[0]["created"], $gcontacts[0]["updated"], $gcontacts[0]["last_failure"], $gcontacts[0]["last_contact"])) return $gcontacts[0]["updated"]; $data = probe_url($profile);