PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 11.1.1
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v11.1.1
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
← All changes | back/Classes/ScenarioStepClass.php +0 -155 10.10.2 → 11.1.1 View file →
@@ -1,155 +1,0 @@
1 -<?php
2 -
3 -namespace AcyMailing\Classes;
4 -
5 -use AcyMailing\Core\AcymClass;
6 -
7 -class ScenarioStepClass extends AcymClass
8 -{
9 - public function __construct()
10 - {
11 - parent::__construct();
12 -
13 - $this->table = 'scenario_step';
14 - $this->pkey = 'id';
15 - }
16 -
17 - public function save(object $element): ?int
18 - {
19 - if (!empty($element->params) && !is_string($element->params)) {
20 - $element->params = json_encode($element->params);
21 - }
22 -
23 - $scenarioStep = acym_loadObject('SELECT * FROM #__acym_scenario_step WHERE `id` = '.acym_escapeDB($element->id));
24 -
25 - $previousForce = $this->forceInsert;
26 - $this->forceInsert = empty($scenarioStep);
27 - $id = parent::save($element);
28 - $this->forceInsert = $previousForce;
29 -
30 - return (int)$id;
31 - }
32 -
33 - public function getAllByScenarioId(int $scenarioId): array
34 - {
35 - $steps = array_map([$this, 'formatStep'], acym_loadObjectList('SELECT * FROM #__acym_scenario_step WHERE scenario_id = '.$scenarioId, 'id'));
36 -
37 - usort($steps, function ($a, $b) {
38 - if ($a->previous_id === $b->id) {
39 - return 1;
40 - }
41 -
42 - if ($b->previous_id === $a->id) {
43 - return -1;
44 - }
45 -
46 - return 0;
47 - });
48 -
49 -
50 - return $steps;
51 - }
52 -
53 - public function getFirstStepByScenarioId(int $scenarioId): ?object
54 - {
55 - $step = acym_loadObject('SELECT * FROM #__acym_scenario_step WHERE previous_id IS NULL AND scenario_id = '.$scenarioId);
56 - if (empty($step)) {
57 - return null;
58 - }
59 -
60 - return $this->formatStep($step);
61 - }
62 -
63 - public function getStepByPreviousStepId(string $parentId): ?object
64 - {
65 - $step = acym_loadObject('SELECT * FROM #__acym_scenario_step WHERE previous_id = '.acym_escapeDB($parentId));
66 - if (empty($step)) {
67 - return null;
68 - }
69 -
70 - return $this->formatStep($step);
71 - }
72 -
73 - public function getAllStepsToDelete(int $scenarioId, array $stepIdsToKeep): array
74 - {
75 - $stepIdsToKeepEscaped = [];
76 - foreach ($stepIdsToKeep as $stepIdToKeep) {
77 - $stepIdsToKeepEscaped[] = acym_escapeDB($stepIdToKeep);
78 - }
79 -
80 - $query = 'SELECT id FROM #__acym_scenario_step WHERE scenario_id = '.$scenarioId;
81 -
82 - if (!empty($stepIdsToKeepEscaped)) {
83 - $query .= ' AND id NOT IN ('.implode(',', $stepIdsToKeepEscaped).')';
84 - }
85 -
86 - return acym_loadResultArray($query);
87 - }
88 -
89 - public function getStepByPreviousConditionId(string $parentId, bool $conditionValid): ?object
90 - {
91 - $conditionValidValue = $conditionValid ? 1 : 0;
92 -
93 - $step = acym_loadObject('SELECT * FROM #__acym_scenario_step WHERE condition_valid = '.$conditionValidValue.' AND previous_id = '.acym_escapeDB($parentId));
94 - if (empty($step)) {
95 - return null;
96 - }
97 -
98 - return $this->formatStep($step);
99 - }
100 -
101 - public function getAvailableStepsByDate(string $date): array
102 - {
103 - $query = 'SELECT scenario_step.*, scenario_process.user_id, scenario_process.id AS scenario_process_id
104 - FROM #__acym_scenario_step AS scenario_step
105 - JOIN #__acym_scenario_queue AS scenario_queue ON scenario_step.id = scenario_queue.step_id AND scenario_queue.execution_date <= '.acym_escapeDB($date).'
106 - JOIN #__acym_scenario_process AS scenario_process ON scenario_queue.scenario_process_id = scenario_process.id';
107 -
108 - return array_map([$this, 'formatStep'], acym_loadObjectList($query));
109 - }
110 -
111 - public function getNumberOfProcessByStepByScenarioId(int $scenarioId): array
112 - {
113 - $query = 'SELECT scenario_history.scenario_step_id , COUNT(scenario_history.id) AS count
114 - FROM #__acym_scenario_step AS scenario_step
115 - JOIN #__acym_scenario_history_line AS scenario_history ON scenario_step.id = scenario_history.scenario_step_id AND scenario_history.scenario_step_id IS NOT NULL
116 - WHERE scenario_step.scenario_id = '.$scenarioId.'
117 - GROUP BY scenario_step_id';
118 -
119 - return acym_loadObjectList($query, 'scenario_step_id');
120 - }
121 -
122 - public function getAllStepIds(): array
123 - {
124 - return acym_loadResultArray('SELECT id FROM #__acym_scenario_step');
125 - }
126 -
127 - public function generateNewStepId(array $allStepIds = []): string
128 - {
129 - if (empty($allStepIds)) {
130 - $allStepIds = $this->getAllStepIds();
131 - }
132 -
133 - $letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
134 - $randomString = '';
135 - $length = 24;
136 -
137 - for ($i = 0; $i < $length; $i++) {
138 - $randomIndex = rand(0, strlen($letters) - 1);
139 - $randomString .= $letters[$randomIndex];
140 - }
141 -
142 - if (in_array($randomString, $allStepIds)) {
143 - return $this->generateNewStepId($allStepIds);
144 - }
145 -
146 - return $randomString;
147 - }
148 -
149 - private function formatStep(object $step): object
150 - {
151 - $step->params = json_decode($step->params, true);
152 -
153 - return $step;
154 - }
155 -}