From df9095c7e1a078e0a388ba47f9c5fb87c773ada5 Mon Sep 17 00:00:00 2001 From: ahwayakchih Date: Tue, 16 Feb 2021 18:09:19 +0100 Subject: [PATCH 1/4] fi: rename columns in `members` table to those found in v2 --- index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 4496254..fda0933 100644 --- a/index.js +++ b/index.js @@ -83,16 +83,16 @@ var logPrefix = '[' + pkg.name + ']'; var startms = +new Date(); var query = 'SELECT ' - + prefix + 'members.member_id as _uid, ' + + prefix + 'members.id as _uid, ' + prefix + 'members.name as _username, ' + prefix + 'members.members_display_name as _alternativeUsername, ' + prefix + 'members.email as _email, ' - + prefix + 'members.member_group_id as _gid, ' + + prefix + 'members.mgroup as _gid, ' + prefix + 'members.joined as _joindate, ' + prefix + 'members.title as _badge, ' + prefix + 'members.members_profile_views as _profileviews, ' + prefix + 'members.hide_email as _showemail, ' - + prefix + 'members.member_banned as _banned, ' + + prefix + 'members.temp_ban as _banned, ' + prefix + 'members.last_activity as _lastposttime, ' + prefix + 'members.last_visit as _lastonline, ' From ffffebb5e5ede4c40deeaa2c822ebb725baa4202 Mon Sep 17 00:00:00 2001 From: ahwayakchih Date: Tue, 16 Feb 2021 18:10:08 +0100 Subject: [PATCH 2/4] fix: safeguard against missing group In source database i was working on, users had `mgroup` set to 0, while such group did not exist in database. --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index fda0933..b3774d6 100644 --- a/index.js +++ b/index.js @@ -124,7 +124,7 @@ var logPrefix = '[' + pkg.name + ']'; row._website = Exporter.validateUrl(row._website); // let's check the group that this user belongs to and set the right privileges - row._level = groups[row._gid]._administrator > 0 && groups[row._gid]._moderator > 0 ? 'administrator' : groups[row._gid]._moderator > 0 ? 'moderator' : 'member'; + row._level = groups[row._gid] && groups[row._gid]._administrator > 0 && groups[row._gid]._moderator > 0 ? 'administrator' : groups[row._gid] && groups[row._gid]._moderator > 0 ? 'moderator' : 'member'; row._banned = row._banned ? 1 : groups[row._gid]._notbanned > 0 ? 0 : 1; row._showemail = !row._showemail; From fe936eebceb1d992aa40db81495e44bbe4684dc2 Mon Sep 17 00:00:00 2001 From: ahwayakchih Date: Fri, 19 Feb 2021 22:50:11 +0100 Subject: [PATCH 3/4] fix: comment --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index b3774d6..c489f0a 100644 --- a/index.js +++ b/index.js @@ -63,7 +63,7 @@ var logPrefix = '[' + pkg.name + ']'; rows.forEach(function(row) { map[row._gid] = row; }); - // keep a copy of the users in memory here + // keep a copy of the groups in memory here Exporter._groups = map; callback(null, map); }); From aa3c3a0b84f6400d449ea750423d2db2be760f25 Mon Sep 17 00:00:00 2001 From: ahwayakchih Date: Fri, 19 Feb 2021 22:51:24 +0100 Subject: [PATCH 4/4] fix: use temp_ban correctly, improve handling group info --- index.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index c489f0a..b361440 100644 --- a/index.js +++ b/index.js @@ -92,7 +92,7 @@ var logPrefix = '[' + pkg.name + ']'; + prefix + 'members.title as _badge, ' + prefix + 'members.members_profile_views as _profileviews, ' + prefix + 'members.hide_email as _showemail, ' - + prefix + 'members.temp_ban as _banned, ' + + '(UNIX_TIMESTAMP() - SUBSTRING_INDEX(SUBSTRING_INDEX(' + prefix + 'members.temp_ban, ":", 2), ":", -1)) < 0 as _banned, ' + prefix + 'members.last_activity as _lastposttime, ' + prefix + 'members.last_visit as _lastonline, ' @@ -103,6 +103,13 @@ var logPrefix = '[' + pkg.name + ']'; // _banned and _level are determined below + // use this fake group as a default for when group is not found + var noGroup = { + _notbanned: 1, + _pending: 0, + _administrator: 0, + _moderator: 0 + }; getGroups(function(err, groups) { Exporter.connection.query(query, function(err, rows) { @@ -124,8 +131,9 @@ var logPrefix = '[' + pkg.name + ']'; row._website = Exporter.validateUrl(row._website); // let's check the group that this user belongs to and set the right privileges - row._level = groups[row._gid] && groups[row._gid]._administrator > 0 && groups[row._gid]._moderator > 0 ? 'administrator' : groups[row._gid] && groups[row._gid]._moderator > 0 ? 'moderator' : 'member'; - row._banned = row._banned ? 1 : groups[row._gid]._notbanned > 0 ? 0 : 1; + group = groups[row._gid] || noGroup; + row._level = groups._administrator > 0 && group._moderator > 0 ? 'administrator' : group._moderator > 0 ? 'moderator' : 'member'; + row._banned = row._banned ? 1 : group._notbanned > 0 ? 0 : 1; row._showemail = !row._showemail;