X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fchannels.cpp;h=f067646d3358656ff94647e8846d1bf2ee7058e5;hb=0a58b25ad736e7cec4944eb89e10f617d74225a0;hp=a779471267c8aeec7bb8b94a4502a83fd4564022;hpb=952b577edce0bf3affc4a0891586115dc3ab5d32;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/channels.cpp b/src/channels.cpp index a77947126..f067646d3 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -173,7 +173,61 @@ void chanrec::DelUser(char* castuser) internal_userlist.erase(a); return; } - log(DEBUG,"BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!",name); + /* Tidy up any others */ + DelOppedUser(castuser); + DelHalfoppedUser(castuser); + DelVoicedUser(castuser); +} + +void chanrec::AddOppedUser(char* castuser) +{ + internal_op_userlist[castuser] = castuser; + log(DEBUG,"Added casted user to channel's internal list"); +} + +void chanrec::DelOppedUser(char* castuser) +{ + std::map::iterator a = internal_op_userlist.find(castuser); + if (a != internal_op_userlist.end()) + { + log(DEBUG,"Removed casted user from channel's internal list"); + internal_op_userlist.erase(a); + return; + } +} + +void chanrec::AddHalfoppedUser(char* castuser) +{ + internal_halfop_userlist[castuser] = castuser; + log(DEBUG,"Added casted user to channel's internal list"); +} + +void chanrec::DelHalfoppedUser(char* castuser) +{ + std::map::iterator a = internal_halfop_userlist.find(castuser); + if (a != internal_halfop_userlist.end()) + { + log(DEBUG,"Removed casted user from channel's internal list"); + internal_halfop_userlist.erase(a); + return; + } +} + +void chanrec::AddVoicedUser(char* castuser) +{ + internal_voice_userlist[castuser] = castuser; + log(DEBUG,"Added casted user to channel's internal list"); +} + +void chanrec::DelVoicedUser(char* castuser) +{ + std::map::iterator a = internal_voice_userlist.find(castuser); + if (a != internal_voice_userlist.end()) + { + log(DEBUG,"Removed casted user from channel's internal list"); + internal_voice_userlist.erase(a); + return; + } } std::map *chanrec::GetUsers() @@ -181,6 +235,21 @@ std::map *chanrec::GetUsers() return &internal_userlist; } +std::map *chanrec::GetOppedUsers() +{ + return &internal_op_userlist; +} + +std::map *chanrec::GetHalfoppedUsers() +{ + return &internal_halfop_userlist; +} + +std::map *chanrec::GetVoicedUsers() +{ + return &internal_voice_userlist; +} + /* add a channel to a user, creating the record for it if needed and linking * it to the user record */ @@ -369,6 +438,7 @@ chanrec* ForceChan(chanrec* Ptr,ucrec &a,userrec* user, int created) { /* first user in is given ops */ a.uc_modes = UCMODE_OP; + Ptr->AddOppedUser((char*)user); } else {