faster friend requests (DFRN)
This commit is contained in:
parent
18315a1377
commit
a5125359d8
3 changed files with 19 additions and 11 deletions
2
boot.php
2
boot.php
|
@ -7,7 +7,7 @@ require_once('include/text.php');
|
||||||
require_once("include/pgettext.php");
|
require_once("include/pgettext.php");
|
||||||
|
|
||||||
|
|
||||||
define ( 'FRIENDIKA_VERSION', '2.2.1094' );
|
define ( 'FRIENDIKA_VERSION', '2.2.1095' );
|
||||||
define ( 'DFRN_PROTOCOL_VERSION', '2.21' );
|
define ( 'DFRN_PROTOCOL_VERSION', '2.21' );
|
||||||
define ( 'DB_UPDATE_VERSION', 1087 );
|
define ( 'DB_UPDATE_VERSION', 1087 );
|
||||||
|
|
||||||
|
|
|
@ -259,22 +259,29 @@ function convert_xml_element_to_array($xml_element, &$recursion_depth=0) {
|
||||||
// or if the resultant personal XRD doesn't contain a supported
|
// or if the resultant personal XRD doesn't contain a supported
|
||||||
// subscription/friend-request attribute.
|
// subscription/friend-request attribute.
|
||||||
|
|
||||||
|
// amended 7/9/2011 to return an hcard which could save potentially loading
|
||||||
|
// a lengthy content page to scrape dfrn attributes
|
||||||
|
|
||||||
if(! function_exists('webfinger_dfrn')) {
|
if(! function_exists('webfinger_dfrn')) {
|
||||||
function webfinger_dfrn($s) {
|
function webfinger_dfrn($s,&$hcard) {
|
||||||
if(! strstr($s,'@')) {
|
if(! strstr($s,'@')) {
|
||||||
return $s;
|
return $s;
|
||||||
}
|
}
|
||||||
|
$profile_link = '';
|
||||||
|
|
||||||
$links = webfinger($s);
|
$links = webfinger($s);
|
||||||
logger('webfinger_dfrn: ' . $s . ':' . print_r($links,true), LOGGER_DATA);
|
logger('webfinger_dfrn: ' . $s . ':' . print_r($links,true), LOGGER_DATA);
|
||||||
if(count($links)) {
|
if(count($links)) {
|
||||||
foreach($links as $link)
|
foreach($links as $link) {
|
||||||
if($link['@attributes']['rel'] === NAMESPACE_DFRN)
|
if($link['@attributes']['rel'] === NAMESPACE_DFRN)
|
||||||
return $link['@attributes']['href'];
|
$profile_link = $link['@attributes']['href'];
|
||||||
foreach($links as $link)
|
|
||||||
if($link['@attributes']['rel'] === NAMESPACE_OSTATUSSUB)
|
if($link['@attributes']['rel'] === NAMESPACE_OSTATUSSUB)
|
||||||
return 'stat:' . $link['@attributes']['template'];
|
$profile_link = 'stat:' . $link['@attributes']['template'];
|
||||||
|
if($link['@attributes']['rel'] === 'http://microformats.org/profile/hcard')
|
||||||
|
$hcard = $link['@attributes']['href'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return '';
|
return $profile_link;
|
||||||
}}
|
}}
|
||||||
|
|
||||||
// Given an email style address, perform webfinger lookup and
|
// Given an email style address, perform webfinger lookup and
|
||||||
|
|
|
@ -277,14 +277,15 @@ function dfrn_request_post(&$a) {
|
||||||
|
|
||||||
// Canonicalise email-style profile locator
|
// Canonicalise email-style profile locator
|
||||||
|
|
||||||
$url = webfinger_dfrn($url);
|
$hcard = '';
|
||||||
|
$url = webfinger_dfrn($url,$hcard);
|
||||||
|
|
||||||
if(substr($url,0,5) === 'stat:') {
|
if(substr($url,0,5) === 'stat:') {
|
||||||
$network = 'stat';
|
$network = NETWORK_OSTATUS;
|
||||||
$url = substr($url,5);
|
$url = substr($url,5);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$network = 'dfrn';
|
$network = NETWORK_DFRN;
|
||||||
}
|
}
|
||||||
|
|
||||||
logger('dfrn_request: url: ' . $url);
|
logger('dfrn_request: url: ' . $url);
|
||||||
|
@ -342,7 +343,7 @@ function dfrn_request_post(&$a) {
|
||||||
|
|
||||||
require_once('Scrape.php');
|
require_once('Scrape.php');
|
||||||
|
|
||||||
$parms = scrape_dfrn($url);
|
$parms = scrape_dfrn(($hcard) ? $hcard : $url);
|
||||||
|
|
||||||
if(! count($parms)) {
|
if(! count($parms)) {
|
||||||
notice( t('Profile location is not valid or does not contain profile information.') . EOL );
|
notice( t('Profile location is not valid or does not contain profile information.') . EOL );
|
||||||
|
|
Loading…
Reference in a new issue