mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 02:55:58 +01:00 
			
		
		
		
	only show an alert if reload is required renamed settings.language to settings.userLang to match the config
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| var	fs = require('fs'),
 | |
| 	async = require('async'),
 | |
| 	path = require('path'),
 | |
| 	winston = require('winston'),
 | |
| 	templates = require('templates.js'),
 | |
| 
 | |
| 	User = require('./user'),
 | |
| 	Plugins = require('./plugins'),
 | |
| 	meta = require('./meta'),
 | |
| 	translator = require('../public/src/translator'),
 | |
| 
 | |
| 	app;
 | |
| 
 | |
| (function(Emailer) {
 | |
| 	Emailer.registerApp = function(expressApp) {
 | |
| 		app = expressApp;
 | |
| 		return Emailer;
 | |
| 	};
 | |
| 
 | |
| 	Emailer.send = function(template, uid, params, callback) {
 | |
| 		if (!callback) { callback = function() {}; }
 | |
| 		if (!app) {
 | |
| 			winston.warn('[emailer] App not ready!');
 | |
| 			return callback();
 | |
| 		}
 | |
| 
 | |
| 		async.parallel({
 | |
| 			html: function(next) {
 | |
| 				app.render('emails/' + template, params, next);
 | |
| 			},
 | |
| 			plaintext: function(next) {
 | |
| 				app.render('emails/' + template + '_plaintext', params, next);
 | |
| 			},
 | |
| 			email: async.apply(User.getUserField, uid, 'email'),
 | |
| 			settings: async.apply(User.getSettings, uid)
 | |
| 		}, function(err, results) {
 | |
| 			if (err) {
 | |
| 				winston.error('[emailer] Error sending digest : ' + err.stack);
 | |
| 				return callback(err);
 | |
| 			}
 | |
| 			async.map([results.html, results.plaintext, params.subject], function(raw, next) {
 | |
| 				translator.translate(raw, results.settings.userLang || meta.config.defaultLang || 'en_GB', function(translated) {
 | |
| 					next(undefined, translated);
 | |
| 				});
 | |
| 			}, function(err, translated) {
 | |
| 				if (err) {
 | |
| 					winston.error(err.message);
 | |
| 					return callback(err);
 | |
| 				} else if (!results.email) {
 | |
| 					winston.warn('uid : ' + uid + ' has no email, not sending.');
 | |
| 					return callback();
 | |
| 				}
 | |
| 
 | |
| 				if (Plugins.hasListeners('action:email.send')) {
 | |
| 					Plugins.fireHook('action:email.send', {
 | |
| 						to: results.email,
 | |
| 						from: meta.config['email:from'] || 'no-reply@localhost.lan',
 | |
| 						subject: translated[2],
 | |
| 						html: translated[0],
 | |
| 						plaintext: translated[1],
 | |
| 						template: template,
 | |
| 						uid: uid,
 | |
| 						pid: params.pid
 | |
| 					});
 | |
| 					callback();
 | |
| 				} else {
 | |
| 					winston.warn('[emailer] No active email plugin found!');
 | |
| 					callback();
 | |
| 				}
 | |
| 			});
 | |
| 		});
 | |
| 	};
 | |
| }(module.exports));
 | |
| 
 |