* Constructor
*
* @param Group $group the group for the feed
+ * @param User $cur the current authenticated user, if any
* @param boolean $indent flag to turn indenting on or off
*
* @return void
*/
- function __construct($group, $indent = true) {
- parent::__construct($indent);
+ function __construct($group, $cur = null, $indent = true) {
+ parent::__construct($cur, $indent);
$this->group = $group;
+ // TRANS: Title in atom group notice feed. %s is a group name.
$title = sprintf(_("%s timeline"), $group->nickname);
$this->setTitle($title);
$sitename = common_config('site', 'name');
$subtitle = sprintf(
+ // TRANS: Message is used as a subtitle in atom group notice feed.
+ // TRANS: %1$s is a group name, %2$s is a site name.
_('Updates from %1$s on %2$s!'),
$group->nickname,
$sitename
$this->setId($self);
$this->setSelfLink($self);
- $this->addAuthorRaw($group->asAtomAuthor());
- $this->setActivitySubject($group->asActivitySubject());
+ // For groups, we generate an author _AND_ an <activity:subject>
+ // Versions of StatusNet under 0.9.7 treat <author> as a person
+ // XXX: remove this workaround in future versions
+
+ $ao = ActivityObject::fromGroup($group);
+
+ $this->addAuthorRaw($ao->asString('author'));
+
+ $depMsg = 'Deprecation warning: activity:subject is present '
+ . 'only for backward compatibility. It will be '
+ . 'removed in the next version of StatusNet.';
+
+ $this->addAuthorRaw(
+ "<!--$depMsg-->\n"
+ . $ao->asString('activity:subject')
+ );
$this->addLink($group->homeUrl());
}
return $this->group;
}
+ function initFeed()
+ {
+ parent::initFeed();
+
+ $attrs = array();
+
+ if (!empty($this->cur)) {
+ $attrs['member'] = $this->cur->isMember($this->group)
+ ? 'true' : 'false';
+ $attrs['blocked'] = Group_block::isBlocked(
+ $this->group,
+ $this->cur->getProfile()
+ ) ? 'true' : 'false';
+ }
+
+ $attrs['member_count'] = $this->group->getMemberCount();
+
+ $this->element('statusnet:group_info', $attrs, null);
+ }
}