'use strict'; var async = require('async'), meta = require('../meta'), db = require('../database'), plugins = require('../plugins'); module.exports = function(User) { User.getSettings = function(uid, callback) { if (!parseInt(uid, 10)) { return onSettingsLoaded(0, {}, callback); } db.getObject('user:' + uid + ':settings', function(err, settings) { if (err) { return callback(err); } onSettingsLoaded(uid, settings ? settings : {}, callback); }); }; User.getMultipleUserSettings = function(uids, callback) { if (!Array.isArray(uids) || !uids.length) { return callback(null, []); } var keys = uids.map(function(uid) { return 'user:' + uid + ':settings'; }); db.getObjects(keys, function(err, settings) { if (err) { return callback(err); } for (var i=0; i meta.config.topicsPerPage || parseInt(data.postsPerPage, 10) > meta.config.postsPerPage; } function updateDigestSetting(uid, dailyDigestFreq, callback) { async.waterfall([ function(next) { db.sortedSetsRemove(['digest:day:uids', 'digest:week:uids', 'digest:month:uids'], uid, next); }, function(next) { if (['day', 'week', 'month'].indexOf(dailyDigestFreq) !== -1) { db.sortedSetAdd('digest:' + dailyDigestFreq + ':uids', Date.now(), uid, next); } else { next(); } } ], callback); } User.setSetting = function(uid, key, value, callback) { db.setObjectField('user:' + uid + ':settings', key, value, callback); }; User.setGroupTitle = function(groupName, uid, callback) { if (groupName === 'registered-users') { return callback(); } db.getObjectField('user:' + uid + ':settings', 'groupTitle', function(err, currentTitle) { if (err || (currentTitle || currentTitle === '')) { return callback(err); } User.setSetting(uid, 'groupTitle', groupName, callback); }); }; };