- if (ShowOps)
- {
- /* Leave the names list alone, theyre an op
- * doing /names on the channel after joining it
- */
- if (Ptr->GetStatus(user) >= STATUS_OP)
- {
- nameslist = Ptr->GetUsers();
- return 0;
- }
-
- /* Show all the opped users */
- nl = *(Ptr->GetOppedUsers());
- nl[user] = user->nick;
- nameslist = &nl;
- return 0;
- }
- else
- {
- /* HELLOOO, IS ANYBODY THERE? -- nope, just us. */
- user->WriteServ("353 %s %c %s :%s", user->nick, Ptr->IsModeSet('s') ? '@' : Ptr->IsModeSet('p') ? '*' : '=', Ptr->name, user->nick);
- user->WriteServ("366 %s %s :End of /NAMES list.", user->nick, Ptr->name);
- return 1;
- }
+ /* Showops is set, hide all non-ops from the user, except themselves */
+ nick.clear();
+ return;
+ }
+
+ if (!ShowOps && (issuer != user))
+ {
+ /* ShowOps is not set, hide everyone except the user whos requesting NAMES */
+ nick.clear();
+ return;
+ }
+ }
+
+ void WriteOverride(User* source, Channel* channel, const std::string &text)
+ {
+ if (!OperOverride)
+ return;
+
+ CUList *ulist = channel->GetUsers();
+ for (CUList::iterator i = ulist->begin(); i != ulist->end(); i++)
+ {
+ if (i->first->HasPrivPermission("channels/auspex") && source != i->first)
+ if (!ShowOps || (ShowOps && channel->GetStatus(i->first) < STATUS_OP))
+ i->first->WriteFrom(source, "%s",text.c_str());