]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - plugins/SearchSub/SearchSubPlugin.php
Style for invite forms and width fix for Onboard popup.
[quix0rs-gnu-social.git] / plugins / SearchSub / SearchSubPlugin.php
index f7da8c44d9acf1ccffd0bf3e3ee80d326731dba0..de131c2b04f161f59e13eee161910f36e3c02384 100644 (file)
@@ -80,7 +80,12 @@ class SearchSubPlugin extends Plugin
         case 'SearchunsubAction':
         case 'SearchsubsAction':
         case 'SearchSubForm':
+        case 'SearchSubMenu':
         case 'SearchUnsubForm':
+        case 'SearchSubTrackCommand':
+        case 'SearchSubTrackOffCommand':
+        case 'SearchSubTrackingCommand':
+        case 'SearchSubUntrackCommand':
             include_once $dir.'/'.strtolower($cls).'.php';
             return false;
         default:
@@ -238,35 +243,64 @@ class SearchSubPlugin extends Plugin
     }
 
     /**
-     * Add a count of mirrored feeds into a user's profile sidebar stats.
+     * Replace the built-in stub track commands with ones that control
+     * search subscriptions.
      *
-     * @param Profile $profile
-     * @param array $stats
-     * @return boolean hook return value
+     * @param CommandInterpreter $cmd
+     * @param string $arg
+     * @param User $user
+     * @param Command $result
+     * @return boolean hook result
      */
-    function onProfileStats($profile, &$stats)
+    function onEndInterpretCommand($cmd, $arg, $user, &$result)
     {
-        $cur = common_current_user();
-        if (!empty($cur) && $cur->id == $profile->id) {
-            $searchsub = new SearchSub();
-            $searchsub ->profile_id = $profile->id;
-            $entry = array(
-                'id' => 'searchsubs',
-                'label' => _m('Search subscriptions'),
-                'link' => common_local_url('searchsubs', array('nickname' => $profile->nickname)),
-                'value' => $searchsub->count(),
-            );
+        if ($result instanceof TrackCommand) {
+            $result = new SearchSubTrackCommand($user, $arg);
+            return false;
+        } else if ($result instanceof TrackOffCommand) {
+            $result = new SearchSubTrackOffCommand($user);
+            return false;
+        } else if ($result instanceof TrackingCommand) {
+            $result = new SearchSubTrackingCommand($user);
+            return false;
+        } else if ($result instanceof UntrackCommand) {
+            $result = new SearchSubUntrackCommand($user, $arg);
+            return false;
+        } else {
+            return true;
+        }
+    }
 
-            $insertAt = count($stats);
-            foreach ($stats as $i => $row) {
-                if ($row['id'] == 'groups') {
-                    // Slip us in after them.
-                    $insertAt = $i + 1;
-                    break;
-                }
+    function onHelpCommandMessages($cmd, &$commands)
+    {
+        // TRANS: Help message for IM/SMS command "track <word>"
+        $commands["track <word>"] = _m('COMMANDHELP', "Start following notices matching the given search query.");
+        // TRANS: Help message for IM/SMS command "untrack <word>"
+        $commands["untrack <word>"] = _m('COMMANDHELP', "Stop following notices matching the given search query.");
+        // TRANS: Help message for IM/SMS command "track off"
+        $commands["track off"] = _m('COMMANDHELP', "Disable all tracked search subscriptions.");
+        // TRANS: Help message for IM/SMS command "untrack all"
+        $commands["untrack all"] = _m('COMMANDHELP', "Disable all tracked search subscriptions.");
+        // TRANS: Help message for IM/SMS command "tracks"
+        $commands["tracks"] = _m('COMMANDHELP', "List all your search subscriptions.");
+        // TRANS: Help message for IM/SMS command "tracking"
+        $commands["tracking"] = _m('COMMANDHELP', "List all your search subscriptions.");
+    }
+
+    function onEndDefaultLocalNav($menu, $user)
+    {
+        $user = common_current_user();
+
+        if (!empty($user)) {
+            $searches = SearchSub::forProfile($user->getProfile());
+
+            if (!empty($searches) && count($searches) > 0) {
+                $searchSubMenu = new SearchSubMenu($menu->out, $user, $searches);
+                $menu->submenu(_m('Searches'), $searchSubMenu);
             }
-            array_splice($stats, $insertAt, 0, array($entry));
         }
+
         return true;
     }
+
 }