{ "CSMSG_MODE_LOCKED", "Modes conflicting with $b%s$b are not allowed in %s." },
{ "CSMSG_CANNOT_SET", "That setting is above your current level, so you cannot change it." },
{ "CSMSG_OWNER_DEFAULTS", "You must have access 500 in %s to reset it to the default options." },
- { "CSMSG_CONFIRM_DEFAULTS", "To reset %s's settings to the defaults, you muse use 'set defaults %s'." },
+ { "CSMSG_CONFIRM_DEFAULTS", "To reset %s's settings to the defaults, you must use 'set defaults %s'." },
{ "CSMSG_SETTINGS_DEFAULTED", "All settings for %s have been reset to default values." },
{ "CSMSG_BAD_SETLEVEL", "You cannot change any setting to above your level." },
{ "CSMSG_BAD_GIVEVOICE", "You cannot change GiveVoice to above GiveOps (%d)." },
{ "CSMSG_CTCPREACTION_LONGBAN", "Long timed ban on disallowed CTCPs" },
{ "CSMSG_INVITED_USER", "Invited $b%s$b to join %s." },
- { "CSMSG_INVITING_YOU", "$b%s$b invites you to join %s%s%s" },
- { "CSMSG_ALREADY_PRESENT", "%s is $balready in %s$b." },
+ { "CSMSG_INVITING_YOU_REASON", "$b%s$b invites you to join %s: %s" },
+ { "CSMSG_INVITING_YOU", "$b%s$b invites you to join %s." },
+ { "CSMSG_ALREADY_PRESENT", "%s is already in $b%s$b." },
{ "CSMSG_YOU_ALREADY_PRESENT", "You are already in $b%s$b." },
{ "CSMSG_LOW_CHANNEL_ACCESS", "You lack sufficient access in %s to use this command." },
{ "CSMSG_NETWORK_SERVERS", "$bServers: $b%i" },
{ "CSMSG_NETWORK_USERS", "$bTotal Users: $b%i" },
{ "CSMSG_NETWORK_BANS", "$bTotal Ban Count: $b%i" },
+ { "CSMSG_NETWORK_CHANUSERS", "$bTotal User Count: $b%i" },
{ "CSMSG_NETWORK_OPERS", "$bIRC Operators: $b%i" },
{ "CSMSG_NETWORK_CHANNELS","$bRegistered Channels: $b%i" },
{ "CSMSG_SERVICES_UPTIME", "$bServices Uptime: $b%s" },
struct userData *user;
char delay[INTERVALLEN], reason[INTERVALLEN + 64];
- intervalString(delay, chanserv_conf.channel_expire_delay);
+ intervalString(delay, chanserv_conf.channel_expire_delay, NULL);
sprintf(reason, "Channel registration automatically expired after %s of disuse.", delay);
for(channel = channelList; channel; channel = next)
{
dnr = iter_data(it);
if(dnr->set)
- reply("CSMSG_DNR_INFO_SET", dnr->chan_name, intervalString(buf, now - dnr->set), dnr->setter, dnr->reason);
+ reply("CSMSG_DNR_INFO_SET", dnr->chan_name, intervalString(buf, now - dnr->set, user->handle_info), dnr->setter, dnr->reason);
else
reply("CSMSG_DNR_INFO", dnr->chan_name, dnr->setter, dnr->reason);
matches++;
{
dnr = iter_data(it);
if(dnr->set)
- reply("CSMSG_DNR_INFO_SET", dnr->chan_name, intervalString(buf, now - dnr->set), dnr->setter, dnr->reason);
+ reply("CSMSG_DNR_INFO_SET", dnr->chan_name, intervalString(buf, now - dnr->set, user->handle_info), dnr->setter, dnr->reason);
else
reply("CSMSG_DNR_INFO", dnr->chan_name, dnr->setter, dnr->reason);
matches++;
{
dnr = iter_data(it);
if(dnr->set)
- reply("CSMSG_DNR_INFO_SET", dnr->chan_name, intervalString(buf, now - dnr->set), dnr->setter, dnr->reason);
+ reply("CSMSG_DNR_INFO_SET", dnr->chan_name, intervalString(buf, now - dnr->set, user->handle_info), dnr->setter, dnr->reason);
else
reply("CSMSG_DNR_INFO", dnr->chan_name, dnr->setter, dnr->reason);
matches++;
count++;
}
- intervalString(interval, duration);
+ intervalString(interval, duration, user->handle_info);
send_message(user, chanserv, "CSMSG_TRIMMED_BANS", count, channel->name, interval);
return 1;
}
min_access = 1;
max_access = UL_OWNER;
}
- send_message(user, chanserv, "CSMSG_TRIMMED_USERS", count, min_access, max_access, channel->name, intervalString(interval, duration));
+ send_message(user, chanserv, "CSMSG_TRIMMED_USERS", count, min_access, max_access, channel->name, intervalString(interval, duration, user->handle_info));
return 1;
}
/* automated kickban */
}
else if(duration)
- reply("CSMSG_BAN_EXTENDED", ban, intervalString(interval, duration));
+ reply("CSMSG_BAN_EXTENDED", ban, intervalString(interval, duration, user->handle_info));
else
reply("CSMSG_BAN_ADDED", name, channel->name);
else if(action & ACTION_ADD_BAN)
{
if(duration)
- reply("CSMSG_TIMED_BAN_ADDED", name, channel->name, intervalString(interval, duration));
+ reply("CSMSG_TIMED_BAN_ADDED", name, channel->name, intervalString(interval, duration, user->handle_info));
else
reply("CSMSG_BAN_ADDED", name, channel->name);
}
else if(!uData->seen)
ary[2] = "Never";
else
- ary[2] = intervalString(seen, now - uData->seen);
+ ary[2] = intervalString(seen, now - uData->seen, user->handle_info);
ary[2] = strdup(ary[2]);
if(IsUserSuspended(uData))
ary[3] = "Suspended";
if(!timed)
expires = "";
else if(ban->expires)
- expires = intervalString(e_buffer, ban->expires - now);
+ expires = intervalString(e_buffer, ban->expires - now, user->handle_info);
else
expires = msg_never;
if(ban->triggered)
- triggered = intervalString(t_buffer, now - ban->triggered);
+ triggered = intervalString(t_buffer, now - ban->triggered, user->handle_info);
else
triggered = msg_never;
if(user != invite)
{
- char *reason = (argc > 2) ? unsplit_string(argv + 2, argc - 2, NULL) : "";
- send_message(invite, chanserv, "CSMSG_INVITING_YOU", user->nick, channel->name, (argc > 2) ? ": " : ".", reason);
+ if(argc > 2)
+ {
+ char *reason = unsplit_string(argv + 2, argc - 2, NULL);
+ send_message(invite, chanserv, "CSMSG_INVITING_YOU_REASON", user->nick, channel->name, reason);
+ }
+ else
+ send_message(invite, chanserv, "CSMSG_INVITING_YOU", user->nick, channel->name);
}
irc_invite(chanserv, invite, channel);
if(argc > 1)
reply("CSMSG_CHANNEL_SUSPENDED_0", suspended->suspender, suspended->reason);
break;
case 1: /* no issue time, expires in future */
- intervalString(buf1, suspended->expires-now);
+ intervalString(buf1, suspended->expires-now, user->handle_info);
reply("CSMSG_CHANNEL_SUSPENDED_1", suspended->suspender, buf1, suspended->reason);
break;
case 2: /* no issue time, expired */
- intervalString(buf1, now-suspended->expires);
+ intervalString(buf1, now-suspended->expires, user->handle_info);
reply("CSMSG_CHANNEL_SUSPENDED_2", suspended->suspender, buf1, suspended->reason);
break;
case 3: /* no issue time, revoked */
- intervalString(buf1, now-suspended->revoked);
+ intervalString(buf1, now-suspended->revoked, user->handle_info);
reply("CSMSG_CHANNEL_SUSPENDED_3", suspended->suspender, buf1, suspended->reason);
break;
case 4: /* issue time set, indefinite expiration */
- intervalString(buf1, now-suspended->issued);
+ intervalString(buf1, now-suspended->issued, user->handle_info);
reply("CSMSG_CHANNEL_SUSPENDED_4", buf1, suspended->suspender, suspended->reason);
break;
case 5: /* issue time set, expires in future */
- intervalString(buf1, now-suspended->issued);
- intervalString(buf2, suspended->expires-now);
+ intervalString(buf1, now-suspended->issued, user->handle_info);
+ intervalString(buf2, suspended->expires-now, user->handle_info);
reply("CSMSG_CHANNEL_SUSPENDED_5", buf1, suspended->suspender, buf2, suspended->reason);
break;
case 6: /* issue time set, expired */
- intervalString(buf1, now-suspended->issued);
- intervalString(buf2, now-suspended->expires);
+ intervalString(buf1, now-suspended->issued, user->handle_info);
+ intervalString(buf2, now-suspended->expires, user->handle_info);
reply("CSMSG_CHANNEL_SUSPENDED_6", buf1, suspended->suspender, buf2, suspended->reason);
break;
case 7: /* issue time set, revoked */
- intervalString(buf1, now-suspended->issued);
- intervalString(buf2, now-suspended->revoked);
+ intervalString(buf1, now-suspended->issued, user->handle_info);
+ intervalString(buf2, now-suspended->revoked, user->handle_info);
reply("CSMSG_CHANNEL_SUSPENDED_7", buf1, suspended->suspender, buf2, suspended->reason);
break;
default:
reply("CSMSG_CHANNEL_OWNER", owner->handle->handle);
reply("CSMSG_CHANNEL_USERS", cData->userCount);
reply("CSMSG_CHANNEL_BANS", cData->banCount);
- reply("CSMSG_CHANNEL_VISITED", intervalString(buffer, now - cData->visited));
- reply("CSMSG_CHANNEL_REGISTERED", intervalString(buffer, now - cData->registered));
+ reply("CSMSG_CHANNEL_VISITED", intervalString(buffer, now - cData->visited, user->handle_info));
+ reply("CSMSG_CHANNEL_REGISTERED", intervalString(buffer, now - cData->registered, user->handle_info));
privileged = IsStaff(user);
if(((uData && uData->access >= UL_COOWNER) || privileged) && cData->registrar)
reply("CSMSG_NETWORK_OPERS", curr_opers.used);
reply("CSMSG_NETWORK_CHANNELS", registered_channels);
reply("CSMSG_NETWORK_BANS", banCount);
- reply("CSMSG_CHANNEL_USERS", userCount);
- reply("CSMSG_SERVICES_UPTIME", intervalString(interval, time(NULL) - boot_time));
- reply("CSMSG_BURST_LENGTH",intervalString(interval, burst_length));
+ reply("CSMSG_NETWORK_CHANUSERS", userCount);
+ reply("CSMSG_SERVICES_UPTIME", intervalString(interval, time(NULL) - boot_time, user->handle_info));
+ reply("CSMSG_BURST_LENGTH", intervalString(interval, burst_length, user->handle_info));
return 1;
}
if(uData->present)
reply("CSMSG_USER_PRESENT", handle->handle);
else if(uData->seen)
- reply("CSMSG_USER_SEEN", handle->handle, channel->name, intervalString(seen, now - uData->seen));
+ reply("CSMSG_USER_SEEN", handle->handle, channel->name, intervalString(seen, now - uData->seen, user->handle_info));
else
reply("CSMSG_NEVER_SEEN", handle->handle, channel->name);
limit = atoi(argv[2]);
}
- intervalString(buffer, interval);
+ intervalString(buffer, interval, user->handle_info);
reply("CSMSG_UNVISITED_HEADER", limit, buffer);
for(cData = channelList; cData && matches < limit; cData = cData->next)
if((now - cData->visited) < interval)
continue;
- intervalString(buffer, now - cData->visited);
+ intervalString(buffer, now - cData->visited, user->handle_info);
reply("CSMSG_UNVISITED_DATA", cData->channel->name, buffer);
matches++;
}
bounce->args[bnc].member = change->args[ii].member;
bnc++;
}
- else if(change->args[ii].mode & MODE_BAN)
+ else if((change->args[ii].mode & (MODE_REMOVE | MODE_BAN)) == MODE_BAN)
{
const char *ban = change->args[ii].hostmask;
if(!bad_channel_ban(channel, user, ban, NULL, NULL))