PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / trunk
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress vtrunk
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 10.3.0 10.4.0 All 60 releases
acymailing / back / dynamics / user / UserAutomationAction.php

UserAutomationAction.php in AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress trunk, at back/dynamics/user/UserAutomationAction.php

105 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 trait UserAutomationActions
4 {
5 public function onAcymDeclareActions(array &$actions): void
6 {
7 $allGroups = acym_getGroups();
8 $groups = ['none' => acym_translation('ACYM_SELECT_GROUP')];
9 foreach ($allGroups as $group) {
10 $groups[$group->id] = $group->text;
11 }
12 unset($groups[ACYM_ADMIN_GROUP]);
13
14 $actions['acy_group_action'] = new stdClass();
15 $actions['acy_group_action']->name = acym_translation('ACYM_ACTION_ON_GROUPS');
16 ob_start();
17 include acym_getPartial('actions', 'acy_group_action');
18 $actions['acy_group_action']->option = ob_get_clean();
19 }
20
21 public function onAcymDeclareActionsScenario(array &$actions): void
22 {
23 $this->onAcymDeclareActions($actions);
24 }
25
26 public function onAcymProcessAction_acy_group_action(&$query, $action)
27 {
28 $nbAffected = 0;
29
30 $queryBuilder = clone $query;
31 $queryBuilder->where[] = 'user.cms_id != 0';
32 $queryBuilder->where[] = 'user.cms_id IS NOT NULL';
33 $userIds = acym_loadResultArray($queryBuilder->getQuery(['user.cms_id']));
34
35 if (empty($userIds)) {
36 return '';
37 }
38
39 foreach ($userIds as $userId) {
40 $userAffected = false;
41
42 if (ACYM_CMS === 'joomla') {
43 if (!empty($action['add']) && $action['add'] !== 'none') {
44 $affected = acym_query('INSERT IGNORE INTO #__user_usergroup_map (`user_id`, `group_id`) VALUES ('.intval($userId).', '.intval($action['add']).')');
45 if ($affected) {
46 $userAffected = true;
47 }
48 }
49
50 if (!empty($action['remove']) && $action['remove'] !== 'none') {
51 $affected = acym_query('DELETE FROM #__user_usergroup_map WHERE `group_id` = '.intval($action['remove']).' AND `user_id` = '.intval($userId));
52 if ($affected) {
53 $userAffected = true;
54 }
55 }
56 } else {
57 $user = new WP_User($userId);
58 if (empty($user->ID)) {
59 continue;
60 }
61
62 if (!empty($action['add']) && $action['add'] !== 'none' && !in_array($action['add'], $user->roles)) {
63 $user->add_role($action['add']);
64 $userAffected = true;
65 }
66
67 if (!empty($action['remove']) && $action['remove'] !== 'none' && in_array($action['remove'], $user->roles)) {
68 $user->remove_role($action['remove']);
69 $userAffected = true;
70 }
71 }
72
73 if ($userAffected) {
74 $nbAffected++;
75 }
76 }
77
78 return acym_translationSprintf('ACYM_ACTION_ON_GROUPS_RESULT', $nbAffected);
79 }
80
81 public function onAcymDeclareSummary_actions(&$automationAction)
82 {
83 if (empty($automationAction['acy_group_action'])) {
84 return;
85 }
86
87 $allGroups = acym_getGroups();
88 $summary = '';
89
90 if (!empty($automationAction['acy_group_action']['remove']) && $automationAction['acy_group_action']['remove'] !== 'none') {
91 $groupIdToRemove = $automationAction['acy_group_action']['remove'];
92 $groupNameToRemove = isset($allGroups[$groupIdToRemove]) ? $allGroups[$groupIdToRemove]->text : acym_translation('ACYM_UNKNOWN_GROUP');
93 $summary .= acym_translationSprintf('ACYM_GROUP_ACTION_SUMARY_DELETE', $groupNameToRemove).'<br />';
94 }
95
96 if (!empty($automationAction['acy_group_action']['add']) && $automationAction['acy_group_action']['add'] !== 'none') {
97 $groupIdToAdd = $automationAction['acy_group_action']['add'];
98 $groupNameToAdd = isset($allGroups[$groupIdToAdd]) ? $allGroups[$groupIdToAdd]->text : acym_translation('ACYM_UNKNOWN_GROUP');
99 $summary .= acym_translationSprintf('ACYM_GROUP_ACTION_SUMARY_ADD', $groupNameToAdd);
100 }
101
102 $automationAction = $summary;
103 }
104 }
105