PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 11.1.0
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v11.1.0
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 / subscription / SubscriptionMailboxAction.php

SubscriptionMailboxAction.php in AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress 11.1.0, at back/dynamics/subscription/SubscriptionMailboxAction.php

132 lines 4.0 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\ListClass;
5
6 trait SubscriptionMailboxAction
7 {
8 protected function initMailboxActions(): void
9 {
10 $this->mailboxActions = [
11 'acy_list_subscribe' => acym_translation('ACYM_SUBSCRIBE_USER'),
12 'acy_list_unsubscribe' => acym_translation('ACYM_UNSUB_USER'),
13 ];
14 }
15
16 /**
17 * Both actions offer the same list selector
18 */
19 public function displayMailboxActionOptions(string $fieldName): void
20 {
21 $listClass = new ListClass();
22 ?>
23 <div class="intext_select_mailbox cell">
24 <?php acym_select(
25 $listClass->getAllWithIdName(),
26 $fieldName.'[list_id]',
27 null,
28 ['class' => 'acym__select'],
29 'value',
30 'text',
31 null,
32 false,
33 true
34 ); ?>
35 </div>
36 <?php
37 }
38
39 public function onAcymMailboxActionSummaryListing(&$action, &$result)
40 {
41 $listClass = new ListClass();
42 if (!empty($action['acy_list_subscribe'])) {
43 $list = $listClass->getOneById($action['acy_list_subscribe']['list_id']);
44
45 if (empty($list)) {
46 return;
47 }
48
49 $result[] = acym_translationSprintf('ACYM_SUBSCRIBE_USER_X', $list->name);
50 }
51
52 if (!empty($action['acy_list_unsubscribe'])) {
53 $list = $listClass->getOneById($action['acy_list_unsubscribe']['list_id']);
54
55 if (empty($list)) {
56 return;
57 }
58
59 $result[] = acym_translationSprintf('ACYM_UNSUB_USER_X', $list->name);
60 }
61 }
62
63 public function onAcymMailboxAction_acy_list_subscribe(&$action, &$report, &$executedActions, $mailboxHelper)
64 {
65 $userClass = new UserClass();
66 $user = new \stdClass();
67 $user->email = $mailboxHelper->_message->header->from_email;
68 $userDatabase = $userClass->getOneByEmail($user->email);
69 if (empty($userDatabase->id)) {
70 $user->id = $userClass->save($user);
71 if (empty($user->id)) {
72 $report[] = [
73 'message' => acym_translation('ACYM_ERROR_SAVING'),
74 'success' => false,
75 ];
76 $executedActions = false;
77
78 return;
79 }
80 } else {
81 $user->id = $userDatabase->id;
82 }
83
84 $subscribed = $userClass->subscribe([$user->id], [$action['list_id']]);
85
86 if (!$subscribed) {
87 $report[] = [
88 'message' => acym_translationSprintf('ACYM_COULD_NOT_SUBSCRIBE_TO_X', $action['list_id']),
89 'success' => false,
90 ];
91 $executedActions = false;
92
93 return;
94 }
95
96 $report[] = [
97 'message' => acym_translationSprintf('ACYM_SUBSCRIBE_USER_X', $action['list_id']),
98 'success' => true,
99 ];
100 }
101
102 public function onAcymMailboxAction_acy_list_unsubscribe(&$action, &$report, &$executedActions, $mailboxHelper)
103 {
104 $user = new \stdClass();
105 $user->email = $mailboxHelper->_message->header->from_email;
106
107 $userClass = new UserClass();
108 $userDatabase = $userClass->getOneByEmail($user->email);
109
110 if (empty($userDatabase->id)) {
111 $report[] = [
112 'message' => acym_translationSprintf('ACYM_SEND_ERROR_USER', $mailboxHelper->_message->header->from_email),
113 'success' => false,
114 ];
115
116 $executedActions = false;
117
118 return;
119 }
120 $affected = $userClass->unsubscribe([$userDatabase->id], [$action['list_id']]);
121 $message = $affected
122 ? acym_translationSprintf('ACYM_UNSUB_USER_X_FROM_X', $userDatabase->email, $action['list_id'])
123 : acym_translationSprintf('ACYM_COULD_NOT_UNSUB_USER_X_FROM_X', $userDatabase->email, $action['list_id']);
124 $report[] = [
125 'message' => $message,
126 'success' => $affected,
127 ];
128
129 $executedActions = $affected;
130 }
131 }
132