summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-08-08 13:22:30 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-08-08 13:22:30 +0000
commit903ba4e2ebf608737e1890cfa43c3e92a9ec2cf4 (patch)
treee8fd0a74b50da79e46b93dfa7d0d6fc80498cbbb /include
parent6f1b8f50dd8a9f73c9e02e64253e7e45642a88d0 (diff)
add_channel -> chanrec::JoinUser()
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@4787 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include')
-rw-r--r--include/channels.h111
-rw-r--r--include/modules.h7
2 files changed, 63 insertions, 55 deletions
diff --git a/include/channels.h b/include/channels.h
index 906297104..effb65873 100644
--- a/include/channels.h
+++ b/include/channels.h
@@ -38,6 +38,7 @@ enum ChannelModes {
};
class userrec;
+class chanrec;
/** 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.
@@ -96,12 +97,55 @@ typedef CUList::const_iterator CUListConstIter;
*/
typedef std::map<char,char*> CustomModeList;
+
+/** used to hold a channel and a users modes on that channel, e.g. +v, +h, +o
+ * needs to come AFTER struct chanrec */
+enum UserChannelModes {
+ UCMODE_OP = 1,
+ UCMODE_VOICE = 2,
+ UCMODE_HOP = 4
+};
+
+/** Holds a user's modes on a channel
+ * This class associates a users privilages with a channel by creating a pointer link between
+ * a userrec and chanrec class. The uc_modes member holds a bitmask of which privilages the user
+ * has on the channel, such as op, voice, etc.
+ */
+class ucrec : public classbase
+{
+ public:
+ /** Contains a bitmask of the UCMODE_OP ... UCMODE_FOUNDER values.
+ * If this value is zero, the user has no privilages upon the channel.
+ */
+ char uc_modes;
+
+ /** Points to the channel record where the given modes apply.
+ * If the record is not in use, this value will be NULL.
+ */
+ chanrec *channel;
+
+ /** Constructor for ucrec
+ */
+ ucrec() : uc_modes(0), channel(NULL) { /* stub */ }
+
+ /** Destructor for ucrec
+ */
+ virtual ~ucrec() { /* stub */ }
+};
+
+
/** Holds all relevent information for a channel.
* This class represents a channel, and contains its name, modes, time created, topic, topic set time,
* etc, and an instance of the BanList type.
*/
class chanrec : public Extensible
{
+ private:
+
+ /** Connect a chanrec to a userrec
+ */
+ static chanrec* ForceChan(chanrec* Ptr,ucrec *a,userrec* user, int created);
+
public:
/** The channels name.
*/
@@ -245,7 +289,7 @@ class chanrec : public Extensible
*/
chanrec();
- /* Make src kick user from this channel with the given reason.
+ /** Make src kick user from this channel with the given reason.
* @param src The source of the kick
* @param user The user being kicked (must be on this channel)
* @param reason The reason for the kick
@@ -254,16 +298,16 @@ class chanrec : public Extensible
*/
long KickUser(userrec *src, userrec *user, const char* reason);
- /* Make the server kick user from this channel with the given reason.
- * @param user The user being kicked (must be on this channel)
- * @param reason The reason for the kick
- * @param triggerevents True if you wish this kick to trigger module events
- * @return The number of users left on the channel. If this is zero
- * when the method returns, you MUST delete the chanrec immediately!
+ /** Make the server kick user from this channel with the given reason.
+ * @param user The user being kicked (must be on this channel)
+ * @param reason The reason for the kick
+ * @param triggerevents True if you wish this kick to trigger module events
+ * @return The number of users left on the channel. If this is zero
+ * when the method returns, you MUST delete the chanrec immediately!
*/
long ServerKickUser(userrec* user, const char* reason, bool triggerevents);
- /* Part a user from this channel with the given reason.
+ /** Part a user from this channel with the given reason.
* If the reason field is NULL, no reason will be sent.
* @param user The user who is parting (must be on this channel)
* @param reason The (optional) part reason
@@ -272,49 +316,20 @@ class chanrec : public Extensible
*/
long PartUser(userrec *user, const char* reason = NULL);
- /** Destructor for chanrec
+ /* Join a user to a channel. May be a channel that doesnt exist yet.
+ * @param user The user to join to the channel.
+ * @param cn The channel name to join to. Does not have to exist.
+ * @param key The key of the channel, if given
+ * @param override If true, override all join restrictions such as +bkil
+ * @return A pointer to the chanrec the user was joined to. A new chanrec may have
+ * been created if the channel did not exist before the user was joined to it.
+ * If the user could not be joined to a channel, the return value may be NULL.
*/
- virtual ~chanrec() { /* stub */ }
-};
+ static chanrec* JoinUser(userrec *user, const char* cn, bool override, const char* key = "");
-/** used to hold a channel and a users modes on that channel, e.g. +v, +h, +o
- * needs to come AFTER struct chanrec */
-enum UserChannelModes {
- UCMODE_OP = 1,
- UCMODE_VOICE = 2,
- UCMODE_HOP = 4
-};
-
-/** Holds a user's modes on a channel
- * This class associates a users privilages with a channel by creating a pointer link between
- * a userrec and chanrec class. The uc_modes member holds a bitmask of which privilages the user
- * has on the channel, such as op, voice, etc.
- */
-class ucrec : public classbase
-{
- public:
- /** Contains a bitmask of the UCMODE_OP ... UCMODE_FOUNDER values.
- * If this value is zero, the user has no privilages upon the channel.
- */
- char uc_modes;
-
- /** Points to the channel record where the given modes apply.
- * If the record is not in use, this value will be NULL.
- */
- chanrec *channel;
-
- /** Constructor for ucrec
- */
- ucrec() : uc_modes(0), channel(NULL) { /* stub */ }
-
- /** Destructor for ucrec
+ /** Destructor for chanrec
*/
- virtual ~ucrec() { /* stub */ }
+ virtual ~chanrec() { /* stub */ }
};
-chanrec* add_channel(userrec *user, const char* cn, const char* key, bool override);
-//chanrec* del_channel(userrec *user, const char* cname, const char* reason, bool local);
-//void kick_channel(userrec *src,userrec *user, chanrec *Ptr, char* reason);
-//void server_kick_channel(userrec* user, chanrec* Ptr, char* reason, bool triggerevents);
-
#endif
diff --git a/include/modules.h b/include/modules.h
index 39265fcee..ebd810c41 100644
--- a/include/modules.h
+++ b/include/modules.h
@@ -1513,13 +1513,6 @@ class Server : public Extensible
*/
virtual void SendToModeMask(const std::string &modes, int flags, const std::string &text);
- /** Forces a user to join a channel.
- * This is similar to svsjoin and can be used to implement redirection, etc.
- * On success, the return value is a valid pointer to a chanrec* of the channel the user was joined to.
- * On failure, the result is NULL.
- */
- virtual chanrec* JoinUserToChannel(userrec* user, const std::string &cname, const std::string &key);
-
/** Forces a user nickchange.
* This command works similarly to SVSNICK, and can be used to implement Q-lines etc.
* If you specify an invalid nickname, the nick change will be dropped and the target user will receive