{
$aliases = array();
- try {
- // Try to create an acct: URI if we're dealing with a profile
- $aliases[] = $this->reconstructAcct();
- } catch (WebFingerReconstructionException $e) {
- common_debug("WebFinger reconstruction for Profile failed (id={$this->object->id})");
+ // only persons ("accounts" or "agents" actually) have acct: URIs
+ if ($this->object->isPerson()) {
+ try {
+ // Try to create an acct: URI if we're dealing with a profile
+ $aliases[] = $this->reconstructAcct();
+ } catch (WebFingerReconstructionException $e) {
+ common_debug("WebFinger reconstruction for Profile failed (id={$this->object->getID()})");
+ }
}
return array_merge($aliases, parent::getAliases());
if (Event::handle('StartWebFingerReconstruction', array($this->object, &$acct))) {
// TODO: getUri may not always give us the correct host on remote users?
$host = parse_url($this->object->getUri(), PHP_URL_HOST);
- if (empty($this->object->nickname) || empty($host)) {
+ if (empty($this->object->getNickname()) || empty($host)) {
throw new WebFingerReconstructionException($this->object);
}
- $acct = mb_strtolower(sprintf('acct:%s@%s', $this->object->nickname, $host));
+ $acct = mb_strtolower(sprintf('acct:%s@%s', $this->object->getNickname(), $host));
Event::handle('EndWebFingerReconstruction', array($this->object, &$acct));
}
{
if (Event::handle('StartWebFingerProfileLinks', array($xrd, $this->object))) {
+ if (common_config('site', 'fancy')) {
+ $apiRoot = common_path('api/', true);
+ } else {
+ $apiRoot = common_path('index.php/api/', true);
+ }
+
+ // Profile page, can give more metadata from Link header or HTML parsing
$xrd->links[] = new XML_XRD_Element_Link(self::PROFILEPAGE,
$this->object->getUrl(), 'text/html');
// XFN
$xrd->links[] = new XML_XRD_Element_Link('http://gmpg.org/xfn/11',
$this->object->getUrl(), 'text/html');
- // FOAF
- $xrd->links[] = new XML_XRD_Element_Link('describedby',
+ if ($this->object->isPerson()) {
+ // FOAF for user
+ $xrd->links[] = new XML_XRD_Element_Link('describedby',
common_local_url('foaf',
- array('nickname' => $this->object->nickname)),
+ array('nickname' => $this->object->getNickname())),
'application/rdf+xml');
- $link = new XML_XRD_Element_Link('http://apinamespace.org/atom',
+ // nickname discovery for apps etc.
+ $link = new XML_XRD_Element_Link('http://apinamespace.org/atom',
common_local_url('ApiAtomService',
- array('id' => $this->object->nickname)),
+ array('id' => $this->object->getNickname())),
'application/atomsvc+xml');
-// XML_XRD must implement changing properties first $link['http://apinamespace.org/atom/username'] = $this->object->nickname;
- $xrd->links[] = clone $link;
-
- if (common_config('site', 'fancy')) {
- $apiRoot = common_path('api/', true);
- } else {
- $apiRoot = common_path('index.php/api/', true);
+ // XML_XRD must implement changing properties first $link['http://apinamespace.org/atom/username'] = $this->object->getNickname();
+ $xrd->links[] = clone $link;
+
+ $link = new XML_XRD_Element_Link('http://apinamespace.org/twitter', $apiRoot);
+ // XML_XRD must implement changing properties first $link['http://apinamespace.org/twitter/username'] = $this->object->getNickname();
+ $xrd->links[] = clone $link;
+
+ } elseif ($this->object->isGroup()) {
+ // FOAF for group
+ $xrd->links[] = new XML_XRD_Element_Link('describedby',
+ common_local_url('foafgroup',
+ array('nickname' => $this->object->getNickname())),
+ 'application/rdf+xml');
}
- $link = new XML_XRD_Element_Link('http://apinamespace.org/twitter', $apiRoot);
-// XML_XRD must implement changing properties first $link['http://apinamespace.org/twitter/username'] = $this->object->nickname;
- $xrd->links[] = clone $link;
-
Event::handle('EndWebFingerProfileLinks', array($xrd, $this->object));
}
}