X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Ffoaf.php;h=c64617e5f04c566bc7edbb00b3265154019daf2f;hb=3a246c17266d562e0510e5a332009dcfda43c1c7;hp=d005510b6c3e834085ac12731e3c07be1a5f5397;hpb=c73ebf3382196dfd175fd1d5bc966157d96cde38;p=quix0rs-gnu-social.git diff --git a/actions/foaf.php b/actions/foaf.php index d005510b6c..c64617e5f0 100644 --- a/actions/foaf.php +++ b/actions/foaf.php @@ -24,26 +24,30 @@ define('LISTENEE', -1); define('BOTH', 0); class FoafAction extends Action { - + + function is_readonly() { + return true; + } + function handle($args) { parent::handle($args); $nickname = $this->trimmed('nickname'); - + $user = User::staticGet('nickname', $nickname); - + if (!$user) { - common_user_error(_t('No such user'), 404); + common_user_error(_('No such user.'), 404); return; } $profile = $user->getProfile(); if (!$profile) { - common_server_error(_t('User has no profile'), 500); + common_server_error(_('User has no profile.'), 500); return; } - + header('Content-Type: application/rdf+xml'); common_start_xml(); @@ -51,12 +55,14 @@ class FoafAction extends Action { 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'xmlns:rdfs' => 'http://www.w3.org/2000/01/rdf-schema#', + 'xmlns:geo' => + 'http://www.w3.org/2003/01/geo/wgs84_pos#', 'xmlns' => 'http://xmlns.com/foaf/0.1/')); # This is the document about the user - + $this->show_ppd('', $user->uri); - + # XXX: might not be a person common_element_start('Person', array('rdf:about' => $user->uri)); @@ -90,7 +96,7 @@ class FoafAction extends Action { $scaled = $profile->getAvatar($size); if (!$scaled->original) { # sometimes the original has one of our scaled sizes common_element_start('thumbnail'); - common_element('Image', array('rdf:about', $scaled->url)); + common_element('Image', array('rdf:about' => $scaled->url)); common_element_end('thumbnail'); } } @@ -99,7 +105,7 @@ class FoafAction extends Action { } # Get people user is subscribed to - + $person = array(); $sub = new Subscription(); @@ -108,11 +114,15 @@ class FoafAction extends Action { if ($sub->find()) { while ($sub->fetch()) { if ($sub->token) { - $other = Remote_profile::staticGet($sub->subscribed); + $other = Remote_profile::staticGet('id', $sub->subscribed); } else { - $other = User::staticGet($sub->subscribed); + $other = User::staticGet('id', $sub->subscribed); + } + if (!$other) { + common_debug('Got a bad subscription: '.print_r($sub,TRUE)); + continue; } - common_element('knows', array('rdf:about', $other->uri)); + common_element('knows', array('rdf:resource' => $other->uri)); $person[$other->uri] = array(LISTENEE, $other); } } @@ -125,9 +135,13 @@ class FoafAction extends Action { if ($sub->find()) { while ($sub->fetch()) { if ($sub->token) { - $other = Remote_profile::staticGet($sub->subscribed); + $other = Remote_profile::staticGet('id', $sub->subscriber); } else { - $other = User::staticGet($sub->subscribed); + $other = User::staticGet('id', $sub->subscriber); + } + if (!$other) { + common_debug('Got a bad subscription: '.print_r($sub,TRUE)); + continue; } if (array_key_exists($other->uri, $person)) { $person[$other->uri][0] = BOTH; @@ -136,7 +150,7 @@ class FoafAction extends Action { } } } - + common_element_end('Person'); foreach ($person as $uri => $p) { @@ -147,7 +161,7 @@ class FoafAction extends Action { $profile = Profile::staticGet($p[1]->id); common_element_start('Person', array('rdf:about' => $uri)); if ($p[0] == LISTENER || $p[0] == BOTH) { - common_element('knows', array('rdf:about', $user->uri)); + common_element('knows', array('rdf:resource' => $user->uri)); } $this->show_microblogging_account($profile, ($p[1] instanceof User) ? common_root_url() : NULL); @@ -159,17 +173,17 @@ class FoafAction extends Action { $this->show_ppd($foaf_url, $uri); } } - + common_element_end('rdf:RDF'); } - + function show_ppd($foaf_url, $person_uri) { common_element_start('PersonalProfileDocument', array('rdf:about' => $foaf_url)); common_element('maker', array('rdf:resource' => $person_uri)); common_element('primaryTopic', array('rdf:resource' => $person_uri)); common_element_end('PersonalProfileDocument'); } - + function show_microblogging_account($profile, $service=NULL) { # Their account common_element_start('holdsAccount');