correctly show <source> for atom feeds
This commit is contained in:
parent
744233c6dc
commit
f83171824f
|
@ -1215,29 +1215,45 @@ class Notice extends Memcached_DataObject
|
||||||
|
|
||||||
if ($source) {
|
if ($source) {
|
||||||
|
|
||||||
$xs->elementStart('source');
|
$atom_feed = $profile->getAtomFeed();
|
||||||
|
|
||||||
$xs->element('id', null, $profile->profileurl);
|
if (!empty($atom_feed)) {
|
||||||
$xs->element('title', null, $profile->nickname . " - " . common_config('site', 'name'));
|
|
||||||
$xs->element('link', array('href' => $profile->profileurl));
|
|
||||||
|
|
||||||
$user = User::staticGet('id', $profile->id);
|
$xs->elementStart('source');
|
||||||
|
|
||||||
|
// XXX: we should store the actual feed ID
|
||||||
|
|
||||||
|
$xs->element('id', null, $atom_feed);
|
||||||
|
|
||||||
|
// XXX: we should store the actual feed title
|
||||||
|
|
||||||
|
$xs->element('title', null, $profile->getBestName());
|
||||||
|
|
||||||
|
$xs->element('link', array('rel' => 'alternate',
|
||||||
|
'type' => 'text/html',
|
||||||
|
'href' => $profile->profileurl));
|
||||||
|
|
||||||
if (!empty($user)) {
|
|
||||||
$atom_feed = common_local_url('ApiTimelineUser',
|
|
||||||
array('format' => 'atom',
|
|
||||||
'id' => $profile->nickname));
|
|
||||||
$xs->element('link', array('rel' => 'self',
|
$xs->element('link', array('rel' => 'self',
|
||||||
'type' => 'application/atom+xml',
|
'type' => 'application/atom+xml',
|
||||||
'href' => $profile->profileurl));
|
'href' => $atom_feed));
|
||||||
$xs->element('link', array('rel' => 'license',
|
|
||||||
'href' => common_config('license', 'url')));
|
$xs->element('icon', null, $profile->avatarUrl(AVATAR_PROFILE_SIZE));
|
||||||
|
|
||||||
|
$notice = $profile->getCurrentNotice();
|
||||||
|
|
||||||
|
if (!empty($notice)) {
|
||||||
|
$xs->element('updated', null, common_date_w3dtf($notice->created));
|
||||||
|
}
|
||||||
|
|
||||||
|
$user = User::staticGet('id', $profile->id);
|
||||||
|
|
||||||
|
if (!empty($user)) {
|
||||||
|
$xs->element('link', array('rel' => 'license',
|
||||||
|
'href' => common_config('license', 'url')));
|
||||||
|
}
|
||||||
|
|
||||||
|
$xs->elementEnd('source');
|
||||||
}
|
}
|
||||||
|
|
||||||
$xs->element('icon', null, $profile->avatarUrl(AVATAR_PROFILE_SIZE));
|
|
||||||
$xs->element('updated', null, common_date_w3dtf($this->created)); // FIXME: not true!
|
|
||||||
|
|
||||||
$xs->elementEnd('source');
|
|
||||||
}
|
}
|
||||||
Event::handle('EndActivitySource', array(&$this, &$xs));
|
Event::handle('EndActivitySource', array(&$this, &$xs));
|
||||||
}
|
}
|
||||||
|
|
|
@ -152,17 +152,16 @@ class Profile extends Memcached_DataObject
|
||||||
*
|
*
|
||||||
* @return mixed Notice or null
|
* @return mixed Notice or null
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function getCurrentNotice()
|
function getCurrentNotice()
|
||||||
{
|
{
|
||||||
$notice = new Notice();
|
$notice = $this->getNotices(0, 1);
|
||||||
$notice->profile_id = $this->id;
|
|
||||||
// @fixme change this to sort on notice.id only when indexes are updated
|
if ($notice->fetch()) {
|
||||||
$notice->orderBy('created DESC, notice.id DESC');
|
|
||||||
$notice->limit(1);
|
|
||||||
if ($notice->find(true)) {
|
|
||||||
return $notice;
|
return $notice;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTaggedNotices($tag, $offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $max_id=0)
|
function getTaggedNotices($tag, $offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $max_id=0)
|
||||||
|
@ -943,4 +942,20 @@ class Profile extends Memcached_DataObject
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getAtomFeed()
|
||||||
|
{
|
||||||
|
$feed = null;
|
||||||
|
|
||||||
|
if (Event::handle('StartProfileGetAtomFeed', array($this, &$feed))) {
|
||||||
|
$user = User::staticGet('id', $this->id);
|
||||||
|
if (!empty($user)) {
|
||||||
|
$feed = common_local_url('ApiTimelineUser', array('id' => $user->id,
|
||||||
|
'format' => 'atom'));
|
||||||
|
}
|
||||||
|
Event::handle('EndProfileGetAtomFeed', array($this, $feed));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $feed;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -953,4 +953,16 @@ class OStatusPlugin extends Plugin
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function onStartProfileGetAtomFeed($profile, &$feed)
|
||||||
|
{
|
||||||
|
$oprofile = Ostatus_profile::staticGet('profile_id', $profile->id);
|
||||||
|
|
||||||
|
if (empty($oprofile)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$feed = $oprofile->feeduri;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user