- 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. */
- SVSHoldMap::iterator n = HoldMap.find(assign(newnick));
- if (n != HoldMap.end())
- {
- user->WriteServ( "432 %s %s :Reserved nickname: %s", user->nick, newnick.c_str(), n->second->reason.c_str());
- return 1;
- }
- return 0;
- }
-
- virtual void OnSyncOtherMetaData(Module* proto, void* opaque, bool displayable)