Skip to content

Commit aa1529a

Browse files
author
Martii
committed
Shift flags to flags.critical in affected models
* Project version bump... e.g. a "hump" in the DB... going back will require an earlier commit HEAD and an earlier DB * Change everything affected * Tiny bit of STYLEGUIDE.md compliance * Error trap flag user... if currently seen means that a user migration didn't occur **NOTES** More to go... Applies to #641
1 parent b9f1765 commit aa1529a

File tree

14 files changed

+71
-26
lines changed

14 files changed

+71
-26
lines changed

controllers/admin.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,6 @@ exports.authAsUser = function (aReq, aRes, aNext) {
474474

475475
aReq.session.user = user;
476476

477-
aRes.redirect(user.userPageUrl);
477+
aRes.redirect(encodeURI(user.userPageUrl));
478478
});
479479
};

controllers/discussion.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ function postComment(aUser, aDiscussion, aContent, aCreator, aCallback) {
338338
created: created,
339339
rating: 0,
340340
creator: aCreator,
341-
flags: 0,
341+
flags: { critical: 0 },
342342
flagged: false,
343343
id: created.getTime().toString(16),
344344
_discussionId: aDiscussion._id,

controllers/script.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ var getScriptPageTasks = function (aOptions) {
257257

258258
removeLib.removeable(Script, script, authedUser, function (aCanRemove, aAuthor) {
259259
aOptions.canRemove = aCanRemove;
260-
aOptions.flags = script.flags || 0;
260+
aOptions.flags = (script.flags ? script.flags.critical : null) || 0;
261261
aOptions.removeUrl = '/remove' + (script.isLib ? '/libs/' : '/scripts/') + script.installNameSlug;
262262

263263
if (!aCanRemove) {

controllers/scriptStorage.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,7 @@ exports.storeScript = function (aUser, aMeta, aBuf, aCallback, aUpdate) {
472472
about: '',
473473
updated: new Date(),
474474
votes: 0,
475-
flags: 0,
475+
flags: { critical: 0 },
476476
installName: installName,
477477
fork: null,
478478
meta: isLibrary ? { name: aMeta } : aMeta,

controllers/user.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ var setupUserModerationUITask = function (aOptions) {
7979

8080
removeLib.removeable(User, user, authedUser, function (aCanRemove, aAuthor) {
8181
aOptions.canRemove = aCanRemove;
82-
aOptions.flags = user.flags || 0;
82+
aOptions.flags = (user.flags ? user.flags.critical : null) || 0;
8383

8484
if (!aCanRemove) {
8585
return aCallback();
@@ -1481,7 +1481,7 @@ exports.flag = function (aReq, aRes, aNext) {
14811481
if (aErr || !aUser) { return aNext(); }
14821482

14831483
fn(User, aUser, aReq.session.user, function (aFlagged) { // NOTE: Inline function here
1484-
aRes.redirect('/users/' + username);
1484+
aRes.redirect('/users/' + encodeURI(username));
14851485
});
14861486
});
14871487
};

libs/flag.js

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -87,19 +87,40 @@ function getThreshold(aModel, aContent, aAuthor, aCallback) {
8787
exports.getThreshold = getThreshold;
8888

8989
function saveContent(aModel, aContent, aAuthor, aFlags, aCallback) {
90-
if (!aContent.flags) { aContent.flags = 0; }
91-
aContent.flags += aFlags;
90+
if (!aContent.flags) {
91+
aContent.flags = {};
92+
}
93+
94+
if (!aContent.flags.critical) {
95+
aContent.flags.critical = 0;
96+
}
97+
aContent.flags.critical += aFlags;
9298

93-
if (aContent.flags >= thresholds[aModel.modelName] * (aAuthor.role < 4 ? 2 : 1)) {
99+
if (aContent.flags.critical >= thresholds[aModel.modelName] * (aAuthor.role < 4 ? 2 : 1)) {
94100
return getThreshold(aModel, aContent, aAuthor, function (aThreshold) {
95-
aContent.flagged = aContent.flags >= aThreshold;
96-
aContent.save(function (aErr, aContent) { aCallback(aContent.flagged); });
101+
aContent.flagged = aContent.flags.critical >= aThreshold;
102+
103+
aContent.save(function (aErr, aContent) {
104+
if (aErr) {
105+
console.warn('Error flagging content', aErr);
106+
aCallback(null);
107+
return;
108+
}
109+
aCallback(aContent.flagged);
110+
});
97111
});
98112
} else {
99113
aContent.flagged = false;
100114
}
101115

102-
aContent.save(function (aErr, aContent) { aCallback(aContent.flagged); });
116+
aContent.save(function (aErr, aContent) {
117+
if (aErr) {
118+
console.warn('Error unflagging content', aErr);
119+
aCallback(null);
120+
return;
121+
}
122+
aCallback(aContent.flagged);
123+
});
103124
}
104125
exports.saveContent = saveContent;
105126

@@ -111,7 +132,13 @@ function flag(aModel, aContent, aUser, aAuthor, aCallback) {
111132
});
112133

113134
flag.save(function (aErr, aFlag) {
114-
if (!aContent.flags) { aContent.flags = 0; }
135+
if (!aContent.flags) {
136+
aContent.flags = {};
137+
}
138+
139+
if (!aContent.flags.critical) {
140+
aContent.flags.critical = 0;
141+
}
115142
if (!aContent.flagged) { aContent.flagged = false; }
116143

117144
saveContent(aModel, aContent, aAuthor, aUser.role < 4 ? 2 : 1, aCallback);
@@ -130,9 +157,17 @@ exports.unflag = function (aModel, aContent, aUser, aCallback) {
130157
if (!aUser) { return aCallback(null); }
131158

132159
getFlag(aModel, aContent, aUser, function (aFlag) {
133-
if (!aFlag) { return aCallback(null); }
160+
if (!aFlag) {
161+
return aCallback(null);
162+
}
134163

135-
if (!aContent.flags) { aContent.flags = 0; }
164+
if (!aContent.flags) {
165+
aContent.flags = {};
166+
}
167+
168+
if (!aContent.flags.critical) {
169+
aContent.flags.critical = 0;
170+
}
136171
if (!aContent.flagged) { aContent.flagged = false; }
137172

138173
function removeFlag(aAuthor) {

libs/modelParser.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,10 +175,11 @@ var parseScript = function (aScriptData) {
175175
script.isFork = script.fork && script.fork.length > 0;
176176

177177
// Script Good/Bad bar.
178-
var sumVotesAndFlags = script.votes + script.flags;
178+
var criticalFlags = (script.flags ? script.flags.critical : null) || 0;
179+
var sumVotesAndFlags = script.votes + criticalFlags;
179180

180181
var votesRatio = sumVotesAndFlags > 0 ? script.votes / sumVotesAndFlags : 1;
181-
var flagsRatio = sumVotesAndFlags > 0 ? script.flags / sumVotesAndFlags : 0;
182+
var flagsRatio = sumVotesAndFlags > 0 ? criticalFlags / sumVotesAndFlags : 0;
182183

183184
var votesPercent = votesRatio * 100;
184185
var flagsPercent = flagsRatio * 100;

libs/modelQuery.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ var applyModelListQueryFlaggedFilter = function (aModelListQuery, aOptions, aFla
198198
case 'absolute':
199199
if (aOptions.isAdmin) {
200200
aOptions.filterAbsolute = true;
201-
aModelListQuery.and({ flagsAbsolute: { $gt: 0 } }); // TODO: This does not exist yet
201+
aModelListQuery.and({ 'flags.absolute': { $gt: 0 } }); // TODO: Exists in schema but needs linkage
202202
break;
203203
}
204204
// fallthrough
@@ -212,7 +212,7 @@ var applyModelListQueryFlaggedFilter = function (aModelListQuery, aOptions, aFla
212212
aOptions.isFlagged = 'true';
213213
}
214214

215-
aModelListQuery.and({ flags: { $gt: 0 } });
215+
aModelListQuery.and({ 'flags.critical': { $gt: 0 } });
216216
break;
217217
}
218218

models/comment.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ var commentSchema = new Schema({
1818

1919
// Moderation
2020
creator: Boolean,
21-
flags: Number,
21+
flags: {
22+
critical: Number,
23+
absolute: Number
24+
},
2225
flagged: Boolean,
2326

2427
// Extra info

models/script.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@ var scriptSchema = new Schema({
2020
updated: Date,
2121

2222
// Moderation
23-
votes: Number, // upvotes negate flags
24-
flags: Number,
23+
votes: Number, // upvotes negate flags.critical
24+
flags: {
25+
critical: Number,
26+
absolute: Number
27+
},
2528
flagged: Boolean,
2629
installName: String,
2730

0 commit comments

Comments
 (0)