Make it impossible to ever lose rank when logging in

This commit is contained in:
calzoneman 2013-10-14 18:15:36 -05:00
parent 2e77cb4499
commit 95c2118740
3 changed files with 31 additions and 1 deletions

View file

@ -499,6 +499,12 @@ Channel.prototype.saveRank = function (user, callback) {
this.server.db.setChannelRank(this.name, user.name, user.rank, callback);
}
Channel.prototype.saveInitialRank = function (user, callback) {
if(!this.registered)
return;
this.server.db.insertChannelRank(this.name, user.name, user.rank, callback);
};
Channel.prototype.getIPRank = function (ip, callback) {
var self = this;
self.server.db.listAliases(ip, function (err, names) {
@ -1100,7 +1106,7 @@ Channel.prototype.broadcastNewUser = function(user) {
});
if(user.rank > 0) {
self.saveRank(user);
self.saveInitialRank(user);
}
var msg = user.name + " joined (aliases: ";

View file

@ -557,6 +557,23 @@ Database.prototype.setChannelRank = function (channame, name, rank, callback) {
self.query(query, [name, rank, rank], callback);
};
Database.prototype.insertChannelRank = function (channame, name, rank, callback) {
var self = this;
if(typeof callback !== "function")
callback = blackHole;
if(!$util.isValidChannelName(channame)) {
callback("Invalid channel name", null);
return;
}
var query = "INSERT INTO `chan_" + channame + "_ranks` " +
"(name, rank) VALUES (?, ?) " +
"ON DUPLICATE KEY UPDATE rank=rank";
self.query(query, [name, rank], callback);
};
Database.prototype.listChannelRanks = function (channame, callback) {
var self = this;
if(typeof callback !== "function")