PluginProbe
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment / 2.0.12
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment v2.0.12
3.1.13 3.1.12 3.1.11 3.1.10 3.1.9 3.1.8 3.1.7 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 All 122 releases
firebox / Inc / Core / Form / Actions / Actions.php

Actions.php in FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment 2.0.12, at Inc/Core/Form/Actions/Actions.php

143 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @package FireBox
4 * @version 2.0.12 Free
5 *
6 * @author FirePlugins <info@fireplugins.com>
7 * @link https://www.fireplugins.com
8 * @copyright Copyright © 2023 FirePlugins All Rights Reserved
9 * @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
10 */
11
12 namespace FireBox\Core\Form\Actions;
13
14 if (!defined('ABSPATH'))
15 {
16 exit; // Exit if accessed directly.
17 }
18
19 class Actions
20 {
21 private $form_settings = [];
22
23 private $field_values = [];
24
25 private $submission = [];
26
27 private $error_message = '';
28
29 public function __construct($form_settings = [], $field_values = [], $submission = [])
30 {
31 $this->form_settings = $form_settings;
32 $this->field_values = $field_values;
33 $this->submission = $submission;
34 }
35
36 /**
37 * Runs all enabled actions.
38 *
39 * @return void
40 */
41 public function run()
42 {
43 if (!$this->form_settings || !$this->field_values || !$this->submission)
44 {
45 return true;
46 }
47
48 if (!$this->checkEmailField())
49 {
50 return false;
51 }
52
53 $actions = $this->form_settings['attrs']['actions'];
54
55 foreach ($actions as $key => $enabled)
56 {
57 if (!$enabled)
58 {
59 continue;
60 }
61
62 $class = '\FireBox\Core\Form\Actions\Actions\\' . $key;
63
64 if (!class_exists($class))
65 {
66 continue;
67 }
68
69 $class = new $class($this->form_settings, $this->field_values, $this->submission);
70
71 try {
72 if ($class->validate())
73 {
74 $class->run();
75 }
76 }
77 catch (\Exception $e)
78 {
79 $this->error_message = $e->getMessage();
80 return;
81 }
82 }
83
84 return true;
85 }
86
87 /**
88 * If we have enabled any action then we require an email field
89 * with Field Name set to email.
90 *
91 * @return bool
92 */
93 private function checkEmailField()
94 {
95 $actions = isset($this->form_settings['attrs']['actions']) ? $this->form_settings['attrs']['actions'] : false;
96 if (!$actions)
97 {
98 return true;
99 }
100
101 $email_required = false;
102 foreach ($actions as $key => $enabled)
103 {
104 if (!$enabled)
105 {
106 continue;
107 }
108
109 $email_required = true;
110 }
111
112 if (!$email_required)
113 {
114 return true;
115 }
116
117 // Ensure we have an Email field with "email" Field Name
118 if (!isset($this->field_values['email']))
119 {
120 $this->error_message = 'Missing Email field from the form.';
121 return false;
122 }
123
124 // The Email field is required
125 if (empty($this->field_values['email']['value']))
126 {
127 $this->error_message = 'Missing Email field value.';
128 return false;
129 }
130
131 return true;
132 }
133
134 /**
135 * Returns the error message.
136 *
137 * @return string
138 */
139 public function getErrorMessage()
140 {
141 return $this->error_message;
142 }
143 }