X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=actions%2Ffoaf.php;h=4420c2d5036cc59bf6bb4ad08fbcacce749e436a;hb=7a106f6669a62e401fc0c4c09c6c6859328ec3a2;hp=09af7b5026a9f0dd03f7781b8658b9ef4470761f;hpb=338aa4bf1d36e11a354c67796509c6d1fec2aac2;p=quix0rs-gnu-social.git diff --git a/actions/foaf.php b/actions/foaf.php index 09af7b5026..4420c2d503 100644 --- a/actions/foaf.php +++ b/actions/foaf.php @@ -17,28 +17,27 @@ * along with this program. If not, see . */ -if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } +if (!defined('GNUSOCIAL')) { exit(1); } define('LISTENER', 1); define('LISTENEE', -1); define('BOTH', 0); -class FoafAction extends Action +// @todo XXX: Documentation missing. +class FoafAction extends ManagedAction { - function isReadOnly($args) + function isReadOnly(array $args=array()) { return true; } - function prepare($args) + protected function doPreparation() { - parent::prepare($args); - $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; } $this->nickname = common_canonical_nickname($nickname_arg); @@ -49,30 +48,27 @@ class FoafAction extends Action common_redirect(common_local_url('foaf', array('nickname' => $this->nickname)), 301); - 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; } $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; } return true; } - function handle($args) + public function showPage() { - parent::handle($args); - header('Content-Type: application/rdf+xml'); $this->startXML(); @@ -90,11 +86,10 @@ class FoafAction extends Action // This is the document about the user - $this->showPpd('', $this->user->uri); + $this->showPpd('', $this->user->getUri()); // Would be nice to tell if they were a Person or not (e.g. a #person usertag?) - $this->elementStart('Agent', array('rdf:about' => - $this->user->uri)); + $this->elementStart('Agent', array('rdf:about' => $this->user->getUri())); if ($this->user->email) { $this->element('mbox_sha1sum', null, sha1('mailto:' . $this->user->email)); } @@ -110,7 +105,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 +113,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) { @@ -137,24 +132,28 @@ class FoafAction extends Action $this->elementEnd('based_near'); } - $avatar = $this->profile->getOriginalAvatar(); - if ($avatar) { + try { + $avatar = Avatar::getUploaded($this->profile); $this->elementStart('img'); - $this->elementStart('Image', array('rdf:about' => $avatar->url)); + $this->elementStart('Image', array('rdf:about' => $avatar->displayUrl())); foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) { - $scaled = $this->profile->getAvatar($size); - if (!$scaled->original) { // sometimes the original has one of our scaled sizes + try { + $scaled = $this->profile->getAvatar($size); $this->elementStart('thumbnail'); - $this->element('Image', array('rdf:about' => $scaled->url)); + $this->element('Image', array('rdf:about' => $scaled->displayUrl())); $this->elementEnd('thumbnail'); + } catch (Exception $e) { + // This avatar did not exist } } $this->elementEnd('Image'); $this->elementEnd('img'); + } catch (NoAvatarException $e) { + // No avatar for this user! } $person = $this->showMicrobloggingAccount($this->profile, - common_root_url(), $this->user->uri, + common_root_url(), $this->user->getUri(), /*$fetchSubscriptions*/true, /*$isSubscriber*/false); @@ -166,12 +165,11 @@ class FoafAction extends Action if ($sub->find()) { while ($sub->fetch()) { - $profile = Profile::staticGet('id', $sub->subscriber); - if (empty($profile)) { + $profile = Profile::getKV('id', $sub->subscriber); + if (!$profile instanceof 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; @@ -179,7 +177,7 @@ class FoafAction extends Action $person[$other_uri] = array(LISTENER, $profile->id, $profile->nickname, - $user ? 'local' : 'remote'); + $profile->isLocal() ? 'local' : 'remote'); } unset($profile); } @@ -193,7 +191,7 @@ class FoafAction extends Action $this->element('knows', array('rdf:resource' => $uri)); } } - + $this->elementEnd('Agent'); @@ -203,10 +201,10 @@ 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)); + $this->element('knows', array('rdf:resource' => $this->user->getUri())); } $this->showMicrobloggingAccount($profile, ($local == 'local') ? common_root_url() : null, @@ -239,18 +237,17 @@ class FoafAction extends Action /** * 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(); @@ -281,18 +278,17 @@ 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); } } @@ -300,7 +296,7 @@ class FoafAction extends Action 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->element('sioc:follows', array('rdf:resource' => $this->user->getUri() . '#acct')); } $this->elementEnd('OnlineAccount');