return true;
}
- /**
- * Load related modules when needed
- *
- * @param string $cls Name of the class to be loaded
- *
- * @return boolean hook value; true means continue processing, false means stop.
- */
- function onAutoload($cls)
- {
- $dir = dirname(__FILE__);
-
- switch ($cls)
- {
- case 'TagSub':
- include_once $dir.'/'.$cls.'.php';
- return false;
- case 'TagsubAction':
- case 'TagunsubAction':
- case 'TagSubForm':
- case 'TagUnsubForm':
- include_once $dir.'/'.strtolower($cls).'.php';
- return false;
- default:
- return true;
- }
- }
-
/**
* Map URLs to actions
*
- * @param Net_URL_Mapper $m path-to-action mapper
+ * @param URLMapper $m path-to-action mapper
*
* @return boolean hook value; true means continue processing, false means stop.
*/
- function onRouterInitialized($m)
+ public function onRouterInitialized(URLMapper $m)
{
$m->connect('tag/:tag/subscribe',
array('action' => 'tagsub'),
array('action' => 'tagunsub'),
array('tag' => Router::REGEX_TAG));
+ $m->connect(':nickname/tag-subscriptions',
+ array('action' => 'tagsubs'),
+ array('nickname' => Nickname::DISPLAY_FMT));
return true;
}
*
* @return value
*/
- function onPluginVersion(&$versions)
+ function onPluginVersion(array &$versions)
{
$versions[] = array('name' => 'TagSub',
'version' => self::VERSION,
function onStartTagShowContent(TagAction $action)
{
$user = common_current_user();
- if ($user) {
+
+ if ($user instanceof User) {
$tag = $action->trimmed('tag');
$tagsub = TagSub::pkeyGet(array('tag' => $tag,
'profile_id' => $user->id));
$action->elementEnd('ul');
$action->elementEnd('div');
}
+
+ return true;
+ }
+
+ /**
+ * Menu item for personal subscriptions/groups area
+ *
+ * @param Widget $widget Widget being executed
+ *
+ * @return boolean hook return
+ */
+ function onEndSubGroupNav($widget)
+ {
+ $action = $widget->out;
+ $action_name = $action->trimmed('action');
+
+ $action->menuItem(common_local_url('tagsubs', array('nickname' => $action->user->nickname)),
+ // TRANS: SubMirror plugin menu item on user settings page.
+ _m('MENU', 'Tags'),
+ // TRANS: SubMirror plugin tooltip for user settings menu item.
+ _m('Configure tag subscriptions'),
+ $action_name == 'tagsubs' && $action->arg('nickname') == $action->user->nickname);
+
+ return true;
+ }
+
+ function onEndDefaultLocalNav($menu, $user)
+ {
+ $user = common_current_user();
+
+ if (!empty($user)) {
+
+ $tags = TagSub::forProfile($user->getProfile());
+
+ if (!empty($tags) && count($tags) > 0) {
+ $tagSubMenu = new TagSubMenu($menu->out, $user, $tags);
+ // TRANS: Menu item text for tags submenu.
+ $menu->submenu(_m('Tags'), $tagSubMenu);
+ }
+ }
+
return true;
}
}