X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fchannels.h;h=82bf508539b171ebd1c834f0b598bdeca02266ae;hb=db7cc57f444a82df65f47b4f7058560e645e35cf;hp=3bbcf067245eea1f0fb9b9bfec2193f2260bdd9d;hpb=2dfc384cde46ba63ed7c2f4420712596096123ca;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/channels.h b/include/channels.h index 3bbcf0672..82bf50853 100644 --- a/include/channels.h +++ b/include/channels.h @@ -29,6 +29,7 @@ enum ChannelModes { /* Forward declarations - needed */ class User; +struct ModResult; /** Holds an entry for a ban list, exemption list, or invite list. * This class contains a single element in a channel list, such as a banlist. @@ -111,7 +112,7 @@ class CoreExport Channel : public Extensible /** Connect a Channel to a User */ - static Channel* ForceChan(InspIRCd* Instance, Channel* Ptr, User* user, const std::string &privs, bool bursting); + static Channel* ForceChan(InspIRCd* Instance, Channel* Ptr, User* user, const std::string &privs, bool bursting, bool created); /** Set default modes for the channel on creation */ @@ -136,6 +137,10 @@ class CoreExport Channel : public Extensible */ std::string name; /* CHANMAX */ + /** Time that the object was instantiated (used for TS calculation etc) + */ + time_t age; + /** Modes for the channel. * This is not a null terminated string! It is a bitset where * each item in it represents if a mode is set. For example @@ -207,7 +212,7 @@ class CoreExport Channel : public Extensible * @param parameter The parameter string to associate with this mode character. * If it is empty, the mode is unset; if it is nonempty, the mode is set. */ - void SetMode(char mode, std::string parameter); + void SetModeParam(char mode, std::string parameter); /** Returns true if a mode is set on a channel * @param mode The mode character you wish to query @@ -336,7 +341,7 @@ class CoreExport Channel : public Extensible * @return The number of users left on the channel. If this is zero * when the method returns, you MUST delete the Channel immediately! */ - long ServerKickUser(User* user, const char* reason, bool triggerevents, const char* servername = NULL); + long ServerKickUser(User* user, const char* reason, const char* servername = NULL); /** Part a user from this channel with the given reason. * If the reason field is NULL, no reason will be sent. @@ -425,6 +430,8 @@ class CoreExport Channel : public Extensible * @param text A std::string containing the output line without prefix */ void WriteAllExcept(User* user, bool serversource, char status, CUList &except_list, const std::string& text); + /** Write a line of text that already includes the source */ + void RawWriteAllExcept(User* user, bool serversource, char status, CUList &except_list, const std::string& text); /** Returns the maximum number of bans allowed to be set on this channel * @return The maximum number of bans allowed @@ -524,14 +531,12 @@ class CoreExport Channel : public Extensible * a given user for this channel. * @param u The user to match bans against * @param type The type of extban to check - * @returns 1 = exempt, 0 = no match, -1 = banned */ - int GetExtBanStatus(User *u, char type); + ModResult GetExtBanStatus(User *u, char type); /** Overloaded version to check whether a particular string is extbanned - * @returns 1 = exempt, 0 = no match, -1 = banned */ - int GetExtBanStatus(const std::string &str, char type); + ModResult GetExtBanStatus(const std::string &str, char type); /** Clears the cached max bans value */ @@ -542,18 +547,4 @@ class CoreExport Channel : public Extensible virtual ~Channel() { /* stub */ } }; -static inline int banmatch_reduce(int v1, int v2) -{ - int a1 = abs(v1); - int a2 = abs(v2); - if (a1 > a2) - return v1; - else if (a2 > a1) - return v2; - else if (v1 > v2) - return v1; - // otherwise v2 > v1 or equal - return v2; -} - #endif