letquery='SELECT '+tableFields.join(', ')+' FROM `triggers` LEFT JOIN `campaigns` `source` ON `source`.`id`=`triggers`.`source_campaign` LEFT JOIN `campaigns` `dest` ON `dest`.`id`=`triggers`.`dest_campaign` LEFT JOIN `lists` ON `lists`.`id`=`triggers`.`list` LEFT JOIN `segments` ON `segments`.`id`=`triggers`.`segment` LEFT JOIN `custom_fields` ON `custom_fields`.`list` = `triggers`.`list` AND `custom_fields`.`column`=`triggers`.`column` ORDER BY `triggers`.`name`';
row.formatted=util.format('%s days after %s',days,row.rule==='subscription'?row.columnName:(util.format('%s <a href="/campaigns/view/%s">%s</a>',defaultEventMap[row.column],row.sourceCampaign,row.sourceCampaignName)));
querySegmentSubscription=(queryData.where?' AND ('+queryData.where+')':'');
querySegmentTriggertable=' AND triggertable.`segment` = '+trigger.segment;
}
switch(trigger.rule){
case'subscription':
query='SELECT id FROM `subscription__'+trigger.list+'` subscription WHERE status=1 AND '+intervalQuery('`'+trigger.column+'`',trigger.seconds,treshold)+' '+querySegmentSubscription+' AND id NOT IN (SELECT subscription FROM `trigger__'+id+'` triggertable WHERE triggertable.`list` = '+trigger.list+' '+querySegmentTriggertable+' AND triggertable.`subscription` = subscription.`id`) LIMIT '+limit;
break;
case'campaign':
switch(trigger.column){
case'delivered':
query='SELECT subscription.id AS id FROM `subscription__'+trigger.list+'` subscription LEFT JOIN `campaign__'+trigger.sourceCampaign+'` campaign ON campaign.list='+trigger.list+' AND subscription.id=campaign.subscription WHERE campaign.status=1 AND '+intervalQuery('`campaign`.`created`',trigger.seconds,treshold)+' '+querySegmentSubscription+' AND subscription.id NOT IN (SELECT subscription FROM `trigger__'+id+'` triggertable WHERE triggertable.`list` = '+trigger.list+' '+querySegmentTriggertable+' AND triggertable.`subscription` = subscription.`id`) LIMIT '+limit;
break;
case'not_clicked':
query='SELECT subscription.id AS id FROM `subscription__'+trigger.list+'` subscription LEFT JOIN `campaign__'+trigger.sourceCampaign+'` campaign ON campaign.list='+trigger.list+' AND subscription.id=campaign.subscription LEFT JOIN `campaign_tracker__'+trigger.sourceCampaign+'` tracker ON tracker.list=campaign.list AND tracker.subscriber=subscription.id AND tracker.link=0 WHERE campaign.status=1 AND '+intervalQuery('`campaign`.`created`',trigger.seconds,treshold)+' AND tracker.created IS NULL '+querySegmentSubscription+' AND subscription.id NOT IN (SELECT subscription FROM `trigger__'+id+'` triggertable WHERE triggertable.`list` = '+trigger.list+' '+querySegmentTriggertable+' AND triggertable.`subscription` = subscription.`id`) LIMIT '+limit;
break;
case'not_opened':
query='SELECT subscription.id AS id FROM `subscription__'+trigger.list+'` subscription LEFT JOIN `campaign__'+trigger.sourceCampaign+'` campaign ON campaign.list='+trigger.list+' AND subscription.id=campaign.subscription LEFT JOIN `campaign_tracker__'+trigger.sourceCampaign+'` tracker ON tracker.list=campaign.list AND tracker.subscriber=subscription.id AND tracker.link=-1 WHERE campaign.status=1 AND '+intervalQuery('`campaign`.`created`',trigger.seconds,treshold)+' AND tracker.created IS NULL '+querySegmentSubscription+' AND subscription.id NOT IN (SELECT subscription FROM `trigger__'+id+'` triggertable WHERE triggertable.`list` = '+trigger.list+' '+querySegmentTriggertable+' AND triggertable.`subscription` = subscription.`id`) LIMIT '+limit;
break;
case'clicked':
query='SELECT subscription.id AS id FROM `subscription__'+trigger.list+'` subscription LEFT JOIN `campaign__'+trigger.sourceCampaign+'` campaign ON campaign.list='+trigger.list+' AND subscription.id=campaign.subscription LEFT JOIN `campaign_tracker__'+trigger.sourceCampaign+'` tracker ON tracker.list=campaign.list AND tracker.subscriber=subscription.id AND tracker.link=0 WHERE campaign.status=1 AND '+intervalQuery('`tracker`.`created`',trigger.seconds,treshold)+' '+querySegmentSubscription+' AND subscription.id NOT IN (SELECT subscription FROM `trigger__'+id+'` triggertable WHERE triggertable.`list` = '+trigger.list+' '+querySegmentTriggertable+' AND triggertable.`subscription` = subscription.`id`) LIMIT '+limit;
break;
case'opened':
query='SELECT subscription.id AS id FROM `subscription__'+trigger.list+'` subscription LEFT JOIN `campaign__'+trigger.sourceCampaign+'` campaign ON campaign.list='+trigger.list+' AND subscription.id=campaign.subscription LEFT JOIN `campaign_tracker__'+trigger.sourceCampaign+'` tracker ON tracker.list=campaign.list AND tracker.subscriber=subscription.id AND tracker.link=-1 WHERE campaign.status=1 AND '+intervalQuery('`tracker`.`created`',trigger.seconds,treshold)+' '+querySegmentSubscription+' AND subscription.id NOT IN (SELECT subscription FROM `trigger__'+id+'` triggertable WHERE triggertable.`list` = '+trigger.list+' '+querySegmentTriggertable+' AND triggertable.`subscription` = subscription.`id`) LIMIT '+limit;