+function get_contact_details_by_url($url, $uid = -1) {
+ if ($uid == -1)
+ $uid = local_user();
+
+ $r = q("SELECT `id` AS `gid`, `url`, `name`, `nick`, `addr`, `photo`, `location`, `about`, `keywords`, `gender`, `community`, `network` FROM `gcontact` WHERE `nurl` = '%s' LIMIT 1",
+ dbesc(normalise_link($url)));
+
+ if ($r) {
+ $profile = $r[0];
+
+ if ((($profile["addr"] == "") OR ($profile["name"] == "")) AND
+ in_array($profile["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS)))
+ proc_run('php',"include/update_gcontact.php", $profile["gid"]);
+ }
+
+ // Fetching further contact data from the contact table
+ $r = q("SELECT `id`, `uid`, `url`, `network`, `name`, `nick`, `addr`, `location`, `about`, `keywords`, `gender`, `photo`, `thumb`, `addr`, `forum`, `prv`, `bd`, `self` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d AND `network` IN ('%s', '')",
+ dbesc(normalise_link($url)), intval($uid), dbesc($profile["network"]));
+
+ if (!count($r) AND !isset($profile))
+ $r = q("SELECT `id`, `uid`, `url`, `network`, `name`, `nick`, `addr`, `location`, `about`, `keywords`, `gender`, `photo`, `thumb`, `addr`, `forum`, `prv`, `bd`, `self` FROM `contact` WHERE `nurl` = '%s' AND `uid` = %d",
+ dbesc(normalise_link($url)), intval($uid));
+
+ if (!count($r) AND !isset($profile))
+ $r = q("SELECT `id`, `uid`, `url`, `network`, `name`, `nick`, `addr`, `location`, `about`, `keywords`, `gender`, `photo`, `thumb`, `addr`, `forum`, `prv`, `bd` FROM `contact` WHERE `nurl` = '%s' AND `uid` = 0",
+ dbesc(normalise_link($url)));
+
+ if ($r) {
+ if (!isset($profile["url"]) AND $r[0]["url"])
+ $profile["url"] = $r[0]["url"];
+ if (!isset($profile["name"]) AND $r[0]["name"])
+ $profile["name"] = $r[0]["name"];
+ if (!isset($profile["nick"]) AND $r[0]["nick"])
+ $profile["nick"] = $r[0]["nick"];
+ if (!isset($profile["addr"]) AND $r[0]["addr"])
+ $profile["addr"] = $r[0]["addr"];
+ if ((!isset($profile["photo"]) OR $r[0]["self"]) AND $r[0]["photo"])
+ $profile["photo"] = $r[0]["photo"];
+ if (!isset($profile["location"]) AND $r[0]["location"])
+ $profile["location"] = $r[0]["location"];
+ if (!isset($profile["about"]) AND $r[0]["about"])
+ $profile["about"] = $r[0]["about"];
+ if (!isset($profile["keywords"]) AND $r[0]["keywords"])
+ $profile["keywords"] = $r[0]["keywords"];
+ if (!isset($profile["gender"]) AND $r[0]["gender"])
+ $profile["gender"] = $r[0]["gender"];
+ if (isset($r[0]["forum"]) OR isset($r[0]["prv"]))
+ $profile["community"] = ($r[0]["forum"] OR $r[0]["prv"]);
+ if (!isset($profile["network"]) AND $r[0]["network"])
+ $profile["network"] = $r[0]["network"];
+ if (!isset($profile["addr"]) AND $r[0]["addr"])
+ $profile["addr"] = $r[0]["addr"];
+ if (!isset($profile["bd"]) AND $r[0]["bd"])
+ $profile["bd"] = $r[0]["bd"];
+ if (isset($r[0]["thumb"]))
+ $profile["thumb"] = $r[0]["thumb"];
+ if ($r[0]["uid"] == 0)
+ $profile["cid"] = 0;
+ else
+ $profile["cid"] = $r[0]["id"];
+ } else
+ $profile["cid"] = 0;
+
+ if (($profile["cid"] == 0) AND ($profile["network"] == NETWORK_DIASPORA)) {
+ $profile["location"] = "";
+ $profile["about"] = "";
+ }
+
+ return($profile);
+}
+