* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * InspIRCd: (C) 2002-2008 InspIRCd Development Team
+ * InspIRCd: (C) 2002-2009 InspIRCd Development Team
* See: http://www.inspircd.org/wiki/index.php/Credits
*
* This program is free but copyrighted software; see
*/
char GetModeChar();
+ /** For user modes, return the current parameter, if any
+ */
+ virtual std::string GetUserParameter(User* useor);
+
/**
* Called when a mode change for your mode occurs.
* @param source Contains the user setting the mode.
*/
virtual void DisplayList(User* user, Channel* channel);
+ /** In the event that the mode should be given a parameter, and no parameter was provided, this method is called.
+ * This allows you to give special information to the user, or handle this any way you like.
+ * @param user The user issuing the mode change
+ * @param dest For user mode changes, the target of the mode. For channel mode changes, NULL.
+ * @param channel For channel mode changes, the target of the mode. For user mode changes, NULL.
+ */
+ virtual void OnParameterMissing(User* user, User* dest, Channel* channel);
+
/**
* If your mode is a listmode, this method will be called to display an empty list (just the end of list numeric)
* @param user The user issuing the command
* E.g.
*
* nick -> nick!*@*
- *
+ *
* nick!ident -> nick!ident@*
- *
+ *
* host.name -> *!*@host.name
- *
+ *
* ident@host.name -> *!ident@host.name
*
* This method can be used on both IPV4 and IPV6 user masks.
*/
static void CleanMask(std::string &mask);
- /** Get the last string to be processed, as it was sent to the user or channel.
+ /** Get the last string to be processed, as it was sent to the user or channel.
* Use this to display a string you just sent to be parsed, as the actual output
* may be different to what you sent after it has been 'cleaned up' by the parser.
* @return Last parsed string, as seen by users.
/** Process a set of mode changes from a server or user.
* @param parameters The parameters of the mode change, in the format
* they would be from a MODE command.
- * @param pcnt The number of items in the parameters array
* @param user The user setting or removing the modes. When the modes are set
* by a server, an 'uninitialized' User is used, where *user::nick == NULL
* and *user->server == NULL.
* @param servermode True if a server is setting the mode.
*/
- void Process(const char* const* parameters, int pcnt, User *user, bool servermode);
+ void Process(const std::vector<std::string>& parameters, User *user, bool servermode);
/** Find the mode handler for a given mode and type.
* @param modeletter mode letter to search for
*/
std::string ParaModeList();
- /** Generates the CHANMODES= 005 sequence
+ /** Generates a list of modes, comma seperated by type:
+ * 1; Listmodes EXCEPT those with a prefix
+ * 2; Modes that take a param when adding or removing
+ * 3; Modes that only take a param when adding
+ * 4; Modes that dont take a param
*/
- std::string ChanModes();
+ std::string GiveModeList(ModeMasks m);
+
/** Used by this class internally during std::sort and 005 generation
*/
static bool PrefixComparison(prefixtype one, prefixtype two);
};
#endif
-