X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fmodules.h;h=de0faf6d4a6bcbe5f412408fcb7118d30cfe6a23;hb=8d066e557eeabaea40634dec8d6f5cd4d39cfe60;hp=9c0b22b6c075fd90a2cbdba4eaa11919ff64ac25;hpb=9e123ad1218e8c3ff29cee2a8a6e1b4b6f56b33b;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/modules.h b/include/modules.h index 9c0b22b6c..de0faf6d4 100644 --- a/include/modules.h +++ b/include/modules.h @@ -558,17 +558,14 @@ class CoreExport Module : public classbase, public usecountbase */ virtual void OnBuildNeighborList(User* source, IncludeChanList& include_c, std::map& exceptions); - /** Called before any nickchange, local or remote. This can be used to implement Q-lines etc. - * Please note that although you can see remote nickchanges through this function, you should - * NOT make any changes to the User if the user is a remote user as this may cause a desnyc. - * check user->server before taking any action (including returning nonzero from the method). + /** Called before local nickname changes. This can be used to implement Q-lines etc. * If your method returns nonzero, the nickchange is silently forbidden, and it is down to your * module to generate some meaninful output. * @param user The username changing their nick * @param newnick Their new nickname * @return 1 to deny the change, 0 to allow */ - virtual ModResult OnUserPreNick(User* user, const std::string &newnick); + virtual ModResult OnUserPreNick(LocalUser* user, const std::string& newnick); /** Called after any PRIVMSG sent from a user. * The dest variable contains a User* if target_type is TYPE_USER and a Channel* @@ -601,15 +598,16 @@ class CoreExport Module : public classbase, public usecountbase /** 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. - * The modes vector contains the remainder of the mode string after the target, - * e.g.: "+wsi" or ["+ooo", "nick1", "nick2", "nick3"]. + * All changed modes are available in the changelist object. * @param user The user sending the MODEs * @param usertarget The target user of the modes, NULL if the target is a channel * @param chantarget The target channel of the modes, NULL if the target is a user - * @param modes The actual modes and their parameters if any - * @param translate The translation types of the mode parameters + * @param changelist The changed modes. + * @param processflags Flags passed to ModeParser::Process(), see ModeParser::ModeProcessFlags + * for the possible flags. + * @param output_mode Changed modes, including '+' and '-' characters, not including any parameters */ - virtual void OnMode(User* user, User* usertarget, Channel* chantarget, const std::vector& modes, const std::vector& translate); + virtual void OnMode(User* user, User* usertarget, Channel* chantarget, const Modes::ChangeList& changelist, ModeParser::ModeProcessFlag processflags, const std::string& output_mode); /** Allows modules to synchronize data which relates to users during a netburst. * When this function is called, it will be called from the module which implements @@ -1041,10 +1039,16 @@ class CoreExport Module : public classbase, public usecountbase #endif /** Called for every item in a NAMES list, so that modules may reformat portions of it as they see fit. - * For example NAMESX, channel mode +u and +I, and UHNAMES. If the nick is set to an empty string by any - * module, then this will cause the nickname not to be displayed at all. + * For example NAMESX, channel mode +u and +I, and UHNAMES. + * @param issuer The user who is going to receive the NAMES list being built + * @param item The channel member being considered for inclusion + * @param prefixes The prefix character(s) to display, initially set to the prefix char of the most powerful + * prefix mode the member has, can be changed + * @param nick The nick to display, initially set to the member's nick, can be changed + * @return Return MOD_RES_PASSTHRU to allow the member to be displayed, MOD_RES_DENY to cause them to be + * excluded from this NAMES list */ - virtual void OnNamesListItem(User* issuer, Membership* item, std::string &prefixes, std::string &nick); + virtual ModResult OnNamesListItem(User* issuer, Membership* item, std::string& prefixes, std::string& nick); virtual ModResult OnNumeric(User* user, unsigned int numeric, const std::string &text); @@ -1075,7 +1079,7 @@ typedef IntModuleList::iterator EventHandlerIter; /** ModuleManager takes care of all things module-related * in the core. */ -class CoreExport ModuleManager +class CoreExport ModuleManager : public fakederef { public: typedef std::vector ServiceList; @@ -1337,7 +1341,7 @@ struct AllModuleList { { \ return new y; \ } \ - extern "C" DllExport const char inspircd_src_version[] = VERSION " " REVISION; + extern "C" DllExport const char inspircd_src_version[] = INSPIRCD_VERSION " " INSPIRCD_REVISION; #endif #define COMMAND_INIT(c) MODULE_INIT(CommandModule)