Skip to content

Commit a473fe7

Browse files
committed
Merge pull request #774 from Martii/Issue-641
Shift `flags` to `flags.critical` in affected models Auto-merge...migration complete... updating VPS
2 parents 1836ce3 + aa1529a commit a473fe7

File tree

13 files changed

+69
-24
lines changed

13 files changed

+69
-24
lines changed

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: 1 addition & 1 deletion
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();

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

models/user.js

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

2424
// Moderation
2525
role: Number,
26-
flags: Number,
26+
flags: {
27+
critical: Number,
28+
absolute: Number
29+
},
2730
flagged: Boolean,
2831
sessionIds: [String]
2932
});

0 commit comments

Comments
 (0)