| 
									
										
										
										
											2014-03-13 00:49:32 -04:00
										 |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-25 16:39:27 -05:00
										 |  |  | var	fs = require('fs'), | 
					
						
							|  |  |  | 	async = require('async'), | 
					
						
							|  |  |  | 	path = require('path'), | 
					
						
							| 
									
										
										
										
											2014-02-14 11:58:51 -05:00
										 |  |  | 	winston = require('winston'), | 
					
						
							| 
									
										
										
										
											2014-06-25 18:55:22 -04:00
										 |  |  | 	templates = require('templates.js'), | 
					
						
							| 
									
										
										
										
											2014-01-25 16:39:27 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	User = require('./user'), | 
					
						
							| 
									
										
										
										
											2013-12-30 14:02:43 -05:00
										 |  |  | 	Plugins = require('./plugins'), | 
					
						
							| 
									
										
										
										
											2014-10-08 12:08:35 -04:00
										 |  |  | 	meta = require('./meta'), | 
					
						
							| 
									
										
										
										
											2014-06-27 14:52:12 -04:00
										 |  |  | 	translator = require('../public/src/translator'), | 
					
						
							| 
									
										
										
										
											2013-12-30 14:02:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-11-29 12:12:02 -05:00
										 |  |  | 	app; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (function(Emailer) { | 
					
						
							|  |  |  | 	Emailer.registerApp = function(expressApp) { | 
					
						
							|  |  |  | 		app = expressApp; | 
					
						
							|  |  |  | 		return Emailer; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-23 21:27:42 -05:00
										 |  |  | 	Emailer.send = function(template, uid, params, callback) { | 
					
						
							| 
									
										
										
										
											2015-02-05 13:09:32 -05:00
										 |  |  | 		if (!callback) { callback = function() {}; } | 
					
						
							| 
									
										
										
										
											2014-11-29 12:12:02 -05:00
										 |  |  | 		if (!app) { | 
					
						
							|  |  |  | 			winston.warn('[emailer] App not ready!'); | 
					
						
							| 
									
										
										
										
											2015-01-23 21:27:42 -05:00
										 |  |  | 			return callback(); | 
					
						
							| 
									
										
										
										
											2014-11-29 12:12:02 -05:00
										 |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		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) { | 
					
						
							| 
									
										
										
										
											2014-11-29 12:35:04 -05:00
										 |  |  | 			if (err) { | 
					
						
							| 
									
										
										
										
											2015-01-23 21:27:42 -05:00
										 |  |  | 				winston.error('[emailer] Error sending digest : ' + err.stack); | 
					
						
							|  |  |  | 				return callback(err); | 
					
						
							| 
									
										
										
										
											2014-11-29 12:35:04 -05:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2014-11-29 12:12:02 -05:00
										 |  |  | 			async.map([results.html, results.plaintext, params.subject], function(raw, next) { | 
					
						
							| 
									
										
										
										
											2015-02-27 13:24:45 -05:00
										 |  |  | 				translator.translate(raw, results.settings.userLang || meta.config.defaultLang || 'en_GB', function(translated) { | 
					
						
							| 
									
										
										
										
											2014-11-29 12:12:02 -05:00
										 |  |  | 					next(undefined, translated); | 
					
						
							| 
									
										
										
										
											2014-11-03 15:31:41 -05:00
										 |  |  | 				}); | 
					
						
							| 
									
										
										
										
											2014-11-29 12:12:02 -05:00
										 |  |  | 			}, function(err, translated) { | 
					
						
							|  |  |  | 				if (err) { | 
					
						
							| 
									
										
										
										
											2015-01-23 21:27:42 -05:00
										 |  |  | 					winston.error(err.message); | 
					
						
							|  |  |  | 					return callback(err); | 
					
						
							| 
									
										
										
										
											2014-11-29 12:12:02 -05:00
										 |  |  | 				} else if (!results.email) { | 
					
						
							| 
									
										
										
										
											2015-01-23 21:27:42 -05:00
										 |  |  | 					winston.warn('uid : ' + uid + ' has no email, not sending.'); | 
					
						
							|  |  |  | 					return callback(); | 
					
						
							| 
									
										
										
										
											2014-11-29 12:12:02 -05:00
										 |  |  | 				} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				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, | 
					
						
							| 
									
										
										
										
											2015-01-23 21:27:42 -05:00
										 |  |  | 						uid: uid, | 
					
						
							|  |  |  | 						pid: params.pid | 
					
						
							| 
									
										
										
										
											2014-11-29 12:12:02 -05:00
										 |  |  | 					}); | 
					
						
							| 
									
										
										
										
											2015-02-11 14:44:56 -05:00
										 |  |  | 					callback(); | 
					
						
							| 
									
										
										
										
											2014-11-29 12:12:02 -05:00
										 |  |  | 				} else { | 
					
						
							|  |  |  | 					winston.warn('[emailer] No active email plugin found!'); | 
					
						
							| 
									
										
										
										
											2015-01-23 21:27:42 -05:00
										 |  |  | 					callback(); | 
					
						
							| 
									
										
										
										
											2014-11-29 12:12:02 -05:00
										 |  |  | 				} | 
					
						
							|  |  |  | 			}); | 
					
						
							| 
									
										
										
										
											2013-12-30 14:02:43 -05:00
										 |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2014-11-29 12:12:02 -05:00
										 |  |  | 	}; | 
					
						
							|  |  |  | }(module.exports)); | 
					
						
							| 
									
										
										
										
											2013-12-30 14:02:43 -05:00
										 |  |  | 
 |