]> git.mxchange.org Git - friendica.git/blobdiff - include/socgraph.php
personalise emails send from the server
[friendica.git] / include / socgraph.php
index 002623c16ef6ce2c27d19cf92da0fa43a866eca6..b0f0c8672ff6ddf34da14fa22a4d18ab9cd122b5 100644 (file)
@@ -234,7 +234,7 @@ function poco_check($profile_url, $name, $network, $profile_photo, $about, $loca
        }
 
        if ((($network == "") OR ($name == "") OR ($profile_photo == "") OR ($server_url == "") OR $alternate)
-               AND poco_reachable($profile_url, $server_url, $network, true)) {
+               AND poco_reachable($profile_url, $server_url, $network, false)) {
                $data = probe_url($profile_url);
 
                $orig_profile = $profile_url;
@@ -570,7 +570,7 @@ function poco_last_updated($profile, $force = false) {
                return false;
        }
 
-       if (($data["poll"] == "") OR ($data["network"] == NETWORK_FEED)) {
+       if (($data["poll"] == "") OR (in_array($data["network"], array(NETWORK_FEED, NETWORK_PHANTOM)))) {
                q("UPDATE `gcontact` SET `last_failure` = '%s' WHERE `nurl` = '%s'",
                        dbesc(datetime_convert()), dbesc(normalise_link($profile)));
                return false;
@@ -1224,7 +1224,7 @@ function update_suggestions() {
 
        $done[] = $a->get_baseurl() . '/poco';
 
-       if(strlen(get_config('system','directory_submit_url'))) {
+       if(strlen(get_config('system','directory'))) {
                $x = fetch_url(get_server()."/pubsites");
                if($x) {
                        $j = json_decode($x);
@@ -1255,8 +1255,34 @@ function update_suggestions() {
        }
 }
 
+function poco_discover_federation() {
+       $last = get_config('poco','last_federation_discovery');
+
+       if($last) {
+               $next = $last + (24 * 60 * 60);
+               if($next > time())
+                       return;
+       }
+
+       $serverdata = fetch_url("http://the-federation.info/pods.json");
+
+       if (!$serverdata)
+               return;
+
+       $servers = json_decode($serverdata);
+
+       foreach($servers->pods AS $server)
+               poco_check_server("https://".$server->host);
+
+       set_config('poco','last_federation_discovery', time());
+
+}
+
 function poco_discover($complete = false) {
 
+       // Update the server list
+       poco_discover_federation();
+
        $no_of_queries = 5;
 
        $requery_days = intval(get_config("system", "poco_requery_days"));
@@ -1270,8 +1296,11 @@ function poco_discover($complete = false) {
        if ($r)
                foreach ($r AS $server) {
 
-                       if (!poco_check_server($server["url"], $server["network"]))
+                       if (!poco_check_server($server["url"], $server["network"])) {
+                               // The server is not reachable? Okay, then we will try it later
+                               q("UPDATE `gserver` SET `last_poco_query` = '%s' WHERE `nurl` = '%s'", dbesc(datetime_convert()), dbesc($server["nurl"]));
                                continue;
+                       }
 
                        // Fetch all users from the other server
                        $url = $server["poco"]."/?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,generation";
@@ -1312,8 +1341,13 @@ function poco_discover($complete = false) {
                                q("UPDATE `gserver` SET `last_poco_query` = '%s' WHERE `nurl` = '%s'", dbesc(datetime_convert()), dbesc($server["nurl"]));
                                if (!$complete AND (--$no_of_queries == 0))
                                        break;
-                       } else  // If the server hadn't replied correctly, then force a sanity check
+                       } else {
+                               // If the server hadn't replied correctly, then force a sanity check
                                poco_check_server($server["url"], $server["network"], true);
+
+                               // If we couldn't reach the server, we will try it some time later
+                               q("UPDATE `gserver` SET `last_poco_query` = '%s' WHERE `nurl` = '%s'", dbesc(datetime_convert()), dbesc($server["nurl"]));
+                       }
                }
 }