PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 11.0.5
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v11.0.5
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 / back / Core / AcymView.php

AcymView.php in AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress 11.0.5, at back/Core/AcymView.php

178 lines 6.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace AcyMailing\Core;
4
5 use AcyMailing\Helpers\HeaderHelper;
6
7 abstract class AcymView extends AcymObject
8 {
9 public string $name = '';
10 // Array of workflow steps: task => title
11 protected array $steps = [];
12 // Step to display
13 protected string $step = '';
14
15 public array $tabs = [];
16
17 public function __construct()
18 {
19 parent::__construct();
20
21 $classname = get_class($this);
22 $classname = substr($classname, strrpos($classname, '\\') + 1);
23 $this->name = strtolower(substr($classname, 0, -4));
24 $this->step = acym_getVar('string', 'nextstep', '');
25 if (empty($this->step)) {
26 $this->step = acym_getVar('string', 'step', '');
27 }
28 }
29
30 public function getName(): string
31 {
32 return $this->name;
33 }
34
35 public function getLayout(): string
36 {
37 return acym_getVar('cmd', 'layout', acym_getVar('cmd', 'task', 'listing'));
38 }
39
40 public function display(object $controller, array $data = []): void
41 {
42 $name = $this->getName();
43 $view = $this->getLayout();
44
45 if (method_exists($this, $view)) $this->$view();
46
47 $viewFolder = acym_isAdmin() ? ACYM_VIEW : ACYM_VIEW_FRONT;
48 if (!file_exists($viewFolder.ucfirst($name).DS.'tmpl'.DS.$view.'.php')) {
49 $view = 'listing';
50 }
51 $getCleanView = ($name !== 'archive' && $view !== 'listing') && ($name !== 'frontusers' || $view !== 'profile');
52 if (ACYM_CMS === 'wordpress' && $getCleanView) {
53 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- WordPress generated content temporary held to allow redirections (headers sent).
54 echo ob_get_clean();
55 }
56
57 // Load the needed scripts and styles
58 if (
59 ACYM_CMS !== 'wordpress'
60 || ($name === 'frontusers' && ($view === 'unsubscribe' || $view === 'unsubscribepage'))
61 || !defined('DOING_AJAX')
62 || !DOING_AJAX
63 || ($name === 'archive' && $view === 'view')
64 ) {
65 acym_loadAssets($name, $view);
66 $controller->loadScripts($view);
67 }
68
69 // Display enqueued messages
70 $notifications = acym_getVar('array', 'acynotif', [], 'SESSION');
71 if (!empty($notifications)) {
72 echo implode('', $notifications);
73 acym_setSession('acynotif', []);
74 }
75
76 // On pages with the editor, we need to put the wrapper inside the form
77 $outsideForm = (strpos($name, 'mails') !== false && $view === 'edit') || (strpos($name, 'campaigns') !== false && $view === 'edit_email');
78 if ($outsideForm) {
79 echo '<form id="acym_form" action="'.esc_url(
80 acym_completeLink(
81 acym_getVar('cmd', 'ctrl')
82 )
83 ).'" class="acym__form__mail__edit" method="post" name="acyForm" data-abide novalidate enctype="multipart/form-data">';
84 }
85
86 // Open wrapper and display the header
87 if (acym_getVar('cmd', 'task') !== 'ajaxEncoding') {
88 echo '<div id="acym_wrapper" class="'.esc_attr($name).'_'.esc_attr($view).' cms_'.esc_attr(ACYM_CMS).' cms_v_'.esc_attr(substr(ACYM_CMSV, 0, 1)).'">';
89 }
90
91 //if joomla we add the left menu and a div for the content
92 if (acym_isLeftMenuNecessary()) {
93 acym_displayLeftMenu($name);
94 echo '<div id="acym_content">';
95 }
96
97 if (!empty($data['breadcrumb'])) {
98 $headerHelper = new HeaderHelper();
99 $headerHelper->display($data['breadcrumb']);
100 }
101
102 $remindme = json_decode($this->config->get('remindme', '[]'), true);
103 if ($this->config->get('walk_through', 0) == 0) {
104 if (acym_isAdmin()) {
105 if (!in_array('multilingual', $remindme) && acym_level(ACYM_ESSENTIAL) && $this->config->get('multilingual', '0') === '0') {
106 if (count(acym_getLanguages(false, true)) > 1) {
107 $message = acym_translation('ACYM_MULTILINGUAL_OPTIONS_PROMPT');
108 $message .= ' <a id="acym__multilingual__reminder" href="'.acym_completeLink('configuration&task=multilingual').'&'.acym_getFormToken().'">'.acym_translation('ACYM_YES').'</a>';
109 $message .= ' / <a href="#" title="multilingual" class="acym__do__not__remindme__multilingual">'.acym_translation('ACYM_NO').'</a>';
110 acym_display($message, 'info', false);
111 } else {
112 $remindme[] = 'multilingual';
113 $this->config->saveConfig(['remindme' => json_encode($remindme)]);
114 }
115 }
116
117 $maliciousScan = $this->config->get('malicious_scan', 0);
118 if (!empty($maliciousScan)) {
119 $this->config->saveConfig(['malicious_scan' => 0]);
120 acym_display(acym_translation('ACYM_NEW_SECURITY_TOOL'), 'info');
121 }
122 }
123 }
124
125 acym_trigger('acym_displayTrackingMessage', [&$message], 'plgAcymWoocommerce');
126
127 if (acym_isAdmin()) {
128 acym_trigger('onAcymDisplayPage');
129 acym_displayMessages();
130 }
131
132 include acym_getView($name, $view);
133
134 // Close the wrapper and the content if CMS = Joomla
135 if (acym_isLeftMenuNecessary()) {
136 echo '</div>';
137 }
138
139 if (acym_getVar('cmd', 'task') !== 'ajaxEncoding') {
140 echo '</div>';
141 }
142
143 if ($outsideForm) {
144 echo '</form>';
145 }
146
147 if (ACYM_CMS !== 'wordpress' || !acym_isAdmin() || in_array($controller->name, ['dashboard', 'language', 'campaigns']) || acym_isAjax()) {
148 return;
149 }
150
151 $remind = json_decode($this->config->get('remindme', '[]'));
152 $installationDate = $this->config->get('install_date', time());
153 $sevenDaysAgo = time() - 7 * 86400;
154
155 if (!in_array('reviews', $remind) && $installationDate < $sevenDaysAgo) {
156 echo '<div id="acym__reviews__footer" style="margin: 0 0 30px 30px;">';
157 echo wp_kses(
158 acym_translationSprintf(
159 'ACYM_REVIEW_FOOTER',
160 '<a title="reviews" id="acym__reviews__footer__link" target="_blank" href="https://wordpress.org/support/plugin/acymailing/reviews/?rate=5#new-post">
161 '.str_repeat('<i class="acymicon-star"></i>', 5).'</a>'
162 ),
163 [
164 'a' => [
165 'title' => true,
166 'id' => true,
167 'href' => true,
168 ],
169 'i' => [
170 'class' => true,
171 ],
172 ]
173 );
174 echo '</div>';
175 }
176 }
177 }
178