]> git.mxchange.org Git - friendica.git/commitdiff
Merge branch 'develop' into 1703-worker-splitting
authorMichael Vogel <icarus@dabo.de>
Tue, 21 Mar 2017 15:38:59 +0000 (16:38 +0100)
committerGitHub <noreply@github.com>
Tue, 21 Mar 2017 15:38:59 +0000 (16:38 +0100)
1  2 
include/cron.php
include/discover_poco.php
include/socgraph.php

diff --combined include/cron.php
index cc7dca14e12081e304b642670e70cbfc70b7f9bc,9ab56ff43551661595d3ad3327958e7df528a654..21ce9e7c65404c74542a5f73c5bfa3212bc9b8f0
@@@ -1,23 -1,27 +1,23 @@@
  <?php
  use \Friendica\Core\Config;
  
 -require_once('include/photos.php');
 -require_once('include/user.php');
 -
  function cron_run(&$argv, &$argc){
        global $a;
  
 -      require_once('include/session.php');
        require_once('include/datetime.php');
 -      require_once('include/items.php');
 -      require_once('include/Contact.php');
 -      require_once('include/email.php');
 -      require_once('include/socgraph.php');
 -      require_once('mod/nodeinfo.php');
 -      require_once('include/post_update.php');
 +
 +      // Poll contacts with specific parameters
 +      if ($argc > 1) {
 +              cron_poll_contacts($argc, $argv);
 +              return;
 +      }
  
        $last = get_config('system','last_cron');
  
        $poll_interval = intval(get_config('system','cron_interval'));
 -      if (! $poll_interval)
 +      if (! $poll_interval) {
                $poll_interval = 10;
 -
 +      }
        if ($last) {
                $next = $last + ($poll_interval * 60);
                if ($next > time()) {
        logger('cron: start');
  
        // run queue delivery process in the background
 -
        proc_run(PRIORITY_NEGLIGIBLE, "include/queue.php");
  
        // run the process to discover global contacts in the background
 -
        proc_run(PRIORITY_LOW, "include/discover_poco.php");
  
        // run the process to update locally stored global contacts in the background
 -
        proc_run(PRIORITY_LOW, "include/discover_poco.php", "checkcontact");
  
        // Expire and remove user entries
 -      cron_expire_and_remove_users();
 +      proc_run(PRIORITY_MEDIUM, "include/cronjobs.php", "expire_and_remove_users");
  
        // Check OStatus conversations
        proc_run(PRIORITY_MEDIUM, "include/cronjobs.php", "ostatus_mentions");
        // update nodeinfo data
        proc_run(PRIORITY_LOW, "include/cronjobs.php", "nodeinfo");
  
 -      // once daily run birthday_updates and then expire in background
 +      // Clear cache entries
 +      proc_run(PRIORITY_LOW, "include/cronjobs.php", "clear_cache");
  
 +      // Repair missing Diaspora values in contacts
 +      proc_run(PRIORITY_LOW, "include/cronjobs.php", "repair_diaspora");
 +
 +      // Repair entries in the database
 +      proc_run(PRIORITY_LOW, "include/cronjobs.php", "repair_database");
 +
 +      // once daily run birthday_updates and then expire in background
        $d1 = get_config('system','last_expire_day');
        $d2 = intval(datetime_convert('UTC','UTC','now','d'));
  
        if ($d2 != intval($d1)) {
  
 -              update_contact_birthdays();
 +              proc_run(PRIORITY_LOW, "include/cronjobs.php", "update_contact_birthdays");
  
                proc_run(PRIORITY_LOW, "include/discover_poco.php", "update_server");
  
  
                proc_run(PRIORITY_MEDIUM, 'include/dbclean.php');
  
 -              cron_update_photo_albums();
 +              proc_run(PRIORITY_LOW, "include/cronjobs.php", "update_photo_albums");
        }
  
 -      // Clear cache entries
 -      cron_clear_cache($a);
 -
 -      // Repair missing Diaspora values in contacts
 -      cron_repair_diaspora($a);
 -
 -      // Repair entries in the database
 -      cron_repair_database();
 -
        // Poll contacts
        cron_poll_contacts($argc, $argv);
  
        return;
  }
  
 -/**
 - * @brief Update the cached values for the number of photo albums per user
 - */
 -function cron_update_photo_albums() {
 -      $r = q("SELECT `uid` FROM `user` WHERE NOT `account_expired` AND NOT `account_removed`");
 -      if (!dbm::is_result($r)) {
 -              return;
 -      }
 -
 -      foreach ($r AS $user) {
 -              photo_albums($user['uid'], true);
 -      }
 -}
 -
 -/**
 - * @brief Expire and remove user entries
 - */
 -function cron_expire_and_remove_users() {
 -      // expire any expired accounts
 -      q("UPDATE user SET `account_expired` = 1 where `account_expired` = 0
 -              AND `account_expires_on` > '%s'
 -              AND `account_expires_on` < UTC_TIMESTAMP()", dbesc(NULL_DATE));
 -
 -      // delete user and contact records for recently removed accounts
 -      $r = q("SELECT * FROM `user` WHERE `account_removed` AND `account_expires_on` < UTC_TIMESTAMP() - INTERVAL 3 DAY");
 -      if ($r) {
 -              foreach ($r as $user) {
 -                      q("DELETE FROM `contact` WHERE `uid` = %d", intval($user['uid']));
 -                      q("DELETE FROM `user` WHERE `uid` = %d", intval($user['uid']));
 -              }
 -      }
 -}
 -
  /**
   * @brief Poll contacts for unreceived messages
   *
@@@ -104,15 -145,14 +104,15 @@@ function cron_poll_contacts($argc, $arg
        $force      = false;
        $restart    = false;
  
 -      if (($argc > 1) && ($argv[1] == 'force'))
 +      if (($argc > 1) && ($argv[1] == 'force')) {
                $force = true;
 -
 +      }
        if (($argc > 1) && ($argv[1] == 'restart')) {
                $restart = true;
                $generation = intval($argv[2]);
 -              if (!$generation)
 +              if (!$generation) {
                        killme();
 +              }
        }
  
        if (($argc > 1) && intval($argv[1])) {
        // we are unable to match those posts with a Diaspora GUID and prevent duplicates.
  
        $abandon_days = intval(get_config('system','account_abandon_days'));
 -      if ($abandon_days < 1)
 +      if ($abandon_days < 1) {
                $abandon_days = 0;
 -
 +      }
        $abandon_sql = (($abandon_days)
                ? sprintf(" AND `user`.`login_date` > UTC_TIMESTAMP() - INTERVAL %d DAY ", intval($abandon_days))
                : ''
  
                                switch ($contact['priority']) {
                                        case 5:
 -                                              if (datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 month"))
 +                                              if (datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 month")) {
                                                        $update = true;
 +                                              }
                                                break;
                                        case 4:
 -                                              if (datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 week"))
 +                                              if (datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 week")) {
                                                        $update = true;
 +                                              }
                                                break;
                                        case 3:
 -                                              if (datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day"))
 +                                              if (datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day")) {
                                                        $update = true;
 +                                              }
                                                break;
                                        case 2:
 -                                              if (datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 12 hour"))
 +                                              if (datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 12 hour")) {
                                                        $update = true;
 +                                              }
                                                break;
                                        case 1:
                                        default:
 -                                              if (datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 hour"))
 +                                              if (datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 hour")) {
                                                        $update = true;
 +                                              }
                                                break;
                                }
 -                              if (!$update)
 +                              if (!$update) {
                                        continue;
 +                              }
                        }
  
                        logger("Polling ".$contact["network"]." ".$contact["id"]." ".$contact["nick"]." ".$contact["name"]);
  
                        if (($contact['network'] == NETWORK_FEED) AND ($contact['priority'] <= 3)) {
 -                              proc_run(PRIORITY_MEDIUM, 'include/onepoll.php', $contact['id']);
 +                              proc_run(PRIORITY_MEDIUM, 'include/onepoll.php', intval($contact['id']));
                        } else {
 -                              proc_run(PRIORITY_LOW, 'include/onepoll.php', $contact['id']);
 +                              proc_run(PRIORITY_LOW, 'include/onepoll.php', intval($contact['id']));
                        }
                }
        }
 -}
 -
 -/**
 - * @brief Clear cache entries
 - *
 - * @param App $a
 - */
 -function cron_clear_cache(App $a) {
 -
 -      $last = get_config('system','cache_last_cleared');
 -
 -      if ($last) {
 -              $next = $last + (3600); // Once per hour
 -              $clear_cache = ($next <= time());
 -      } else {
 -              $clear_cache = true;
 -      }
 -
 -      if (!$clear_cache) {
 -              return;
 -      }
 -
 -      // clear old cache
 -      Cache::clear();
 -
 -      // clear old item cache files
 -      clear_cache();
 -
 -      // clear cache for photos
 -      clear_cache($a->get_basepath(), $a->get_basepath()."/photo");
 -
 -      // clear smarty cache
 -      clear_cache($a->get_basepath()."/view/smarty3/compiled", $a->get_basepath()."/view/smarty3/compiled");
 -
 -      // clear cache for image proxy
 -      if (!get_config("system", "proxy_disabled")) {
 -              clear_cache($a->get_basepath(), $a->get_basepath()."/proxy");
 -
 -              $cachetime = get_config('system','proxy_cache_time');
 -              if (!$cachetime) {
 -                      $cachetime = PROXY_DEFAULT_TIME;
 -              }
 -
 -              q('DELETE FROM `photo` WHERE `uid` = 0 AND `resource-id` LIKE "pic:%%" AND `created` < NOW() - INTERVAL %d SECOND', $cachetime);
 -      }
 -
 -      // Delete the cached OEmbed entries that are older than one year
 -      q("DELETE FROM `oembed` WHERE `created` < NOW() - INTERVAL 3 MONTH");
 -
 -      // Delete the cached "parse_url" entries that are older than one year
 -      q("DELETE FROM `parsed_url` WHERE `created` < NOW() - INTERVAL 3 MONTH");
 -
 -      // Maximum table size in megabyte
 -      $max_tablesize = intval(get_config('system','optimize_max_tablesize')) * 1000000;
 -      if ($max_tablesize == 0) {
 -              $max_tablesize = 100 * 1000000; // Default are 100 MB
 -      }
 -
 -      if ($max_tablesize > 0) {
 -              // Minimum fragmentation level in percent
 -              $fragmentation_level = intval(get_config('system','optimize_fragmentation')) / 100;
 -              if ($fragmentation_level == 0) {
 -                      $fragmentation_level = 0.3; // Default value is 30%
 -              }
 -
 -              // Optimize some tables that need to be optimized
 -              $r = q("SHOW TABLE STATUS");
 -              foreach ($r as $table) {
 -
 -                      // Don't optimize tables that are too large
 -                      if ($table["Data_length"] > $max_tablesize) {
 -                              continue;
 -                      }
 -
 -                      // Don't optimize empty tables
 -                      if ($table["Data_length"] == 0) {
 -                              continue;
 -                      }
 -
 -                      // Calculate fragmentation
 -                      $fragmentation = $table["Data_free"] / ($table["Data_length"] + $table["Index_length"]);
 -
 -                      logger("Table ".$table["Name"]." - Fragmentation level: ".round($fragmentation * 100, 2), LOGGER_DEBUG);
 -
 -                      // Don't optimize tables that needn't to be optimized
 -                      if ($fragmentation < $fragmentation_level) {
 -                              continue;
 -                      }
 -
 -                      // So optimize it
 -                      logger("Optimize Table ".$table["Name"], LOGGER_DEBUG);
 -                      q("OPTIMIZE TABLE `%s`", dbesc($table["Name"]));
 -              }
 -      }
 -
 -      set_config('system','cache_last_cleared', time());
 -}
 -
 -/**
 - * @brief Repair missing values in Diaspora contacts
 - *
 - * @param App $a
 - */
 -function cron_repair_diaspora(App $a) {
 -      $r = q("SELECT `id`, `url` FROM `contact`
 -              WHERE `network` = '%s' AND (`batch` = '' OR `notify` = '' OR `poll` = '' OR pubkey = '')
 -                      ORDER BY RAND() LIMIT 50", dbesc(NETWORK_DIASPORA));
 -      if (dbm::is_result($r)) {
 -              foreach ($r AS $contact) {
 -                      if (poco_reachable($contact["url"])) {
 -                              $data = probe_url($contact["url"]);
 -                              if ($data["network"] == NETWORK_DIASPORA) {
 -                                      logger("Repair contact ".$contact["id"]." ".$contact["url"], LOGGER_DEBUG);
 -                                      q("UPDATE `contact` SET `batch` = '%s', `notify` = '%s', `poll` = '%s', pubkey = '%s' WHERE `id` = %d",
 -                                              dbesc($data["batch"]), dbesc($data["notify"]), dbesc($data["poll"]), dbesc($data["pubkey"]),
 -                                              intval($contact["id"]));
 -                              }
 -                      }
 -              }
 -      }
 -}
 -
 -/**
 - * @brief Do some repairs in database entries
 - *
 - */
 -function cron_repair_database() {
 -
 -      // Sometimes there seem to be issues where the "self" contact vanishes.
 -      // We haven't found the origin of the problem by now.
 -      $r = q("SELECT `uid` FROM `user` WHERE NOT EXISTS (SELECT `uid` FROM `contact` WHERE `contact`.`uid` = `user`.`uid` AND `contact`.`self`)");
 -      if (dbm::is_result($r)) {
 -              foreach ($r AS $user) {
 -                      logger('Create missing self contact for user '.$user['uid']);
 -                      user_create_self_contact($user['uid']);
 -              }
 -      }
 -
 -      // Set the parent if it wasn't set. (Shouldn't happen - but does sometimes)
 -      // This call is very "cheap" so we can do it at any time without a problem
 -      q("UPDATE `item` INNER JOIN `item` AS `parent` ON `parent`.`uri` = `item`.`parent-uri` AND `parent`.`uid` = `item`.`uid` SET `item`.`parent` = `parent`.`id` WHERE `item`.`parent` = 0");
 -
 -      // There was an issue where the nick vanishes from the contact table
 -      q("UPDATE `contact` INNER JOIN `user` ON `contact`.`uid` = `user`.`uid` SET `nick` = `nickname` WHERE `self` AND `nick`=''");
 -
 -      // Update the global contacts for local users
 -      $r = q("SELECT `uid` FROM `user` WHERE `verified` AND NOT `blocked` AND NOT `account_removed` AND NOT `account_expired`");
 -      if (dbm::is_result($r)) {
 -              foreach ($r AS $user) {
 -                      update_gcontact_for_user($user["uid"]);
 -              }
 -      }
 -
 -      /// @todo
 -      /// - remove thread entries without item
 -      /// - remove sign entries without item
 -      /// - remove children when parent got lost
 -      /// - set contact-id in item when not present
--}
++}
index d203cfd6b43b6458f8d8e1bf6aaef194f69d7ba3,dd4e3a7dd3c35c723a4bdba124ca011c25210a5e..b36c2ca2154e378bebb5629b3c38d1459c7dfe26
@@@ -16,7 -16,6 +16,7 @@@ function discover_poco_run(&$argv, &$ar
        - update_server: Frequently check the first 250 servers for vitality.
        - update_server_directory: Discover the given server id for their contacts
        - poco_load: Load POCO data from a given POCO address
 +      - check_profile: Update remote profile data
        */
  
        if (($argc > 2) && ($argv[1] == "dirsearch")) {
@@@ -34,8 -33,6 +34,8 @@@
                $mode = 6;
        } elseif (($argc > 5) && ($argv[1] == "poco_load")) {
                $mode = 7;
 +      } elseif (($argc == 3) && ($argv[1] == "check_profile")) {
 +              $mode = 8;
        } elseif ($argc == 1) {
                $search = "";
                $mode = 0;
  
        logger('start '.$search);
  
 -      if ($mode == 7) {
 +      if ($mode == 8) {
 +              $profile_url = base64_decode($argv[2]);
 +              if ($profile_url != "") {
 +                      poco_last_updated($profile_url, true);
 +              }
 +      } elseif ($mode == 7) {
                if ($argc == 6) {
                        $url = base64_decode($argv[5]);
                } else {
@@@ -129,9 -121,7 +129,9 @@@ function update_server() 
  function discover_users() {
        logger("Discover users", LOGGER_DEBUG);
  
 -      $users = q("SELECT `url`, `created`, `updated`, `last_failure`, `last_contact`, `server_url` FROM `gcontact`
 +      $starttime = time();
 +
 +      $users = q("SELECT `url`, `created`, `updated`, `last_failure`, `last_contact`, `server_url`, `network` FROM `gcontact`
                        WHERE `last_contact` < UTC_TIMESTAMP - INTERVAL 1 MONTH AND
                                `last_failure` < UTC_TIMESTAMP - INTERVAL 1 MONTH AND
                                `network` IN ('%s', '%s', '%s', '%s', '') ORDER BY rand()",
                } else {
                        $server_url = poco_detect_server($user["url"]);
                }
 -              if (($server_url == "") OR poco_check_server($server_url, $gcontacts[0]["network"])) {
 -                      logger('Check user '.$user["url"]);
 -                      poco_last_updated($user["url"], true);
 +              if ((($server_url == "") AND ($user["network"] == NETWORK_FEED)) OR poco_check_server($server_url, $user["network"])) {
 +                      logger('Check profile '.$user["url"]);
 +                      proc_run(PRIORITY_LOW, "include/discover_poco.php", "check_profile", base64_encode($user["url"]));
  
                        if (++$checked > 100) {
                                return;
                        q("UPDATE `gcontact` SET `last_failure` = '%s' WHERE `nurl` = '%s'",
                                dbesc(datetime_convert()), dbesc(normalise_link($user["url"])));
                }
 +
 +              // Quit the loop after 3 minutes
 +              if (time() > ($starttime + 180)) {
 +                      return;
 +              }
        }
  }
  
@@@ -204,10 -189,10 +204,10 @@@ function discover_directory($search) 
        $j = json_decode($x);
  
        if (count($j->results)) {
-               foreach($j->results as $jj) {
+               foreach ($j->results as $jj) {
                        // Check if the contact already exists
                        $exists = q("SELECT `id`, `last_contact`, `last_failure`, `updated` FROM `gcontact` WHERE `nurl` = '%s'", normalise_link($jj->url));
-                       if ($exists) {
+                       if (dbm::is_result($exists)) {
                                logger("Profile ".$jj->url." already exists (".$search.")", LOGGER_DEBUG);
  
                                if (($exists[0]["last_contact"] < $exists[0]["last_failure"]) AND
@@@ -260,12 -245,14 +260,14 @@@ function gs_search_user($search) 
        if (!$result["success"]) {
                return false;
        }
        $contacts = json_decode($result["body"]);
  
        if ($contacts->status == 'ERROR') {
                return false;
        }
-       foreach($contacts->data AS $user) {
+       foreach ($contacts->data AS $user) {
                $contact = probe_url($user->site_address."/".$user->name);
                if ($contact["network"] != NETWORK_PHANTOM) {
                        $contact["about"] = $user->description;
diff --combined include/socgraph.php
index 71771bb95d909eb8c9ded6b89c2c5de5b26c5608,b1390980e94dd14b79650d49b16025f55cadb3e3..f730030cd34ecf54f87fd6a2e99f9be16cfbe51e
@@@ -34,7 -34,7 +34,7 @@@ require_once("include/Photo.php")
   */
  function poco_load($cid, $uid = 0, $zcid = 0, $url = null) {
        // Call the function "poco_load_worker" via the worker
 -      proc_run(PRIORITY_LOW, "include/discover_poco.php", "poco_load", $cid, $uid, $zcid, base64_encode($url));
 +      proc_run(PRIORITY_LOW, "include/discover_poco.php", "poco_load", intval($cid), intval($uid), intval($zcid), base64_encode($url));
  }
  
  /**
@@@ -49,8 -49,8 +49,8 @@@
  function poco_load_worker($cid, $uid, $zcid, $url) {
        $a = get_app();
  
-       if($cid) {
-               if((! $url) || (! $uid)) {
+       if ($cid) {
+               if ((! $url) || (! $uid)) {
                        $r = q("select `poco`, `uid` from `contact` where `id` = %d limit 1",
                                intval($cid)
                        );
                                $uid = $r[0]['uid'];
                        }
                }
-               if(! $uid)
+               if (! $uid)
                        return;
        }
  
-       if(! $url)
+       if (! $url)
                return;
  
        $url = $url . (($uid) ? '/@me/@all?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,contactType,generation' : '?fields=displayName,urls,photos,updated,network,aboutMe,currentLocation,tags,gender,contactType,generation') ;
  
        logger('poco_load: return code: ' . $a->get_curl_code(), LOGGER_DEBUG);
  
-       if(($a->get_curl_code() > 299) || (! $s))
+       if (($a->get_curl_code() > 299) || (! $s))
                return;
  
        $j = json_decode($s);
  
        logger('poco_load: json: ' . print_r($j,true),LOGGER_DATA);
  
-       if(! isset($j->entry))
+       if (! isset($j->entry))
                return;
  
        $total = 0;
-       foreach($j->entry as $entry) {
+       foreach ($j->entry as $entry) {
  
                $total ++;
                $profile_url = '';
                }
  
                if (isset($entry->tags)) {
-                       foreach($entry->tags as $tag) {
+                       foreach ($entry->tags as $tag) {
                                $keywords = implode(", ", $tag);
                        }
                }
@@@ -354,7 -354,7 +354,7 @@@ function poco_check($profile_url, $name
  
        $gcid = update_gcontact($gcontact);
  
-       if(!$gcid)
+       if (!$gcid)
                return $gcid;
  
        $r = q("SELECT * FROM `glink` WHERE `cid` = %d AND `uid` = %d AND `gcid` = %d AND `zcid` = %d LIMIT 1",
@@@ -1091,10 -1091,10 +1091,10 @@@ function poco_check_server($server_url
                        }
  
                        $lines = explode("\n",$serverret["header"]);
-                       if(count($lines)) {
-                               foreach($lines as $line) {
+                       if (count($lines)) {
+                               foreach ($lines as $line) {
                                        $line = trim($line);
-                                       if(stristr($line,'X-Diaspora-Version:')) {
+                                       if (stristr($line,'X-Diaspora-Version:')) {
                                                $platform = "Diaspora";
                                                $version = trim(str_replace("X-Diaspora-Version:", "", $line));
                                                $version = trim(str_replace("x-diaspora-version:", "", $version));
                                                $last_contact = datetime_convert();
                                        }
  
-                                       if(stristr($line,'Server: Mastodon')) {
+                                       if (stristr($line,'Server: Mastodon')) {
                                                $platform = "Mastodon";
                                                $network = NETWORK_OSTATUS;
                                                // Mastodon doesn't reveal version numbers
@@@ -1383,7 -1383,7 +1383,7 @@@ function count_common_friends($uid,$cid
  
  function common_friends($uid,$cid,$start = 0,$limit=9999,$shuffle = false) {
  
-       if($shuffle)
+       if ($shuffle)
                $sql_extra = " order by rand() ";
        else
                $sql_extra = " order by `gcontact`.`name` asc ";
@@@ -1428,7 -1428,7 +1428,7 @@@ function count_common_friends_zcid($uid
  
  function common_friends_zcid($uid,$zcid,$start = 0, $limit = 9999,$shuffle = false) {
  
-       if($shuffle)
+       if ($shuffle)
                $sql_extra = " order by rand() ";
        else
                $sql_extra = " order by `gcontact`.`name` asc ";
@@@ -1611,7 -1611,7 +1611,7 @@@ function update_suggestions() 
        if (dbm::is_result($r)) {
                foreach ($r as $rr) {
                        $base = substr($rr['poco'],0,strrpos($rr['poco'],'/'));
-                       if(! in_array($base,$done))
+                       if (! in_array($base,$done))
                                poco_load(0,0,0,$base);
                }
        }
@@@ -1649,7 -1649,7 +1649,7 @@@ function poco_discover_federation() 
  
        if ($last) {
                $next = $last + (24 * 60 * 60);
-               if($next > time())
+               if ($next > time())
                        return;
        }
  
                }
        }
  
-       // Currently disabled, since the service isn't available anymore.
-       // It is not removed since I hope that there will be a successor.
-       // Discover GNU Social Servers.
-       //if (!get_config('system','ostatus_disabled')) {
-       //      $serverdata = "http://gstools.org/api/get_open_instances/";
+       /*
+        * Currently disabled, since the service isn't available anymore.
+        * It is not removed since I hope that there will be a successor.
+        * Discover GNU Social Servers.
+       if (!get_config('system','ostatus_disabled')) {
+               $serverdata = "http://gstools.org/api/get_open_instances/";
  
-       //      $result = z_fetch_url($serverdata);
-       //      if ($result["success"]) {
-       //              $servers = json_decode($result["body"]);
+               $result = z_fetch_url($serverdata);
+               if ($result["success"]) {
+                       $servers = json_decode($result["body"]);
  
-       //              foreach($servers->data AS $server)
-       //                      poco_check_server($server->instance_address);
-       //      }
-       //}
+                       foreach($servers->data AS $server)
+                               poco_check_server($server->instance_address);
+               }
+       }
+       */
  
        set_config('poco','last_federation_discovery', time());
  }
@@@ -1769,7 -1771,7 +1771,7 @@@ function poco_discover($complete = fals
                        }
  
                        logger('Update directory from server '.$server['url'].' with ID '.$server['id'], LOGGER_DEBUG);
 -                      proc_run(PRIORITY_LOW, "include/discover_poco.php", "update_server_directory", $server['id']);
 +                      proc_run(PRIORITY_LOW, "include/discover_poco.php", "update_server_directory", intval($server['id']));
  
                        if (!$complete AND (--$no_of_queries == 0)) {
                                break;
@@@ -1786,7 -1788,7 +1788,7 @@@ function poco_discover_server_users($da
        foreach ($data->entry AS $entry) {
                $username = "";
                if (isset($entry->urls)) {
-                       foreach($entry->urls as $url)
+                       foreach ($entry->urls as $url)
                                if ($url->type == 'profile') {
                                        $profile_url = $url->value;
                                        $urlparts = parse_url($profile_url);
@@@ -1830,7 -1832,7 +1832,7 @@@ function poco_discover_server($data, $d
                $name = $entry->displayName;
  
                if (isset($entry->urls)) {
-                       foreach($entry->urls as $url) {
+                       foreach ($entry->urls as $url) {
                                if ($url->type == 'profile') {
                                        $profile_url = $url->value;
                                        continue;
                        $updated = date("Y-m-d H:i:s", strtotime($entry->updated));
                }
  
-               if(isset($entry->network)) {
+               if (isset($entry->network)) {
                        $network = $entry->network;
                }
  
-               if(isset($entry->currentLocation)) {
+               if (isset($entry->currentLocation)) {
                        $location = $entry->currentLocation;
                }
  
-               if(isset($entry->aboutMe)) {
+               if (isset($entry->aboutMe)) {
                        $about = html2bbcode($entry->aboutMe);
                }
  
-               if(isset($entry->gender)) {
+               if (isset($entry->gender)) {
                        $gender = $entry->gender;
                }
  
-               if(isset($entry->generation) AND ($entry->generation > 0)) {
+               if (isset($entry->generation) AND ($entry->generation > 0)) {
                        $generation = ++$entry->generation;
                }
  
-               if(isset($entry->contactType) AND ($entry->contactType >= 0)) {
+               if (isset($entry->contactType) AND ($entry->contactType >= 0)) {
                        $contact_type = $entry->contactType;
                }
  
-               if(isset($entry->tags)) {
+               if (isset($entry->tags)) {
                        foreach ($entry->tags as $tag) {
                                $keywords = implode(", ", $tag);
                        }