$xrd_timeout = Config::get('system','xrd_timeout', 20);
$redirects = 0;
- $xml = fetch_url($ssl_url, false, $redirects, $xrd_timeout, "application/xrd+xml");
+ $ret = z_fetch_url($ssl_url, false, $redirects, array('timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml'));
+ if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) {
+ return false;
+ }
+ $xml = $ret['body'];
+
$xrd = parse_xml_string($xml, false);
if (!is_object($xrd)) {
- $xml = fetch_url($url, false, $redirects, $xrd_timeout, "application/xrd+xml");
+ $ret = z_fetch_url($url, false, $redirects, array('timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml'));
+ if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) {
+ return false;
+ }
+ $xml = $ret['body'];
$xrd = parse_xml_string($xml, false);
}
if (!is_object($xrd))
!isset($parts["path"]))
return false;
- // todo: Ports?
+ /// @todo: Ports?
$host = $parts["host"];
if ($host == 'twitter.com')
$xrd_timeout = Config::get('system','xrd_timeout', 20);
$redirects = 0;
- $data = fetch_url($url, false, $redirects, $xrd_timeout, "application/xrd+xml");
+ $ret = z_fetch_url($url, false, $redirects, array('timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml'));
+ if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) {
+ return false;
+ }
+ $data = $ret['body'];
+
$xrd = parse_xml_string($data, false);
if (!is_object($xrd)) {
* @return array noscrape data
*/
private function poll_noscrape($noscrape, $data) {
- $content = fetch_url($noscrape);
- if (!$content)
+ $ret = z_fetch_url($noscrape);
+ if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) {
+ return false;
+ }
+ $content = $ret['body'];
+ if (!$content) {
return false;
+ }
$json = json_decode($content, true);
if (!is_array($json))
* @return array hcard data
*/
private function poll_hcard($hcard, $data, $dfrn = false) {
-
- $content = fetch_url($hcard);
- if (!$content)
+ $ret = z_fetch_url($hcard);
+ if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) {
return false;
+ }
+ $content = $ret['body'];
+ if (!$content) {
+ return false;
+ }
$doc = new DOMDocument();
if (!@$doc->loadHTML($content))
$photos = $xpath->query("//*[contains(concat(' ', @class, ' '), ' photo ') or contains(concat(' ', @class, ' '), ' avatar ')]", $vcard); // */
foreach ($photos AS $photo) {
$attr = array();
- foreach ($photo->attributes as $attribute)
+ foreach ($photo->attributes as $attribute) {
$attr[$attribute->name] = trim($attribute->value);
+ }
- if (isset($attr["src"]) AND isset($attr["width"]))
+ if (isset($attr["src"]) AND isset($attr["width"])) {
$avatar[$attr["width"]] = $attr["src"];
+ }
+
+ // We don't have a width. So we just take everything that we got.
+ // This is a Hubzilla workaround which doesn't send a width.
+ if ((sizeof($avatar) == 0) AND isset($attr["src"])) {
+ $avatar[] = $attr["src"];
+ }
}
if (sizeof($avatar)) {
$pubkey = substr($pubkey, strpos($pubkey, ',') + 1);
else
$pubkey = substr($pubkey, 5);
- } elseif (normalise_link($pubkey) == 'http://')
- $pubkey = fetch_url($pubkey);
+ } elseif (normalise_link($pubkey) == 'http://') {
+ $ret = z_fetch_url($pubkey);
+ if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) {
+ return false;
+ }
+ $pubkey = $ret['body'];
+ }
$key = explode(".", $pubkey);
return false;
// Fetch all additional data from the feed
- $feed = fetch_url($data["poll"]);
+ $ret = z_fetch_url($data["poll"]);
+ if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) {
+ return false;
+ }
+ $feed = $ret['body'];
$feed_data = feed_import($feed,$dummy1,$dummy2, $dummy3, true);
if (!$feed_data)
return false;
* @return array feed data
*/
private function feed($url, $probe = true) {
- $feed = fetch_url($url);
+ $ret = z_fetch_url($url);
+ if ($ret['errno'] == CURLE_OPERATION_TIMEDOUT) {
+ return false;
+ }
+ $feed = $ret['body'];
$feed_data = feed_import($feed, $dummy1, $dummy2, $dummy3, true);
if (!$feed_data) {