| 
									
										
										
										
											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-01-25 16:39:27 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	User = require('./user'), | 
					
						
							| 
									
										
										
										
											2013-12-30 14:02:43 -05:00
										 |  |  | 	Plugins = require('./plugins'), | 
					
						
							| 
									
										
										
										
											2013-12-31 09:33:25 -05:00
										 |  |  | 	Meta = require('./meta'), | 
					
						
							| 
									
										
										
										
											2014-01-04 20:08:59 -05:00
										 |  |  | 	Translator = require('../public/src/translator'), | 
					
						
							| 
									
										
										
										
											2014-01-25 16:39:27 -05:00
										 |  |  | 	templates = require('../public/src/templates'), | 
					
						
							| 
									
										
										
										
											2013-12-30 14:02:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-04 18:03:54 -05:00
										 |  |  | 	Emailer = {}; | 
					
						
							| 
									
										
										
										
											2013-12-30 14:02:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-04 18:03:54 -05:00
										 |  |  | var	render = function(template, params, callback) { | 
					
						
							| 
									
										
										
										
											2014-01-25 16:39:27 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	if (templates[template]) { | 
					
						
							| 
									
										
										
										
											2014-01-04 20:08:59 -05:00
										 |  |  | 		Translator.translate(templates[template].parse(params), function(template) { | 
					
						
							|  |  |  | 			callback(null, template); | 
					
						
							|  |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2013-12-30 14:02:43 -05:00
										 |  |  | 	} else { | 
					
						
							| 
									
										
										
										
											2014-01-04 18:03:54 -05:00
										 |  |  | 		callback(null, null); | 
					
						
							| 
									
										
										
										
											2013-12-30 14:02:43 -05:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Emailer.send = function(template, uid, params) { | 
					
						
							| 
									
										
										
										
											2014-01-22 20:35:57 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-12-30 14:02:43 -05:00
										 |  |  | 	async.parallel({ | 
					
						
							|  |  |  | 		html: function(next) { | 
					
						
							| 
									
										
										
										
											2014-01-04 18:03:54 -05:00
										 |  |  | 			render('emails/' + template, params, next); | 
					
						
							| 
									
										
										
										
											2013-12-30 14:02:43 -05:00
										 |  |  | 		}, | 
					
						
							|  |  |  | 		plaintext: function(next) { | 
					
						
							| 
									
										
										
										
											2014-01-04 18:03:54 -05:00
										 |  |  | 			render('emails/' + template + '_plaintext', params, next); | 
					
						
							| 
									
										
										
										
											2013-12-30 14:02:43 -05:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	}, function(err, results) { | 
					
						
							|  |  |  | 		User.getUserField(uid, 'email', function(err, email) { | 
					
						
							| 
									
										
										
										
											2014-02-05 18:25:13 -05:00
										 |  |  | 			if(err) { | 
					
						
							|  |  |  | 				return winston.error(err.message); | 
					
						
							| 
									
										
										
										
											2013-12-30 14:02:43 -05:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2014-02-05 18:25:13 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 			if(!email) { | 
					
						
							|  |  |  | 				return winston.warn('uid : ' + uid + ' has no email, not sending.'); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			Plugins.fireHook('action:email.send', { | 
					
						
							|  |  |  | 				to: email, | 
					
						
							|  |  |  | 				from: Meta.config['email:from'] || 'no-reply@localhost.lan', | 
					
						
							|  |  |  | 				subject: params.subject, | 
					
						
							|  |  |  | 				html: results.html, | 
					
						
							|  |  |  | 				plaintext: results.plaintext, | 
					
						
							|  |  |  | 				template: template, | 
					
						
							|  |  |  | 				uid: uid | 
					
						
							|  |  |  | 			}); | 
					
						
							| 
									
										
										
										
											2013-12-30 14:02:43 -05:00
										 |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = Emailer; |