<?php
/*
- * StatusNet - a distributed open-source microblogging tool
+ * StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2008, 2009, StatusNet, Inc.
*
* This program is free software: you can redistribute it and/or modify
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-if (!defined('LACONICA')) { exit(1); }
+if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
define('LISTENER', 1);
define('LISTENEE', -1);
// 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->element('mbox_sha1sum', null, sha1('mailto:' . $this->user->email));
+ if ($this->user->email) {
+ $this->element('mbox_sha1sum', null, sha1('mailto:' . $this->user->email));
+ }
if ($this->profile->fullname) {
$this->element('name', null, $this->profile->fullname);
}
if ($this->profile->bio) {
$this->element('bio:olb', null, $this->profile->bio);
}
- // XXX: more structured location data
- if ($this->profile->location) {
+
+ $location = $this->profile->getLocation();
+ if ($location) {
+ $attr = array();
+ if ($location->getRdfURL()) {
+ $attr['rdf:about'] = $location->getRdfURL();
+ }
+ $location_name = $location->getName();
+
$this->elementStart('based_near');
- $this->elementStart('geo:SpatialThing');
- $this->element('name', null, $this->profile->location);
+ $this->elementStart('geo:SpatialThing', $attr);
+ if ($location_name) {
+ $this->element('name', null, $location_name);
+ }
+ if ($location->lat) {
+ $this->element('geo:lat', null, $location->lat);
+ }
+ if ($location->lon) {
+ $this->element('geo:long', null, $location->lon);
+ }
+ if ($location->getURL()) {
+ $this->element('page', array('rdf:resource'=>$location->getURL()));
+ }
$this->elementEnd('geo:SpatialThing');
$this->elementEnd('based_near');
}
if ($sub->find()) {
while ($sub->fetch()) {
- if ($sub->token) {
- $other = Remote_profile::staticGet('id', $sub->subscriber);
- } else {
- $other = User::staticGet('id', $sub->subscriber);
- }
- if (!$other) {
+ $profile = Profile::staticGet('id', $sub->subscriber);
+ if (empty($profile)) {
common_debug('Got a bad subscription: '.print_r($sub,true));
continue;
}
- if (array_key_exists($other->uri, $person)) {
- $person[$other->uri][0] = BOTH;
+ $user = $profile->getUser();
+ $other_uri = $profile->getUri();
+ if (array_key_exists($other_uri, $person)) {
+ $person[$other_uri][0] = BOTH;
} else {
- $person[$other->uri] = array(LISTENER,
- $other->id,
- $other->nickname,
- (empty($sub->token)) ? 'User' : 'Remote_profile');
+ $person[$other_uri] = array(LISTENER,
+ $profile->id,
+ $profile->nickname,
+ $user ? 'local' : 'remote');
}
- $other->free();
- $other = null;
- unset($other);
+ unset($profile);
}
}
- $sub->free();
- $sub = null;
unset($sub);
foreach ($person as $uri => $p) {
- list($type, $id, $nickname, $cls) = $p;
+ list($type, $id, $nickname, $local) = $p;
if ($type == BOTH) {
$this->element('knows', array('rdf:resource' => $uri));
}
foreach ($person as $uri => $p) {
$foaf_url = null;
- list($type, $id, $nickname, $cls) = $p;
- if ($cls == 'User') {
+ list($type, $id, $nickname, $local) = $p;
+ if ($local == 'local') {
$foaf_url = common_local_url('foaf', array('nickname' => $nickname));
}
$profile = Profile::staticGet($id);
$this->element('knows', array('rdf:resource' => $this->user->uri));
}
$this->showMicrobloggingAccount($profile,
- ($cls == 'User') ? common_root_url() : null,
+ ($local == 'local') ? common_root_url() : null,
$uri,
true);
if ($foaf_url) {
}
// Their account
- $this->elementStart('holdsAccount');
+ $this->elementStart('account');
$this->elementStart('OnlineAccount', $attr);
if ($service) {
$this->element('accountServiceHomepage', array('rdf:resource' =>
if ($sub->find()) {
while ($sub->fetch()) {
- if (!empty($sub->token)) {
- $other = Remote_profile::staticGet('id', $sub->subscribed);
- } else {
- $other = User::staticGet('id', $sub->subscribed);
- }
- if (empty($other)) {
+ $profile = Profile::staticGet('id', $sub->subscribed);
+ if (empty($profile)) {
common_debug('Got a bad subscription: '.print_r($sub,true));
continue;
}
- $this->element('sioc:follows', array('rdf:resource' => $other->uri.'#acct'));
- $person[$other->uri] = array(LISTENEE,
- $other->id,
- $other->nickname,
- (empty($sub->token)) ? 'User' : 'Remote_profile');
- $other->free();
- $other = null;
- unset($other);
+ $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');
+ unset($profile);
}
}
- $sub->free();
- $sub = null;
unset($sub);
}
$this->elementEnd('OnlineAccount');
- $this->elementEnd('holdsAccount');
+ $this->elementEnd('account');
return $person;
}