- TreeSocket* s = (TreeSocket*)opaque;
- if (target)
- {
- if (target_type == TYPE_USER)
- {
- userrec* u = (userrec*)target;
- s->WriteLine(std::string(":")+ServerInstance->Config->ServerName+" METADATA "+u->nick+" "+extname+" :"+extdata);
- }
- else if (target_type == TYPE_CHANNEL)
- {
- chanrec* c = (chanrec*)target;
- s->WriteLine(std::string(":")+ServerInstance->Config->ServerName+" METADATA "+c->name+" "+extname+" :"+extdata);
- }
- }
- if (target_type == TYPE_OTHER)
- {
- s->WriteLine(std::string(":")+ServerInstance->Config->ServerName+" METADATA * "+extname+" :"+extdata);
- }
-}
-
-void ModuleSpanningTree::OnEvent(Event* event)
-{
- std::deque<std::string>* params = (std::deque<std::string>*)event->GetData();
- if (event->GetEventID() == "send_metadata")
- {
- if (params->size() < 3)
- return;
- (*params)[2] = ":" + (*params)[2];
- Utils->DoOneToMany(ServerInstance->Config->ServerName,"METADATA",*params);
- }
- else if (event->GetEventID() == "send_topic")
- {
- if (params->size() < 2)
- return;
- (*params)[1] = ":" + (*params)[1];
- params->insert(params->begin() + 1,ServerInstance->Config->ServerName);
- params->insert(params->begin() + 1,ConvToStr(ServerInstance->Time(true)));
- Utils->DoOneToMany(ServerInstance->Config->ServerName,"FTOPIC",*params);
- }
- else if (event->GetEventID() == "send_mode")
- {
- if (params->size() < 2)
- return;
- // Insert the TS value of the object, either userrec or chanrec
- time_t ourTS = 0;
- userrec* a = ServerInstance->FindNick((*params)[0]);
- if (a)
- {
- ourTS = a->age;
- Utils->DoOneToMany(ServerInstance->Config->ServerName,"MODE",*params);
- return;
- }
- else
- {
- chanrec* a = ServerInstance->FindChan((*params)[0]);
- if (a)
- {
- ourTS = a->age;
- params->insert(params->begin() + 1,ConvToStr(ourTS));
- Utils->DoOneToMany(ServerInstance->Config->ServerName,"FMODE",*params);
- }
- }
- }
- else if (event->GetEventID() == "send_mode_explicit")
- {
- if (params->size() < 2)
- return;
- Utils->DoOneToMany(ServerInstance->Config->ServerName,"MODE",*params);
- }
- else if (event->GetEventID() == "send_opers")
- {
- if (params->size() < 1)
- return;
- (*params)[0] = ":" + (*params)[0];
- Utils->DoOneToMany(ServerInstance->Config->ServerName,"OPERNOTICE",*params);
- }
- else if (event->GetEventID() == "send_modeset")
- {
- if (params->size() < 2)
- return;
- (*params)[1] = ":" + (*params)[1];
- Utils->DoOneToMany(ServerInstance->Config->ServerName,"MODENOTICE",*params);
- }
- else if (event->GetEventID() == "send_snoset")
- {
- if (params->size() < 2)
- return;
- (*params)[1] = ":" + (*params)[1];
- Utils->DoOneToMany(ServerInstance->Config->ServerName,"SNONOTICE",*params);
- }
- else if (event->GetEventID() == "send_push")
- {
- if (params->size() < 2)
- return;
-
- userrec *a = ServerInstance->FindNick((*params)[0]);
-
- if (!a)
- return;
-
- (*params)[1] = ":" + (*params)[1];
- Utils->DoOneToOne(ServerInstance->Config->ServerName, "PUSH", *params, a->server);
- }