-function poco_check($profile_url, $name, $network, $profile_photo, $about, $location, $gender, $keywords, $connect_url, $updated, $generation, $cid = 0, $uid = 0, $zcid = 0) {
-
- // Generation:
- // 0: No definition
- // 1: Profiles on this server
- // 2: Contacts of profiles on this server
- // 3: Contacts of contacts of profiles on this server
- // 4: ...
-
- $gcid = "";
-
- if ($profile_url == "")
- return $gcid;
-
- $urlparts = parse_url($profile_url);
- if (!isset($urlparts["scheme"]))
- return $gcid;
-
- if (in_array($urlparts["host"], array("www.facebook.com", "facebook.com", "twitter.com",
- "identi.ca", "alpha.app.net")))
- return $gcid;
-
- // Don't store the statusnet connector as network
- // We can't simply set this to NETWORK_OSTATUS since the connector could have fetched posts from friendica as well
- if ($network == NETWORK_STATUSNET)
- $network = "";
-
- // Assure that there are no parameter fragments in the profile url
- if (in_array($network, array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS, "")))
- $profile_url = clean_contact_url($profile_url);
-
- $alternate = poco_alternate_ostatus_url($profile_url);
-
- $orig_updated = $updated;
-
- // The global contacts should contain the original picture, not the cached one
- if (($generation != 1) AND stristr(normalise_link($profile_photo), normalise_link(App::get_baseurl()."/photo/"))) {
- $profile_photo = "";
- }
-
- $r = q("SELECT `network` FROM `contact` WHERE `nurl` = '%s' AND `network` != '' AND `network` != '%s' LIMIT 1",
- dbesc(normalise_link($profile_url)), dbesc(NETWORK_STATUSNET)
- );
- if (dbm::is_result($r)) {
- $network = $r[0]["network"];
- }
-
- if (($network == "") OR ($network == NETWORK_OSTATUS)) {
- $r = q("SELECT `network`, `url` FROM `contact` WHERE `alias` IN ('%s', '%s') AND `network` != '' AND `network` != '%s' LIMIT 1",
- dbesc($profile_url), dbesc(normalise_link($profile_url)), dbesc(NETWORK_STATUSNET)
- );
- if (dbm::is_result($r)) {
- $network = $r[0]["network"];
- //$profile_url = $r[0]["url"];
- }
- }
-
- $x = q("SELECT * FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
- dbesc(normalise_link($profile_url))
- );
-
- if (count($x)) {
- if (($network == "") AND ($x[0]["network"] != NETWORK_STATUSNET)) {
- $network = $x[0]["network"];
- }
- if ($updated <= NULL_DATE) {
- $updated = $x[0]["updated"];
- }
- $created = $x[0]["created"];
- $server_url = $x[0]["server_url"];
- $nick = $x[0]["nick"];
- $addr = $x[0]["addr"];
- $alias = $x[0]["alias"];
- $notify = $x[0]["notify"];
- } else {
- $created = NULL_DATE;
- $server_url = "";
-
- $urlparts = parse_url($profile_url);
- $nick = end(explode("/", $urlparts["path"]));
- $addr = "";
- $alias = "";
- $notify = "";
- }
-
- if ((($network == "") OR ($name == "") OR ($addr == "") OR ($profile_photo == "") OR ($server_url == "") OR $alternate)
- AND poco_reachable($profile_url, $server_url, $network, false)) {
- $data = probe_url($profile_url);
-
- $orig_profile = $profile_url;
-
- $network = $data["network"];
- $name = $data["name"];
- $nick = $data["nick"];
- $addr = $data["addr"];
- $alias = $data["alias"];
- $notify = $data["notify"];
- $profile_url = $data["url"];
- $profile_photo = $data["photo"];
- $server_url = $data["baseurl"];
-
- if ($alternate AND ($network == NETWORK_OSTATUS)) {
- // Delete the old entry - if it exists
- $r = q("SELECT `id` FROM `gcontact` WHERE `nurl` = '%s'", dbesc(normalise_link($orig_profile)));
- if ($r) {
- q("DELETE FROM `gcontact` WHERE `nurl` = '%s'", dbesc(normalise_link($orig_profile)));
- q("DELETE FROM `glink` WHERE `gcid` = %d", intval($r[0]["id"]));
- }
-
- // possibly create a new entry
- poco_check($profile_url, $name, $network, $profile_photo, $about, $location, $gender, $keywords, $connect_url, $updated, $generation, $cid, $uid, $zcid);
- }
- }
-
- if ($alternate AND ($network == NETWORK_OSTATUS))
- return $gcid;
-
- if (count($x) AND ($x[0]["network"] == "") AND ($network != "")) {
- q("UPDATE `gcontact` SET `network` = '%s' WHERE `nurl` = '%s'",
- dbesc($network),
- dbesc(normalise_link($profile_url))
- );
- }
-
- if (($name == "") OR ($profile_photo == ""))
- return $gcid;
-
- if (!in_array($network, array(NETWORK_DFRN, NETWORK_OSTATUS, NETWORK_DIASPORA)))
- return $gcid;
-
- logger("profile-check generation: ".$generation." Network: ".$network." URL: ".$profile_url." name: ".$name." avatar: ".$profile_photo, LOGGER_DEBUG);
-
- // We check the server url to be sure that it is a real one
- $server_url2 = poco_detect_server($profile_url);