]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/modules.h
Replace most usages of "GECOS" with "real" or "real name".
[user/henk/code/inspircd.git] / include / modules.h
index 72aa7b4d7fac034a628c23c3fc3db48955e1c496..302c2e4d729a398f58f759f4178091bca578198d 100644 (file)
@@ -114,8 +114,8 @@ struct ModResult {
  * 'FOREACH_MOD(OnConnect,(user));'
  */
 #define FOREACH_MOD(y,x) do { \
-       const IntModuleList& _handlers = ServerInstance->Modules->EventHandlers[I_ ## y]; \
-       for (IntModuleList::const_reverse_iterator _i = _handlers.rbegin(), _next; _i != _handlers.rend(); _i = _next) \
+       const Module::List& _handlers = ServerInstance->Modules->EventHandlers[I_ ## y]; \
+       for (Module::List::const_reverse_iterator _i = _handlers.rbegin(), _next; _i != _handlers.rend(); _i = _next) \
        { \
                _next = _i+1; \
                try \
@@ -137,8 +137,8 @@ struct ModResult {
  */
 #define DO_EACH_HOOK(n,v,args) \
 do { \
-       const IntModuleList& _handlers = ServerInstance->Modules->EventHandlers[I_ ## n]; \
-       for (IntModuleList::const_reverse_iterator _i = _handlers.rbegin(), _next; _i != _handlers.rend(); _i = _next) \
+       const Module::List& _handlers = ServerInstance->Modules->EventHandlers[I_ ## n]; \
+       for (Module::List::const_reverse_iterator _i = _handlers.rbegin(), _next; _i != _handlers.rend(); _i = _next) \
        { \
                _next = _i+1; \
                try \
@@ -214,15 +214,15 @@ enum Implementation
        I_OnUserConnect, I_OnUserQuit, I_OnUserDisconnect, I_OnUserJoin, I_OnUserPart,
        I_OnSendSnotice, I_OnUserPreJoin, I_OnUserPreKick, I_OnUserKick, I_OnOper, I_OnInfo,
        I_OnUserPreInvite, I_OnUserInvite, I_OnUserPreMessage, I_OnUserPreNick,
-       I_OnUserPostMessage, I_OnMode,
+       I_OnUserPostMessage, I_OnUserMessageBlocked, I_OnMode,
        I_OnDecodeMetaData, I_OnAcceptConnection, I_OnUserInit,
        I_OnChangeHost, I_OnChangeName, I_OnAddLine, I_OnDelLine, I_OnExpireLine,
        I_OnUserPostNick, I_OnPreMode, I_On005Numeric, I_OnKill, I_OnLoadModule,
        I_OnUnloadModule, I_OnBackgroundTimer, I_OnPreCommand, I_OnCheckReady, I_OnCheckInvite,
        I_OnRawMode, I_OnCheckKey, I_OnCheckLimit, I_OnCheckBan, I_OnCheckChannelBan, I_OnExtBanCheck,
        I_OnChangeLocalUserHost, I_OnPreTopicChange,
-       I_OnPostTopicChange, I_OnPostConnect,
-       I_OnChangeLocalUserGECOS, I_OnUserRegister, I_OnChannelPreDelete, I_OnChannelDelete,
+       I_OnPostTopicChange, I_OnPostConnect, I_OnPostDeoper,
+       I_OnPreChangeRealName, I_OnUserRegister, I_OnChannelPreDelete, I_OnChannelDelete,
        I_OnPostOper, I_OnSetAway, I_OnPostCommand, I_OnPostJoin,
        I_OnBuildNeighborList, I_OnGarbageCollect, I_OnSetConnectClass,
        I_OnUserMessage, I_OnPassCompare, I_OnNamesListItem, I_OnNumeric,
@@ -244,9 +244,13 @@ class CoreExport Module : public classbase, public usecountbase
        void DetachEvent(Implementation i);
 
  public:
+       /** A list of modules. */
+       typedef std::vector<Module*> List;
+
        /** File that this module was loaded from
         */
        std::string ModuleSourceFile;
+
        /** Reference to the dlopen() value
         */
        DLLManager* ModuleDLLManager;
@@ -448,6 +452,11 @@ class CoreExport Module : public classbase, public usecountbase
         */
        virtual void OnPostOper(User* user, const std::string &opername, const std::string &opertype);
 
+       /** Called after a user deopers locally.
+        * @param user The user who has deopered.
+        */
+       virtual void OnPostDeoper(User* user);
+
        /** Called whenever a user types /INFO.
         * The User will contain the information of the user who typed the command. Modules may use this
         * method to output their own credits in /INFO (which is the ircd's version of an about box).
@@ -533,6 +542,15 @@ class CoreExport Module : public classbase, public usecountbase
         */
        virtual void OnUserMessage(User* user, const MessageTarget& target, const MessageDetails& details);
 
+       /** Called when a message sent by a user to a channel, a user, or a server glob mask is blocked.
+        * @param user The user sending the message.
+        * @param target The target of the message. This can either be a channel, a user, or a server
+        *               glob mask.
+        * @param details Details about the message such as the message text and type. See the
+        *                MessageDetails class for more information.
+        */
+       virtual void OnUserMessageBlocked(User* user, const MessageTarget& target, const MessageDetails& details);
+
        /** Called after every MODE command sent from a user
         * Either the usertarget or the chantarget variable contains the target of the modes,
         * the actual target will have a non-NULL pointer.
@@ -562,12 +580,12 @@ class CoreExport Module : public classbase, public usecountbase
         */
        virtual void OnChangeHost(User* user, const std::string &newhost);
 
-       /** Called whenever a user's GECOS (realname) is changed.
+       /** Called whenever a user's real name is changed.
         * This event triggers after the name has been set.
-        * @param user The user who's GECOS is being changed
-        * @param gecos The new GECOS being set on the user
+        * @param user The user who's real name is being changed
+        * @param name The new real name being set on the user
         */
-       virtual void OnChangeName(User* user, const std::string &gecos);
+       virtual void OnChangeName(User* user, const std::string& real);
 
        /** Called whenever a user's IDENT is changed.
         * This event triggers after the name has been set.
@@ -702,7 +720,7 @@ class CoreExport Module : public classbase, public usecountbase
         * @param original_line The entire original line as passed to the parser from the user
         * @return 1 to block the command, 0 to allow
         */
-       virtual ModResult OnPreCommand(std::string &command, std::vector<std::string>& parameters, LocalUser *user, bool validated, const std::string &original_line);
+       virtual ModResult OnPreCommand(std::string& command, CommandBase::Params& parameters, LocalUser* user, bool validated, const std::string& original_line);
 
        /** Called after any command has been executed.
         * This event occurs for all registered commands, wether they are registered in the core,
@@ -715,7 +733,7 @@ class CoreExport Module : public classbase, public usecountbase
         * @param result The return code given by the command handler, one of CMD_SUCCESS or CMD_FAILURE
         * @param original_line The entire original line as passed to the parser from the user
         */
-       virtual void OnPostCommand(Command* command, const std::vector<std::string>& parameters, LocalUser* user, CmdResult result, const std::string& original_line);
+       virtual void OnPostCommand(Command* command, const CommandBase::Params& parameters, LocalUser* user, CmdResult result, const std::string& original_line);
 
        /** Called when a user is first connecting, prior to starting DNS lookups, checking initial
         * connect class, or accepting any commands.
@@ -823,13 +841,13 @@ class CoreExport Module : public classbase, public usecountbase
         */
        virtual ModResult OnChangeLocalUserHost(LocalUser* user, const std::string &newhost);
 
-       /** Called whenever a change of a local users GECOS (fullname field) is attempted.
-        * return 1 to deny the name change, or 0 to allow it.
-        * @param user The user whos GECOS will be changed
-        * @param newhost The new GECOS
-        * @return 1 to deny the GECOS change, 0 to allow
+       /** Called whenever a change of a local users real name is attempted.
+        * return MOD_RES_DENY to deny the name change, or MOD_RES_ALLOW to allow it.
+        * @param user The user whos real name will be changed
+        * @param newhost The new real name.
+        * @return MOD_RES_DENY to deny the real name change, MOD_RES_ALLOW to allow
         */
-       virtual ModResult OnChangeLocalUserGECOS(LocalUser* user, const std::string &newhost);
+       virtual ModResult OnPreChangeRealName(LocalUser* user, const std::string &newhost);
 
        /** Called before a topic is changed.
         * Return 1 to deny the topic change, 0 to check details on the change, -1 to let it through with no checks
@@ -949,10 +967,6 @@ class CoreExport Module : public classbase, public usecountbase
        virtual void OnServiceDel(ServiceProvider& service);
 };
 
-/** A list of modules
- */
-typedef std::vector<Module*> IntModuleList;
-
 /** ModuleManager takes care of all things module-related
  * in the core.
  */
@@ -998,7 +1012,7 @@ class CoreExport ModuleManager : public fakederef<ModuleManager>
        /** Event handler hooks.
         * This needs to be public to be used by FOREACH_MOD and friends.
         */
-       IntModuleList EventHandlers[I_END];
+       Module::List EventHandlers[I_END];
 
        /** List of data services keyed by name */
        std::multimap<std::string, ServiceProvider*> DataProviders;