diff --git a/plugins/Activity/ActivityPlugin.php b/plugins/Activity/ActivityPlugin.php index 2785931d0e..a4d45b2122 100644 --- a/plugins/Activity/ActivityPlugin.php +++ b/plugins/Activity/ActivityPlugin.php @@ -63,6 +63,9 @@ class ActivityPlugin extends Plugin switch ($cls) { + case 'JoinListItem': + include_once $dir . '/'.strtolower($cls).'.php'; + return false; default: return true; } @@ -274,13 +277,35 @@ class ActivityPlugin extends Plugin 'object_type' => ActivityObject::GROUP)); return true; } + + function onStartShowNoticeItem($nli) + { + $notice = $nli->notice; + + $adapter = null; + + switch ($notice->verb) { + case ActivityVerb::JOIN: + $adapter = new JoinListItem($nli); + break; + } + + if (!empty($adapter)) { + $adapter->showNotice(); + $adapter->showNoticeAttachments(); + $adapter->showNoticeInfo(); + $adapter->showNoticeOptions(); + return false; + } + + return true; + } function onEndNoticeAsActivity($notice, &$activity) { return true; } - function onPluginVersion(&$versions) { $versions[] = array('name' => 'Activity', diff --git a/plugins/Activity/joinlistitem.php b/plugins/Activity/joinlistitem.php new file mode 100644 index 0000000000..404ac847d9 --- /dev/null +++ b/plugins/Activity/joinlistitem.php @@ -0,0 +1,89 @@ +. + * + * @category Cache + * @package StatusNet + * @author Evan Prodromou + * @copyright 2011 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + // This check helps protect against security problems; + // your code file can't be executed directly from the web. + exit(1); +} + +/** + * NoticeListItemAdapter for join activities + * + * @category General + * @package StatusNet + * @author Evan Prodromou + * @copyright 2011 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +class JoinListItem extends NoticeListItemAdapter +{ + /** + * Show the join activity + * + * @return void + */ + + function showNotice() + { + common_debug("Showing notice from JoinListItem"); + $out = $this->nli->out; + $out->elementStart('div', 'entry-title'); + $this->showContent(); + $out->elementEnd('div'); + } + + function showContent() + { + $notice = $this->nli->notice; + $out = $this->nli->out; + + $mem = Group_member::staticGet('uri', $notice->uri); + + $out->elementStart('div', 'join-activity'); + + if (!empty($mem)) { + $profile = $mem->getMember(); + $group = $mem->getGroup(); + $out->raw(sprintf(_m('%s joined the group %s.'), + $profile->profileurl, + $profile->getBestName(), + $group->homeUrl(), + $group->getBestName())); + } else { + $out->raw($entry->summary); + } + + $out->elementEnd('div'); + } +} +