Skip to content

Commit 0da3c30

Browse files
committed
Add filtering to count method to get exact count for WP admin backend
1 parent 9ae99a4 commit 0da3c30

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

core/db.js

+24-2
Original file line numberDiff line numberDiff line change
@@ -172,11 +172,33 @@ exports.deleteEntry = function(id, callback){
172172
});
173173
};
174174

175-
exports.getCount = function(callback){
175+
exports.getCount = function(filter, callback){
176+
console.log(filter);
176177
pool.getConnection(function(err, connection) {
177178
if(err) { console.log(err); callback(true); return; }
178179

179-
let sql = "SELECT count(*) as cnt FROM entries WHERE email_confirmed > 0 AND status < 2 AND country != '';";
180+
// let sql = "SELECT count(*) as cnt FROM entries WHERE email_confirmed > 0 AND status < 2 AND country != '';";
181+
let sql = 'SELECT count(*) as cnt FROM entries';
182+
183+
if (filter['active'] === 1) {
184+
sql += ' WHERE email_confirmed > 0 AND status < 2 AND country != \'\'';
185+
}
186+
187+
if (filter['profileImage'] === 1) {
188+
sql += (sql.includes('WHERE') ? ' AND' : ' WHERE') + ' image != \'\'';
189+
}
190+
191+
if (filter['confirmed'] === 'yes') {
192+
sql += (sql.includes('WHERE') ? ' AND' : ' WHERE') + ' email_confirmed = 1';
193+
} else if (filter['confirmed'] === 'no') {
194+
sql += (sql.includes('WHERE') ? ' AND' : ' WHERE') + ' email_confirmed = 0';
195+
}
196+
197+
if (filter['status'] === 'active' && filter['active'] !== 1) {
198+
sql += (sql.includes('WHERE') ? ' AND' : ' WHERE') + ' status = 1';
199+
} else if (filter['status'] === 'inactive' && filter['active'] !== 1) {
200+
sql += (sql.includes('WHERE') ? ' AND' : ' WHERE') + ' status = 0';
201+
}
180202

181203
// make the query
182204
connection.query(sql, function(err, results) {

core/entryController.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,13 @@ exports.deleteEntry = function(request, response){
120120
};
121121

122122
exports.getCount = function(req, res) {
123-
db.getCount(function(results, err){
123+
let filter = {};
124+
filter['active'] = parseInt(req.query.isActive) === 0 ? 0 : 1;
125+
filter['profileImage'] = parseInt(req.query.profileImage) || 0;
126+
filter['confirmed'] = req.query.confirmed === 'yes' || req.query.confirmed === 'no' ? req.query.confirmed : 'all';
127+
filter['status'] = req.query.status === 'active' || req.query.status === 'inactive' ? req.query.status : 'all';
128+
129+
db.getCount(filter, function(results, err){
124130
if(!err){
125131
// TODO switch to json when clocks have been adjusted to new API
126132
// res.status(200).json({success : true, count : results[0]['cnt']});

0 commit comments

Comments
 (0)