/*
* InspIRCd -- Internet Relay Chat Daemon
*
+ * Copyright (C) 2013-2016, 2018 Attila Molnar <attilamolnar@hush.com>
+ * Copyright (C) 2012-2013, 2017-2020 Sadie Powell <sadie@witchery.services>
+ * Copyright (C) 2012 Robby <robby@chatbelgie.be>
* Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
- * Copyright (C) 2007 Robin Burchell <robin+git@viroteck.net>
- * Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
- * Copyright (C) 2003-2007 Craig Edwards <craigedwards@brainbox.cc>
+ * Copyright (C) 2007-2008 Robin Burchell <robin+git@viroteck.net>
+ * Copyright (C) 2007, 2009 Dennis Friis <peavey@inspircd.org>
+ * Copyright (C) 2003-2006, 2008, 2010 Craig Edwards <brain@inspircd.org>
*
* This file is part of InspIRCd. InspIRCd is free software: you can
* redistribute it and/or modify it under the terms of the GNU General Public
* This class contains a single element in a channel list, such as a banlist.
*/
-/** Holds all relevent information for a channel.
+/** Holds all relevant information for a channel.
* This class represents a channel, and contains its name, modes, topic, topic set time,
* etc, and an instance of the BanList type.
*/
public:
/** A map of Memberships on a channel keyed by User pointers
*/
- typedef std::map<User*, insp::aligned_storage<Membership> > MemberMap;
+ typedef std::map<User*, insp::aligned_storage<Membership> > MemberMap;
private:
/** Set default modes for the channel on creation
void SetMode(ModeHandler* mode, bool value);
/** Returns true if a mode is set on a channel
- * @param mode The mode character you wish to query
- * @return True if the custom mode is set, false if otherwise
- */
+ * @param mode The mode character you wish to query
+ * @return True if the custom mode is set, false if otherwise
+ */
bool IsModeSet(ModeHandler* mode) { return ((mode->GetId() != ModeParser::MODEID_MAX) && (modes[mode->GetId()])); }
bool IsModeSet(ModeHandler& mode) { return IsModeSet(&mode); }
bool IsModeSet(ChanModeReference& mode);
/** Returns the parameter for a custom mode on a channel.
- * @param mode The mode character you wish to query
- *
- * For example if "+L #foo" is set, and you pass this method
- * 'L', it will return '\#foo'. If the mode is not set on the
- * channel, or the mode has no parameters associated with it,
- * it will return an empty string.
- *
- * @return The parameter for this mode is returned, or an empty string
- */
+ * @param mode The mode character you wish to query
+ *
+ * For example if "+L #foo" is set, and you pass this method
+ * 'L', it will return '\#foo'. If the mode is not set on the
+ * channel, or the mode has no parameters associated with it,
+ * it will return an empty string.
+ *
+ * @return The parameter for this mode is returned, or an empty string
+ */
std::string GetModeParameter(ModeHandler* mode);
std::string GetModeParameter(ChanModeReference& mode);
std::string GetModeParameter(ParamModeBase* pm);
* @param user The user to add
*
* The data inserted into the reference list is a table as it is
- * an arbitary pointer compared to other users by its memory address,
+ * an arbitrary pointer compared to other users by its memory address,
* as this is a very fast 32 or 64 bit integer comparison.
*/
Membership* AddUser(User* user);
/** Delete a user pointer to the internal reference list
* @param user The user to delete
- * @return number of users left on the channel after deletion of the user
*/
void DelUser(User* user);
/** Join a user to an existing channel, without doing any permission checks
* @param user The user to join to the channel
- * @param privs Priviliges (prefix mode letters) to give to this user, may be NULL
+ * @param privs Privileges (prefix mode letters) to give to this user, may be NULL
* @param bursting True if this join is the result of a netburst (passed to modules in the OnUserJoin hook)
* @param created_by_local True if this channel was just created by a local user (passed to modules in the OnUserJoin hook)
* @return A newly created Membership object, or NULL if the user was already inside the channel or if the user is a server user
/** Write to all users on a channel except some users
* @param protoev Event to send, may contain any number of messages.
* @param status The status of the users to write to, e.g. '@' or '%'. Use a value of 0 to write to everyone
- * @param text A std::string containing the output line without prefix
* @param except_list List of users not to send to
*/
void Write(ClientProtocol::Event& protoev, char status = 0, const CUList& except_list = CUList());
* @param protoevprov Protocol event provider for the message.
* @param msg Message to send.
* @param status The status of the users to write to, e.g. '@' or '%'. Use a value of 0 to write to everyone
- * @param text A std::string containing the output line without prefix
* @param except_list List of users not to send to
*/
void Write(ClientProtocol::EventProvider& protoevprov, ClientProtocol::Message& msg, char status = 0, const CUList& except_list = CUList());
/** Return the channel's modes with parameters.
- * @param showkey If this is set to true, the actual key is shown,
- * otherwise it is replaced with '<KEY>'
+ * @param showsecret If this is set to true, the value of secret parameters
+ * are shown, otherwise they are replaced with '<name>'.
* @return The channel mode string
*/
- const char* ChanModes(bool showkey);
+ const char* ChanModes(bool showsecret);
/** Get the value of a users prefix on this channel.
* @param user The user to look up
/** Write a NOTICE to all local users on the channel
* @param text Text to send
+ * @param status The minimum status rank to send this message to.
*/
- void WriteNotice(const std::string& text);
+ void WriteNotice(const std::string& text, char status = 0);
+ void WriteRemoteNotice(const std::string& text, char status = 0);
};
inline bool Channel::HasUser(User* user)