]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/users.h
Fix timedbans bug reported by jamie
[user/henk/code/inspircd.git] / include / users.h
index 9b3292cafd6d56b517ae84456d052bceeb81c77d..4633f1cd293322df1d990b90855ab8a89acfc622 100644 (file)
@@ -46,6 +46,7 @@ enum UserModes {
        UM_WALLOPS = 'w'-65,
        UM_INVISIBLE = 'i'-65,
        UM_OPERATOR = 'o'-65,
+       UM_SNOMASK = 'n'-65,
 };
 
 enum RegistrationState {
@@ -170,6 +171,10 @@ class userrec : public connection
         * channels are removed from this list.
         */
        InvitedList invites;
+
+       /** Number of channels this user is currently on
+        */
+       unsigned int ChannelCount;
  public:
        /** Resolvers for looking up this users IP address
         * This will occur if and when res_reverse completes.
@@ -372,9 +377,11 @@ class userrec : public connection
 
        /** Process a snomask modifier string, e.g. +abc-de
         * @param sm A sequence of notice mask characters
-        * @return True if the notice masks were successfully applied
+        * @return The cleaned mode sequence which can be output,
+        * e.g. in the above example if masks c and e are not
+        * valid, this function will return +ab-d
         */
-       bool userrec::ProcessNoticeMasks(const char *sm);
+       std::string ProcessNoticeMasks(const char *sm);
 
        /** Returns true if a notice mask is set
         * @param sm A notice mask character to check
@@ -447,7 +454,7 @@ class userrec : public connection
         * @param a The string to add to the users read buffer
         * @return True if the string was successfully added to the read buffer
         */
-       bool AddBuffer(const std::string &a);
+       bool AddBuffer(std::string a);
 
        /** This method returns true if the buffer contains at least one carriage return
         * character (e.g. one complete line may be read)
@@ -596,7 +603,7 @@ class userrec : public connection
        /** Write text to this user, appending CR/LF.
         * @param text A std::string to send to the user
         */
-       void Write(const std::string &text);
+       void Write(std::string text);
 
        /** Write text to this user, appending CR/LF.
         * @param text The format string for text to send to the user
@@ -685,12 +692,22 @@ class userrec : public connection
        /** Change the displayed host of a user.
         * ALWAYS use this function, rather than writing userrec::dhost directly,
         * as this triggers module events allowing the change to be syncronized to
-        * remote servers.
+        * remote servers. This will also emulate a QUIT and rejoin (where configured)
+        * before setting their host field.
         * @param host The new hostname to set
         * @return True if the change succeeded, false if it didn't
         */
        bool ChangeDisplayedHost(const char* host);
 
+       /** Change the ident (username) of a user.
+        * ALWAYS use this function, rather than writing userrec::ident directly,
+        * as this correctly causes the user to seem to quit (where configured)
+        * before setting their ident field.
+        * @param host The new ident to set
+        * @return True if the change succeeded, false if it didn't
+        */
+       bool ChangeIdent(const char* newident);
+
        /** Change a users realname field.
         * ALWAYS use this function, rather than writing userrec::fullname directly,
         * as this triggers module events allowing the change to be syncronized to
@@ -705,6 +722,12 @@ class userrec : public connection
         */
        int CountChannels();
 
+       /** Modify the number of channels this user is on (used by CountChannels).
+        * Pass a positive number to increment the counter, or a negative number
+        * to decrement it.
+        */
+       void ModChannelCount(int n);
+
        /** Send a notice to all local users from this user
         * @param text The text format string to send
         * @param ... Format arguments
@@ -743,6 +766,11 @@ class userrec : public connection
         */
        void ShowRULES();
 
+       /** Handle socket event.
+        * From EventHandler class.
+        */
+       void HandleEvent(EventType et);
+
        /** Default destructor
         */
        virtual ~userrec();