1 /* +------------------------------------+
\r * | Inspire Internet Relay Chat Daemon |
\r * +------------------------------------+
\r *
\r * InspIRCd: (C) 2002-2007 InspIRCd Development Team
\r * See: http://www.inspircd.org/wiki/index.php/Credits
\r *
\r * This program is free but copyrighted software; see
\r * the file COPYING for details.
\r *
\r * ---------------------------------------------------
\r */
\r\r#include "inspircd.h"
\r#include "mode.h"
\r#include "channels.h"
\r#include "users.h"
\r#include "modes/umode_i.h"
\r\rModeUserInvisible::ModeUserInvisible(InspIRCd* Instance) : ModeHandler(Instance, 'i', 0, 0, false, MODETYPE_USER, false)
\r{
\r}
\r\rModeAction ModeUserInvisible::OnModeChange(userrec* source, userrec* dest, chanrec* channel, std::string ¶meter, bool adding)
\r{
\r /* Only opers can change other users modes */
\r if ((source != dest) && (!*source->oper))
\r return MODEACTION_DENY;
\r\r /* Set the bitfields */
\r if (dest->modes[UM_INVISIBLE] != adding)
\r {
\r dest->modes[UM_INVISIBLE] = adding;
\r this->count += (adding ? 1: -1);
\r return MODEACTION_ALLOW;
\r }
\r\r /* Allow the change */
\r return MODEACTION_DENY;
\r}
\r\runsigned int ModeUserInvisible::GetCount()
\r{
\r return count;
\r}
\r