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 / subscriber / SubscriberAutomationConditions.php

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

138 lines 5.9 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\UserClass;
4 use AcyMailing\Classes\FieldClass;
5 use AcyMailing\Helpers\AutomationHelper;
6 use AcyMailing\Types\OperatorType;
7
8 trait SubscriberAutomationConditions
9 {
10 private function onAcymDeclareSummary_conditionsFilters(&$automation, $key)
11 {
12 if (!empty($automation['acy_field'])) {
13 $usersColumns = acym_getColumns('user');
14
15 if (!in_array($automation['acy_field']['field'], $usersColumns)) {
16 $fieldClass = new FieldClass();
17 $field = $fieldClass->getOneById($automation['acy_field']['field']);
18 $automation['acy_field']['field'] = $field->name;
19 }
20
21 $automation = acym_translationSprintf(
22 $key,
23 $automation['acy_field']['field'],
24 $automation['acy_field']['operator'],
25 $automation['acy_field']['value']
26 );
27 } elseif (!empty($automation['random'])) {
28 $automation = acym_translationSprintf(
29 'ACYM_RANDOMLY_SELECT_X_SUBSCRIBERS',
30 $automation['random']['number']
31 );
32 }
33 }
34
35 public function onAcymDeclareConditions(&$conditions)
36 {
37 $userClass = new UserClass();
38 $fieldClass = new FieldClass();
39 $fields = $userClass->getAllColumnsUserAndCustomField();
40 unset($fields['automation']);
41
42 $customFields = $fieldClass->getAllFieldsForUser();
43 $customFieldValues = [];
44 foreach ($customFields as $field) {
45 if (in_array($field->type, ['single_dropdown', 'radio', 'checkbox', 'multiple_dropdown']) && !empty($field->value)) {
46 $values = [];
47 $field->value = json_decode($field->value, true);
48 foreach ($field->value as $value) {
49 $valueTmp = new stdClass();
50 $valueTmp->text = $value['title'];
51 $valueTmp->value = $value['value'];
52 if ($value['disabled'] == 'y') $valueTmp->disable = true;
53 $values[$value['value']] = $valueTmp;
54 }
55 $customFieldValues[$field->id] = '<div class="acym__automation__one-field intext_select_automation cell" style="display: none">';
56 $customFieldValues[$field->id] .= acym_select(
57 $values,
58 '[conditions][__numor__][__numand__][acy_field][value]',
59 null,
60 [
61 'class' => 'acym__select acym__automation__conditions__fields__select',
62 'data-condition-field' => intval($field->id),
63 ]
64 );
65 $customFieldValues[$field->id] .= '</div>';
66 } elseif ('date' == $field->type) {
67 $field->option = json_decode($field->option, true);
68 $customFieldValues[$field->id] = acym_tooltip(
69 [
70 'hoveredText' => '<input class="acym__automation__one-field acym__automation__conditions__fields__select intext_input_automation cell" type="text" name="[conditions][__numor__][__numand__][acy_field][value]" style="display: none" data-condition-field="'.intval(
71 $field->id
72 ).'">',
73 'textShownInTooltip' => acym_translationSprintf('ACYM_DATE_AUTOMATION_INPUT', $field->option['format']),
74 'classContainer' => 'intext_select_automation cell',
75 ]
76 );
77 }
78 }
79 $operator = new OperatorType();
80
81 $conditions['user']['acy_field'] = new stdClass();
82 $conditions['user']['acy_field']->name = acym_translation('ACYM_ACYMAILING_FIELD');
83 ob_start();
84 include acym_getPartial('conditions', 'acy_field');
85 $conditions['user']['acy_field']->option = ob_get_clean();
86 }
87
88 public function onAcymDeclareConditionsScenario(&$conditions)
89 {
90 $this->onAcymDeclareConditions($conditions);
91 }
92
93 public function onAcymProcessCondition_acy_field(&$query, &$options, $num, &$conditionNotValid)
94 {
95 $affectedRows = $this->_processAcyField($query, $options, $num);
96 if (empty($affectedRows)) $conditionNotValid++;
97 }
98
99 public function onAcymDeclareSummary_conditions(&$automation)
100 {
101 $this->onAcymDeclareSummary_conditionsFilters($automation, 'ACYM_CONDITION_ACY_FIELD_SUMMARY');
102 }
103
104 private function _processAcyField(&$query, &$options, $num)
105 {
106 $usersColumns = acym_getColumns('user');
107
108 if (!in_array($options['field'], $usersColumns)) {
109 $fieldClass = new FieldClass();
110 $field = $fieldClass->getOneById($options['field']);
111
112 $fieldType = empty($field->type) ? '' : $field->type;
113
114 $query->leftjoin['userfield'.$num] = ' #__acym_user_has_field as userfield'.$num.' ON userfield'.$num.'.user_id = user.id AND userfield'.$num.'.field_id = '.intval(
115 $options['field']
116 );
117 $query->where[] = $query->convertQuery(
118 'userfield'.$num,
119 'value',
120 $options['operator'],
121 $options['value'],
122 'phone' === $fieldType ? AutomationHelper::TYPE_PHONE : ''
123 );
124 } else {
125 if (in_array($options['field'], ['creation_date', 'confirmation_date', 'last_sent_date', 'last_open_date', 'last_click_date'])) {
126 $options['value'] = acym_replaceDate($options['value']);
127 if (!is_numeric($options['value'])) {
128 $options['value'] = strtotime($options['value']);
129 }
130 $options['value'] = acym_date($options['value'], 'Y-m-d H:i:s');
131 }
132 $query->where[] = $query->convertQuery('user', $options['field'], $options['operator'], $options['value']);
133 }
134
135 return $query->count();
136 }
137 }
138