X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Ffoaf.php;h=77e27796db059cd88ec5c1b34625f5366b353137;hb=63306081bc164fcf57abd7f0996767626fd1e501;hp=2f054de0c9f73885fafbb49e00e7808ca2cd9e29;hpb=d5b4df4097c2d64e52f249042038ddbf99769b6c;p=quix0rs-gnu-social.git diff --git a/actions/foaf.php b/actions/foaf.php index 2f054de0c9..77e27796db 100644 --- a/actions/foaf.php +++ b/actions/foaf.php @@ -23,6 +23,7 @@ define('LISTENER', 1); define('LISTENEE', -1); define('BOTH', 0); +// @todo XXX: Documentation missing. class FoafAction extends Action { function isReadOnly($args) @@ -37,6 +38,7 @@ class FoafAction extends Action $nickname_arg = $this->arg('nickname'); if (empty($nickname_arg)) { + // TRANS: Client error displayed when requesting Friends of a Friend feed without providing a user nickname. $this->clientError(_('No such user.'), 404); return false; } @@ -52,9 +54,10 @@ class FoafAction extends Action return false; } - $this->user = User::staticGet('nickname', $this->nickname); + $this->user = User::getKV('nickname', $this->nickname); if (!$this->user) { + // TRANS: Client error displayed when requesting Friends of a Friend feed for an object that is not a user. $this->clientError(_('No such user.'), 404); return false; } @@ -62,6 +65,7 @@ class FoafAction extends Action $this->profile = $this->user->getProfile(); if (!$this->profile) { + // TRANS: Error message displayed when referring to a user without a profile. $this->serverError(_('User has no profile.'), 500); return false; } @@ -110,7 +114,7 @@ class FoafAction extends Action if ($this->profile->bio) { $this->element('bio:olb', null, $this->profile->bio); } - + $location = $this->profile->getLocation(); if ($location) { $attr = array(); @@ -118,7 +122,7 @@ class FoafAction extends Action $attr['rdf:about'] = $location->getRdfURL(); } $location_name = $location->getName(); - + $this->elementStart('based_near'); $this->elementStart('geo:SpatialThing', $attr); if ($location_name) { @@ -154,7 +158,9 @@ class FoafAction extends Action } $person = $this->showMicrobloggingAccount($this->profile, - common_root_url(), $this->user->uri, false); + common_root_url(), $this->user->uri, + /*$fetchSubscriptions*/true, + /*$isSubscriber*/false); // Get people who subscribe to user @@ -164,12 +170,11 @@ class FoafAction extends Action if ($sub->find()) { while ($sub->fetch()) { - $profile = Profile::staticGet('id', $sub->subscriber); + $profile = Profile::getKV('id', $sub->subscriber); if (empty($profile)) { common_debug('Got a bad subscription: '.print_r($sub,true)); continue; } - $user = $profile->getUser(); $other_uri = $profile->getUri(); if (array_key_exists($other_uri, $person)) { $person[$other_uri][0] = BOTH; @@ -177,7 +182,7 @@ class FoafAction extends Action $person[$other_uri] = array(LISTENER, $profile->id, $profile->nickname, - $user ? 'local' : 'remote'); + $profile->isLocal() ? 'local' : 'remote'); } unset($profile); } @@ -191,7 +196,7 @@ class FoafAction extends Action $this->element('knows', array('rdf:resource' => $uri)); } } - + $this->elementEnd('Agent'); @@ -201,7 +206,7 @@ class FoafAction extends Action if ($local == 'local') { $foaf_url = common_local_url('foaf', array('nickname' => $nickname)); } - $profile = Profile::staticGet($id); + $profile = Profile::getKV($id); $this->elementStart('Agent', array('rdf:about' => $uri)); if ($type == BOTH) { $this->element('knows', array('rdf:resource' => $this->user->uri)); @@ -209,7 +214,8 @@ class FoafAction extends Action $this->showMicrobloggingAccount($profile, ($local == 'local') ? common_root_url() : null, $uri, - true); + /*$fetchSubscriptions*/false, + /*$isSubscriber*/($type == LISTENER || $type == BOTH)); if ($foaf_url) { $this->element('rdfs:seeAlso', array('rdf:resource' => $foaf_url)); } @@ -234,7 +240,20 @@ class FoafAction extends Action $this->elementEnd('PersonalProfileDocument'); } - function showMicrobloggingAccount($profile, $service=null, $useruri=null, $isSubscriber=false) + /** + * Output FOAF bit for the given profile. + * + * @param Profile $profile + * @param mixed $service Root URL of this StatusNet instance for a local + * user, otherwise null. + * @param mixed $useruri URI string for the referenced profile.. + * @param boolean $fetchSubscriptions Should we load and list all their subscriptions? + * @param boolean $isSubscriber if not fetching subs, we can still mark the user as following the current page. + * + * @return array if $fetchSubscribers is set, return a list of info on those + * subscriptions. + */ + function showMicrobloggingAccount($profile, $service=null, $useruri=null, $fetchSubscriptions=false, $isSubscriber=false) { $attr = array(); if ($useruri) { @@ -256,9 +275,7 @@ class FoafAction extends Action $person = array(); - if ($isSubscriber) { - $this->element('sioc:follows', array('rdf:resource'=>$this->user->uri . '#acct')); - } else { + if ($fetchSubscriptions) { // Get people user is subscribed to $sub = new Subscription(); $sub->subscriber = $profile->id; @@ -266,23 +283,25 @@ class FoafAction extends Action if ($sub->find()) { while ($sub->fetch()) { - $profile = Profile::staticGet('id', $sub->subscribed); + $profile = Profile::getKV('id', $sub->subscribed); if (empty($profile)) { common_debug('Got a bad subscription: '.print_r($sub,true)); continue; } - $user = $profile->getUser(); $other_uri = $profile->getUri(); $this->element('sioc:follows', array('rdf:resource' => $other_uri.'#acct')); $person[$other_uri] = array(LISTENEE, $profile->id, $profile->nickname, - $user ? 'local' : 'remote'); + $profile->isLocal() ? 'local' : 'remote'); unset($profile); } } unset($sub); + } else if ($isSubscriber) { + // Just declare that they follow the user whose FOAF we're showing. + $this->element('sioc:follows', array('rdf:resource' => $this->user->uri . '#acct')); } $this->elementEnd('OnlineAccount');