Aselia.Core.Channel.CheckMode C# (CSharp) Method

CheckMode() private method

private CheckMode ( UserBase user, ChannelModeAttribute attr, string argument ) : bool
user UserBase
attr ChannelModeAttribute
argument string
return bool
        private bool CheckMode(UserBase user, ChannelModeAttribute attr, string argument)
        {
            if (user == null)
            {
                return true;
            }

            switch (attr.Level)
            {
            case Authorizations.Unregistered:
                if (user.Level < Authorizations.Unregistered)
                {
                    user.SendNumeric(Numerics.ERR_NOTREGISTERED, "MODE", ":You aren't fully connected at present.");
                    return false;
                }
                break;

            case Authorizations.Registered:
                if (user.Level < Authorizations.Registered)
                {
                    user.SendNumeric(Numerics.ERR_NOLOGIN, "MODE", ":You must be identified with services to do that.");
                    return false;
                }
                break;

            case Authorizations.NetworkOperator:
                if (user.Level < Authorizations.NetworkOperator)
                {
                    user.SendNumeric(Numerics.ERR_UNIQOPRIVSNEEDED, "MODE", ":You must be a network operator to do that.");
                    return false;
                }
                break;

            case Authorizations.Service:
                if (user.Level < Authorizations.Service)
                {
                    user.SendNumeric(Numerics.ERR_UNIQOPRIVSNEEDED, "MODE", ":That is for use only.");
                    return false;
                }
                break;

            default:
                return false;
            }

            if (user.Level >= Authorizations.Service)
            {
                return true;
            }

            if (!CheckRank(user, attr))
            {
                user.SendNumeric(Numerics.ERR_CHANOPPRIVSNEEDED, "MODE", ":You need to be a higher rank in the channel to set that mode.");
                return false;
            }
            else
            {
                return true;
            }
        }