PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 10.11.1
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v10.11.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
acymailing / widgets / subscriptionform / widget.php

widget.php in AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress 10.11.1, at widgets/subscriptionform/widget.php

426 lines 18.6 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\FieldClass;
4 use AcyMailing\Classes\ListClass;
5 use AcyMailing\Classes\UserClass;
6 use AcyMailing\Core\AcymParameter;
7
8 class acym_subscriptionform_widget extends WP_Widget
9 {
10 public function __construct()
11 {
12 $this->loadAcyMailing();
13
14 parent::__construct(
15 'acym_subscriptionform_widget',
16 acym_translationSprintf('ACYM_MENU', acym_translation('ACYM_MENU_FORM')),
17 ['description' => acym_translation('ACYM_MENU_FORM_DESC')]
18 );
19 }
20
21 public function form($instance)
22 {
23 $this->loadAcyMailing();
24
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']);
28 acym_addStyle(false, ACYM_CSS.'widget.min.css?v='.filemtime(ACYM_MEDIA.'css'.DS.'widget.min.css'));
29
30 $listClass = new ListClass();
31 $fieldClass = new FieldClass();
32 $allFields = $fieldClass->getAll();
33 $fields = [];
34 foreach ($allFields as $field) {
35 if ($field->id == 2 || intval($field->active) === 0) continue;
36 $fields[$field->id] = acym_translation($field->name);
37 }
38
39 $lists = $listClass->getAllWithoutManagement();
40 foreach ($lists as $i => $oneList) {
41 if ($oneList->active == 0) {
42 unset($lists[$i]);
43 }
44 }
45
46 $listIds = array_keys($lists);
47 $params = [
48 'title' => 'Receive our newsletters',
49 'mode' => 'tableless',
50 'hiddenlists' => array_shift($listIds),
51 'displists' => '',
52 'listschecked' => '',
53 'listposition' => 'before',
54 'fields' => '1',
55 'textmode' => '1',
56 'subtext' => '',
57 'subtextlogged' => '',
58 'termscontent' => '0',
59 'privacypolicy' => '0',
60 'termscontentURL' => '',
61 'privacypolicyURL' => '',
62 'articlepopup' => '1',
63 'unsub' => '0',
64 'unsubtext' => '',
65 'unsubredirect' => '',
66 'successmode' => 'replace',
67 'confirmation_message' => '',
68 'redirect' => '',
69 'introtext' => '',
70 'posttext' => '',
71 'userinfo' => true,
72 'formclass' => '',
73 'alignment' => 'none',
74 'source' => 'widget __i__',
75 'includejs' => 'header',
76 ];
77 foreach ($params as $oneParam => &$value) {
78 if (!empty($instance)) {
79 $value = $instance[$oneParam] ?? '';
80 }
81
82 if (is_array($value)) {
83 $value = implode(',', $value);
84 }
85
86 if ($oneParam === 'userinfo') {
87 $value = (bool)$value;
88 } else {
89 $value = esc_attr($value);
90 }
91 }
92
93 if (!isset($instance['hiddenlists']) && !empty($params['displists'])) {
94 $params['hiddenlists'] = '';
95 }
96
97 echo '<div class="acym_toggle_zone">
98 <div class="acyblock" id="mainopt_acywidget">
99 <div class="acym_toggle_div_title">
100 <h3>'.acym_translation('ACYM_MAIN_OPTIONS').'</h3>
101 </div>
102 <div class="acym_toggle_div" style="display: none;">';
103
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>';
106
107 $options = [];
108 $options[] = acym_selectOption('inline', 'ACYM_MODE_HORIZONTAL');
109 $options[] = acym_selectOption('vertical', 'ACYM_MODE_VERTICAL');
110 $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>';
123
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>';
136
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>';
149
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>';
162
163 $options = [];
164 $options[] = acym_selectOption('before', 'ACYM_BEFORE_FIELDS');
165 $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>';
178
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>';
189
190 $options = [];
191 $options[] = acym_selectOption('1', 'ACYM_TEXT_INSIDE');
192 $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>';
205
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'
208 ).'</label>
209 <input type="text" class="widefat" id="'.$this->get_field_id('subtext').'" name="'.$this->get_field_name('subtext').'" value="'.$params['subtext'].'" /></p>';
210
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'
213 ).'</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>';
217
218 $options = [];
219 if (!empty($params['termscontent'])) {
220 $options[] = acym_selectOption($params['termscontent'], get_the_title($params['termscontent']));
221 }
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>';
235
236 $options = [];
237 if (!empty($params['privacypolicy'])) {
238 $options[] = acym_selectOption($params['privacypolicy'], get_the_title($params['privacypolicy']));
239 }
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>';
253
254 echo '<p>
255 <label class="acyWPconfig" for="'.$this->get_field_id('termscontentURL').'">
256 '.acym_translation('ACYM_TERMS_CONDITIONS_URL').'
257 </label>
258 <input
259 type="text" class="widefat"
260 id="'.$this->get_field_id('termscontentURL').'"
261 name="'.$this->get_field_name('termscontentURL').'"
262 value="'.$params['termscontentURL'].'"
263 />
264 </p>';
265
266 echo '<p>
267 <label class="acyWPconfig" for="'.$this->get_field_id('privacypolicyURL').'">
268 '.acym_translation('ACYM_PRIVACY_POLICY_URL').'
269 </label>
270 <input
271 type="text" class="widefat"
272 id="'.$this->get_field_id('privacypolicyURL').'"
273 name="'.$this->get_field_name('privacypolicyURL').'"
274 value="'.$params['privacypolicyURL'].'"
275 />
276 </p>';
277
278
279 echo '</div>
280 </div>
281 <div class="acyblock" id="advopt_acywidget">
282 <div class="acym_toggle_div_title">
283 <h3>'.acym_translation('ACYM_ADVANCED_OPTIONS').'</h3>
284 </div>
285 <div class="acym_toggle_div" style="display: none;">';
286
287 echo '<p><label class="acyWPconfig">'.acym_translation('ACYM_DISPLAY_UNSUB_BUTTON').'</label>';
288 $onchange = "var disp = 'none';";
289 $onchange .= "if(this.value != 0){disp = 'block';}";
290 $onchange .= "var elements = document.getElementsByClassName('".$this->get_field_id('unsubtextrow')."');";
291 $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>';
309
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'
313 ).'</label>
314 <input type="text" class="widefat" id="'.$this->get_field_id('unsubtext').'" name="'.$this->get_field_name('unsubtext').'" value="'.$params['unsubtext'].'" /></p>';
315
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'
319 ).'</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>';
323
324 $optionsSuccess = [];
325 $optionsSuccess[] = acym_selectOption('replace', 'ACYM_SUCCESS_REPLACE');
326 $optionsSuccess[] = acym_selectOption('replacetemp', 'ACYM_SUCCESS_REPLACE_TEMP');
327 $optionsSuccess[] = acym_selectOption('toptemp', 'ACYM_SUCCESS_TOP_TEMP');
328 $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>';
341
342 echo '<p>
343 <label
344 class="acyWPconfig"
345 for="'.$this->get_field_id('confirmation_message').'"
346 title="'.acym_translation('ACYM_CONFIRMATION_MESSAGE_DESC').'">'.acym_translation('ACYM_CONFIRMATION_MESSAGE').'</label>
347 <input
348 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']).'" />
352 </p>';
353
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'
356 ).'</label>
357 <input type="text" class="widefat" id="'.$this->get_field_id('redirect').'" name="'.$this->get_field_name('redirect').'" value="'.$params['redirect'].'" /></p>';
358
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>';
361
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>';
364
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>';
367
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>';
370
371 $options = [];
372 $options[] = acym_selectOption('header', 'ACYM_IN_HEADER');
373 $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>';
386
387 $options = [];
388 $options[] = acym_selectOption('none', 'ACYM_DEFAULT');
389 $options[] = acym_selectOption('left', 'ACYM_LEFT');
390 $options[] = acym_selectOption('center', 'ACYM_CENTER');
391 $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>';
404
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>';
407
408 echo '</div></div></div>';
409 }
410
411 public function widget($args, $instance)
412 {
413 $this->loadAcyMailing();
414
415 $params = new AcymParameter($instance);
416
417 echo acym_renderForm($params, $args);
418 }
419
420 private function loadAcyMailing(): void
421 {
422 $ds = DIRECTORY_SEPARATOR;
423 require_once rtrim(dirname(dirname(__DIR__)), $ds).$ds.'back'.$ds.'Core'.$ds.'init.php';
424 }
425 }
426