- /* Is the user allowed to change modes? */
- if (Client_Type(Client) == CLIENT_USER) {
- /* Is the originating user on that channel? */
- onchannel = Channel_IsMemberOf(Channel, Origin);
- modeok = false;
- /* channel operator? */
- if (onchannel &&
- strchr(Channel_UserModes(Channel, Origin), 'o')) {
- modeok = true;
- } else if (Conf_OperCanMode) {
- /* IRC-Operators can use MODE as well */
- if (Client_OperByMe(Origin)) {
- modeok = true;
- if (Conf_OperServerMode)
- use_servermode = true; /* Change Origin to Server */
- }
- }
+ Channel_CheckAdminRights(Channel, Client, Origin,
+ &onchannel, &modeok, &use_servermode);