merge master into roompassword

This commit is contained in:
calzoneman 2013-11-29 22:53:08 -06:00
commit 2a84eab386
2 changed files with 91 additions and 34 deletions

View file

@ -2150,41 +2150,88 @@ Channel.prototype.tryUpdateOptions = function(user, data) {
password: true
};
if ("afk_timeout" in data) {
data.afk_timeout = parseInt(data.afk_timeout);
if(data.afk_timeout < 0)
data.afk_timeout = 0;
if ("allow_voteskip" in data) {
var vs = Boolean(data.allow_voteskip);
this.opts.voteskip = vs;
}
if ("password" in data) {
data.password = data.password === "" ? false : ""+data.password;
}
for(var key in this.opts) {
if(key in data) {
if(key in adminonly && user.rank < 3) {
continue;
}
if (key === "chat_antiflood_params") {
var b = parseInt(data[key].burst);
if (isNaN(b) || b < 0)
b = 1;
var s = parseFloat(data[key].sustained);
if (isNaN(s) || s <= 0)
s = 1;
var c = b / s;
this.opts.chat_antiflood_params.burst = b;
this.opts.chat_antiflood_params.sustained = s;
this.opts.chat_antiflood_params.cooldown = c;
continue;
}
this.opts[key] = data[key];
if(key === "afk_timeout" && this.opts[key] != data[key]) {
this.users.forEach(function (u) {
u.autoAFK();
});
}
if ("voteskip_ratio" in data) {
var ratio = parseFloat(data.voteskip_ratio);
if (isNaN(ratio) || ratio < 0) {
ratio = 0;
}
this.opts.voteskip_ratio = ratio;
}
if ("afk_timeout" in data) {
var tm = parseInt(data.afk_timeout);
if (isNaN(tm) || tm < 0) {
tm = 0;
}
var same = tm == this.opts.afk_timeout;
this.opts.afk_timeout = tm;
if (!same) {
this.users.forEach(function (u) {
u.autoAFK();
});
}
}
if ("pagetitle" in data && user.rank >= 3) {
this.opts.pagetitle = ""+data.pagetitle;
}
if ("maxlength" in data) {
var ml = parseInt(data.maxlength);
if (isNaN(ml) || ml < 0) {
ml = 0;
}
this.opts.maxlength = ml;
}
if ("externalcss" in data && user.rank >= 3) {
this.opts.externalcss = ""+data.externalcss;
}
if ("externaljs" in data && user.rank >= 3) {
this.opts.externaljs = ""+data.externaljs;
}
if ("chat_antiflood" in data) {
this.opts.chat_antiflood = Boolean(data.chat_antiflood);
}
if ("chat_antiflood_params" in data) {
if (typeof data.chat_antiflood_params !== "object") {
data.chat_antiflood_params = {
burst: 4,
sustained: 1
};
}
var b = parseInt(data.chat_antiflood_params.burst);
if (isNaN(b) || b < 0)
b = 1;
var s = parseFloat(data.chat_antiflood_params.sustained);
if (isNaN(s) || s <= 0)
s = 1;
var c = b / s;
this.opts.chat_antiflood_params.burst = b;
this.opts.chat_antiflood_params.sustained = s;
this.opts.chat_antiflood_params.cooldown = c;
}
if ("show_public" in data && user.rank >= 3) {
this.opts.show_public = Boolean(data.show_public);
}
if ("enable_link_regex" in data) {
this.opts.enable_link_regex = Boolean(data.enable_link_regex);
}
if ("password" in data && user.rank >= 3) {
var pw = data.password+"";
pw = pw === "" ? false : pw;
this.opts.password = pw;
}
this.logger.log("%%% " + user.name + " updated channel options");

View file

@ -116,12 +116,22 @@ User.prototype.autoAFK = function () {
if (self.awaytimer)
clearTimeout(self.awaytimer);
if (!self.inChannel() || self.channel.opts.afk_timeout === 0)
if (!self.inChannel()) {
return;
}
var timeout = parseFloat(self.channel.opts.afk_timeout);
if (isNaN(timeout)) {
return;
}
if (timeout <= 0) {
return;
}
self.awaytimer = setTimeout(function () {
self.setAFK(true);
}, self.channel.opts.afk_timeout * 1000);
}, timeout * 1000);
};
User.prototype.kick = function (reason) {