PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 10.1.4
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v10.1.4
11.1.1 11.1.0 11.0.5 11.0.4 11.0.3 11.0.2 11.0.1 11.0.0 10.11.1 10.11.0 10.10.2 10.10.1 10.10.0 10.9.1 trunk 10.0.0 10.0.1 10.1.0 10.1.1 10.1.2 10.1.3 10.1.4 10.2.0 10.2.1 10.2.2 All 62 releases
acymailing / back / dynamics / birthday / BirthdayFollowup.php

BirthdayFollowup.php in AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress 10.1.4, at back/dynamics/birthday/BirthdayFollowup.php

93 lines 3.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 use AcyMailing\Classes\FollowupClass;
4 use AcyMailing\Helpers\AutomationHelper;
5 use AcyMailing\Classes\FieldClass;
6
7 trait BirthdayFollowup
8 {
9 private $birthdayTrigger = 'birthday';
10
11 public function getFollowupTriggerBlock(&$blocks)
12 {
13 $blocks[] = [
14 'name' => acym_translation('ACYM_BIRTHDAY'),
15 'description' => acym_translation('ACYM_BIRTHDAY_MAIL_FOLLOW_DESC'),
16 'icon' => 'acymicon-calendar',
17 'link' => acym_completeLink('campaigns&task=edit&step=followupCondition&trigger='.$this->birthdayTrigger),
18 'level' => 2,
19 'alias' => $this->birthdayTrigger,
20 ];
21 }
22
23 public function getFollowupTriggers(&$triggers)
24 {
25 $triggers[$this->birthdayTrigger] = acym_translation('ACYM_BIRTHDAY');
26 }
27
28 public function getAcymAdditionalConditionFollowup(&$additionalCondition, $trigger, $followup, $statusArray)
29 {
30 if ($trigger == $this->birthdayTrigger) {
31 $fieldClass = new FieldClass();
32 $dateFields = $fieldClass->getFieldsByType(['date']);
33
34 $fields = [];
35 foreach ($dateFields as $oneField) {
36 $fields[$oneField->id] = acym_translation($oneField->name);
37 }
38 $fieldsSelect = acym_select(
39 $fields,
40 'followup[condition][birthday_field]',
41 !empty($followup->condition) ? $followup->condition['birthday_field'] : '',
42 [
43 'class' => 'acym__select',
44 'required' => true,
45 ]
46 );
47 $fieldsSelect = '<span class="cell large-2 medium-4 margin-left-1">'.$fieldsSelect.'</span>';
48 $additionalCondition['birthday_field'] = acym_translationSprintf('ACYM_BIRTHDAY_FIELD', acym_info('ACYM_BIRTHDAY_FIELD_CUSTOM_FIELD_TYPE_DATE').$fieldsSelect);
49 }
50 }
51
52 public function getFollowupConditionSummary(&$return, $condition, $trigger, $statusArray)
53 {
54 if ($trigger == $this->birthdayTrigger && !empty($condition['birthday_field'])) {
55 $fieldClass = new FieldClass();
56 $field = $fieldClass->getOneById($condition['birthday_field']);
57 $return[] = acym_translationSprintf('ACYM_BIRTHDAY_FIELD_IS', $field->name);
58 }
59 }
60
61 public function onAcymGetFollowupDailyBases(&$triggers)
62 {
63 $triggers[] = $this->birthdayTrigger;
64 }
65
66 public function onAcymFollowupDailyBasesNeedToBeTriggered($followup)
67 {
68 if ($this->birthdayTrigger == $followup->trigger) {
69 $automationHelper = new AutomationHelper();
70
71 $fieldClass = new FieldClass();
72 $birthdayField = $fieldClass->getOneById($followup->condition['birthday_field']);
73
74 if (empty($birthdayField)) return;
75
76 $dateNowWithTimeZone = acym_date('now', 'Y-m-d h:i:s');
77 $dateToCheck = new DateTime($dateNowWithTimeZone);
78
79 $automationHelper->join['birthday_field'] = '#__acym_user_has_field AS uf ON uf.user_id = user.id';
80 $automationHelper->where[] = 'uf.field_id = '.$birthdayField->id;
81 $automationHelper->where[] = 'uf.value LIKE '.acym_escapeDB('%-'.date_format($dateToCheck, 'm-d'));
82
83 $userIds = acym_loadResultArray($automationHelper->getQuery(['user.id']));
84
85 $followupClass = new FollowupClass();
86
87 foreach ($userIds as $userId) {
88 $followupClass->addFollowupEmailsQueue($followup->trigger, $userId);
89 }
90 }
91 }
92 }
93