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
← All changes | widgets/subscriptionform/widget.php +352 -218 10.10.2 → 11.1.0 View file →
@@ -1,9 +1,10 @@
1 1 <?php
2 2
3 +defined('ABSPATH') || die('Restricted Access');
4 +
3 5 use AcyMailing\Classes\FieldClass;
4 6 use AcyMailing\Classes\ListClass;
5 -use AcyMailing\Classes\UserClass;
6 7 use AcyMailing\Core\AcymParameter;
7 8
8 9 class acym_subscriptionform_widget extends WP_Widget
9 10 {
@@ -17,15 +18,43 @@
17 18 ['description' => acym_translation('ACYM_MENU_FORM_DESC')]
18 19 );
19 20 }
20 21
22 + // Configuration
21 23 public function form($instance)
22 24 {
23 25 $this->loadAcyMailing();
24 26
25 - wp_enqueue_style('select2lib', ACYM_CSS.'libraries/select2-original.min.css?v='.filemtime(ACYM_MEDIA.'css'.DS.'libraries'.DS.'select2-original.min.css'));
26 - wp_enqueue_script('select2lib', ACYM_JS.'libraries/select2-full.min.js?v='.filemtime(ACYM_MEDIA.'js'.DS.'libraries'.DS.'select2-full.min.js'), ['jquery']);
27 - wp_enqueue_script('acym_widget_article', ACYM_JS.'widget.min.js', ['select2lib']);
27 + wp_enqueue_style(
28 + 'select2lib',
29 + ACYM_CSS.'libraries/select2-original.min.css?v='.filemtime(ACYM_MEDIA.'css'.DS.'libraries'.DS.'select2-original.min.css'),
30 + [],
31 + '11.1.0'
32 + );
33 + wp_enqueue_script(
34 + 'select2lib',
35 + ACYM_JS.'libraries/select2-full.min.js?v='.filemtime(ACYM_MEDIA.'js'.DS.'libraries'.DS.'select2-full.min.js'),
36 + ['jquery'],
37 + '11.1.0',
38 + [
39 + 'in_footer' => false,
40 + ]
41 + );
42 + wp_enqueue_script(
43 + 'acym_widget_article',
44 + ACYM_JS.'widget.min.js',
45 + ['select2lib'],
46 + '11.1.0',
47 + [
48 + 'in_footer' => false,
49 + ]
50 + );
51 + // CSRF token for the article-search AJAX (dynamics/trigger requires acym_checkToken)
52 + wp_add_inline_script(
53 + 'acym_widget_article',
54 + 'var acym_widget_nonce = '.json_encode(wp_create_nonce('acymnonce')).';',
55 + 'before'
56 + );
28 57 acym_addStyle(false, ACYM_CSS.'widget.min.css?v='.filemtime(ACYM_MEDIA.'css'.DS.'widget.min.css'));
29 58
30 59 $listClass = new ListClass();
31 60 $fieldClass = new FieldClass();
@@ -58,8 +87,9 @@
58 87 'termscontent' => '0',
59 88 'privacypolicy' => '0',
60 89 'termscontentURL' => '',
61 90 'privacypolicyURL' => '',
91 + 'trackingconsent' => '0',
62 92 'articlepopup' => '1',
63 93 'unsub' => '0',
64 94 'unsubtext' => '',
65 95 'unsubredirect' => '',
@@ -96,231 +126,301 @@
96 126
97 127 echo '<div class="acym_toggle_zone">
98 128 <div class="acyblock" id="mainopt_acywidget">
99 129 <div class="acym_toggle_div_title">
100 - <h3>'.acym_translation('ACYM_MAIN_OPTIONS').'</h3>
130 + <h3>'.esc_html(acym_translation('ACYM_MAIN_OPTIONS')).'</h3>
101 131 </div>
102 132 <div class="acym_toggle_div" style="display: none;">';
103 133
104 - echo '<p><label class="acyWPconfig" for="'.$this->get_field_id('title').'">'.acym_translation('ACYM_TITLE').'</label>
105 - <input type="text" class="widefat" id="'.$this->get_field_id('title').'" name="'.$this->get_field_name('title').'" value="'.$params['title'].'" /></p>';
134 + echo '<p><label class="acyWPconfig" for="'.esc_attr($this->get_field_id('title')).'">'.esc_html(acym_translation('ACYM_TITLE')).'</label>
135 + <input type="text" class="widefat" id="'.esc_attr($this->get_field_id('title')).'" name="'.esc_attr($this->get_field_name('title')).'" value="'.esc_attr(
136 + $params['title']
137 + ).'" /></p>';
106 138
107 139 $options = [];
108 140 $options[] = acym_selectOption('inline', 'ACYM_MODE_HORIZONTAL');
109 141 $options[] = acym_selectOption('vertical', 'ACYM_MODE_VERTICAL');
110 142 $options[] = acym_selectOption('tableless', 'ACYM_MODE_TABLELESS');
111 - echo '<p><label class="acyWPconfig" title="'.acym_translation('ACYM_DISPLAY_MODE_DESC').'">'.acym_translation('ACYM_DISPLAY_MODE').'</label>';
112 - echo acym_Select(
113 - $options,
114 - $this->get_field_name('mode'),
115 - $params['mode'],
116 - [
117 - 'class' => 'acym_simple_select2',
118 - ],
119 - 'value',
120 - 'text',
121 - $this->get_field_id('mode')
122 - ).'</p>';
143 + echo '<p><label class="acyWPconfig" title="'.esc_attr(acym_translation('ACYM_DISPLAY_MODE_DESC')).'">'.esc_html(acym_translation('ACYM_DISPLAY_MODE')).'</label>';
144 + acym_select(
145 + $options,
146 + $this->get_field_name('mode'),
147 + $params['mode'],
148 + [
149 + 'class' => 'acym_simple_select2',
150 + ],
151 + 'value',
152 + 'text',
153 + $this->get_field_id('mode'),
154 + false,
155 + true
156 + );
157 + echo '</p>';
123 158
124 - echo '<p><label class="acyWPconfig" title="'.acym_translation('ACYM_AUTO_SUBSCRIBE_TO_DESC').'">'.acym_translation('ACYM_AUTO_SUBSCRIBE_TO').'</label>';
125 - echo acym_selectMultiple(
126 - $lists,
127 - $this->get_field_name('hiddenlists'),
128 - explode(',', $params['hiddenlists']),
129 - [
130 - 'class' => 'acym_simple_select2',
131 - 'id' => $this->get_field_id('hiddenlists'),
132 - ],
133 - 'id',
134 - 'name'
135 - ).'</p>';
159 + echo '<p><label class="acyWPconfig" title="'.esc_attr(acym_translation('ACYM_AUTO_SUBSCRIBE_TO_DESC')).'">'.esc_html(acym_translation('ACYM_AUTO_SUBSCRIBE_TO')).'</label>';
160 + acym_selectMultiple(
161 + $lists,
162 + $this->get_field_name('hiddenlists'),
163 + explode(',', $params['hiddenlists']),
164 + [
165 + 'class' => 'acym_simple_select2',
166 + 'id' => $this->get_field_id('hiddenlists'),
167 + ],
168 + 'id',
169 + 'name',
170 + true
171 + );
172 + echo '</p>';
136 173
137 - echo '<p><label class="acyWPconfig" title="'.acym_translation('ACYM_DISPLAYED_LISTS_DESC').'">'.acym_translation('ACYM_DISPLAYED_LISTS').'</label>';
138 - echo acym_selectMultiple(
139 - $lists,
140 - $this->get_field_name('displists'),
141 - explode(',', $params['displists']),
142 - [
143 - 'class' => 'acym_simple_select2',
144 - 'id' => $this->get_field_id('displists'),
145 - ],
146 - 'id',
147 - 'name'
148 - ).'</p>';
174 + echo '<p><label class="acyWPconfig" title="'.esc_attr(acym_translation('ACYM_DISPLAYED_LISTS_DESC')).'">'.esc_html(acym_translation('ACYM_DISPLAYED_LISTS')).'</label>';
175 + acym_selectMultiple(
176 + $lists,
177 + $this->get_field_name('displists'),
178 + explode(',', $params['displists']),
179 + [
180 + 'class' => 'acym_simple_select2',
181 + 'id' => $this->get_field_id('displists'),
182 + ],
183 + 'id',
184 + 'name',
185 + true
186 + );
187 + echo '</p>';
149 188
150 - echo '<p><label class="acyWPconfig" title="'.acym_translation('ACYM_LISTS_CHECKED_DEFAULT_DESC').'">'.acym_translation('ACYM_LISTS_CHECKED_DEFAULT').'</label>';
151 - echo acym_selectMultiple(
152 - $lists,
153 - $this->get_field_name('listschecked'),
154 - explode(',', $params['listschecked']),
155 - [
156 - 'class' => 'acym_simple_select2',
157 - 'id' => $this->get_field_id('listschecked'),
158 - ],
159 - 'id',
160 - 'name'
161 - ).'</p>';
189 + echo '<p><label class="acyWPconfig" title="'.esc_attr(acym_translation('ACYM_LISTS_CHECKED_DEFAULT_DESC')).'">'.esc_html(
190 + acym_translation('ACYM_LISTS_CHECKED_DEFAULT')
191 + ).'</label>';
192 + acym_selectMultiple(
193 + $lists,
194 + $this->get_field_name('listschecked'),
195 + explode(',', $params['listschecked']),
196 + [
197 + 'class' => 'acym_simple_select2',
198 + 'id' => $this->get_field_id('listschecked'),
199 + ],
200 + 'id',
201 + 'name',
202 + true
203 + );
204 + echo '</p>';
162 205
163 206 $options = [];
164 207 $options[] = acym_selectOption('before', 'ACYM_BEFORE_FIELDS');
165 208 $options[] = acym_selectOption('after', 'ACYM_AFTER_FIELDS');
166 - echo '<p><label class="acyWPconfig">'.acym_translation('ACYM_LIST_POSITION').'</label>';
167 - echo acym_select(
168 - $options,
169 - $this->get_field_name('listposition'),
170 - $params['listposition'],
171 - [
172 - 'class' => 'acym_simple_select2',
173 - ],
174 - 'value',
175 - 'text',
176 - $this->get_field_id('listposition')
177 - ).'</p>';
209 + echo '<p><label class="acyWPconfig">'.esc_html(acym_translation('ACYM_LIST_POSITION')).'</label>';
210 + acym_select(
211 + $options,
212 + $this->get_field_name('listposition'),
213 + $params['listposition'],
214 + [
215 + 'class' => 'acym_simple_select2',
216 + ],
217 + 'value',
218 + 'text',
219 + $this->get_field_id('listposition'),
220 + false,
221 + true
222 + );
223 + echo '</p>';
178 224
179 - echo '<p><label class="acyWPconfig" title="'.acym_translation('ACYM_FIELDS_TO_DISPLAY_DESC').'">'.acym_translation('ACYM_FIELDS_TO_DISPLAY').'</label>';
180 - echo acym_selectMultiple(
181 - $fields,
182 - $this->get_field_name('fields'),
183 - explode(',', $params['fields']),
184 - [
185 - 'class' => 'acym_simple_select2',
186 - 'id' => $this->get_field_id('fields'),
187 - ]
188 - ).'</p>';
225 + echo '<p><label class="acyWPconfig" title="'.esc_attr(acym_translation('ACYM_FIELDS_TO_DISPLAY_DESC')).'">'.esc_html(acym_translation('ACYM_FIELDS_TO_DISPLAY')).'</label>';
226 + acym_selectMultiple(
227 + $fields,
228 + $this->get_field_name('fields'),
229 + explode(',', $params['fields']),
230 + [
231 + 'class' => 'acym_simple_select2',
232 + 'id' => $this->get_field_id('fields'),
233 + ],
234 + 'value',
235 + 'text',
236 + true
237 + );
238 + echo '</p>';
189 239
190 240 $options = [];
191 241 $options[] = acym_selectOption('1', 'ACYM_TEXT_INSIDE');
192 242 $options[] = acym_selectOption('0', 'ACYM_TEXT_OUTSIDE');
193 - echo '<p><label class="acyWPconfig" title="'.acym_translation('ACYM_TEXT_MODE_DESC').'">'.acym_translation('ACYM_TEXT_MODE').'</label>';
194 - echo acym_select(
195 - $options,
196 - $this->get_field_name('textmode'),
197 - $params['textmode'],
198 - [
199 - 'class' => 'acym_simple_select2',
200 - ],
201 - 'value',
202 - 'text',
203 - $this->get_field_id('textmode')
204 - ).'</p>';
243 + echo '<p><label class="acyWPconfig" title="'.esc_attr(acym_translation('ACYM_TEXT_MODE_DESC')).'">'.esc_html(acym_translation('ACYM_TEXT_MODE')).'</label>';
244 + acym_select(
245 + $options,
246 + $this->get_field_name('textmode'),
247 + $params['textmode'],
248 + [
249 + 'class' => 'acym_simple_select2',
250 + ],
251 + 'value',
252 + 'text',
253 + $this->get_field_id('textmode'),
254 + false,
255 + true
256 + );
257 + echo '</p>';
205 258
206 - echo '<p><label class="acyWPconfig" for="'.$this->get_field_id('subtext').'" title="'.acym_translation('ACYM_SUBSCRIBE_TEXT_DESC').'">'.acym_translation(
207 - 'ACYM_SUBSCRIBE_TEXT'
259 + echo '<p><label class="acyWPconfig" for="'.esc_attr($this->get_field_id('subtext')).'" title="'.esc_attr(acym_translation('ACYM_SUBSCRIBE_TEXT_DESC')).'">'.esc_html(
260 + acym_translation(
261 + 'ACYM_SUBSCRIBE_TEXT'
262 + )
208 263 ).'</label>
209 - <input type="text" class="widefat" id="'.$this->get_field_id('subtext').'" name="'.$this->get_field_name('subtext').'" value="'.$params['subtext'].'" /></p>';
264 + <input type="text" class="widefat" id="'.esc_attr($this->get_field_id('subtext')).'" name="'.esc_attr($this->get_field_name('subtext')).'" value="'.esc_attr(
265 + $params['subtext']
266 + ).'" /></p>';
210 267
211 - echo '<p><label class="acyWPconfig" for="'.$this->get_field_id('subtextlogged').'" title="'.acym_translation('ACYM_SUBSCRIBE_TEXT_LOGGED_IN_DESC').'">'.acym_translation(
212 - 'ACYM_SUBSCRIBE_TEXT_LOGGED_IN'
268 + echo '<p><label class="acyWPconfig" for="'.esc_attr($this->get_field_id('subtextlogged')).'" title="'.esc_attr(
269 + acym_translation('ACYM_SUBSCRIBE_TEXT_LOGGED_IN_DESC')
270 + ).'">'.esc_html(
271 + acym_translation(
272 + 'ACYM_SUBSCRIBE_TEXT_LOGGED_IN'
273 + )
213 274 ).'</label>
214 - <input type="text" class="widefat" id="'.$this->get_field_id('subtextlogged').'" name="'.$this->get_field_name(
215 - 'subtextlogged'
216 - ).'" value="'.$params['subtextlogged'].'" /></p>';
275 + <input type="text" class="widefat" id="'.esc_attr($this->get_field_id('subtextlogged')).'" name="'.esc_attr(
276 + $this->get_field_name(
277 + 'subtextlogged'
278 + )
279 + ).'" value="'.esc_attr($params['subtextlogged']).'" /></p>';
217 280
218 281 $options = [];
219 282 if (!empty($params['termscontent'])) {
220 283 $options[] = acym_selectOption($params['termscontent'], get_the_title($params['termscontent']));
221 284 }
222 - echo '<p><label class="acyWPconfig">'.acym_translation('ACYM_TERMS_CONDITIONS').'</label>';
223 - echo acym_select(
224 - $options,
225 - $this->get_field_name('termscontent'),
226 - $params['termscontent'],
227 - [
228 - 'class' => 'acym_post_select2',
229 - 'title' => acym_translation('ACYM_PRIVACY_POLICY'),
230 - ],
231 - 'value',
232 - 'text',
233 - $this->get_field_id('termscontent')
234 - ).'</p>';
285 + echo '<p><label class="acyWPconfig">'.esc_html(acym_translation('ACYM_TERMS_CONDITIONS')).'</label>';
286 + acym_select(
287 + $options,
288 + $this->get_field_name('termscontent'),
289 + $params['termscontent'],
290 + [
291 + 'class' => 'acym_post_select2',
292 + 'title' => acym_translation('ACYM_PRIVACY_POLICY'),
293 + ],
294 + 'value',
295 + 'text',
296 + $this->get_field_id('termscontent'),
297 + false,
298 + true
299 + );
300 + echo '</p>';
235 301
236 302 $options = [];
237 303 if (!empty($params['privacypolicy'])) {
238 304 $options[] = acym_selectOption($params['privacypolicy'], get_the_title($params['privacypolicy']));
239 305 }
240 - echo '<p><label class="acyWPconfig">'.acym_translation('ACYM_PRIVACY_POLICY').'</label>';
241 - echo acym_select(
242 - $options,
243 - $this->get_field_name('privacypolicy'),
244 - $params['privacypolicy'],
245 - [
246 - 'class' => 'acym_post_select2',
247 - 'title' => acym_translation('ACYM_PRIVACY_POLICY'),
248 - ],
249 - 'value',
250 - 'text',
251 - $this->get_field_id('privacypolicy')
252 - ).'</p>';
306 + echo '<p><label class="acyWPconfig">'.esc_html(acym_translation('ACYM_PRIVACY_POLICY')).'</label>';
307 + acym_select(
308 + $options,
309 + $this->get_field_name('privacypolicy'),
310 + $params['privacypolicy'],
311 + [
312 + 'class' => 'acym_post_select2',
313 + 'title' => acym_translation('ACYM_PRIVACY_POLICY'),
314 + ],
315 + 'value',
316 + 'text',
317 + $this->get_field_id('privacypolicy'),
318 + false,
319 + true
320 + );
321 + echo '</p>';
253 322
254 323 echo '<p>
255 - <label class="acyWPconfig" for="'.$this->get_field_id('termscontentURL').'">
256 - '.acym_translation('ACYM_TERMS_CONDITIONS_URL').'
324 + <label class="acyWPconfig" for="'.esc_attr($this->get_field_id('termscontentURL')).'">
325 + '.esc_html(acym_translation('ACYM_TERMS_CONDITIONS_URL')).'
257 326 </label>
258 327 <input
259 328 type="text" class="widefat"
260 - id="'.$this->get_field_id('termscontentURL').'"
261 - name="'.$this->get_field_name('termscontentURL').'"
262 - value="'.$params['termscontentURL'].'"
329 + id="'.esc_attr($this->get_field_id('termscontentURL')).'"
330 + name="'.esc_attr($this->get_field_name('termscontentURL')).'"
331 + value="'.esc_url($params['termscontentURL']).'"
263 332 />
264 333 </p>';
265 334
266 335 echo '<p>
267 - <label class="acyWPconfig" for="'.$this->get_field_id('privacypolicyURL').'">
268 - '.acym_translation('ACYM_PRIVACY_POLICY_URL').'
336 + <label class="acyWPconfig" for="'.esc_attr($this->get_field_id('privacypolicyURL')).'">
337 + '.esc_html(acym_translation('ACYM_PRIVACY_POLICY_URL')).'
269 338 </label>
270 339 <input
271 340 type="text" class="widefat"
272 - id="'.$this->get_field_id('privacypolicyURL').'"
273 - name="'.$this->get_field_name('privacypolicyURL').'"
274 - value="'.$params['privacypolicyURL'].'"
341 + id="'.esc_attr($this->get_field_id('privacypolicyURL')).'"
342 + name="'.esc_attr($this->get_field_name('privacypolicyURL')).'"
343 + value="'.esc_url($params['privacypolicyURL']).'"
275 344 />
276 345 </p>';
277 346
347 + $options = [];
348 + $options[] = acym_selectOption('0', 'ACYM_NO');
349 + $options[] = acym_selectOption('1', 'ACYM_YES');
350 + echo '<p><label class="acyWPconfig" title="'.esc_attr(acym_translation('ACYM_DISPLAY_TRACKING_CONSENT_DESC')).'">'.esc_html(acym_translation('ACYM_DISPLAY_TRACKING_CONSENT')).'</label>';
351 + acym_select(
352 + $options,
353 + $this->get_field_name('trackingconsent'),
354 + $params['trackingconsent'],
355 + [
356 + 'class' => 'acym_simple_select2',
357 + ],
358 + 'value',
359 + 'text',
360 + $this->get_field_id('trackingconsent'),
361 + false,
362 + true
363 + );
364 + echo '</p>';
278 365
366 + //echo '<p><label class="acyWPconfig">'.esc_html(acym_translation('ACYM_DISPLAY_ARTICLE_POPUP')).'</label>';
367 + //acym_boolean($this->get_field_name('articlepopup'), $params['articlepopup'], $this->get_field_id('articlepopup'), array()).'</p>';
368 +
279 369 echo '</div>
280 370 </div>
281 371 <div class="acyblock" id="advopt_acywidget">
282 372 <div class="acym_toggle_div_title">
283 - <h3>'.acym_translation('ACYM_ADVANCED_OPTIONS').'</h3>
373 + <h3>'.esc_html(acym_translation('ACYM_ADVANCED_OPTIONS')).'</h3>
284 374 </div>
285 375 <div class="acym_toggle_div" style="display: none;">';
286 376
287 - echo '<p><label class="acyWPconfig">'.acym_translation('ACYM_DISPLAY_UNSUB_BUTTON').'</label>';
377 + echo '<p><label class="acyWPconfig">'.esc_html(acym_translation('ACYM_DISPLAY_UNSUB_BUTTON')).'</label>';
288 378 $onchange = "var disp = 'none';";
289 379 $onchange .= "if(this.value != 0){disp = 'block';}";
290 - $onchange .= "var elements = document.getElementsByClassName('".$this->get_field_id('unsubtextrow')."');";
380 + $onchange .= "var elements = document.getElementsByClassName('".esc_js($this->get_field_id('unsubtextrow'))."');";
291 381 $onchange .= "for(var i = 0 ; i < elements.length ; i++){elements[i].style.display = disp;}";
292 - echo acym_select(
293 - [
294 - '0' => 'ACYM_NO',
295 - '1' => 'ACYM_CONNECTED_USER_SUBSCRIBED',
296 - '2' => 'ACYM_ALWAYS',
297 - ],
298 - $this->get_field_name('unsub'),
299 - $params['unsub'],
300 - [
301 - 'onchange' => $onchange,
302 - 'class' => 'acym_simple_select2',
303 - ],
304 - 'value',
305 - 'text',
306 - $this->get_field_id('unsub'),
307 - true
308 - ).'</p>';
382 + acym_select(
383 + [
384 + '0' => 'ACYM_NO',
385 + '1' => 'ACYM_CONNECTED_USER_SUBSCRIBED',
386 + '2' => 'ACYM_ALWAYS',
387 + ],
388 + $this->get_field_name('unsub'),
389 + $params['unsub'],
390 + [
391 + 'onchange' => $onchange,
392 + 'class' => 'acym_simple_select2',
393 + ],
394 + 'value',
395 + 'text',
396 + $this->get_field_id('unsub'),
397 + true,
398 + true
399 + );
400 + echo '</p>';
309 401
310 - echo '<p class="'.$this->get_field_id('unsubtextrow').'" '.($params['unsub'] == '0' ? 'style="display:none;"' : '').'>
311 - <label class="acyWPconfig" for="'.$this->get_field_id('unsubtext').'" title="'.acym_translation('ACYM_UNSUBSCRIBE_TEXT_DESC').'">'.acym_translation(
312 - 'ACYM_UNSUBSCRIBE_TEXT'
402 + echo '<p class="'.esc_attr($this->get_field_id('unsubtextrow')).'" '.($params['unsub'] == '0' ? 'style="display:none;"' : '').'>
403 + <label class="acyWPconfig" for="'.esc_attr($this->get_field_id('unsubtext')).'" title="'.esc_attr(acym_translation('ACYM_UNSUBSCRIBE_TEXT_DESC')).'">'.esc_html(
404 + acym_translation(
405 + 'ACYM_UNSUBSCRIBE_TEXT'
406 + )
313 407 ).'</label>
314 - <input type="text" class="widefat" id="'.$this->get_field_id('unsubtext').'" name="'.$this->get_field_name('unsubtext').'" value="'.$params['unsubtext'].'" /></p>';
408 + <input type="text" class="widefat" id="'.esc_attr($this->get_field_id('unsubtext')).'" name="'.esc_attr($this->get_field_name('unsubtext')).'" value="'.esc_attr(
409 + $params['unsubtext']
410 + ).'" /></p>';
315 411
316 - echo '<p class="'.$this->get_field_id('unsubtextrow').'" '.($params['unsub'] == '0' ? 'style="display:none;"' : '').'>
317 - <label class="acyWPconfig" for="'.$this->get_field_id('unsubredirect').'" title="'.acym_translation('ACYM_REDIRECT_LINK_UNSUB_DESC').'">'.acym_translation(
318 - 'ACYM_REDIRECT_LINK_UNSUB'
412 + echo '<p class="'.esc_attr($this->get_field_id('unsubtextrow')).'" '.($params['unsub'] == '0' ? 'style="display:none;"' : '').'>
413 + <label class="acyWPconfig" for="'.esc_attr($this->get_field_id('unsubredirect')).'" title="'.esc_attr(acym_translation('ACYM_REDIRECT_LINK_UNSUB_DESC')).'">'.esc_html(
414 + acym_translation(
415 + 'ACYM_REDIRECT_LINK_UNSUB'
416 + )
319 417 ).'</label>
320 - <input type="text" class="widefat" id="'.$this->get_field_id('unsubredirect').'" name="'.$this->get_field_name(
321 - 'unsubredirect'
322 - ).'" value="'.$params['unsubredirect'].'" /></p>';
418 + <input type="text" class="widefat" id="'.esc_attr($this->get_field_id('unsubredirect')).'" name="'.esc_attr(
419 + $this->get_field_name(
420 + 'unsubredirect'
421 + )
422 + ).'" value="'.esc_url($params['unsubredirect']).'" /></p>';
323 423
324 424 $optionsSuccess = [];
325 425 $optionsSuccess[] = acym_selectOption('replace', 'ACYM_SUCCESS_REPLACE');
326 426 $optionsSuccess[] = acym_selectOption('replacetemp', 'ACYM_SUCCESS_REPLACE_TEMP');
@@ -325,65 +425,91 @@
325 425 $optionsSuccess[] = acym_selectOption('replace', 'ACYM_SUCCESS_REPLACE');
326 426 $optionsSuccess[] = acym_selectOption('replacetemp', 'ACYM_SUCCESS_REPLACE_TEMP');
327 427 $optionsSuccess[] = acym_selectOption('toptemp', 'ACYM_SUCCESS_TOP_TEMP');
328 428 $optionsSuccess[] = acym_selectOption('standard', 'ACYM_SUCCESS_STANDARD');
329 - echo '<p><label class="acyWPconfig" title="'.acym_translation('ACYM_SUCCESS_MODE_DESC').'">'.acym_translation('ACYM_SUCCESS_MODE').'</label>';
330 - echo acym_select(
331 - $optionsSuccess,
332 - $this->get_field_name('successmode'),
333 - $params['successmode'],
334 - [
335 - 'class' => 'acym_simple_select2',
336 - ],
337 - 'value',
338 - 'text',
339 - $this->get_field_id('successmode')
340 - ).'</p>';
429 + echo '<p><label class="acyWPconfig" title="'.esc_attr(acym_translation('ACYM_SUCCESS_MODE_DESC')).'">'.esc_html(acym_translation('ACYM_SUCCESS_MODE')).'</label>';
430 + acym_select(
431 + $optionsSuccess,
432 + $this->get_field_name('successmode'),
433 + $params['successmode'],
434 + [
435 + 'class' => 'acym_simple_select2',
436 + ],
437 + 'value',
438 + 'text',
439 + $this->get_field_id('successmode'),
440 + false,
441 + true
442 + );
443 + echo '</p>';
341 444
342 445 echo '<p>
343 446 <label
344 447 class="acyWPconfig"
345 - for="'.$this->get_field_id('confirmation_message').'"
346 - title="'.acym_translation('ACYM_CONFIRMATION_MESSAGE_DESC').'">'.acym_translation('ACYM_CONFIRMATION_MESSAGE').'</label>
448 + for="'.esc_attr($this->get_field_id('confirmation_message')).'"
449 + title="'.esc_attr(acym_translation('ACYM_CONFIRMATION_MESSAGE_DESC')).'">'.esc_html(acym_translation('ACYM_CONFIRMATION_MESSAGE')).'</label>
347 450 <input
348 451 type="text" class="widefat"
349 - id="'.$this->get_field_id('confirmation_message').'"
350 - name="'.$this->get_field_name('confirmation_message').'"
351 - value="'.acym_escape($params['confirmation_message']).'" />
452 + id="'.esc_attr($this->get_field_id('confirmation_message')).'"
453 + name="'.esc_attr($this->get_field_name('confirmation_message')).'"
454 + value="'.esc_attr($params['confirmation_message']).'" />
352 455 </p>';
353 456
354 - echo '<p><label class="acyWPconfig" for="'.$this->get_field_id('redirect').'" title="'.acym_translation('ACYM_REDIRECT_LINK_DESC').'">'.acym_translation(
355 - 'ACYM_REDIRECT_LINK'
457 + echo '<p><label class="acyWPconfig" for="'.esc_attr($this->get_field_id('redirect')).'" title="'.esc_attr(acym_translation('ACYM_REDIRECT_LINK_DESC')).'">'.esc_html(
458 + acym_translation(
459 + 'ACYM_REDIRECT_LINK'
460 + )
356 461 ).'</label>
357 - <input type="text" class="widefat" id="'.$this->get_field_id('redirect').'" name="'.$this->get_field_name('redirect').'" value="'.$params['redirect'].'" /></p>';
462 + <input type="text" class="widefat" id="'.esc_attr($this->get_field_id('redirect')).'" name="'.esc_attr($this->get_field_name('redirect')).'" value="'.esc_url(
463 + $params['redirect']
464 + ).'" /></p>';
358 465
359 - echo '<p><label class="acyWPconfig" for="'.$this->get_field_id('introtext').'" title="'.acym_translation('ACYM_INTRO_TEXT_DESC').'">'.acym_translation('ACYM_INTRO_TEXT').'</label>
360 - <textarea class="widefat" id="'.$this->get_field_id('introtext').'" name="'.$this->get_field_name('introtext').'" >'.$params['introtext'].'</textarea></p>';
466 + echo '<p><label class="acyWPconfig" for="'.esc_attr($this->get_field_id('introtext')).'" title="'.esc_attr(acym_translation('ACYM_INTRO_TEXT_DESC')).'">'.esc_html(
467 + acym_translation(
468 + 'ACYM_INTRO_TEXT'
469 + )
470 + ).'</label>
471 + <textarea class="widefat" id="'.esc_attr($this->get_field_id('introtext')).'" name="'.esc_attr($this->get_field_name('introtext')).'" >'.esc_html(
472 + $params['introtext']
473 + ).'</textarea></p>';
361 474
362 - echo '<p><label class="acyWPconfig" for="'.$this->get_field_id('posttext').'" title="'.acym_translation('ACYM_POST_TEXT_DESC').'">'.acym_translation('ACYM_POST_TEXT').'</label>
363 - <textarea class="widefat" id="'.$this->get_field_id('posttext').'" name="'.$this->get_field_name('posttext').'" >'.$params['posttext'].'</textarea></p>';
475 + echo '<p><label class="acyWPconfig" for="'.esc_attr($this->get_field_id('posttext')).'" title="'.esc_attr(acym_translation('ACYM_POST_TEXT_DESC')).'">'.esc_html(
476 + acym_translation(
477 + 'ACYM_POST_TEXT'
478 + )
479 + ).'</label>
480 + <textarea class="widefat" id="'.esc_attr($this->get_field_id('posttext')).'" name="'.esc_attr($this->get_field_name('posttext')).'" >'.esc_html(
481 + $params['posttext']
482 + ).'</textarea></p>';
364 483
365 - echo '<p><label class="acyWPconfig" title="'.acym_translation('ACYM_FORM_AUTOFILL_ID_DESC').'">'.acym_translation('ACYM_FORM_AUTOFILL_ID').'</label>';
366 - echo acym_boolean($this->get_field_name('userinfo'), $params['userinfo'], $this->get_field_id('userinfo')).'</p>';
484 + echo '<p><label class="acyWPconfig" title="'.esc_attr(acym_translation('ACYM_FORM_AUTOFILL_ID_DESC')).'">'.esc_html(acym_translation('ACYM_FORM_AUTOFILL_ID')).'</label>';
485 + acym_boolean($this->get_field_name('userinfo'), $params['userinfo'], $this->get_field_id('userinfo')).'</p>';
367 486
368 - echo '<p><label class="acyWPconfig" for="'.$this->get_field_id('formclass').'" title="'.acym_translation('ACYM_FORM_CLASS_DESC').'">'.acym_translation('ACYM_FORM_CLASS').'</label>
369 - <input type="text" class="widefat" id="'.$this->get_field_id('formclass').'" name="'.$this->get_field_name('formclass').'" value="'.$params['formclass'].'" /></p>';
487 + echo '<p><label class="acyWPconfig" for="'.esc_attr($this->get_field_id('formclass')).'" title="'.esc_attr(acym_translation('ACYM_FORM_CLASS_DESC')).'">'.esc_html(
488 + acym_translation('ACYM_FORM_CLASS')
489 + ).'</label>
490 + <input type="text" class="widefat" id="'.esc_attr($this->get_field_id('formclass')).'" name="'.esc_attr($this->get_field_name('formclass')).'" value="'.esc_attr(
491 + $params['formclass']
492 + ).'" /></p>';
370 493
371 494 $options = [];
372 495 $options[] = acym_selectOption('header', 'ACYM_IN_HEADER');
373 496 $options[] = acym_selectOption('module', 'ACYM_ON_THE_MODULE');
374 - echo '<p><label class="acyWPconfig" title="'.acym_translation('ACYM_MODULE_JS_DESC').'">'.acym_translation('ACYM_MODULE_JS').'</label>';
375 - echo acym_Select(
376 - $options,
377 - $this->get_field_name('includejs'),
378 - $params['includejs'],
379 - [
380 - 'class' => 'acym_simple_select2',
381 - ],
382 - 'value',
383 - 'text',
384 - $this->get_field_id('includejs')
385 - ).'</p>';
497 + echo '<p><label class="acyWPconfig" title="'.esc_attr(acym_translation('ACYM_MODULE_JS_DESC')).'">'.esc_html(acym_translation('ACYM_MODULE_JS')).'</label>';
498 + acym_select(
499 + $options,
500 + $this->get_field_name('includejs'),
501 + $params['includejs'],
502 + [
503 + 'class' => 'acym_simple_select2',
504 + ],
505 + 'value',
506 + 'text',
507 + $this->get_field_id('includejs'),
508 + false,
509 + true
510 + );
511 + echo '</p>';
386 512
387 513 $options = [];
388 514 $options[] = acym_selectOption('none', 'ACYM_DEFAULT');
389 515 $options[] = acym_selectOption('left', 'ACYM_LEFT');
@@ -388,27 +514,35 @@
388 514 $options[] = acym_selectOption('none', 'ACYM_DEFAULT');
389 515 $options[] = acym_selectOption('left', 'ACYM_LEFT');
390 516 $options[] = acym_selectOption('center', 'ACYM_CENTER');
391 517 $options[] = acym_selectOption('right', 'ACYM_RIGHT');
392 - echo '<p><label class="acyWPconfig" title="'.acym_translation('ACYM_ALIGNMENT_DESC').'">'.acym_translation('ACYM_ALIGNMENT').'</label>';
393 - echo acym_select(
394 - $options,
395 - $this->get_field_name('alignment'),
396 - $params['alignment'],
397 - [
398 - 'class' => 'acym_simple_select2',
399 - ],
400 - 'value',
401 - 'text',
402 - $this->get_field_id('alignment')
403 - ).'</p>';
518 + echo '<p><label class="acyWPconfig" title="'.esc_attr(acym_translation('ACYM_ALIGNMENT_DESC')).'">'.esc_html(acym_translation('ACYM_ALIGNMENT')).'</label>';
519 + acym_select(
520 + $options,
521 + $this->get_field_name('alignment'),
522 + $params['alignment'],
523 + [
524 + 'class' => 'acym_simple_select2',
525 + ],
526 + 'value',
527 + 'text',
528 + $this->get_field_id('alignment'),
529 + false,
530 + true
531 + );
532 + echo '</p>';
404 533
405 - echo '<p><label class="acyWPconfig" for="'.$this->get_field_id('source').'" title="'.acym_translation('ACYM_SOURCE_DESC').'">'.acym_translation('ACYM_SOURCE').'</label>
406 - <input type="text" class="widefat" id="'.$this->get_field_id('source').'" name="'.$this->get_field_name('source').'" value="'.$params['source'].'" /></p>';
534 + echo '<p><label class="acyWPconfig" for="'.esc_attr($this->get_field_id('source')).'" title="'.esc_attr(acym_translation('ACYM_SOURCE_DESC')).'">'.esc_html(
535 + acym_translation('ACYM_SOURCE')
536 + ).'</label>
537 + <input type="text" class="widefat" id="'.esc_attr($this->get_field_id('source')).'" name="'.esc_attr($this->get_field_name('source')).'" value="'.esc_attr(
538 + $params['source']
539 + ).'" /></p>';
407 540
408 541 echo '</div></div></div>';
409 542 }
410 543
544 + // Widget's output
411 545 public function widget($args, $instance)
412 546 {
413 547 $this->loadAcyMailing();
414 548
@@ -413,9 +547,9 @@
413 547 $this->loadAcyMailing();
414 548
415 549 $params = new AcymParameter($instance);
416 550
417 - echo acym_renderForm($params, $args);
551 + acym_renderForm($params, $args);
418 552 }
419 553
420 554 private function loadAcyMailing(): void
421 555 {