PluginProbe
E2Pdf – Export Pdf Tool for WordPress / 1.32.49
E2Pdf – Export Pdf Tool for WordPress v1.32.49
1.32.49 1.32.48 1.32.43 1.32.40 1.32.34 1.32.32 1.32.31 1.32.26 1.32.22 1.32.23 1.32.18 1.32.17 1.32.15 trunk 1.00.00 1.00.13 1.01.01 1.02.02 1.03.07 1.04.07 1.05.03 1.06.02 1.07.11 1.08.00 1.08.06 All 72 releases
← All changes | classes/controller/e2pdf-settings.php +318 -135 1.01.011.32.49 View file →
@@ -1,11 +1,10 @@
1 1 <?php
2 2
3 3 /**
4 4 * E2pdf Settings Controller
5 - *
6 5 * @copyright Copyright 2017 https://e2pdf.com
7 - * @license GPL v2
6 + * @license GPLv3
8 7 * @version 1
9 8 * @link https://e2pdf.com
10 9 * @since 0.00.01
11 10 */
@@ -18,26 +17,169 @@
18 17 /**
19 18 * @url admin.php?page=e2pdf-settings
20 19 */
21 20 public function index_action() {
22 - if ($this->post->get()) {
23 - $this->check_nonce($this->post->get('_nonce'), 'e2pdf_post');
24 - $options = Model_E2pdf_Options::get_options(false, array('common_group'));
25 - foreach ($options as $group_key => $group) {
26 - foreach ($group['options'] as $option_key => $option_value) {
27 - if (array_key_exists($option_value['key'], $this->post->get())) {
28 - update_option($option_value['key'], $this->post->get($option_value['key']));
21 + if ($this->post->get('_wpnonce')) {
22 + if (wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_settings')) {
23 + $reload = false;
24 + if (
25 + get_option('e2pdf_debug', '0') != $this->post->get('e2pdf_debug') ||
26 + get_option('e2pdf_recovery_mode_email', '') != $this->post->get('e2pdf_recovery_mode_email') ||
27 + ($this->post->get('e2pdf_debug') && get_option('e2pdf_memory_time', '0') != $this->post->get('e2pdf_debug'))
28 + ) {
29 + $reload = true;
30 + }
31 +
32 + $check_update = false;
33 + if (get_option('e2pdf_dev_update', '0') != $this->post->get('e2pdf_dev_update')) {
34 + $check_update = true;
35 + }
36 +
37 + if ($this->post->get('e2pdf_api') && $this->post->get('e2pdf_api') != get_option('e2pdf_api', 'api.e2pdf.com')) {
38 + update_option('e2pdf_cached_fonts', array());
39 + }
40 +
41 + if (get_option('e2pdf_user_email', '') != $this->post->get('e2pdf_user_email')) {
42 + $model_e2pdf_api = new Model_E2pdf_Api();
43 + $model_e2pdf_api->set(
44 + array(
45 + 'action' => 'common/owner',
46 + 'data' => array(
47 + 'email' => trim($this->post->get('e2pdf_user_email')),
48 + ),
49 + )
50 + );
51 + $request = $model_e2pdf_api->request();
52 +
53 + if (isset($request['error'])) {
54 + if ($request['error'] === 'incorrect_email') {
55 + $request['error'] = sprintf(__('An account with that E-mail address was not found at E2Pdf.com. You can register at %s', 'e2pdf'), 'https://e2pdf.com/register');
56 + }
57 + $this->post->set('e2pdf_user_email', get_option('e2pdf_user_email', ''));
58 + $this->add_notification('error', $request['error']);
29 59 }
30 60 }
61 +
62 + if (get_option('e2pdf_cache', '1') !== $this->post->get('e2pdf_cache')) {
63 + $this->helper->load('cache')->purge_objects_cache();
64 + }
65 +
66 + if (get_option('e2pdf_cache_fonts', '1') !== $this->post->get('e2pdf_cache_fonts')) {
67 + $this->helper->load('cache')->purge_fonts_cache();
68 + }
69 +
70 + if (get_option('e2pdf_cache_pdfs', '0') !== $this->post->get('e2pdf_cache_pdfs')) {
71 + $this->helper->load('cache')->purge_pdfs_cache();
72 + }
73 +
74 + Model_E2pdf_Options::update_options('common_group', $this->post->get());
75 + $this->add_notification('update', __('Settings Saved', 'e2pdf'));
76 +
77 + if ($this->post->get('e2pdf_cache_pdfs')) {
78 + if (!wp_next_scheduled('e2pdf_cache_pdfs_cron')) {
79 + wp_schedule_event(time(), 'hourly', 'e2pdf_cache_pdfs_cron');
80 + }
81 + } else {
82 + wp_clear_scheduled_hook('e2pdf_cache_pdfs_cron');
83 + $this->helper->load('cache')->purge_pdfs_cache();
84 + }
85 +
86 + if ($check_update) {
87 + delete_site_transient('update_plugins');
88 + }
89 + if ($reload) {
90 + $this->redirect($this->helper->get_url(array('page' => 'e2pdf-settings')));
91 + }
92 + } else {
93 + wp_die($this->message('wp_verify_nonce_error'));
31 94 }
32 - $this->add_notification('update', __('Settings saved', 'e2pdf'));
33 95 }
34 96
35 - $options = Model_E2pdf_Options::get_options(false, array('common_group'));
36 - $groups = $this->get_groups();
97 + $this->view('options', Model_E2pdf_Options::get_options(false, array('common_group')));
98 + $this->view('groups', $this->get_groups());
99 + }
37 100
38 - $this->view('options', $options);
39 - $this->view('groups', $groups);
101 + /**
102 + * @url admin.php?page=e2pdf-settings&action=maintenance
103 + */
104 + public function maintenance_action() {
105 + global $wpdb;
106 + if ($this->post->get('_wpnonce')) {
107 + if (wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_settings')) {
108 + if ($this->post->get('e2pdf_purge_objects_cache')) {
109 + $this->helper->load('cache')->purge_objects_cache();
110 + $this->redirect(
111 + $this->helper->get_url(
112 + [
113 + 'page' => 'e2pdf-settings',
114 + 'action' => 'maintenance',
115 + 'notification' => $this->add_notification('update', __('Success', 'e2pdf')),
116 + ]
117 + )
118 + );
119 + } elseif ($this->post->get('e2pdf_purge_fonts_cache')) {
120 + $this->helper->load('cache')->purge_fonts_cache();
121 + $this->redirect(
122 + $this->helper->get_url(
123 + [
124 + 'page' => 'e2pdf-settings',
125 + 'action' => 'maintenance',
126 + 'notification' => $this->add_notification('update', __('Success', 'e2pdf')),
127 + ]
128 + )
129 + );
130 + } elseif ($this->post->get('e2pdf_purge_pdfs_cache')) {
131 + $this->helper->load('cache')->purge_pdfs_cache();
132 + $this->redirect(
133 + $this->helper->get_url(
134 + [
135 + 'page' => 'e2pdf-settings',
136 + 'action' => 'maintenance',
137 + 'notification' => $this->add_notification('update', __('Success', 'e2pdf')),
138 + ]
139 + )
140 + );
141 + } elseif ($this->post->get('e2pdf_purge_cache')) {
142 + $this->helper->load('cache')->purge_cache();
143 + $this->redirect(
144 + $this->helper->get_url(
145 + [
146 + 'page' => 'e2pdf-settings',
147 + 'action' => 'maintenance',
148 + 'notification' => $this->add_notification('update', __('Success', 'e2pdf')),
149 + ]
150 + )
151 + );
152 + } elseif ($this->post->get('e2pdf_db_optimize')) {
153 + $db_prefix = $wpdb->prefix;
154 + $this->helper->load('db')->db_optimize($db_prefix);
155 + $this->redirect(
156 + $this->helper->get_url(
157 + [
158 + 'page' => 'e2pdf-settings',
159 + 'action' => 'maintenance',
160 + 'notification' => $this->add_notification('update', __('Success', 'e2pdf')),
161 + ]
162 + )
163 + );
164 + } elseif ($this->post->get('e2pdf_recovery_mode_limit')) {
165 + delete_option('recovery_mode_email_last_sent');
166 + $this->redirect(
167 + $this->helper->get_url(
168 + [
169 + 'page' => 'e2pdf-settings',
170 + 'action' => 'maintenance',
171 + 'notification' => $this->add_notification('update', __('Success', 'e2pdf')),
172 + ]
173 + )
174 + );
175 + }
176 + } else {
177 + wp_die($this->message('wp_verify_nonce_error'));
178 + }
179 + }
180 +
181 + $this->view('groups', $this->get_groups());
40 182 }
41 183
42 184 /**
43 185 * @url admin.php?page=e2pdf-settings&action=fonts
@@ -42,100 +184,189 @@
42 184 /**
43 185 * @url admin.php?page=e2pdf-settings&action=fonts
44 186 */
45 187 public function fonts_action() {
46 -
47 188 $model_e2pdf_font = new Model_E2pdf_Font();
48 - $groups = $this->get_groups();
189 + if ($this->post->get('_wpnonce')) {
49 190
50 - if ($this->post->get()) {
51 - $this->check_nonce($this->post->get('_nonce'), 'e2pdf_post');
191 + if (!wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_settings')) {
192 + wp_die($this->message('wp_verify_nonce_error'));
193 + }
52 194
53 - $allowed_ext = array(
54 - 'ttf'
55 - );
56 -
57 - $font = $this->files->get('font');
58 -
59 - $name = $font['name'];
60 - $tmp = $font['tmp_name'];
61 -
62 -
63 - $filename = pathinfo($name, PATHINFO_FILENAME);
64 - $ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));
65 - $name = $filename . "." . $ext;
66 -
67 - $fonts = $model_e2pdf_font->get_fonts();
68 -
69 - $font_info = false;
70 - $exist = false;
71 -
72 - if (in_array($ext, $allowed_ext)) {
73 - $font_info = $model_e2pdf_font->get_font_info(false, 4, $tmp);
74 - if ($font_info) {
75 - $exist = array_search($font_info, $fonts);
195 + $file = $this->helper->load('files')->upload($this->files->get('font'), $model_e2pdf_font->get_allowed_extensions());
196 + if (isset($file['error'])) {
197 + $this->add_notification('error', $file['error']);
198 + } else {
199 + $font_name = false;
200 + $exist = false;
201 + $fonts = $model_e2pdf_font->get_fonts();
202 + $font_name = $model_e2pdf_font->get_font_info(false, 4, $file['tmp_name']);
203 + $name = pathinfo($file['name'], PATHINFO_FILENAME) . '.' . $file['ext'];
204 + if ($font_name) {
205 + $exist = array_search($font_name, $fonts);
76 206 }
207 + if (!$font_name) {
208 + $this->add_notification('error', __('Invalid Type', 'e2pdf'));
209 + } elseif (array_key_exists($name, $fonts) || $exist) {
210 + $this->add_notification('error', __('A Font with this name already exists', 'e2pdf'));
211 + } else {
212 + if (!move_uploaded_file($file['tmp_name'], $this->helper->get('fonts_dir') . $name)) {
213 + $this->add_notification('error', __('Failed to move uploaded file', 'e2pdf'));
214 + } else {
215 + $this->add_notification('update', __('Font Uploaded', 'e2pdf'));
216 + }
217 + }
77 218 }
78 -
79 - if (!$tmp) {
80 - $this->add_notification('error', __('Please choose font to upload', 'e2pdf'));
81 - } else if ($font['error']) {
82 - $this->add_notification('error', $font['error']);
83 - } elseif (!in_array($ext, $allowed_ext)) {
84 - $this->add_notification('error', __('Incorrect file extension', 'e2pdf'));
85 - } elseif (!$font_info) {
86 - $this->add_notification('error', __('Incompatible type', 'e2pdf'));
87 - } elseif (array_key_exists($name, $fonts)) {
88 - $this->add_notification('error', __('Font with this filename already exists', 'e2pdf'));
89 - } elseif ($exist) {
90 - $this->add_notification('error', __('Font with this name already exists', 'e2pdf'));
91 - } elseif (move_uploaded_file($font['tmp_name'], $this->helper->get('fonts_dir') . $name)) {
92 - $this->add_notification('update', __('Font uploaded successfully', 'e2pdf'));
93 - }
94 219 }
95 220
96 221 $fonts = $model_e2pdf_font->get_fonts();
97 222
98 223 $this->view('fonts', $fonts);
99 - $this->view('groups', $groups);
224 + $this->view('allowed_extensions', $model_e2pdf_font->get_allowed_extensions());
225 + $this->view('cached_fonts', get_option('e2pdf_cached_fonts', array()));
226 + $this->view('groups', $this->get_groups());
227 + $this->view('upload_max_filesize', $this->helper->load('files')->get_upload_max_filesize());
100 228 }
101 229
230 + /**
231 + * @url admin.php?page=e2pdf-settings&action=adobesign
232 + * Backward Compatibility
233 + */
234 + public function adobesign_action() {
235 + $redirect_url = [
236 + 'page' => 'e2pdf-integrations',
237 + 'action' => 'adobesign',
238 + ];
239 + if ($this->get->get('code') && get_option('e2pdf_adobesign_client_id', '') && get_option('e2pdf_adobesign_client_secret', '')) {
240 + $redirect_url['code'] = $this->get->get('code');
241 + $redirect_url['_wpnonce'] = wp_create_nonce('e2pdf_adobe');
242 + }
243 + $this->redirect(
244 + $this->helper->get_url(
245 + $redirect_url
246 + )
247 + );
248 + }
249 +
250 + /**
251 + * @url admin.php?page=e2pdf-settings&action=extension
252 + */
102 253 public function extension_action() {
254 + $group_key = $this->get->get('group');
255 + if ($this->post->get('_wpnonce')) {
256 + if (wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_settings')) {
257 + Model_E2pdf_Options::update_options($group_key, $this->post->get());
258 + $this->add_notification('update', __('Settings Saved', 'e2pdf'));
259 + } else {
260 + wp_die($this->message('wp_verify_nonce_error'));
261 + }
262 + }
103 263
104 - $group_key = $this->get->get('group');
264 + $this->view('options', Model_E2pdf_Options::get_options(false, array($group_key)));
265 + $this->view('groups', $this->get_groups());
266 + }
105 267
106 - if ($this->post->get()) {
268 + /**
269 + * @url admin.php?page=e2pdf-settings&action=extensions
270 + */
271 + public function extensions_action() {
107 272
108 - $this->check_nonce($this->post->get('_nonce'), 'e2pdf_post');
109 - $options = Model_E2pdf_Options::get_options(false, array($group_key));
273 + if ($this->post->get('_wpnonce')) {
274 + if (wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_settings')) {
275 + if (!$this->post->get('e2pdf_disabled_extensions')) {
276 + update_option('e2pdf_disabled_extensions', array());
277 + } else {
278 + update_option('e2pdf_disabled_extensions', array_filter($this->post->get('e2pdf_disabled_extensions')));
279 + }
280 + $this->redirect(
281 + $this->helper->get_url(
282 + [
283 + 'page' => 'e2pdf-settings',
284 + 'action' => 'extensions',
285 + 'notification' => $this->add_notification('update', __('Settings Saved', 'e2pdf')),
286 + ]
287 + )
288 + );
289 + } else {
290 + wp_die($this->message('wp_verify_nonce_error'));
291 + }
292 + }
293 + $this->view('options', Model_E2pdf_Options::get_options(false, array('extensions_group')));
294 + $this->view('groups', $this->get_groups());
295 + }
110 296
111 - foreach ($options as $group_key => $group) {
112 - foreach ($group['options'] as $option_key => $option_value) {
113 - if (array_key_exists($option_value['key'], $this->post->get())) {
114 - update_option($option_value['key'], $this->post->get($option_value['key']));
297 + /**
298 + * @url admin.php?page=e2pdf-settings&action=permissions
299 + */
300 + public function permissions_action() {
301 + if ($this->post->get('_wpnonce')) {
302 + if (wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_settings')) {
303 + $permissions = $this->post->get('permissions');
304 + $roles = wp_roles()->roles;
305 + $caps = $this->helper->get_caps();
306 + foreach ($permissions as $permission_key => $permission) {
307 + $role = get_role($permission_key);
308 + if ($role) {
309 + foreach ($permission as $cap_key => $cap) {
310 + if (isset($caps[$cap_key])) {
311 + if ($cap) {
312 + $role->add_cap($cap_key);
313 + } else {
314 + $role->remove_cap($cap_key);
315 + }
316 + }
317 + }
115 318 }
116 319 }
320 + $this->add_notification('update', __('Settings Saved', 'e2pdf'));
321 + } else {
322 + wp_die($this->message('wp_verify_nonce_error'));
117 323 }
324 + }
118 325
119 - $this->add_notification('update', __('Settings saved', 'e2pdf'));
326 + $roles = wp_roles()->roles;
327 + foreach ($roles as $role_key => $role) {
328 + if (isset($role['capabilities']['manage_options']) && $role['capabilities']['manage_options']) {
329 + unset($roles[$role_key]);
330 + }
120 331 }
121 332
122 - $options = Model_E2pdf_Options::get_options(false, array($group_key));
123 - $groups = $this->get_groups();
333 + $this->view('groups', $this->get_groups());
334 + $this->view('roles', $roles);
335 + $this->view('caps', $this->helper->get_caps());
336 + }
124 337
125 - $this->view('options', $options);
126 - $this->view('groups', $groups);
338 + /**
339 + * @url admin.php?page=e2pdf-settings&action=extensions
340 + */
341 + public function translation_action() {
342 + if ($this->post->get('_wpnonce')) {
343 + if (wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_settings')) {
344 + Model_E2pdf_Options::update_options('translation_group', $this->post->get());
345 + $this->add_notification('update', __('Settings Saved', 'e2pdf'));
346 + } else {
347 + wp_die($this->message('wp_verify_nonce_error'));
348 + }
349 + }
350 + $this->view('options', Model_E2pdf_Options::get_options(false, array('translation_group')));
351 + $this->view('groups', $this->get_groups());
127 352 }
128 353
129 354 /**
130 355 * Get options list
131 - *
132 356 * @return array() - Options list
133 357 */
134 358 public function get_groups() {
135 - $groups = Model_E2pdf_Options::get_options(false, array(
359 + $groups = Model_E2pdf_Options::get_options(
360 + false,
361 + array(
136 362 'static_group',
137 - ), true);
363 + 'adobesign_group',
364 + 'gdrive_group',
365 + 'zapier_group',
366 + ),
367 + true
368 + );
138 369
139 370 return $groups;
140 371 }
141 372
@@ -142,75 +373,27 @@
142 373 /**
143 374 * Remove font via ajax
144 375 * action: wp_ajax_e2pdf_delete_font
145 376 * function: e2pdf_delete_font
146 - *
147 377 * @return json
148 378 */
149 379 public function ajax_delete_font() {
150 -
151 - $this->check_nonce($this->get->get('_nonce'), 'e2pdf_ajax');
152 - $font = $this->post->get('data');
153 -
154 - $model_e2pdf_font = new Model_E2pdf_Font();
155 - $model_e2pdf_font->delete_font($font);
156 -
157 - $response = array(
158 - 'redirect' => $this->helper->get_url(array(
159 - 'page' => 'e2pdf-settings',
160 - 'action' => 'fonts'
161 - )
162 - )
163 - );
164 -
165 - $this->add_notification('update', __('Font removed successfully', 'e2pdf'));
166 - $this->json_response($response);
167 - }
168 -
169 - public function ajax_email() {
170 - $this->check_nonce($this->get->get('_nonce'), 'e2pdf_ajax');
171 -
172 - $data = $this->post->get('data');
173 - $email = isset($data['email']) ? trim($data['email']) : '';
174 - $email_code = isset($data['email_code']) ? trim($data['email_code']) : '';
175 -
176 -
177 - $model_e2pdf_api = new Model_E2pdf_Api();
178 - $model_e2pdf_api->set(array(
179 - 'action' => 'common/email',
180 - 'data' => array(
181 - 'email' => $email,
182 - 'email_code' => $email_code,
183 - 'email_confirm' => isset($data['email_code'])
184 - )
185 - ));
186 - $request = $model_e2pdf_api->request();
187 -
188 -
189 -
190 - if (isset($request['error'])) {
191 - if ($request['error'] === 'incorrect_email') {
192 - $response = array(
193 - 'error' => __('E-mail address incorrect', 'e2pdf')
194 - );
195 - } elseif ($request['error'] === 'incorrect_code') {
196 - $response = array(
197 - 'error' => __('Confirmation code incorrect', 'e2pdf')
198 - );
199 - } else {
200 - $response = array(
201 - 'error' => $request['error']
202 - );
203 - }
204 - } elseif (isset($request['success'])) {
380 + if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_settings')) {
381 + $font = $this->post->get('data');
382 + $model_e2pdf_font = new Model_E2pdf_Font();
383 + $model_e2pdf_font->delete_font($font);
205 384 $response = array(
206 - 'content' => $request['success']
385 + 'redirect' => $this->helper->get_url(
386 + array(
387 + 'page' => 'e2pdf-settings',
388 + 'action' => 'fonts',
389 + 'notification' => $this->add_notification('update', __('Font Deleted', 'e2pdf')),
390 + )
391 + ),
207 392 );
208 - if ($request['success'] == 'subscribed') {
209 - update_option('e2pdf_email', $email);
210 - }
393 + } else {
394 + $response['error'] = $this->message('wp_verify_nonce_error');
211 395 }
212 396
213 397 $this->json_response($response);
214 398 }
215 -
216 399 }