- void Implements(char* List)
- {
- List[I_OnUserPreNick] = List[I_OnSyncOtherMetaData] = List[I_OnDecodeMetaData] = List[I_OnStats] = 1;
- }
-
- virtual int OnStats(char symbol, userrec* user, string_list &results)
- {
- ExpireBans();
-
- if(symbol == 'S')
- {
- for(SVSHoldlist::iterator iter = SVSHolds.begin(); iter != SVSHolds.end(); iter++)
- {
- unsigned long remaining = (iter->set_on + iter->length) - ServerInstance->Time();
- results.push_back(std::string(ServerInstance->Config->ServerName)+" 210 "+user->nick+" "+iter->nickname.c_str()+" "+iter->set_by+" "+ConvToStr(iter->set_on)+" "+ConvToStr(iter->length)+" "+ConvToStr(remaining)+" :"+iter->reason);
- }
- }
-
- return 0;
- }
-
- virtual int OnUserPreNick(userrec *user, const std::string &newnick)
- {
- ExpireBans();
-
- /* check SVSHolds in here, and apply as necessary. */
- for(SVSHoldlist::iterator iter = SVSHolds.begin(); iter != SVSHolds.end(); iter++)
- {
- if (iter->nickname == newnick)
- {
- // nope, boned.
- user->WriteServ( "432 %s %s :Reserved nickname: %s", user->nick, newnick.c_str(), iter->reason.c_str());
- return 1;
- }
- }
- return 0;
- }
-
- virtual void OnSyncOtherMetaData(Module* proto, void* opaque)
- {
- for(SVSHoldlist::iterator iter = SVSHolds.begin(); iter != SVSHolds.end(); iter++)
- {
- proto->ProtoSendMetaData(opaque, TYPE_OTHER, NULL, "SVSHold", EncodeSVSHold(*iter));
- }
- }
-
- virtual void OnDecodeMetaData(int target_type, void* target, const std::string &extname, const std::string &extdata)