X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FSearchSub%2FSearchSubPlugin.php;h=4c8d2121047fd528a8f6006dc8aaf8843d66067f;hb=e2d85a39e7f82ceef2cb2fe66a3a9a62ac9a363e;hp=f7da8c44d9acf1ccffd0bf3e3ee80d326731dba0;hpb=e36959d45126617fbf813bf585134982353f01d5;p=quix0rs-gnu-social.git diff --git a/plugins/SearchSub/SearchSubPlugin.php b/plugins/SearchSub/SearchSubPlugin.php index f7da8c44d9..4c8d212104 100644 --- a/plugins/SearchSub/SearchSubPlugin.php +++ b/plugins/SearchSub/SearchSubPlugin.php @@ -60,42 +60,14 @@ class SearchSubPlugin 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 'SearchSub': - include_once $dir.'/'.$cls.'.php'; - return false; - case 'SearchsubAction': - case 'SearchunsubAction': - case 'SearchsubsAction': - case 'SearchSubForm': - case 'SearchUnsubForm': - 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('search/:search/subscribe', array('action' => 'searchsub'), @@ -103,7 +75,6 @@ class SearchSubPlugin extends Plugin $m->connect('search/:search/unsubscribe', array('action' => 'searchunsub'), array('search' => Router::REGEX_TAG)); - $m->connect(':nickname/search-subscriptions', array('action' => 'searchsubs'), array('nickname' => Nickname::DISPLAY_FMT)); @@ -117,7 +88,7 @@ class SearchSubPlugin extends Plugin * * @return value */ - function onPluginVersion(&$versions) + function onPluginVersion(array &$versions) { $versions[] = array('name' => 'SearchSub', 'version' => self::VERSION, @@ -176,7 +147,7 @@ class SearchSubPlugin extends Plugin * or Sphinx search backends. * * @param Notice $notice - * @param string $search + * @param string $search * @return boolean */ function matchSearch(Notice $notice, $search) @@ -194,7 +165,8 @@ class SearchSubPlugin extends Plugin function onStartNoticeSearchShowResults($action, $q, $notice) { $user = common_current_user(); - if ($user) { + + if ($user instanceof User) { $search = $q; $searchsub = SearchSub::pkeyGet(array('search' => $search, 'profile_id' => $user->id)); @@ -203,6 +175,7 @@ class SearchSubPlugin extends Plugin } else { $form = new SearchSubForm($action, $search); } + $action->elementStart('div', 'entity_actions'); $action->elementStart('ul'); $action->elementStart('li', 'entity_subscribe'); @@ -211,6 +184,7 @@ class SearchSubPlugin extends Plugin $action->elementEnd('ul'); $action->elementEnd('div'); } + return true; } @@ -221,7 +195,6 @@ class SearchSubPlugin extends Plugin * * @return boolean hook return */ - function onEndSubGroupNav($widget) { $action = $widget->out; @@ -238,35 +211,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 " + $commands["track "] = _m('COMMANDHELP', "Start following notices matching the given search query."); + // TRANS: Help message for IM/SMS command "untrack " + $commands["untrack "] = _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); + // TRANS: Sub menu for searches. + $menu->submenu(_m('MENU','Searches'), $searchSubMenu); } - array_splice($stats, $insertAt, 0, array($entry)); } + return true; } }