]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/TagSub/TagSubPlugin.php
Merge remote-tracking branch 'upstream/master' into social-master
[quix0rs-gnu-social.git] / plugins / TagSub / TagSubPlugin.php
index e51a7a8b39ff41392d377271326356ae8ab6b580..ed65665ecc6c3f7dc0d6b4fbc6fd660c9dc763e4 100644 (file)
@@ -60,41 +60,14 @@ class TagSubPlugin extends Plugin
         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'),
@@ -103,6 +76,9 @@ class TagSubPlugin extends Plugin
                     array('action' => 'tagunsub'),
                     array('tag' => Router::REGEX_TAG));
 
+        $m->connect(':nickname/tag-subscriptions',
+                    array('action' => 'tagsubs'),
+                    array('nickname' => Nickname::DISPLAY_FMT));
         return true;
     }
 
@@ -113,7 +89,7 @@ class TagSubPlugin extends Plugin
      *
      * @return value
      */
-    function onPluginVersion(&$versions)
+    function onPluginVersion(array &$versions)
     {
         $versions[] = array('name' => 'TagSub',
                             'version' => self::VERSION,
@@ -160,7 +136,8 @@ class TagSubPlugin extends Plugin
     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));
@@ -177,6 +154,47 @@ class TagSubPlugin extends Plugin
             $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;
     }
 }