2015-01-06 09:51:35 +09:00
|
|
|
SyncedCron.options = {
|
|
|
|
log: false,
|
|
|
|
collectionName: 'cronHistory',
|
2015-01-20 00:11:30 -08:00
|
|
|
utc: false,
|
2015-01-06 09:51:35 +09:00
|
|
|
collectionTTL: 172800
|
|
|
|
}
|
|
|
|
|
2014-08-29 10:37:35 +09:00
|
|
|
defaultFrequency = 7; // once a week
|
2015-01-20 00:11:30 -08:00
|
|
|
defaultTime = '00:00';
|
2014-08-29 10:37:35 +09:00
|
|
|
|
2015-01-20 00:11:30 -08:00
|
|
|
var getSchedule = function (parser) {
|
2014-08-29 10:37:35 +09:00
|
|
|
var frequency = getSetting('newsletterFrequency', defaultFrequency);
|
2015-01-20 00:11:30 -08:00
|
|
|
var recur = parser.recur();
|
|
|
|
var schedule;
|
2014-08-29 10:37:35 +09:00
|
|
|
switch (frequency) {
|
|
|
|
case 1: // every day
|
2015-01-20 00:11:30 -08:00
|
|
|
// sched = {schedules: [{dw: [1,2,3,4,5,6,0]}]};
|
|
|
|
schedule = recur.on(1,2,3,4,5,6,0).dayOfWeek();
|
2014-08-29 10:37:35 +09:00
|
|
|
|
|
|
|
case 2: // Mondays, Wednesdays, Fridays
|
2015-01-20 00:11:30 -08:00
|
|
|
// sched = {schedules: [{dw: [2,4,6]}]};
|
|
|
|
schedule = recur.on(2,4,6).dayOfWeek();
|
2014-08-29 10:37:35 +09:00
|
|
|
|
|
|
|
case 3: // Mondays, Thursdays
|
2015-01-20 00:11:30 -08:00
|
|
|
// sched = {schedules: [{dw: [2,5]}]};
|
|
|
|
schedule = recur.on(2,5).dayOfWeek();
|
2014-08-29 10:37:35 +09:00
|
|
|
|
|
|
|
case 7: // Once a week (Mondays)
|
2015-01-20 00:11:30 -08:00
|
|
|
// sched = {schedules: [{dw: [2]}]};
|
|
|
|
schedule = recur.on(2).dayOfWeek();
|
2014-08-29 10:37:35 +09:00
|
|
|
|
2014-12-30 13:46:48 +09:00
|
|
|
default: // Once a week (Mondays)
|
2015-01-20 00:11:30 -08:00
|
|
|
schedule = recur.on(2).dayOfWeek();
|
|
|
|
}
|
|
|
|
return schedule.on(getSetting('newsletterTime', defaultTime)).time();
|
2014-08-29 10:37:35 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
Meteor.methods({
|
2014-12-17 11:00:59 +09:00
|
|
|
getNextJob: function () {
|
|
|
|
var nextJob = SyncedCron.nextScheduledAtDate('scheduleNewsletter');
|
2014-09-10 14:57:01 +09:00
|
|
|
console.log(nextJob);
|
|
|
|
return nextJob;
|
2014-08-29 10:37:35 +09:00
|
|
|
}
|
2014-12-14 19:46:14 +08:00
|
|
|
});
|
2014-12-30 13:46:48 +09:00
|
|
|
|
2014-12-31 11:54:38 +09:00
|
|
|
var addJob = function () {
|
2014-12-30 13:46:48 +09:00
|
|
|
SyncedCron.add({
|
|
|
|
name: 'scheduleNewsletter',
|
|
|
|
schedule: function(parser) {
|
|
|
|
// parser is a later.parse object
|
2015-01-06 09:51:35 +09:00
|
|
|
return getSchedule(parser);
|
2015-01-20 00:11:30 -08:00
|
|
|
},
|
2014-12-30 13:46:48 +09:00
|
|
|
job: function() {
|
|
|
|
scheduleNextCampaign();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
Meteor.startup(function () {
|
|
|
|
if (getSetting('enableNewsletter', false)) {
|
2014-12-31 11:54:38 +09:00
|
|
|
addJob();
|
2014-12-30 13:46:48 +09:00
|
|
|
}
|
|
|
|
});
|