PluginProbe
E2Pdf – Export Pdf Tool for WordPress / trunk
E2Pdf – Export Pdf Tool for WordPress vtrunk
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 1.08.09 All 71 releases
e2pdf / classes / controller / e2pdf-settings.php

e2pdf-settings.php in E2Pdf – Export Pdf Tool for WordPress trunk, at classes/controller/e2pdf-settings.php

400 lines 16.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * E2pdf Settings Controller
5 * @copyright Copyright 2017 https://e2pdf.com
6 * @license GPLv3
7 * @version 1
8 * @link https://e2pdf.com
9 * @since 0.00.01
10 */
11 if (!defined('ABSPATH')) {
12 die('Access denied.');
13 }
14
15 class Controller_E2pdf_Settings extends Helper_E2pdf_View {
16
17 /**
18 * @url admin.php?page=e2pdf-settings
19 */
20 public function index_action() {
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']);
59 }
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'));
94 }
95 }
96
97 $this->view('options', Model_E2pdf_Options::get_options(false, array('common_group')));
98 $this->view('groups', $this->get_groups());
99 }
100
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());
182 }
183
184 /**
185 * @url admin.php?page=e2pdf-settings&action=fonts
186 */
187 public function fonts_action() {
188 $model_e2pdf_font = new Model_E2pdf_Font();
189 if ($this->post->get('_wpnonce')) {
190
191 if (!wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_settings')) {
192 wp_die($this->message('wp_verify_nonce_error'));
193 }
194
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);
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 }
218 }
219 }
220
221 $fonts = $model_e2pdf_font->get_fonts();
222
223 $this->view('fonts', $fonts);
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());
228 }
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 */
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 }
263
264 $this->view('options', Model_E2pdf_Options::get_options(false, array($group_key)));
265 $this->view('groups', $this->get_groups());
266 }
267
268 /**
269 * @url admin.php?page=e2pdf-settings&action=extensions
270 */
271 public function extensions_action() {
272
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 }
296
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 }
318 }
319 }
320 $this->add_notification('update', __('Settings Saved', 'e2pdf'));
321 } else {
322 wp_die($this->message('wp_verify_nonce_error'));
323 }
324 }
325
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 }
331 }
332
333 $this->view('groups', $this->get_groups());
334 $this->view('roles', $roles);
335 $this->view('caps', $this->helper->get_caps());
336 }
337
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());
352 }
353
354 /**
355 * Get options list
356 * @return array() - Options list
357 */
358 public function get_groups() {
359 $groups = Model_E2pdf_Options::get_options(
360 false,
361 array(
362 'static_group',
363 'adobesign_group',
364 'gdrive_group',
365 'zapier_group',
366 ),
367 true
368 );
369
370 return $groups;
371 }
372
373 /**
374 * Remove font via ajax
375 * action: wp_ajax_e2pdf_delete_font
376 * function: e2pdf_delete_font
377 * @return json
378 */
379 public function ajax_delete_font() {
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);
384 $response = array(
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 ),
392 );
393 } else {
394 $response['error'] = $this->message('wp_verify_nonce_error');
395 }
396
397 $this->json_response($response);
398 }
399 }
400