Vulcan/packages/telescope-newsletter/lib/server/cron.js

65 lines
1.5 KiB
JavaScript
Raw Normal View History

SyncedCron.options = {
log: false,
collectionName: 'cronHistory',
utc: false,
collectionTTL: 172800
}
2014-08-29 10:37:35 +09:00
Later = Npm.require('later');
defaultFrequency = 7; // once a week
getSchedule = function (parser) {
var frequency = getSetting('newsletterFrequency', defaultFrequency);
switch (frequency) {
case 1: // every day
// sched = {schedules: [{dw: [1,2,3,4,5,6,0]}]};
return parser.recur().on(1,2,3,4,5,6,0).dayOfWeek();
case 2: // Mondays, Wednesdays, Fridays
// sched = {schedules: [{dw: [2,4,6]}]};
return parser.recur().on(2,4,6).dayOfWeek();
case 3: // Mondays, Thursdays
// sched = {schedules: [{dw: [2,5]}]};
return parser.recur().on(2,5).dayOfWeek();
case 7: // Once a week (Mondays)
// sched = {schedules: [{dw: [2]}]};
return parser.recur().on(2).dayOfWeek();
2014-12-30 13:46:48 +09:00
default: // Once a week (Mondays)
return parser.recur().on(2).dayOfWeek();
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
resetNewsletterJob = function () {
2014-12-30 13:46:48 +09:00
SyncedCron.stop();
2014-12-31 11:54:38 +09:00
addJob();
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
return getSchedule(parser);
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
}
});