if ($cache) {
$result = Cache::get("probe_url:".$network.":".$uri);
if (!is_null($result)) {
- $result = unserialize($result);
return $result;
}
}
// Only store into the cache if the value seems to be valid
if (!in_array($data['network'], array(NETWORK_PHANTOM, NETWORK_MAIL))) {
- Cache::set("probe_url:".$network.":".$uri,serialize($data), CACHE_DAY);
+ Cache::set("probe_url:".$network.":".$uri, $data, CACHE_DAY);
/// @todo temporary fix - we need a real contact update function that updates only changing fields
/// The biggest problem is the avatar picture that could have a reduced image size.
*/
private function poll_hcard($hcard, $data, $dfrn = false) {
+ $content = fetch_url($hcard);
+ if (!$content)
+ return false;
+
$doc = new DOMDocument();
- if (!@$doc->loadHTMLFile($hcard))
+ if (!@$doc->loadHTML($content))
return false;
$xpath = new DomXPath($doc);
if (!is_object($vcards))
return false;
- if ($vcards->length == 0)
- return false;
+ if ($vcards->length > 0) {
+ $vcard = $vcards->item(0);
- $vcard = $vcards->item(0);
+ // We have to discard the guid from the hcard in favour of the guid from lrdd
+ // Reason: Hubzilla doesn't use the value "uid" in the hcard like Diaspora does.
+ $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' uid ')]", $vcard); // */
+ if (($search->length > 0) AND ($data["guid"] == ""))
+ $data["guid"] = $search->item(0)->nodeValue;
- // We have to discard the guid from the hcard in favour of the guid from lrdd
- // Reason: Hubzilla doesn't use the value "uid" in the hcard like Diaspora does.
- $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' uid ')]", $vcard); // */
- if (($search->length > 0) AND ($data["guid"] == ""))
- $data["guid"] = $search->item(0)->nodeValue;
+ $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' nickname ')]", $vcard); // */
+ if ($search->length > 0)
+ $data["nick"] = $search->item(0)->nodeValue;
- $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' nickname ')]", $vcard); // */
- if ($search->length > 0)
- $data["nick"] = $search->item(0)->nodeValue;
+ $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' fn ')]", $vcard); // */
+ if ($search->length > 0)
+ $data["name"] = $search->item(0)->nodeValue;
- $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' fn ')]", $vcard); // */
- if ($search->length > 0)
- $data["name"] = $search->item(0)->nodeValue;
+ $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' searchable ')]", $vcard); // */
+ if ($search->length > 0)
+ $data["searchable"] = $search->item(0)->nodeValue;
- $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' searchable ')]", $vcard); // */
- if ($search->length > 0)
- $data["searchable"] = $search->item(0)->nodeValue;
+ $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' key ')]", $vcard); // */
+ if ($search->length > 0) {
+ $data["pubkey"] = $search->item(0)->nodeValue;
+ if (strstr($data["pubkey"], 'RSA '))
+ $data["pubkey"] = rsatopem($data["pubkey"]);
+ }
- $search = $xpath->query("//*[contains(concat(' ', @class, ' '), ' key ')]", $vcard); // */
- if ($search->length > 0) {
- $data["pubkey"] = $search->item(0)->nodeValue;
- if (strstr($data["pubkey"], 'RSA '))
- $data["pubkey"] = rsatopem($data["pubkey"]);
+ $search = $xpath->query("//*[@id='pod_location']", $vcard); // */
+ if ($search->length > 0)
+ $data["baseurl"] = trim($search->item(0)->nodeValue, "/");
}
- $search = $xpath->query("//*[@id='pod_location']", $vcard); // */
- if ($search->length > 0)
- $data["baseurl"] = trim($search->item(0)->nodeValue, "/");
-
$avatar = array();
$photos = $xpath->query("//*[contains(concat(' ', @class, ' '), ' photo ') or contains(concat(' ', @class, ' '), ' avatar ')]", $vcard); // */
foreach ($photos AS $photo) {