PluginProbe
E2Pdf – Export Pdf Tool for WordPress / 1.32.56
E2Pdf – Export Pdf Tool for WordPress v1.32.56
1.32.55 1.32.56 1.32.53 1.32.51 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 All 76 releases
← All changes | classes/model/e2pdf-loader.php +1040 -478 1.04.07 → 1.32.56 View file →
@@ -1,14 +1,12 @@
1 1 <?php
2 2
3 3 /**
4 - * E2pdf Loader Helper
5 - *
6 - * @copyright Copyright 2017 https://e2pdf.com
7 - * @license GPL v2
8 - * @version 1
9 - * @link https://e2pdf.com
10 - * @since 0.00.01
4 + * File: /model/e2pdf-loader.php
5 + *
6 + * @package E2Pdf
7 + * @license GPLv3
8 + * @link https://e2pdf.com
11 9 */
12 10 if (!defined('ABSPATH')) {
13 11 die('Access denied.');
14 12 }
@@ -14,31 +12,19 @@
14 12 }
15 13
16 14 class Model_E2pdf_Loader extends Model_E2pdf_Model {
17 15
18 - private $errors = array();
19 - private $e2pdf_admin_pages = array(
16 + private $e2pdf_admin_pages = [
20 17 'toplevel_page_e2pdf',
21 18 'e2pdf_page_e2pdf-templates',
19 + 'e2pdf_page_e2pdf-integrations',
22 20 'e2pdf_page_e2pdf-settings',
23 21 'e2pdf_page_e2pdf-license',
24 - 'e2pdf_page_e2pdf-debug'
25 - );
22 + 'e2pdf_page_e2pdf-debug',
23 + ];
26 24
27 - /*
28 - * On init
29 - * Create instance of Main Helper
30 - */
31 -
32 - function __construct() {
33 - parent::__construct();
34 - }
35 -
36 - /**
37 - * Main loader of actions / filters / hooks
38 - */
25 + // load
39 26 public function load() {
40 -
41 27 $this->load_translation();
42 28 $this->load_actions();
43 29 $this->load_filters();
44 30 $this->load_extensions();
@@ -46,69 +32,240 @@
46 32 $this->load_ajax();
47 33 $this->load_shortcodes();
48 34 }
49 35
36 + // load translation
50 37 public function load_translation() {
51 38 load_plugin_textdomain('e2pdf', false, '/e2pdf/languages/');
52 39 }
53 40
54 - /**
55 - * Load ajax
56 - */
41 + // load ajax
57 42 public function load_ajax() {
58 43 if (is_admin()) {
59 - add_action('wp_ajax_e2pdf_save_form', array(new Controller_E2pdf_Templates(), 'ajax_save_form'));
60 - add_action('wp_ajax_e2pdf_auto', array(new Controller_E2pdf_Templates(), 'ajax_auto'));
61 - add_action('wp_ajax_e2pdf_upload', array(new Controller_E2pdf_Templates(), 'ajax_upload'));
62 - add_action('wp_ajax_e2pdf_reupload', array(new Controller_E2pdf_Templates(), 'ajax_reupload'));
63 - add_action('wp_ajax_e2pdf_extension', array(new Controller_E2pdf_Templates(), 'ajax_extension'));
64 - add_action('wp_ajax_e2pdf_activate_template', array(new Controller_E2pdf_Templates(), 'ajax_activate_template'));
65 - add_action('wp_ajax_e2pdf_deactivate_template', array(new Controller_E2pdf_Templates(), 'ajax_deactivate_template'));
66 - add_action('wp_ajax_e2pdf_visual_mapper', array(new Controller_E2pdf_Templates(), 'ajax_visual_mapper'));
67 - add_action('wp_ajax_e2pdf_get_styles', array(new Controller_E2pdf_Templates(), 'ajax_get_styles'));
68 - add_action('wp_ajax_e2pdf_license_key', array(new Controller_E2pdf_License(), 'ajax_change_license_key'));
69 - add_action('wp_ajax_e2pdf_templates', array(new Controller_E2pdf(), 'ajax_templates'));
70 - add_action('wp_ajax_e2pdf_dataset', array(new Controller_E2pdf(), 'ajax_dataset'));
71 - add_action('wp_ajax_e2pdf_delete_item', array(new Controller_E2pdf(), 'ajax_delete_item'));
72 - add_action('wp_ajax_e2pdf_delete_items', array(new Controller_E2pdf(), 'ajax_delete_items'));
73 - add_action('wp_ajax_e2pdf_delete_font', array(new Controller_E2pdf_Settings(), 'ajax_delete_font'));
74 - add_action('wp_ajax_e2pdf_email', array(new Controller_E2pdf_Settings(), 'ajax_email'));
44 + add_action('wp_ajax_e2pdf_save_form', [new Controller_E2pdf_Templates(), 'ajax_save_form']);
45 + add_action('wp_ajax_e2pdf_auto', [new Controller_E2pdf_Templates(), 'ajax_auto']);
46 + add_action('wp_ajax_e2pdf_upload', [new Controller_E2pdf_Templates(), 'ajax_upload']);
47 + add_action('wp_ajax_e2pdf_reupload', [new Controller_E2pdf_Templates(), 'ajax_reupload']);
48 + add_action('wp_ajax_e2pdf_extension', [new Controller_E2pdf_Templates(), 'ajax_extension']);
49 + add_action('wp_ajax_e2pdf_activate_template', [new Controller_E2pdf_Templates(), 'ajax_activate_template']);
50 + add_action('wp_ajax_e2pdf_deactivate_template', [new Controller_E2pdf_Templates(), 'ajax_deactivate_template']);
51 + add_action('wp_ajax_e2pdf_visual_mapper', [new Controller_E2pdf_Templates(), 'ajax_visual_mapper']);
52 + add_action('wp_ajax_e2pdf_get_styles', [new Controller_E2pdf_Templates(), 'ajax_get_styles']);
53 + add_action('wp_ajax_e2pdf_email', [new Controller_E2pdf_Templates(), 'ajax_email']);
54 + add_action('wp_ajax_e2pdf_license_key', [new Controller_E2pdf_License(), 'ajax_change_license_key']);
55 + add_action('wp_ajax_e2pdf_deactivate_all_templates', [new Controller_E2pdf_License(), 'ajax_deactivate_all_templates']);
56 + add_action('wp_ajax_e2pdf_templates', [new Controller_E2pdf(), 'ajax_templates']);
57 + add_action('wp_ajax_e2pdf_dataset', [new Controller_E2pdf(), 'ajax_dataset']);
58 + add_action('wp_ajax_e2pdf_datasets_refresh', [new Controller_E2pdf(), 'ajax_datasets_refresh']);
59 + add_action('wp_ajax_e2pdf_delete_item', [new Controller_E2pdf(), 'ajax_delete_item']);
60 + add_action('wp_ajax_e2pdf_delete_items', [new Controller_E2pdf(), 'ajax_delete_items']);
61 + add_action('wp_ajax_e2pdf_delete_font', [new Controller_E2pdf_Settings(), 'ajax_delete_font']);
62 + add_action('wp_ajax_e2pdf_bulk_create', [new Controller_E2pdf(), 'ajax_bulk_create']);
63 + add_action('wp_ajax_e2pdf_bulk_action', [new Controller_E2pdf(), 'ajax_bulk_action']);
64 + add_action('wp_ajax_e2pdf_bulk_progress', [new Controller_E2pdf(), 'ajax_bulk_progress']);
75 65 }
76 66 }
77 67
78 - /**
79 - * Load actions
80 - */
68 + // load actions
81 69 public function load_actions() {
82 70 if (is_admin()) {
83 - add_action('wpmu_new_blog', array(&$this, 'activate_new_network'), 10, 6);
84 - add_action('admin_menu', array(&$this, 'admin_menu'));
85 - add_action('admin_init', array(&$this, 'admin_settings'));
86 - add_action('admin_enqueue_scripts', array(&$this, 'admin_js'));
87 - add_action('admin_enqueue_scripts', array(&$this, 'admin_css'));
88 - add_action('current_screen', array(&$this, 'admin_functions'));
89 - add_action('plugins_loaded', array(&$this, 'after_load'));
71 + add_action('wpmu_new_blog', [&$this, 'action_wpmu_new_blog']);
72 + add_action('admin_menu', [&$this, 'action_admin_menu']);
73 + add_action('admin_init', [&$this, 'action_admin_init'], 9);
74 + add_action('admin_enqueue_scripts', [&$this, 'action_admin_enqueue_scripts']);
75 + add_action('current_screen', [&$this, 'action_current_screen']);
76 + add_action('plugins_loaded', [&$this, 'action_plugins_loaded']);
90 77 }
91 - add_action('wp_enqueue_scripts', array(&$this, 'frontend_js'));
92 - add_action('wp', array(Helper_E2pdf_View::instance(), 'render_frontend_page'));
93 - add_action('wp_loaded', array(&$this, 'wp_loaded'));
78 + add_action('wp_enqueue_scripts', [&$this, 'action_wp_enqueue_scripts']);
79 + add_action('wp', [Helper_E2pdf_View::instance(), 'render_frontend_page'], 5);
80 + add_action('wp_loaded', [&$this, 'action_wp_loaded']);
81 + add_action('init', [&$this, 'action_init'], 0);
82 + add_action('e2pdf_bulk_export_cron', [new Controller_E2pdf(), 'cron_bulk_export']);
83 + add_action('e2pdf_cache_pdfs_cron', [&$this, 'cron_cache_pdfs']);
84 + add_action('e2pdf_cache_tmp_cron', [&$this, 'cron_cache_tmp']);
85 +
86 + /**
87 + * WPBakery Page Builder Actions
88 + * https://wpbakery.com/
89 + */
90 + add_action('vc_before_init', [&$this, 'action_vc_before_init']);
94 91 }
95 92
93 + // init action
94 + public function action_init() {
95 + if ($this->helper->get('page') == 'e2pdf-download') {
96 + /**
97 + * Compatibility fix with Minify HTML
98 + * https://wordpress.org/plugins/minify-html-markup/
99 + */
100 + remove_action('init', 'teckel_init_minify_html', 1);
101 +
102 + /**
103 + * Compatibility fix with Minimal Coming Soon – Coming Soon Page
104 + * https://wordpress.org/plugins/minimal-coming-soon-maintenance-mode/
105 + */
106 + remove_action('init', 'csmm_plugin_init');
107 +
108 + /**
109 + * Weglot Translate – Translate your WordPress website and go multilingual
110 + * https://wordpress.org/plugins/weglot/
111 + */
112 + add_filter('weglot_active_translation_before_treat_page', '__return_false');
113 +
114 + /**
115 + * Compatibility fix with UltimateMember Homepage Redirect
116 + * https://wordpress.org/plugins/ultimate-member/
117 + */
118 + if (class_exists('UM') && method_exists(UM(), 'access')) {
119 + remove_filter('the_posts', [UM()->access(), 'filter_protected_posts'], 99);
120 + }
121 +
122 + /**
123 + * Compatibility fix with Foxtool All-in-One: Contact chat button, Custom login, Media optimize images
124 + * https://wordpress.org/plugins/foxtool/
125 + */
126 + remove_action('init', 'foxtool_init_minify_html', 1);
127 +
128 + /**
129 + * Compatibility fix with Image Optimizer, Resizer and CDN – Sirv
130 + * https://wordpress.org/plugins/sirv/
131 + */
132 + remove_action('init', 'sirv_init', 20);
133 + }
134 +
135 + if (get_option('e2pdf_mod_rewrite', '0')) {
136 + global $wp_rewrite;
137 +
138 + $rewrite_url = rtrim(str_replace('%uid%', '([A-Za-z0-9]+)', get_option('e2pdf_mod_rewrite_url', 'e2pdf/%uid%/')), '/');
139 +
140 + // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
141 + if (!empty($_SERVER['REQUEST_URI']) && preg_match('#' . $rewrite_url . '#', wp_unslash($_SERVER['REQUEST_URI']))) {
142 + /**
143 + * Compatibility fix with Minify HTML
144 + * https://wordpress.org/plugins/minify-html-markup/
145 + */
146 + remove_action('init', 'teckel_init_minify_html', 1);
147 +
148 + /**
149 + * Compatibility fix with Minimal Coming Soon – Coming Soon Page
150 + * https://wordpress.org/plugins/minimal-coming-soon-maintenance-mode/
151 + */
152 + remove_action('init', 'csmm_plugin_init');
153 +
154 + /**
155 + * Weglot Translate – Translate your WordPress website and go multilingual
156 + * https://wordpress.org/plugins/weglot/
157 + */
158 + add_filter('weglot_active_translation_before_treat_page', '__return_false');
159 +
160 + /**
161 + * Compatibility fix with Foxtool All-in-One: Contact chat button, Custom login, Media optimize images
162 + * https://wordpress.org/plugins/foxtool/
163 + */
164 + remove_action('init', 'foxtool_init_minify_html', 1);
165 +
166 + /**
167 + * Compatibility fix with Image Optimizer, Resizer and CDN – Sirv
168 + * https://wordpress.org/plugins/sirv/
169 + */
170 + remove_action('init', 'sirv_init', 20);
171 + }
172 +
173 + $rules = [
174 + '^' . $rewrite_url,
175 + '^' . $wp_rewrite->index . '/' . $rewrite_url,
176 + ];
177 + $rewrite_to = 'index.php?e2pdf=1&uid=$matches[1]';
178 + add_rewrite_rule($rules[0], $rewrite_to, 'top');
179 + add_rewrite_rule($rules[1], $rewrite_to, 'top');
180 +
181 + /**
182 + * Polylang
183 + * https://wordpress.org/plugins/polylang/
184 + */
185 + if (function_exists('pll_the_languages')) {
186 + $languages = pll_the_languages(['raw' => 1]);
187 + if (!empty($languages)) {
188 + $settings = get_option('polylang');
189 + $languages = array_keys($languages);
190 + if (isset($settings['hide_default']) && isset($settings['default_lang']) && $settings['hide_default']) {
191 + $languages = array_diff($languages, [$settings['default_lang']]);
192 + }
193 + if (!empty($languages)) {
194 + $prefix = ((isset($settings['rewrite']) && $settings['rewrite']) ? '' : 'language/') . '(' . implode('|', $languages) . ')/';
195 + $rules[] = '^' . $prefix . $rewrite_url;
196 + $rules[] = '^' . $prefix . $wp_rewrite->index . '/' . $rewrite_url;
197 + $rewrite_to = 'index.php?e2pdf=1&uid=$matches[2]';
198 + add_rewrite_rule($rules[2], $rewrite_to, 'top');
199 + add_rewrite_rule($rules[3], $rewrite_to, 'top');
200 + }
201 + }
202 + }
203 +
204 + $rewrite_rules = get_option('rewrite_rules');
205 + foreach ($rules as $rule) {
206 + if (!isset($rewrite_rules[$rule])) {
207 + flush_rewrite_rules(false);
208 + break;
209 + }
210 + }
211 + }
212 + }
213 +
214 + // bulk export cron
215 + public function cronjob() { // phpcs:ignore Squiz.WhiteSpace.SuperfluousWhitespace.EndLine
216 + }
217 +
218 + // clear pdfs cache
219 + public function cron_cache_pdfs() {
220 + $this->helper->load('cache')->purge_pdfs_cache_ttl();
221 + }
222 +
223 + // clear tmp cache
224 + public function cron_cache_tmp() {
225 + $this->helper->load('cache')->purge_tmp_cache();
226 + }
227 +
228 + // load filters
96 229 public function load_filters() {
97 -
230 +
231 + if (get_option('e2pdf_dev_update', '0')) {
232 + add_filter('pre_set_site_transient_update_plugins', [&$this, 'filter_pre_set_site_transient_update_plugins']);
233 + }
234 +
235 + add_filter('pre_do_shortcode_tag', [&$this, 'filter_pre_do_shortcode_tag'], 10, 2);
236 +
237 + /**
238 + * SiteGround Optimizer HTML Minify compatibility fix filter
239 + * https://wordpress.org/plugins/sg-cachepress/
240 + */
241 + add_filter('sgo_html_minify_exclude_urls', [&$this, 'filter_sgo_html_minify_exclude_urls']);
242 +
243 + if (get_option('e2pdf_mod_rewrite', '0')) {
244 + add_filter('query_vars', [&$this, 'filter_query_vars']);
245 + }
246 +
247 + // phpcs:ignore WordPress.WP.CronInterval.CronSchedulesInterval
248 + add_filter('cron_schedules', [&$this, 'filter_cron_schedules']);
249 +
250 + /**
251 + * WPBakery Page Builder Filters
252 + * https://wpbakery.com/
253 + */
254 + add_filter('vc_grid_item_shortcodes', [&$this, 'filter_vc_grid_item_shortcodes']);
255 + add_filter('vc_gitem_template_attribute_e2pdf_download', [&$this, 'filter_vc_gitem_template_attribute_e2pdf_download'], 10, 2);
256 + add_filter('vc_gitem_template_attribute_e2pdf_view', [&$this, 'filter_vc_gitem_template_attribute_e2pdf_view'], 10, 2);
98 257 }
99 258
100 - public function after_load() {
259 + // plugins loaded action
260 + public function action_plugins_loaded() {
101 261 if (get_option('e2pdf_version') !== $this->helper->get('version')) {
102 262 $this->activate();
103 263 }
104 264 }
105 265
106 - /**
107 - * Load extensions and its action/filters
108 - */
266 + // load extensions
109 267 public function load_extensions() {
110 -
111 268 $model_e2pdf_extension = new Model_E2pdf_Extension();
112 269 $extensions = $model_e2pdf_extension->extensions();
113 270 if (!empty($extensions)) {
114 271 foreach ($extensions as $extension => $extension_name) {
@@ -119,546 +276,936 @@
119 276 }
120 277 }
121 278 }
122 279
123 - /**
124 - * Load filters
125 - */
280 + // load shortcodes
126 281 public function load_shortcodes() {
127 - add_shortcode('e2pdf-download', array(new Model_E2pdf_Shortcode(), 'e2pdf_download'));
128 - add_shortcode('e2pdf-attachment', array(new Model_E2pdf_Shortcode(), 'e2pdf_attachment'));
129 - add_shortcode('e2pdf-adobesign', array(new Model_E2pdf_Shortcode(), 'e2pdf_adobesign'));
130 - add_shortcode('e2pdf-save', array(new Model_E2pdf_Shortcode(), 'e2pdf_save'));
131 - add_shortcode('e2pdf-view', array(new Model_E2pdf_Shortcode(), 'e2pdf_view'));
132 - add_shortcode('e2pdf-format-number', array(new Model_E2pdf_Shortcode(), 'e2pdf_format_number'));
133 - add_shortcode('e2pdf-format-date', array(new Model_E2pdf_Shortcode(), 'e2pdf_format_date'));
134 - add_shortcode('e2pdf-format-output', array(new Model_E2pdf_Shortcode(), 'e2pdf_format_output'));
282 + $shortcode_handler = new Model_E2pdf_Shortcode();
283 + foreach ($this->helper->shortcodes() as $shortcode) {
284 + $method = str_replace('-', '_', $shortcode);
285 + if (method_exists($shortcode_handler, $method)) {
286 + add_shortcode($shortcode, [$shortcode_handler, $method]);
287 + }
288 + }
135 289 }
136 290
137 - /**
138 - * Load hooks
139 - */
291 + // load hooks
140 292 public function load_hooks() {
141 - register_activation_hook($this->helper->get('plugin_file_path'), array(&$this, 'activate'));
142 - register_deactivation_hook($this->helper->get('plugin_file_path'), array(&$this, 'deactivate'));
143 - register_uninstall_hook($this->helper->get('plugin_file_path'), array('Model_E2pdf_Loader', 'uninstall'));
293 + register_activation_hook($this->helper->get('plugin_file_path'), [&$this, 'activate']);
294 + register_deactivation_hook($this->helper->get('plugin_file_path'), [&$this, 'deactivate']);
295 + register_uninstall_hook($this->helper->get('plugin_file_path'), ['Model_E2pdf_Loader', 'uninstall']);
296 + if (false !== strpos($this->helper->load('server')->get('REQUEST_URI'), '/e2pdf-rpc/')) {
297 + add_action('wp_loaded', [Helper_E2pdf_View::instance(), 'rpc'], 5);
298 + }
144 299 }
145 300
146 - /**
147 - * Load admin menu
148 - */
149 - public function admin_menu() {
150 - ob_start();
151 - add_menu_page('e2pdf', 'E2Pdf', 'manage_options', 'e2pdf', array(Helper_E2pdf_View::instance(), 'render_page'), '', '26');
152 - add_submenu_page('e2pdf', __('Export', 'e2pdf'), __('Export', 'e2pdf'), 'manage_options', 'e2pdf', array(Helper_E2pdf_View::instance(), 'render_page'));
153 - add_submenu_page('e2pdf', __('Templates', 'e2pdf'), __('Templates', 'e2pdf'), 'manage_options', 'e2pdf-templates', array(Helper_E2pdf_View::instance(), 'render_page'));
154 - add_submenu_page('e2pdf', __('Settings', 'e2pdf'), __('Settings', 'e2pdf'), 'manage_options', 'e2pdf-settings', array(Helper_E2pdf_View::instance(), 'render_page'));
155 - add_submenu_page('e2pdf', __('License', 'e2pdf'), __('License', 'e2pdf'), 'manage_options', 'e2pdf-license', array(Helper_E2pdf_View::instance(), 'render_page'));
156 - if (get_option('e2pdf_debug') === '1') {
157 - add_submenu_page('e2pdf', __('Debug', 'e2pdf'), __('Debug', 'e2pdf'), 'manage_options', 'e2pdf-debug', array(Helper_E2pdf_View::instance(), 'render_page'));
301 + // admin body loading class
302 + public function filter_admin_body_loading_class($classes) {
303 + $classes .= ' e2pdf-loading';
304 + return $classes;
305 + }
306 +
307 + // url rewrite
308 + public function filter_query_vars($tags) {
309 + global $wp;
310 +
311 + // phpcs:ignore WordPress.Security.NonceVerification.Recommended
312 + if (!empty($_GET['e2pdf']) || strpos($wp->matched_query, 'e2pdf=1') === 0) {
313 + $tags[] = 'e2pdf';
314 + $tags[] = 'uid';
158 315 }
316 + return $tags;
159 317 }
160 318
161 - /**
162 - * Setup settings page
163 - */
164 - public function admin_settings() {
165 - register_setting('e2pdf-settings', 'e2pdf_debug');
319 + // custom cronjob time
320 + public function filter_cron_schedules($schedules) {
321 + $schedules['e2pdf_bulk_export_interval'] = [
322 + 'interval' => 3,
323 + 'display' => __('E2Pdf Bulk Export Interval', 'e2pdf'),
324 + ];
325 + return $schedules;
166 326 }
167 327
168 - /**
169 - * Load admin css
170 - */
171 - public function admin_css($page) {
328 + // filter sgo html minify
329 + public function filter_sgo_html_minify_exclude_urls($exclude_urls) {
330 + if (is_array($exclude_urls)) {
331 + $exclude_urls[] = '/?page=e2pdf-download&uid=*';
332 + if (get_option('e2pdf_download_inline_chrome_ios_fix', '0') == '1') {
333 + $exclude_urls[] = '/*?page=e2pdf-download&uid=*';
334 + }
335 + if (get_option('e2pdf_mod_rewrite', '0')) {
336 + $exclude_urls[] = '/' . rtrim(str_replace('%uid%', '*', get_option('e2pdf_mod_rewrite_url', 'e2pdf/%uid%/')), '/') . '*';
337 + }
338 + }
339 + return $exclude_urls;
340 + }
172 341
173 - if (get_option('e2pdf_debug') === '1') {
174 - $version = strtotime("now");
175 - } else {
176 - $version = $this->helper->get('version');
342 + // release candidate updates
343 + public function filter_pre_set_site_transient_update_plugins($transient) {
344 +
345 + if (!is_object($transient)) {
346 + return $transient;
177 347 }
178 348
349 + $model_e2pdf_api = new Model_E2pdf_Api();
350 + $model_e2pdf_api->set(
351 + [
352 + 'action' => 'update/info',
353 + ]
354 + );
355 + $request = $model_e2pdf_api->request();
179 356
180 - wp_register_style('e2pdf.backend', plugins_url('css/e2pdf.backend.css', $this->helper->get('plugin_file_path')), array(), $version);
181 - wp_enqueue_style('e2pdf.backend');
357 + if (isset($request['package'])) {
358 + if (isset($transient->response[$this->helper->get('plugin')])) {
359 + $update_info = $transient->response[$this->helper->get('plugin')];
360 + } elseif (isset($transient->no_update[$this->helper->get('plugin')])) {
361 + $update_info = $transient->no_update[$this->helper->get('plugin')];
362 + } else {
363 + $update_info = new stdClass();
364 + $update_info->id = $this->helper->get('plugin');
365 + $update_info->url = 'https://e2pdf.com';
366 + $update_info->slug = $this->helper->get('slug');
367 + $update_info->plugin = $this->helper->get('plugin');
368 + $update_info->package = $request['package'];
369 + $update_info->new_version = $request['version'];
370 + $update_info->tested = $request['tested'];
371 + $update_info->icons = $request['icons'];
372 + $update_info->banners = $request['banners'];
373 + }
374 + if (version_compare($this->helper->get('version'), $request['version'], '<')) {
375 + $update_info->package = $request['package'];
376 + $update_info->new_version = $request['version'];
377 + $update_info->tested = $request['tested'];
378 + $transient->response[$this->helper->get('plugin')] = $update_info;
379 + if (isset($transient->no_update[$this->helper->get('plugin')])) {
380 + unset($transient->no_update[$this->helper->get('plugin')]);
381 + }
382 + }
383 + }
384 +
385 + return $transient;
182 386 }
183 387
184 - /**
185 - * Load admin javascript
186 - *
187 - * @param string $page - Current page
188 - */
189 - public function admin_js($page) {
388 + // vc_gitem_template_attribute_e2pdf_download filter
389 + public function filter_vc_gitem_template_attribute_e2pdf_download($value, $data) {
190 390
191 - if (!in_array($page, $this->e2pdf_admin_pages)) {
192 - return;
193 - }
391 + $post = isset($data['post']) ? $data['post'] : null;
392 + $data = isset($data['data']) ? $data['data'] : '';
194 393
195 - if (get_option('e2pdf_debug') === '1') {
196 - $version = strtotime("now");
197 - } else {
198 - $version = $this->helper->get('version');
394 + $atts = [];
395 + parse_str($data, $atts);
396 + if (!empty($post->ID)) {
397 + $atts['dataset'] = $post->ID;
199 398 }
399 + $atts = array_filter((array) $atts, 'strlen');
400 + return (new Model_E2pdf_Shortcode())->e2pdf_download($atts);
401 + }
200 402
201 - wp_enqueue_script(
202 - 'js/e2pdf.backend', plugins_url('js/e2pdf.backend.js', $this->helper->get('plugin_file_path')), array('jquery'), $version
203 - );
403 + // vc_gitem_template_attribute_e2pdf_view filter
404 + public function filter_vc_gitem_template_attribute_e2pdf_view($value, $data) {
204 405
205 - $js_lang = $this->get_js_lang();
206 - wp_add_inline_script('js/e2pdf.backend', $js_lang, 'before');
406 + $post = isset($data['post']) ? $data['post'] : null;
407 + $data = isset($data['data']) ? $data['data'] : '';
207 408
208 - $js_size = $this->get_js_template_sizes();
209 - wp_add_inline_script('js/e2pdf.backend', $js_size, 'before');
409 + $atts = [];
410 + parse_str($data, $atts);
411 + if (!empty($post->ID)) {
412 + $atts['dataset'] = $post->ID;
413 + }
414 + $atts = array_filter((array) $atts, 'strlen');
415 + return (new Model_E2pdf_Shortcode())->e2pdf_view($atts);
416 + }
210 417
211 - $js_extension = $this->get_js_template_extensions();
212 - wp_add_inline_script('js/e2pdf.backend', $js_extension, 'before');
418 + // vc_grid_item_shortcodes filter
419 + public function filter_vc_grid_item_shortcodes($shortcodes) {
420 + if (class_exists('Vc_Grid_Item_Editor') && method_exists('Vc_Grid_Item_Editor', 'postType')) {
421 + $shortcodes['e2pdf_vc_download_item'] = [
422 + 'name' => '[e2pdf-download]',
423 + 'base' => 'e2pdf-vc-download-item',
424 + 'icon' => 'vc_general vc_element-icon e2pdf_vc_element-icon',
425 + 'category' => esc_html__('Content', 'js_composer'),
426 + 'description' => esc_html__('Display E2Pdf PDF Download', 'e2pdf'),
427 + 'post_type' => Vc_Grid_Item_Editor::postType(),
428 + 'params' => $this->helper->load('vc')->params('e2pdf-download'),
429 + ];
430 + }
431 + return $shortcodes;
432 + }
213 433
214 - $js_params = $this->get_js_params();
215 - wp_add_inline_script('js/e2pdf.backend', $js_params, 'before');
434 + // pre_do_shortcode_tag filter
435 + public function filter_pre_do_shortcode_tag($output, $tag) {
436 + if (in_array($tag, $this->helper->shortcodes(), true) && !$this->process_shortcodes()) {
437 + return '[' . $tag . '::disabled]';
438 + }
439 + return $output;
216 440 }
217 441
218 - /**
219 - * Load admin javascript
220 - *
221 - * @param string $page - Current page
222 - */
223 - public function frontend_js() {
442 + // process shortcodes
443 + public function process_shortcodes() {
444 + $process_shortcodes = is_preview() && !current_user_can('publish_posts') ? false : true;
445 + return apply_filters('e2pdf_process_shortcodes', $process_shortcodes);
446 + }
224 447
225 - wp_register_script(
226 - 'js/e2pdf.frontend', plugins_url('js/e2pdf.frontend.js', $this->helper->get('plugin_file_path')), array('jquery'), $this->helper->get('version')
227 - );
228 - wp_enqueue_script(
229 - 'js/e2pdf.frontend'
230 - );
448 + // vc_before_init action
449 + public function action_vc_before_init() {
450 + if (function_exists('vc_map')) {
451 + vc_map(
452 + [
453 + 'name' => '[e2pdf-download]',
454 + 'description' => esc_html__('Display E2Pdf PDF Download', 'e2pdf'),
455 + 'base' => 'e2pdf-vc-download',
456 + 'class' => '',
457 + 'icon' => 'vc_general vc_element-icon e2pdf_vc_element-icon',
458 + 'category' => esc_html__('Content', 'js_composer'),
459 + 'params' => $this->helper->load('vc')->params('e2pdf-download'),
460 + ]
461 + );
462 + vc_map(
463 + [
464 + 'name' => '[e2pdf-view]',
465 + 'description' => esc_html__('Display E2Pdf PDF View', 'e2pdf'),
466 + 'base' => 'e2pdf-vc-view',
467 + 'class' => '',
468 + 'icon' => 'vc_general vc_element-icon e2pdf_vc_element-icon',
469 + 'category' => esc_html__('Content', 'js_composer'),
470 + 'params' => $this->helper->load('vc')->params('e2pdf-view'),
471 + ]
472 + );
473 + }
231 474 }
232 475
233 - /**
234 - * Get nonce for JavaScript
235 - *
236 - * @return string - JS nonce
237 - */
238 - public function get_js_params() {
239 - $params = array(
240 - 'nonce' => wp_create_nonce('e2pdf_ajax'),
241 - 'plugins_url' => plugins_url('', $this->helper->get('plugin_file_path')),
242 - 'upload_url' => $this->helper->get_upload_url(),
243 - 'license_type' => $this->helper->get('license')->get('type')
244 - );
476 + // admin_menu action
477 + public function action_admin_menu() {
478 + ob_start();
479 + $caps = $this->helper->get_caps();
480 + if (current_user_can('manage_options')) {
481 + foreach ($caps as $cap_key => $cap) {
482 + $caps[$cap_key]['cap'] = 'manage_options';
483 + }
484 + }
485 + add_menu_page('e2pdf', 'E2Pdf', $caps['e2pdf']['cap'], 'e2pdf', [Helper_E2pdf_View::instance(), 'render_page'], $this->get_icon(), '26');
486 + add_submenu_page('e2pdf', __('Create PDF', 'e2pdf'), __('Create PDF', 'e2pdf'), $caps['e2pdf']['cap'], 'e2pdf', [Helper_E2pdf_View::instance(), 'render_page']);
487 + add_submenu_page('e2pdf', __('Templates', 'e2pdf'), __('Templates', 'e2pdf'), $caps['e2pdf_templates']['cap'], 'e2pdf-templates', [Helper_E2pdf_View::instance(), 'render_page']);
488 + add_submenu_page('e2pdf', __('Integrations', 'e2pdf'), __('Integrations', 'e2pdf'), $caps['e2pdf_settings']['cap'], 'e2pdf-integrations', [Helper_E2pdf_View::instance(), 'render_page']);
489 + add_submenu_page('e2pdf', __('Settings', 'e2pdf'), __('Settings', 'e2pdf'), $caps['e2pdf_settings']['cap'], 'e2pdf-settings', [Helper_E2pdf_View::instance(), 'render_page']);
490 + add_submenu_page('e2pdf', __('License', 'e2pdf'), __('License', 'e2pdf'), $caps['e2pdf_license']['cap'], 'e2pdf-license', [Helper_E2pdf_View::instance(), 'render_page']);
491 + if (get_option('e2pdf_debug', '0') === '1') {
492 + add_submenu_page('e2pdf', __('Debug', 'e2pdf'), __('Debug', 'e2pdf'), $caps['e2pdf_debug']['cap'], 'e2pdf-debug', [Helper_E2pdf_View::instance(), 'render_page']);
493 + }
494 + }
245 495
246 - $js_params = $this->helper->load('js')->get_js_array('e2pdfParams', $params);
247 - return $js_params;
496 + // icon
497 + public function get_icon() {
498 + $icon = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0idXVpZC00NjQyOGQyMi0wMzg2LTQ1ZmItODEyZC03YzViMTg0NDhlZDciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDU4MCA1MDIuNTMiPgogIDxkZWZzPgogICAgPHN0eWxlPgogICAgICAuY2xzLTEgewogICAgICAgIGZpbGw6ICNhN2FhYWQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTY4LjI5LDBjLTEyLjM1LDAtMjMuOTMsMy4zMS0zMy45LDkuMDctMTAuMjksNS45NS0xOC44NywxNC41NC0yNC44MiwyNC44M0MzLjgsNDMuODcuNDksNTUuNDUuNDksNjcuOHYyMzcuMzRjMCwxMi4zNSwzLjMsMjMuOTMsOS4wNywzMy45MSw1Ljk1LDEwLjI5LDE0LjU0LDE4Ljg3LDI0LjgzLDI0LjgyLDkuOTcsNS43OCwyMS41NSw5LjA3LDMzLjksOS4wN2gyNDQuMTNjLS45MS00LjMzLTEuMzgtOC44MS0xLjM4LTEzLjQsMC03LjYxLDEuMy0xNC45MywzLjcxLTIxLjczLDQuNjYtMTMuMTksMTMuNDQtMjQuNDMsMjQuNzktMzIuMTh2LTYxLjY0Yy0zLjY3LTMuODktNS45MS05LjEzLTUuOTEtMTQuODlzMi4yNC0xMSw1LjkxLTE0Ljg5VjBINjguMjlaTTkwLjMzLDc3Ljc4aDE1OS4zNmMxMC45LDAsMTkuNzUsOS43NCwxOS43NSwyMS43M3MtOC44NSwyMS43NC0xOS43NSwyMS43NEg5MC4zM2MtMTAuOTEsMC0xOS43NC05LjczLTE5Ljc0LTIxLjc0czguODMtMjEuNzMsMTkuNzQtMjEuNzNaTTI0OS42OSwyOTUuMTdIOTAuMzNjLTEwLjkxLDAtMTkuNzQtOS43My0xOS43NC0yMS43NHM4LjgzLTIxLjc0LDE5Ljc0LTIxLjc0aDE1OS4zNmMxMC45LDAsMTkuNzUsOS43NCwxOS43NSwyMS43NHMtOC44NSwyMS43NC0xOS43NSwyMS43NFpNMjQ5LjY5LDIwOC4yMUg5MC4zM2MtMTAuOTEsMC0xOS43NC05LjczLTE5Ljc0LTIxLjc0czguODMtMjEuNzQsMTkuNzQtMjEuNzRoMTU5LjM2YzEwLjksMCwxOS43NSw5Ljc0LDE5Ljc1LDIxLjc0cy04Ljg1LDIxLjc0LTE5Ljc1LDIxLjc0WiIvPgogIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTU3MC45MSwxNjMuNDljLTUuOTUtMTAuMjktMTQuNTMtMTguODctMjQuODMtMjQuODMtOS45Ni01Ljc2LTIxLjU0LTkuMDctMzMuODktOS4wN0gyNDAuOTR2MzUuMTRoOC43NWMxMC45LDAsMTkuNzUsOS43NCwxOS43NSwyMS43NHMtOC44NSwyMS43NC0xOS43NSwyMS43NGgtOC43NXY0My40OGg4Ljc1YzEwLjksMCwxOS43NSw5Ljc0LDE5Ljc1LDIxLjc0cy04Ljg1LDIxLjc0LTE5Ljc1LDIxLjc0aC04Ljc1djIwNy4zNmgyNzEuMjVjMTIuMzUsMCwyMy45My0zLjI5LDMzLjg5LTkuMDcsMTAuMy01Ljk1LDE4Ljg5LTE0LjUyLDI0Ljg0LTI0LjgyLDUuNzctOS45OCw5LjA3LTIxLjU2LDkuMDctMzMuOTF2LTIzNy4zNGMwLTEyLjM1LTMuMzEtMjMuOTMtOS4wOC0zMy45Wk00ODguMTYsNDI0Ljc2aC0xMTIuNzRjLTI4LjAzLS4zNS01MS44MS0xOC4zOS02MC42Ny00My40OC0uOTYtMi43LTEuNzQtNS40OS0yLjMzLTguMzQtLjkxLTQuMzMtMS4zOC04LjgxLTEuMzgtMTMuNCwwLTcuNjEsMS4zLTE0LjkzLDMuNzEtMjEuNzMsNC42Ni0xMy4xOSwxMy40NC0yNC40MywyNC43OS0zMi4xOCwxMC40Ni03LjEzLDIzLjEtMTEuMzEsMzYuNzMtMTEuMzFoNjUuMjJjMTIsMCwyMS43NC05LjczLDIxLjc0LTIxLjc0cy05Ljc0LTIxLjc0LTIxLjc0LTIxLjc0aC04Ni4xMmMtNi4yNSwwLTExLjg4LTIuNjMtMTUuODMtNi44NS0zLjY3LTMuODktNS45MS05LjEzLTUuOTEtMTQuODlzMi4yNC0xMSw1LjkxLTE0Ljg5YzMuOTYtNC4yMSw5LjU4LTYuODQsMTUuODMtNi44NGg4Ni45NmMyNi4zNy4zMiw0OC45NiwxNi4zMSw1OC45MywzOS4wOCwzLjUsOC4wMSw1LjQ1LDE2Ljg0LDUuNDUsMjYuMTMsMCwzNi4wMi0yOS4yLDY1LjIzLTY1LjIyLDY1LjIzaC02NS4yMmMtMTIuMDIsMC0yMS43NCw5LjcyLTIxLjc0LDIxLjczczkuNzIsMjEuNzQsMjEuNzQsMjEuNzRoMTExLjg5YzExLjk5LDAsMjEuNzMsOS43NCwyMS43MywyMS43NHMtOS43NCwyMS43NC0yMS43MywyMS43NFoiLz4KPC9zdmc+';
499 + return $icon;
248 500 }
249 501
250 - /**
251 - * Get Lang Key->Value for JavaScript
252 - *
253 - * @return string - JS language Key->Value
254 - */
255 - public function get_js_lang() {
256 - $lang = array(
257 - 'Delete' => __('Delete', 'e2pdf'),
258 - 'Properties' => __('Properties', 'e2pdf'),
259 - 'License Key' => __('License Key', 'e2pdf'),
260 - 'Submit' => __('Submit', 'e2pdf'),
261 - 'Are you sure want to remove page?' => __('Are you sure want to remove page?', 'e2pdf'),
262 - 'Are you sure want to remove font?' => __('Are you sure want to remove font?', 'e2pdf'),
263 - 'Empty PDF' => __('Empty PDF', 'e2pdf'),
264 - 'Upload PDF' => __('Upload PDF', 'e2pdf'),
265 - 'Auto PDF' => __('Auto PDF', 'e2pdf'),
266 - 'Create PDF' => __('Create PDF', 'e2pdf'),
267 - 'Extension' => __('Extension', 'e2pdf'),
268 - 'Size' => __('Size', 'e2pdf'),
269 - 'Properties' => __('Properties', 'e2pdf'),
270 - 'Name' => __('Name', 'e2pdf'),
271 - 'Enter link here' => __('Enter link here', 'e2pdf'),
272 - 'Z-index' => __('Z-index', 'e2pdf'),
273 - 'Border' => __('Border', 'e2pdf'),
274 - 'Background' => __('Background', 'e2pdf'),
275 - 'Left' => __('Left', 'e2pdf'),
276 - 'Right' => __('Right', 'e2pdf'),
277 - 'Top' => __('Top', 'e2pdf'),
278 - 'Center' => __('Center', 'e2pdf'),
279 - 'Bottom' => __('Bottom', 'e2pdf'),
280 - 'Color' => __('Color', 'e2pdf'),
281 - 'Border Color' => __('Border Color', 'e2pdf'),
282 - 'Line Height' => __('Line Height', 'e2pdf'),
283 - 'Padding' => __('Padding', 'e2pdf'),
284 - 'Width' => __('Width', 'e2pdf'),
285 - 'Height' => __('Height', 'e2pdf'),
286 - 'Text Color' => __('Text Color', 'e2pdf'),
287 - 'Value' => __('Value', 'e2pdf'),
288 - 'Font' => __('Font', 'e2pdf'),
289 - 'Options' => __('Options', 'e2pdf'),
290 - 'Option' => __('Option', 'e2pdf'),
291 - 'Group' => __('Group', 'e2pdf'),
292 - 'Group Name' => __('Group Name', 'e2pdf'),
293 - 'Group Value' => __('Group Value', 'e2pdf'),
294 - 'Selector' => __('Selector', 'e2pdf'),
295 - 'Check' => __('Check', 'e2pdf'),
296 - 'Circle' => __('Circle', 'e2pdf'),
297 - 'Cross' => __('Cross', 'e2pdf'),
298 - 'Diamond' => __('Diamond', 'e2pdf'),
299 - 'Square' => __('Square', 'e2pdf'),
300 - 'Star' => __('Star', 'e2pdf'),
301 - 'Type' => __('Type', 'e2pdf'),
302 - 'Scale' => __('Scale', 'e2pdf'),
303 - 'Width&Height' => __('Width&Height', 'e2pdf'),
304 - 'Width' => __('Width', 'e2pdf'),
305 - 'Height' => __('Height', 'e2pdf'),
306 - 'Choose Image' => __('Choose Image', 'e2pdf'),
307 - 'PDF Options' => __('PDF Options', 'e2pdf'),
308 - 'PDF Upload' => __('PDF Upload', 'e2pdf'),
309 - 'Item' => __('Item', 'e2pdf'),
310 - 'Position' => __('Position', 'e2pdf'),
311 - 'Copy' => __('Copy', 'e2pdf'),
312 - 'Cut' => __('Cut', 'e2pdf'),
313 - 'Paste' => __('Paste', 'e2pdf'),
314 - 'Paste in Place' => __('Paste in Place', 'e2pdf'),
315 - 'Apply' => __('Apply', 'e2pdf'),
316 - 'Dynamic Height' => __('Dynamic Height', 'e2pdf'),
317 - 'Text Align' => __('Text Align', 'e2pdf'),
318 - 'Readonly' => __('Readonly', 'e2pdf'),
319 - 'Multiline' => __('Multiline', 'e2pdf'),
320 - 'Required' => __('Required', 'e2pdf'),
321 - 'Settings' => __('Settings', 'e2pdf'),
322 - 'Relative' => __('Relative', 'e2pdf'),
323 - 'Page Size' => __('Page Size', 'e2pdf'),
324 - 'Custom' => __('Custom', 'e2pdf'),
325 - 'Size Preset' => __('Size Preset', 'e2pdf'),
326 - 'Page Options' => __('Page Options', 'e2pdf'),
327 - 'Select' => __('Select', 'e2pdf'),
328 - 'Saved Template will be overwritten! Are you sure want to continue?' => __('Saved Template will be overwritten! Are you sure want to continue?', 'e2pdf'),
329 - 'All pages will be removed! Are you sure want to continue?' => __('All pages will be removed! Are you sure want to continue?', 'e2pdf'),
330 - 'Adding new pages not available in "Uploaded PDF"' => __('Adding new pages not available in "Uploaded PDF"', 'e2pdf'),
331 - 'Dataset will be removed! Are you sure want to continue?' => __('Dataset will be removed! Are you sure want to continue?', 'e2pdf'),
332 - 'All datasets will be removed! Are you sure want to continue?' => __('All datasets will be removed! Are you sure want to continue?', 'e2pdf'),
333 - 'WARNING: Template has changes after last save! Changes will be lost!' => __('WARNING: Template has changes after last save! Changes will be lost!', 'e2pdf'),
334 - 'Element will be removed! Are you sure want to continue?' => __('Element will be removed! Are you sure want to continue?', 'e2pdf'),
335 - 'Elements will be removed! Are you sure want to continue?' => __('Elements will be removed! Are you sure want to continue?', 'e2pdf'),
336 - 'Action will be removed! Are you sure want to continue?' => __('Action will be removed! Are you sure want to continue?', 'e2pdf'),
337 - 'Condition will be removed! Are you sure want to continue?' => __('Condition will be removed! Are you sure want to continue?', 'e2pdf'),
338 - 'RTL' => __('RTL', 'e2pdf'),
339 - 'Hide' => __('Hide', 'e2pdf'),
340 - 'Show' => __('Show', 'e2pdf'),
341 - 'Password' => __('Password', 'e2pdf'),
342 - 'Map Field' => __('Map Field', 'e2pdf'),
343 - 'Parent' => __('Parent', 'e2pdf'),
344 - 'Hide Empty' => __('Hide Empty', 'e2pdf'),
345 - '--- Select ---' => __('--- Select ---', 'e2pdf'),
346 - 'Activated' => __('Activated', 'e2pdf'),
347 - 'Not Activated' => __('Not Activated', 'e2pdf'),
348 - 'Page ID' => __('Page ID', 'e2pdf'),
349 - 'New Position' => __('New Position', 'e2pdf'),
350 - 'Render New Fields' => __('Render New Fields', 'e2pdf'),
351 - 'Flush Elements' => __('Flush Elements', 'e2pdf'),
352 - 'Keep dimension' => __('Keep dimension', 'e2pdf'),
353 - 'ID' => __('ID', 'e2pdf'),
354 - 'Only 1 page allowed with "FREE" license type' => __('Only 1 page allowed with "FREE" license type', 'e2pdf'),
355 - 'Last condition can\'t be removed' => __('Last condition can\'t be removed', 'e2pdf'),
356 - 'Confirmation code' => __('Confirmation code', 'e2pdf'),
357 - 'Code' => __('Code', 'e2pdf'),
358 - 'Visual Mapper' => __('Visual Mapper', 'e2pdf'),
359 - 'Auto' => __('Auto', 'e2pdf'),
360 - 'Actions' => __('Actions', 'e2pdf'),
361 - 'Save' => __('Save', 'e2pdf'),
362 - 'Resize' => __('Resize', 'e2pdf'),
363 - 'Horizontal align' => __('Horizontal align', 'e2pdf'),
364 - 'Vertical align' => __('Vertical align', 'e2pdf'),
365 - 'Middle' => __('Middle', 'e2pdf'),
366 - 'Apply If' => __('Apply If', 'e2pdf'),
367 - 'Action' => __('Action', 'e2pdf'),
368 - 'Property' => __('Property', 'e2pdf'),
369 - 'If' => __('If', 'e2pdf'),
370 - 'Condition' => __('Condition', 'e2pdf'),
371 - 'Change' => __('Change', 'e2pdf'),
372 - 'Any' => __('Any', 'e2pdf'),
373 - 'All' => __('All', 'e2pdf'),
374 - 'Order' => __('Order', 'e2pdf'),
375 - 'E-signature' => __('E-signature', 'e2pdf'),
376 - 'Contact' => __('Contact', 'e2pdf'),
377 - 'Location' => __('Location', 'e2pdf'),
378 - 'Reason' => __('Reason', 'e2pdf'),
379 - 'Placeholder' => __('Placeholder', 'e2pdf'),
380 - 'Length' => __('Length', 'e2pdf'),
381 - 'Comb' => __('Comb', 'e2pdf'),
382 - 'None' => __('None', 'e2pdf'),
383 - 'Highlight' => __('Highlight', 'e2pdf'),
384 - 'Invert' => __('Invert', 'e2pdf'),
385 - 'Outline' => __('Outline', 'e2pdf'),
386 - 'Push' => __('Push', 'e2pdf'),
387 - 'Title' => __('Title', 'e2pdf'),
388 - 'Status' => __('Status', 'e2pdf'),
389 - );
502 + // settings page
503 + public function action_admin_init() {
504 + register_setting('e2pdf-settings', 'e2pdf_debug');
390 505
391 - $js_lang = $this->helper->load('js')->get_js_array('e2pdfLang', $lang);
392 - return $js_lang;
506 + /**
507 + * Compatibility fix with Gallery : FooGallery
508 + * https://wordpress.org/plugins/foogallery/
509 + */
510 + if (class_exists('FooGallery_Admin_Extensions')) {
511 + if (!wp_doing_ajax()) {
512 + return;
513 + }
514 + $action = isset($_REQUEST['action']) && is_string($_REQUEST['action']) ? $_REQUEST['action'] : '';
515 + if ('e2pdf_upload' !== $action) {
516 + return;
517 + }
518 + global $wp_filter;
519 + if (isset($wp_filter['admin_init']) && $wp_filter['admin_init'] instanceof WP_Hook) {
520 + foreach ($wp_filter['admin_init']->callbacks as $priority => $callbacks) {
521 + if (!is_array($callbacks)) {
522 + continue;
523 + }
524 + foreach ($callbacks as $callback) {
525 + if (
526 + isset($callback['function']) &&
527 + is_array($callback['function']) &&
528 + isset($callback['function'][0], $callback['function'][1]) &&
529 + $callback['function'][0] instanceof FooGallery_Admin_Extensions &&
530 + 'handle_extension_action' === $callback['function'][1]
531 + ) {
532 + remove_action('admin_init', $callback['function'], $priority);
533 + }
534 + }
535 + }
536 + }
537 + }
393 538 }
394 539
395 - /**
396 - * Get Template sizes for JavaScript
397 - *
398 - * @return string - JS template sizes
399 - */
400 - public function get_js_template_sizes() {
401 - $controller_e2pdf_templates = new Controller_E2pdf_Templates();
402 - $sizes = $controller_e2pdf_templates->get_sizes_list();
540 + // admin_enqueue_scripts action
541 + public function action_admin_enqueue_scripts($page) {
542 + $version = get_option('e2pdf_debug', '0') === '1' ? strtotime('now') : $this->helper->get('version');
543 + wp_register_style('e2pdf.backend.global', plugins_url('css/e2pdf.backend.global.css', $this->helper->get('plugin_file_path')), [], $version);
544 + wp_enqueue_style('e2pdf.backend.global');
545 + if (!in_array($page, $this->e2pdf_admin_pages, false)) {
546 + return;
547 + }
403 548
404 - $js_template_sizes = $this->helper->load('js')->get_js_array('e2pdfTemplateSizes', $sizes);
549 + if ($page == 'e2pdf_page_e2pdf-templates') {
550 + wp_enqueue_script(
551 + 'js/e2pdf.purify', plugins_url('js/dompurify/purify.min.js', $this->helper->get('plugin_file_path')), ['jquery'], $version, false
552 + );
553 + wp_enqueue_script(
554 + 'js/e2pdf.backend', plugins_url('js/e2pdf.backend.js', $this->helper->get('plugin_file_path')), ['jquery', 'js/e2pdf.purify'], $version, false
555 + );
556 + } else {
557 + wp_enqueue_script(
558 + 'js/e2pdf.backend', plugins_url('js/e2pdf.backend.js', $this->helper->get('plugin_file_path')), ['jquery'], $version, false
559 + );
560 + }
561 + wp_localize_script('js/e2pdf.backend', 'e2pdf_lang', $this->get_js('lang'));
562 + wp_localize_script('js/e2pdf.backend', 'e2pdf_params', $this->get_js('params'));
563 + wp_register_style('e2pdf.backend', plugins_url('css/e2pdf.backend.css', $this->helper->get('plugin_file_path')), [], $version);
564 + wp_enqueue_style('e2pdf.backend');
565 + }
405 566
406 - return $js_template_sizes;
567 + // wp_enqueue_scripts action
568 + public function action_wp_enqueue_scripts() {
569 + $version = get_option('e2pdf_debug', '0') === '1' ? strtotime('now') : $this->helper->get('version');
570 + wp_enqueue_style('css/e2pdf.frontend.global', plugins_url('css/e2pdf.frontend.global.css', $this->helper->get('plugin_file_path')), [], $version, 'all');
571 + wp_register_script(
572 + 'js/e2pdf.frontend', plugins_url('js/e2pdf.frontend.js', $this->helper->get('plugin_file_path')), ['jquery'], $version, false
573 + );
574 + wp_enqueue_script(
575 + 'js/e2pdf.frontend'
576 + );
407 577 }
408 578
409 - /**
410 - * Get Extensions list for JavaScript
411 - *
412 - * @return string - JS Extensions list
413 - */
414 - public function get_js_template_extensions() {
415 - $model_e2pdf_extension = new Model_E2pdf_Extension();
416 - $extensions = $model_e2pdf_extension->extensions();
417 -
418 - $js_template_extensions = $this->helper->load('js')->get_js_array('e2pdfTemplateExtensions', $extensions);
419 -
420 - return $js_template_extensions;
579 + // get fontend javascript
580 + public function get_js($type) {
581 + $data = [];
582 + switch ($type) {
583 + case 'lang':
584 + $data = [
585 + 'Page will be removed! Continue?' => __('Page will be removed! Continue?', 'e2pdf'),
586 + 'Font will be removed! Continue?' => __('Font will be removed! Continue?', 'e2pdf'),
587 + 'Changes will not be saved! Continue?' => __('Changes will not be saved! Continue?', 'e2pdf'),
588 + 'Saved Template will be overwritten! Continue?' => __('Saved Template will be overwritten! Continue?', 'e2pdf'),
589 + 'All pages will be removed! Continue?' => __('All pages will be removed! Continue?', 'e2pdf'),
590 + 'Adding new pages not available in "Uploaded PDF"' => __('Adding new pages not available in "Uploaded PDF"', 'e2pdf'),
591 + 'Dataset will be removed! Continue?' => __('Dataset will be removed! Continue?', 'e2pdf'),
592 + 'All datasets will be removed! Continue?' => __('All datasets will be removed! Continue?', 'e2pdf'),
593 + 'WARNING: Template has changes after last save! Changes will be lost! Continue?' => __('WARNING: Template has changes after last save! Changes will be lost! Continue?', 'e2pdf'),
594 + 'Element will be removed! Continue?' => __('Element will be removed! Continue?', 'e2pdf'),
595 + 'Elements will be removed! Continue?' => __('Elements will be removed! Continue?', 'e2pdf'),
596 + 'Action will be removed! Continue?' => __('Action will be removed! Continue?', 'e2pdf'),
597 + 'Condition will be removed! Continue?' => __('Condition will be removed! Continue?', 'e2pdf'),
598 + 'All Field Values will be overwritten! Continue?' => __('All Field Values will be overwritten! Continue?', 'e2pdf'),
599 + 'Website will be forced to use "FREE" License Key! Continue?' => __('Website will be forced to use "FREE" License Key! Continue?', 'e2pdf'),
600 + 'Not Available in Revision Edit Mode' => __('Not Available in Revision Edit Mode', 'e2pdf'),
601 + 'The WYSIWYG editor is disabled for this HTML object' => __('The WYSIWYG editor is disabled for this HTML object', 'e2pdf'),
602 + 'WYSIWYG can only be applied within HTML elements' => __('WYSIWYG can only be applied within HTML elements', 'e2pdf'),
603 + 'Only single-page PDFs are allowed with the "FREE" license type' => __('Only single-page PDFs are allowed with the "FREE" license type', 'e2pdf'),
604 + 'Last condition can\'t be removed' => __('Last condition can\'t be removed', 'e2pdf'),
605 + 'In Progress...' => __('In Progress...', 'e2pdf'),
606 + 'Delete' => __('Delete', 'e2pdf'),
607 + 'Properties' => __('Properties', 'e2pdf'),
608 + 'License Key' => __('License Key', 'e2pdf'),
609 + 'Empty PDF' => __('Empty PDF', 'e2pdf'),
610 + 'Upload PDF' => __('Upload PDF', 'e2pdf'),
611 + 'Auto PDF' => __('Auto PDF', 'e2pdf'),
612 + 'Create PDF' => __('Create PDF', 'e2pdf'),
613 + 'Extension' => __('Extension', 'e2pdf'),
614 + 'Size' => __('Size', 'e2pdf'),
615 + 'Properties' => __('Properties', 'e2pdf'),
616 + 'Enter link here' => __('Enter link here', 'e2pdf'),
617 + 'Border' => __('Border', 'e2pdf'),
618 + 'Background' => __('Background', 'e2pdf'),
619 + 'Left' => __('Left', 'e2pdf'),
620 + 'Right' => __('Right', 'e2pdf'),
621 + 'Top' => __('Top', 'e2pdf'),
622 + 'Center' => __('Center', 'e2pdf'),
623 + 'Bottom' => __('Bottom', 'e2pdf'),
624 + 'Justify' => __('Justify', 'e2pdf'),
625 + 'Border Color' => __('Border Color', 'e2pdf'),
626 + 'Border Radius' => __('Border Radius', 'e2pdf'),
627 + 'Line Height' => __('Line Height', 'e2pdf'),
628 + 'Width' => __('Width', 'e2pdf'),
629 + 'Height' => __('Height', 'e2pdf'),
630 + 'Value' => __('Value', 'e2pdf'),
631 + 'Font' => __('Font', 'e2pdf'),
632 + 'Option' => __('Option', 'e2pdf'),
633 + 'Group' => __('Group', 'e2pdf'),
634 + 'Type' => __('Type', 'e2pdf'),
635 + 'Scale' => __('Scale', 'e2pdf'),
636 + 'Width&Height' => __('Width&Height', 'e2pdf'),
637 + 'Choose Image' => __('Choose Image', 'e2pdf'),
638 + 'Options' => __('Options', 'e2pdf'),
639 + 'PDF Upload' => __('PDF Upload', 'e2pdf'),
640 + 'Global Actions' => __('Global Actions', 'e2pdf'),
641 + 'Global Properties' => __('Global Properties', 'e2pdf'),
642 + 'Connection' => __('Connection', 'e2pdf'),
643 + 'Map Field' => __('Map Field', 'e2pdf'),
644 + 'Insert Mapped' => __('Insert Mapped', 'e2pdf'),
645 + 'Resize' => __('Resize', 'e2pdf'),
646 + 'Copy' => __('Copy', 'e2pdf'),
647 + 'Cut' => __('Cut', 'e2pdf'),
648 + 'Paste' => __('Paste', 'e2pdf'),
649 + 'Paste in Place' => __('Paste in Place', 'e2pdf'),
650 + 'Apply' => __('Apply', 'e2pdf'),
651 + 'Dynamic Height' => __('Dynamic Height', 'e2pdf'),
652 + 'Multipage' => __('Multipage', 'e2pdf'),
653 + 'Text Align' => __('Text Align', 'e2pdf'),
654 + 'Read-Only' => __('Read-Only', 'e2pdf'),
655 + 'Multiline' => __('Multiline', 'e2pdf'),
656 + 'Required' => __('Required', 'e2pdf'),
657 + 'Page Options' => __('Page Options', 'e2pdf'),
658 + 'Direction' => __('Direction', 'e2pdf'),
659 + 'Hide' => __('Hide', 'e2pdf'),
660 + 'Unhide' => __('Unhide', 'e2pdf'),
661 + 'Password' => __('Password', 'e2pdf'),
662 + 'Visual Mapper' => __('Visual Mapper', 'e2pdf'),
663 + 'Parent' => __('Parent', 'e2pdf'),
664 + '--- Select ---' => __('--- Select ---', 'e2pdf'),
665 + 'Activated' => __('Activated', 'e2pdf'),
666 + 'Not Activated' => __('Not Activated', 'e2pdf'),
667 + 'Page ID' => __('Page ID', 'e2pdf'),
668 + 'Page ID inside Upload PDF' => __('Page ID inside Upload PDF', 'e2pdf'),
669 + 'Render Fields from Upload PDF' => __('Render Fields from Upload PDF', 'e2pdf'),
670 + 'Delete created E2Pdf Fields' => __('Delete created E2Pdf Fields', 'e2pdf'),
671 + 'Keep Image Ratio' => __('Keep Image Ratio', 'e2pdf'),
672 + 'Keep Lower Size' => __('Keep Lower Size', 'e2pdf'),
673 + 'Lock Aspect Ratio' => __('Lock Aspect Ratio', 'e2pdf'),
674 + 'Fill Image' => __('Fill Image', 'e2pdf'),
675 + 'Page' => __('Page', 'e2pdf'),
676 + 'Resolution' => __('Resolution', 'e2pdf'),
677 + 'Disable Text to Image' => __('Disable Text to Image', 'e2pdf'),
678 + 'Confirmation Code' => __('Confirmation Code', 'e2pdf'),
679 + 'Code' => __('Code', 'e2pdf'),
680 + 'Visual Mapper' => __('Visual Mapper', 'e2pdf'),
681 + 'Auto' => __('Auto', 'e2pdf'),
682 + 'Actions' => __('Actions', 'e2pdf'),
683 + 'Save' => __('Save', 'e2pdf'),
684 + 'Horizontal Align' => __('Horizontal Align', 'e2pdf'),
685 + 'Vertical Align' => __('Vertical Align', 'e2pdf'),
686 + 'Middle' => __('Middle', 'e2pdf'),
687 + 'Apply If' => __('Apply If', 'e2pdf'),
688 + 'Action' => __('Action', 'e2pdf'),
689 + 'Property' => __('Property', 'e2pdf'),
690 + 'If' => __('If', 'e2pdf'),
691 + 'Condition' => __('Condition', 'e2pdf'),
692 + 'Any' => __('Any', 'e2pdf'),
693 + 'All' => __('All', 'e2pdf'),
694 + 'Sort' => __('Sort', 'e2pdf'),
695 + 'E-Signature' => __('E-Signature', 'e2pdf'),
696 + 'Contact' => __('Contact', 'e2pdf'),
697 + 'Location' => __('Location', 'e2pdf'),
698 + 'Reason' => __('Reason', 'e2pdf'),
699 + 'Placeholder' => __('Placeholder', 'e2pdf'),
700 + 'Length' => __('Length', 'e2pdf'),
701 + 'Comb' => __('Comb', 'e2pdf'),
702 + 'None' => __('None', 'e2pdf'),
703 + 'Highlight' => __('Highlight', 'e2pdf'),
704 + 'Invert' => __('Invert', 'e2pdf'),
705 + 'Outline' => __('Outline', 'e2pdf'),
706 + 'Push' => __('Push', 'e2pdf'),
707 + 'Title' => __('Title', 'e2pdf'),
708 + 'Status' => __('Status', 'e2pdf'),
709 + 'Add Action' => __('Add Action', 'e2pdf'),
710 + 'Shortcodes' => __('Shortcodes', 'e2pdf'),
711 + 'Labels' => __('Labels', 'e2pdf'),
712 + 'Field Values' => __('Field Values', 'e2pdf'),
713 + 'Field Names' => __('Field Names', 'e2pdf'),
714 + 'Field Name' => __('Field Name', 'e2pdf'),
715 + 'As Field Name' => __('As Field Name', 'e2pdf'),
716 + 'Confirm' => __('Confirm', 'e2pdf'),
717 + 'Cancel' => __('Cancel', 'e2pdf'),
718 + 'Hide (If Empty)' => __('Hide (If Empty)', 'e2pdf'),
719 + 'Hide Page (If Empty)' => __('Hide Page (If Empty)', 'e2pdf'),
720 + 'Replace Value' => __('Replace Value', 'e2pdf'),
721 + 'Auto-Close' => __('Auto-Close', 'e2pdf'),
722 + 'New Lines to BR' => __('New Lines to BR', 'e2pdf'),
723 + 'Disable WYSIWYG Editor' => __('Disable WYSIWYG Editor', 'e2pdf'),
724 + 'CSS Priority' => __('CSS Priority', 'e2pdf'),
725 + 'CSS Style' => __('CSS Style', 'e2pdf'),
726 + 'Enabling WYSIWYG can affect "HTML" Source' => __('Enabling WYSIWYG can affect "HTML" Source', 'e2pdf'),
727 + 'Hidden Fields' => __('Hidden Fields', 'e2pdf'),
728 + 'Error Message' => __('Error Message', 'e2pdf'),
729 + 'Redirect URL' => __('Redirect URL', 'e2pdf'),
730 + 'Element' => __('Element', 'e2pdf'),
731 + 'Elements' => __('Elements', 'e2pdf'),
732 + 'Position Top' => __('Position Top', 'e2pdf'),
733 + 'Position Left' => __('Position Left', 'e2pdf'),
734 + 'Padding Top' => __('Padding Top', 'e2pdf'),
735 + 'Padding Bottom' => __('Padding Bottom', 'e2pdf'),
736 + 'Padding Left' => __('Padding Left', 'e2pdf'),
737 + 'Padding Right' => __('Padding Right', 'e2pdf'),
738 + 'Margin Top' => __('Margin Top', 'e2pdf'),
739 + 'Margin Bottom' => __('Margin Bottom', 'e2pdf'),
740 + 'Margin Left' => __('Margin Left', 'e2pdf'),
741 + 'Margin Right' => __('Margin Right', 'e2pdf'),
742 + 'Border Color' => __('Border Color', 'e2pdf'),
743 + 'Border Top' => __('Border Top', 'e2pdf'),
744 + 'Border Bottom' => __('Border Bottom', 'e2pdf'),
745 + 'Border Left' => __('Border Left', 'e2pdf'),
746 + 'Border Right' => __('Border Right', 'e2pdf'),
747 + 'Field' => __('Field', 'e2pdf'),
748 + 'Style' => __('Style', 'e2pdf'),
749 + 'Lock / Hide' => __('Lock / Hide', 'e2pdf'),
750 + 'Font Color' => __('Font Color', 'e2pdf'),
751 + 'Font Size' => __('Font Size', 'e2pdf'),
752 + 'Text Align' => __('Text Align', 'e2pdf'),
753 + 'Rotation' => __('Rotation', 'e2pdf'),
754 + 'Preg Replace Pattern' => __('Preg Replace Pattern', 'e2pdf'),
755 + 'Preg Replace Replacement' => __('Preg Replace Replacement', 'e2pdf'),
756 + 'Preg Match All Pattern' => __('Preg Match All Pattern', 'e2pdf'),
757 + 'Preg Match All Output' => __('Preg Match All Output', 'e2pdf'),
758 + 'Preg Filters' => __('Preg Filters', 'e2pdf'),
759 + 'Char Spacing' => __('Char Spacing', 'e2pdf'),
760 + 'Color' => __('Color', 'e2pdf'),
761 + 'QR Code' => __('QR Code', 'e2pdf'),
762 + 'Barcode' => __('Barcode', 'e2pdf'),
763 + 'Format' => __('Format', 'e2pdf'),
764 + 'Precision' => __('Precision', 'e2pdf'),
765 + 'L - Smallest' => __('L - Smallest', 'e2pdf'),
766 + 'M - Medium' => __('M - Medium', 'e2pdf'),
767 + 'Q - High' => __('Q - High', 'e2pdf'),
768 + 'H - Best' => __('H - Best', 'e2pdf'),
769 + 'All Templates for this Website will be deactivated! Continue?' => __('All Templates for this Website will be deactivated! Continue?', 'e2pdf'),
770 + 'Pre-uploaded PDF will be removed from E2Pdf Template! Continue?' => __('Pre-uploaded PDF will be removed from E2Pdf Template! Continue?', 'e2pdf'),
771 + 'Quiet Zone Size' => __('Quiet Zone Size', 'e2pdf'),
772 + 'Hide Label' => __('Hide Label', 'e2pdf'),
773 + 'Lock' => __('Lock', 'e2pdf'),
774 + 'Unlock' => __('Unlock', 'e2pdf'),
775 + 'Opacity' => __('Opacity', 'e2pdf'),
776 + 'Auto Font Size' => __('Auto Font Size', 'e2pdf'),
777 + 'Max Upload File Size' => __('Max Upload File Size', 'e2pdf'),
778 + 'The bulk export task will be removed! Continue?' => __('The bulk export task will be removed! Continue?', 'e2pdf'),
779 + 'The bulk export task will be stopped! Continue?' => __('The bulk export task will be stopped! Continue?', 'e2pdf'),
780 + 'The bulk export task will be started! Continue?' => __('The bulk export task will be started! Continue?', 'e2pdf'),
781 + 'Search...' => __('Search...', 'e2pdf'),
782 + 'Show Element' => __('Show Element', 'e2pdf'),
783 + 'Hide Element' => __('Hide Element', 'e2pdf'),
784 + 'Show Page' => __('Show Page', 'e2pdf'),
785 + 'Hide Page' => __('Hide Page', 'e2pdf'),
786 + 'Change to' => __('Change to', 'e2pdf'),
787 + 'Merge' => __('Merge', 'e2pdf'),
788 + 'Change Property' => __('Change Property', 'e2pdf'),
789 + 'Format' => __('Format', 'e2pdf'),
790 + 'Insert Before' => __('Insert Before', 'e2pdf'),
791 + 'Insert After' => __('Insert After', 'e2pdf'),
792 + 'Full Replacement' => __('Full Replacement', 'e2pdf'),
793 + 'Search / Replace' => __('Search / Replace', 'e2pdf'),
794 + 'Contains' => __('Contains', 'e2pdf'),
795 + 'Not Contains' => __('Not Contains', 'e2pdf'),
796 + 'In Array' => __('In Array', 'e2pdf'),
797 + 'Array Key Exists' => __('Array Key Exists', 'e2pdf'),
798 + 'Else' => __('Else', 'e2pdf'),
799 + 'Append' => __('Append', 'e2pdf'),
800 + 'Vertical' => __('Vertical', 'e2pdf'),
801 + 'Horizontal' => __('Horizontal', 'e2pdf'),
802 + 'Palette' => __('Palette', 'e2pdf'),
803 + 'Line / Stroke Color' => __('Line / Stroke Color', 'e2pdf'),
804 + 'Graph' => __('Graph', 'e2pdf'),
805 + 'Markers' => __('Markers', 'e2pdf'),
806 + 'Grid' => __('Grid', 'e2pdf'),
807 + 'Axis' => __('Axis', 'e2pdf'),
808 + 'Legend' => __('Legend', 'e2pdf'),
809 + 'Structure' => __('Structure', 'e2pdf'),
810 + 'Space' => __('Space', 'e2pdf'),
811 + 'Position' => __('Position', 'e2pdf'),
812 + 'Vertical Label' => __('Vertical Label', 'e2pdf'),
813 + 'Horizontal Label' => __('Horizontal Label', 'e2pdf'),
814 + 'Label' => __('Label', 'e2pdf'),
815 + 'Axis Overlap' => __('Axis Overlap', 'e2pdf'),
816 + 'Grid Spacing' => __('Grid Spacing', 'e2pdf'),
817 + 'Grid Spacing (V)' => __('Grid Spacing (V)', 'e2pdf'),
818 + 'Grid Spacing (H)' => __('Grid Spacing (H)', 'e2pdf'),
819 + 'Grid Division (V)' => __('Grid Division (V)', 'e2pdf'),
820 + 'Grid Division (H)' => __('Grid Division (H)', 'e2pdf'),
821 + 'Axis Color' => __('Axis Color', 'e2pdf'),
822 + 'Grid Color' => __('Grid Color', 'e2pdf'),
823 + 'Bar Label Color' => __('Bar Label Color', 'e2pdf'),
824 + 'Position (V)' => __('Position (V)', 'e2pdf'),
825 + 'Position (H)' => __('Position (H)', 'e2pdf'),
826 + 'Bar Labels' => __('Bar Labels', 'e2pdf'),
827 + 'Marker' => __('Marker', 'e2pdf'),
828 + 'Grid Subdivision Color' => __('Grid Subdivision Color', 'e2pdf'),
829 + 'Sub Divisions' => __('Sub Divisions', 'e2pdf'),
830 + 'Axis (V)' => __('Axis (V)', 'e2pdf'),
831 + 'Axis (H)' => __('Axis (H)', 'e2pdf'),
832 + 'Text' => __('Text', 'e2pdf'),
833 + 'Enable' => __('Enable', 'e2pdf'),
834 + 'Min' => __('Min', 'e2pdf'),
835 + 'Max' => __('Max', 'e2pdf'),
836 + 'Fill Under' => __('Fill Under', 'e2pdf'),
837 + 'Reverse' => __('Reverse', 'e2pdf'),
838 + 'Sort' => __('Sort', 'e2pdf'),
839 + 'Percentage' => __('Percentage', 'e2pdf'),
840 + 'Legend Text Side' => __('Legend Text Side', 'e2pdf'),
841 + 'Columns' => __('Columns', 'e2pdf'),
842 + 'Padding (X)' => __('Padding (X)', 'e2pdf'),
843 + 'Padding (Y)' => __('Padding (Y)', 'e2pdf'),
844 + 'Stroke Color' => __('Stroke Color', 'e2pdf'),
845 + 'Stroke Width' => __('Stroke Width', 'e2pdf'),
846 + 'Bubble Scale' => __('Bubble Scale', 'e2pdf'),
847 + 'Units' => __('Units', 'e2pdf'),
848 + 'Increment' => __('Increment', 'e2pdf'),
849 + 'Stack Group' => __('Stack Group', 'e2pdf'),
850 + 'Line Dataset' => __('Line Dataset', 'e2pdf'),
851 + 'Project Angle' => __('Project Angle', 'e2pdf'),
852 + 'Legends' => __('Legends', 'e2pdf'),
853 + 'Colors' => __('Colors', 'e2pdf'),
854 + 'Line Curve' => __('Line Curve', 'e2pdf'),
855 + 'Margin (H)' => __('Margin (H)', 'e2pdf'),
856 + 'Margin (V)' => __('Margin (V)', 'e2pdf'),
857 + 'Units Label' => __('Units Label', 'e2pdf'),
858 + 'Dynamic Line / Stroke Color' => __('Dynamic Line / Stroke Color', 'e2pdf'),
859 + 'Dynamic Marker Color' => __('Dynamic Marker Color', 'e2pdf'),
860 + 'Inner' => __('Inner', 'e2pdf'),
861 + 'Outer' => __('Outer', 'e2pdf'),
862 + 'Align' => __('Align', 'e2pdf'),
863 + 'Offset (X)' => __('Offset (X)', 'e2pdf'),
864 + 'Offset (Y)' => __('Offset (Y)', 'e2pdf'),
865 + 'Link URL' => __('Link URL', 'e2pdf'),
866 + 'Link Type' => __('Link Type', 'e2pdf'),
867 + 'Link Label' => __('Link Label', 'e2pdf'),
868 + 'Url' => __('Url', 'e2pdf'),
869 + 'Attachment' => __('Attachment', 'e2pdf'),
870 + 'Image' => __('Image', 'e2pdf'),
871 + 'Media Library' => __('Media Library', 'e2pdf'),
872 + 'Underline' => __('Underline', 'e2pdf'),
873 + 'Page Number' => __('Page Number', 'e2pdf'),
874 + 'Adjust Page Number' => __('Adjust Page Number', 'e2pdf'),
875 + 'Adjust Page Total' => __('Adjust Page Total', 'e2pdf'),
876 + 'Preload Images' => __('Preload Images', 'e2pdf'),
877 + 'Hooks' => __('Hooks', 'e2pdf'),
878 + 'Display PDF download at' => __('Display PDF download at', 'e2pdf'),
879 + 'Optimization' => __('Optimization', 'e2pdf'),
880 + 'Inherit' => __('Inherit', 'e2pdf'),
881 + 'Not Optimized' => __('Not Optimized', 'e2pdf'),
882 + 'Low Quality' => __('Low Quality', 'e2pdf'),
883 + 'Basic Quality' => __('Basic Quality', 'e2pdf'),
884 + 'Good Quality' => __('Good Quality', 'e2pdf'),
885 + 'Best Quality' => __('Best Quality', 'e2pdf'),
886 + 'Ultra Quality' => __('Ultra Quality', 'e2pdf'),
887 + 'Error: Empty "if" and "value" detected in action condition' => __('Error: Empty "if" and "value" detected in action condition', 'e2pdf'),
888 + 'No Read-Only' => __('No Read-Only', 'e2pdf'),
889 + 'No Border' => __('No Border', 'e2pdf'),
890 + 'Quick Props' => __('Quick Props', 'e2pdf'),
891 + 'The Template ID used in the backup will be overwritten. Continue?' => __('The Template ID used in the backup will be overwritten. Continue?', 'e2pdf'),
892 + /* translators: %d: Template ID */
893 + 'This will overwrite the Template ID "%d". Continue?' => __('This will overwrite the Template ID "%d". Continue?', 'e2pdf'),
894 + 'Filter' => __('Filter...', 'e2pdf'),
895 + 'Not linked' => __('Not linked', 'e2pdf'),
896 + 'Inner Radius' => __('Inner Radius', 'e2pdf'),
897 + 'Start Angle' => __('Start Angle', 'e2pdf'),
898 + 'Key Labels' => __('Key Labels', 'e2pdf'),
899 + 'Amount Labels' => __('Amount Labels', 'e2pdf'),
900 + 'Percent Labels' => __('Percent Labels', 'e2pdf'),
901 + ];
902 + break;
903 + case 'params':
904 + $nonces = [];
905 + $caps = $this->helper->get_caps();
906 + foreach ($caps as $cap) {
907 + $nonces[$cap['cap']] = current_user_can('manage_options') || current_user_can($cap['cap']) ? wp_create_nonce($cap['cap']) : '';
908 + }
909 + $controller_e2pdf_templates = new Controller_E2pdf_Templates();
910 + $model_e2pdf_extension = new Model_E2pdf_Extension();
911 + $data = [
912 + 'nonce' => $nonces,
913 + 'plugins_url' => plugins_url('', $this->helper->get('plugin_file_path')),
914 + 'upload_url' => $this->helper->get_upload_url(),
915 + 'license_type' => $this->helper->get('license')->get('type'),
916 + 'upload_max_filesize' => $this->helper->load('files')->get_upload_max_filesize(),
917 + 'extensions' => $model_e2pdf_extension->extensions(),
918 + 'template_sizes' => $controller_e2pdf_templates->get_sizes_list(),
919 + 'css_styles' => array_keys($this->helper->load('properties')->css_styles()),
920 + 'undo_limit' => get_option('e2pdf_undo_limit', '20'),
921 + 'extension_hooks' => apply_filters('e2pdf_extension_hooks', []),
922 + ];
923 + break;
924 + default:
925 + break;
926 + }
927 + return $data;
421 928 }
422 929
423 - /**
424 - * Check requirenments before activation
425 - */
930 + // requirenments
426 931 public function requirenments() {
427 - if (version_compare(PHP_VERSION, '5.3.3', '<')) {
932 + if (version_compare(PHP_VERSION, '5.4', '<')) {
428 933 throw new Exception(
429 - sprintf(__("E2Pdf requires PHP version 5.3.3 or later. Your PHP version is %s", 'e2pdf'), PHP_VERSION)
430 - );
934 + /* translators: %s: PHP Version */
935 + sprintf(__('E2Pdf requires PHP version 5.4 or later. Your PHP version is %s', 'e2pdf'), PHP_VERSION)
936 + );
431 937 }
938 +
939 + if (!function_exists('curl_version')) {
940 + throw new Exception(
941 + /* translators: %s: PHP Extension */
942 + sprintf(__('The PHP %s extension is required', 'e2pdf'), 'CURL')
943 + );
944 + }
432 945 }
433 946
434 - public function admin_functions() {
947 + // current_screen action
948 + public function action_current_screen() {
435 949 $current_screen = get_current_screen();
436 - if (!in_array($current_screen->id, $this->e2pdf_admin_pages)) {
950 + if (!$current_screen || !in_array($current_screen->id, $this->e2pdf_admin_pages, false)) {
437 951 return;
438 952 }
439 - $this->helper->set('license', new Model_E2pdf_License());
953 +
954 + // phpcs:ignore WordPress.Security.NonceVerification.Recommended
955 + if ($current_screen->id == 'toplevel_page_e2pdf' || ($current_screen->id == 'e2pdf_page_e2pdf-templates' && isset($_GET['action']) && $_GET['action'] == 'edit')) {
956 + add_filter('admin_body_class', [&$this, 'filter_admin_body_loading_class']);
957 + }
958 +
959 + // phpcs:ignore WordPress.Security.NonceVerification.Recommended
960 + if ($current_screen->id == 'e2pdf_page_e2pdf-templates' && !isset($_GET['action'])) {
961 + $screen_option = [
962 + 'label' => __('Templates per page', 'e2pdf') . ':',
963 + 'default' => (int) get_option('e2pdf_templates_screen_per_page', '20'),
964 + 'option' => 'e2pdf_templates_screen_per_page',
965 + ];
966 + add_screen_option('per_page', $screen_option);
967 + }
968 + $this->helper->load('license')->load();
440 969 }
441 970
442 - public function wp_loaded() {
443 - if (!get_transient('e2pdf_adobesign_refresh_token')) {
971 + // wp_loaded action
972 + public function action_wp_loaded() {
973 + if (get_option('e2pdf_adobesign_refresh_token') && !get_transient('e2pdf_adobesign_refresh_token')) {
444 974 new Model_E2pdf_AdobeSign();
445 975 }
446 976 }
447 977
448 - /**
449 - * On plugin activation
450 - */
451 - public function activate() {
978 + // activate website wrapper
979 + public function activate($network = false) {
452 980 global $wpdb;
453 981
454 982 try {
455 983 $this->requirenments();
456 - if (is_multisite() && is_super_admin() && is_main_site()) {
457 - foreach ($wpdb->get_col("SELECT blog_id FROM $wpdb->blogs") as $blog_id) {
984 + if (is_multisite() && $network) {
985 + foreach ($wpdb->get_col('SELECT blog_id FROM `' . $wpdb->blogs . '`') as $blog_id) {
458 986 $this->activate_site($blog_id);
459 987 }
460 988 } else {
461 989 $this->activate_site();
462 990 }
463 - } catch (Exception $e) {
464 - echo "<div style='line-height: 70px;'>";
465 - echo $e->getMessage();
466 - echo "</div>";
991 + } catch (Exception $ex) {
992 + echo '<div style="line-height: 70px;">';
993 + echo $ex->getMessage();
994 + echo '</div>';
467 995 exit();
468 996 }
469 997 }
470 998
471 - public function activate_new_network($blog_id, $user_id, $domain, $path, $site_id, $meta) {
999 + // deactivate website wrapper
1000 + public function deactivate($network = false) {
1001 + global $wpdb;
1002 + if (is_multisite() && $network) {
1003 + foreach ($wpdb->get_col('SELECT blog_id FROM `' . $wpdb->blogs . '`') as $blog_id) {
1004 + $this->activate_site($blog_id);
1005 + }
1006 + } else {
1007 + $this->deactivate_site();
1008 + }
1009 + }
1010 +
1011 + // wpmu_new_blog action
1012 + public function action_wpmu_new_blog($blog_id) {
472 1013 if (is_plugin_active_for_network('e2pdf/e2pdf.php')) {
473 1014 $this->activate_site($blog_id);
474 1015 }
475 1016 }
476 1017
1018 + // activate site
477 1019 public function activate_site($blog_id = false) {
478 1020 global $wpdb;
479 1021
480 1022 $db_prefix = $wpdb->prefix;
481 1023
482 - $wp_upload_dir = wp_upload_dir();
483 -
484 1024 if ($blog_id) {
485 1025 switch_to_blog($blog_id);
486 - $wp_upload_dir = wp_upload_dir();
487 1026 $db_prefix = $wpdb->get_blog_prefix($blog_id);
488 1027 if (!is_main_site($blog_id)) {
489 - $this->helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
1028 + $this->helper->set('upload_dir', $this->helper->get_wp_upload_dir('basedir') . '/e2pdf/');
490 1029 $this->helper->set('tmp_dir', $this->helper->get('upload_dir') . 'tmp/');
1030 + $this->helper->set('cache_dir', $this->helper->get('upload_dir') . 'tmp/cache/');
491 1031 $this->helper->set('pdf_dir', $this->helper->get('upload_dir') . 'pdf/');
492 1032 $this->helper->set('fonts_dir', $this->helper->get('upload_dir') . 'fonts/');
493 1033 $this->helper->set('tpl_dir', $this->helper->get('upload_dir') . 'tpl/');
1034 + $this->helper->set('viewer_dir', $this->helper->get('upload_dir') . 'viewer/');
1035 + $this->helper->set('bulk_dir', $this->helper->get('upload_dir') . 'bulks/');
1036 + $this->helper->set('wpcf7_dir', $this->helper->get('upload_dir') . 'wpcf7/');
494 1037 }
495 1038 }
496 1039
497 - $dirs = array(
1040 + $dirs = [
498 1041 $this->helper->get('upload_dir'),
499 1042 $this->helper->get('tmp_dir'),
1043 + $this->helper->get('cache_dir'),
500 1044 $this->helper->get('pdf_dir'),
501 1045 $this->helper->get('fonts_dir'),
502 1046 $this->helper->get('tpl_dir'),
503 - );
1047 + $this->helper->get('viewer_dir'),
1048 + $this->helper->get('bulk_dir'),
1049 + $this->helper->get('wpcf7_dir'),
1050 + ];
504 1051
505 1052 if (!is_main_site($blog_id)) {
506 - array_unshift($dirs, $wp_upload_dir['basedir']);
1053 + array_unshift($dirs, $this->helper->get_wp_upload_dir('basedir'));
507 1054 }
508 1055
509 1056 foreach ($dirs as $dir) {
510 1057 if ($this->helper->create_dir($dir)) {
511 1058 if ($dir == $this->helper->get('fonts_dir')) {
512 - copy($this->helper->get('plugin_dir') . "data/fonts/NotoSans-Regular.ttf", $this->helper->get('fonts_dir') . "NotoSans-Regular.ttf");
1059 + if (!file_exists($this->helper->get('fonts_dir') . 'NotoSans-Regular.ttf') || version_compare(get_option('e2pdf_version'), '1.10.05', '<')) {
1060 + copy($this->helper->get('plugin_dir') . 'data/fonts/NotoSans-Regular.ttf', $this->helper->get('fonts_dir') . 'NotoSans-Regular.ttf');
1061 + }
1062 + } elseif ($dir == $this->helper->get('viewer_dir')) {
1063 + if (!file_exists($this->helper->get('viewer_dir') . 'style.css')) {
1064 + $this->helper->create_file($this->helper->get('viewer_dir') . 'style.css');
1065 + }
1066 + } elseif ($dir == $this->helper->get('bulk_dir') || $dir == $this->helper->get('cache_dir') || $dir == $this->helper->get('tmp_dir')) {
1067 + $htaccess = $dir . '.htaccess';
1068 + if (!file_exists($htaccess)) {
1069 + $this->helper->create_file($htaccess, 'DENY FROM ALL');
1070 + }
513 1071 }
514 1072 } else {
515 1073 throw new Exception(
516 - sprintf(__("Can't create folder %s", 'e2pdf'), $dir)
517 - );
1074 + /* translators: %s: directory */
1075 + sprintf(__("Can't create folder %s", 'e2pdf'), $dir)
1076 + );
518 1077 }
519 1078 }
520 1079
521 - $options = Model_E2pdf_Options::get_options();
522 - foreach ($options as $option_key => $option_value) {
523 - if (get_option($option_key) === false) {
524 - add_option($option_key, $option_value);
1080 + $this->helper->load('db')->db_init($db_prefix);
1081 +
1082 + if (get_option('e2pdf_version') === false) {
1083 + update_option('e2pdf_download_loader', '1');
1084 + update_option('e2pdf_api_protocol', '1');
1085 + }
1086 +
1087 + if (class_exists('TRP_Translate_Press')) {
1088 + if (get_option('e2pdf_pdf_translation') === false && get_option('e2pdf_translatepress_translation') !== false) {
1089 + update_option('e2pdf_pdf_translation', get_option('e2pdf_translatepress_translation'));
525 1090 }
526 1091 }
527 1092
528 - $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_templates` (
529 - `ID` int(11) NOT NULL AUTO_INCREMENT,
530 - `uid` varchar(255) NOT NULL,
531 - `pdf` text,
532 - `title` text,
533 - `created_at` datetime NOT NULL,
534 - `updated_at` datetime NOT NULL,
535 - `flatten` enum('0','1','2') NOT NULL DEFAULT '0',
536 - `compression` int(1) NOT NULL DEFAULT '-1',
537 - `appearance` enum('0','1') NOT NULL DEFAULT '0',
538 - `width` int(11) NOT NULL DEFAULT '0',
539 - `height` int(11) NOT NULL DEFAULT '0',
540 - `extension` varchar(255) NOT NULL,
541 - `item` varchar(255) NOT NULL,
542 - `format` enum('pdf') NOT NULL DEFAULT 'pdf',
543 - `dataset_title` text NOT NULL,
544 - `button_title` text NOT NULL,
545 - `inline` enum('0','1') NOT NULL DEFAULT '0',
546 - `auto` enum('0','1') NOT NULL DEFAULT '0',
547 - `name` text NOT NULL,
548 - `password` text NOT NULL,
549 - `font` varchar(255) NOT NULL,
550 - `font_size` varchar(255) NOT NULL,
551 - `font_color` varchar(255) NOT NULL,
552 - `line_height` varchar(255) NOT NULL,
553 - `fonts` longtext NOT NULL,
554 - `trash` enum('0','1') NOT NULL DEFAULT '0',
555 - `activated` enum('0','1') NOT NULL DEFAULT '0',
556 - `locked` enum('0','1') NOT NULL DEFAULT '0',
557 - `author` int(11) NOT NULL,
558 - PRIMARY KEY (`ID`)
559 - ) CHARSET=utf8 COLLATE=utf8_general_ci");
1093 + if (get_option('e2pdf_pdf_translation_check') === false) {
1094 + if (get_option('e2pdf_pdf_translation') === false && get_option('e2pdf_version') !== false && function_exists('icl_register_string')) {
1095 + update_option('e2pdf_pdf_translation', '0');
1096 + }
1097 + update_option('e2pdf_pdf_translation_check', '1');
1098 + }
560 1099
561 - if (version_compare(get_option('e2pdf_version'), '0.01.54', '<')) {
562 - $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` DROP COLUMN `blank`");
1100 + if (get_option('e2pdf_version') !== $this->helper->get('version')) {
1101 + update_option('e2pdf_version', $this->helper->get('version'));
563 1102 }
564 1103
565 - $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_entries` (
566 - `ID` int(11) NOT NULL AUTO_INCREMENT,
567 - `uid` varchar(255) NOT NULL,
568 - `entry` longtext,
569 - `pdf_num` int(11) NOT NULL DEFAULT '0',
570 - PRIMARY KEY (`ID`)
571 - ) CHARSET=utf8 COLLATE=utf8_general_ci");
1104 + if (get_option('e2pdf_nonce_key') === false) {
1105 + if (function_exists('wp_generate_password')) {
1106 + update_option('e2pdf_nonce_key', wp_generate_password('64'));
1107 + }
1108 + }
572 1109
573 - if (version_compare(get_option('e2pdf_version'), '0.01.33', '<')) {
574 - $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_entries` ADD COLUMN `pdf_num` INT(11) NOT NULL DEFAULT '0'");
1110 + if (get_option('e2pdf_wc_invoice_template_id') !== false) {
1111 + update_option('e2pdf_wc_my_orders_actions_template_id', get_option('e2pdf_wc_invoice_template_id'));
575 1112 }
1113 + if (get_option('e2pdf_wc_invoice_statuses') !== false) {
1114 + update_option('e2pdf_wc_my_orders_actions_template_id_status', get_option('e2pdf_wc_invoice_statuses'));
1115 + }
1116 + if (get_option('e2pdf_wc_checkout_template_id_order') !== false) {
1117 + update_option('e2pdf_wc_checkout_template_id_priority', get_option('e2pdf_wc_checkout_template_id_order'));
1118 + }
1119 + if (get_option('e2pdf_wc_cart_template_id_order') !== false) {
1120 + update_option('e2pdf_wc_cart_template_id_priority', get_option('e2pdf_wc_cart_template_id_order'));
1121 + }
1122 + if (get_option('e2pdf_version') && version_compare(get_option('e2pdf_version'), '1.16.14', '<') && get_option('e2pdf_wc_cart_template_id') && get_option('e2pdf_wc_cart_template_id_priority') === false) {
1123 + update_option('e2pdf_wc_cart_template_id_priority', '99');
1124 + }
576 1125
577 - $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_datasets` (
578 - `ID` int(11) NOT NULL AUTO_INCREMENT,
579 - `extension` varchar(255) NOT NULL,
580 - `item` varchar(255) NOT NULL,
581 - `entry` longtext,
582 - PRIMARY KEY (`ID`)
583 - ) CHARSET=utf8 COLLATE=utf8_general_ci");
1126 + if (get_option('e2pdf_zapier_api_key') === false) {
1127 + if (function_exists('wp_generate_password')) {
1128 + update_option('e2pdf_zapier_api_key', strtoupper(wordwrap(wp_generate_password('24', false), 4, '-', true)));
1129 + }
1130 + }
584 1131
585 - $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_pages` (
586 - `page_id` int(11) NOT NULL DEFAULT '0',
587 - `template_id` int(11) NOT NULL DEFAULT '0',
588 - `properties` longtext NOT NULL,
589 - `actions` longtext NOT NULL
590 - ) CHARSET=utf8 COLLATE=utf8_general_ci");
1132 + if (get_option('e2pdf_adobe_api_key') === false) {
1133 + if (function_exists('wp_generate_password')) {
1134 + update_option('e2pdf_adobe_api_key', strtoupper(wordwrap(wp_generate_password('24', false), 4, '-', true)));
1135 + }
1136 + }
591 1137
592 - if (version_compare(get_option('e2pdf_version'), '0.01.63', '<')) {
593 - $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_pages` ADD COLUMN `actions` longtext NOT NULL");
1138 + if (get_option('e2pdf_gdrive_api_key') === false) {
1139 + if (function_exists('wp_generate_password')) {
1140 + update_option('e2pdf_gdrive_api_key', strtoupper(wordwrap(wp_generate_password('24', false), 4, '-', true)));
1141 + }
594 1142 }
595 1143
596 - if (version_compare(get_option('e2pdf_version'), '1.04.00', '<')) {
597 - $wpdb->query("UPDATE `" . $db_prefix . "e2pdf_elements` ee INNER JOIN `" . $db_prefix . "e2pdf_pages` ep ON ee.page_id = ep.ID set ee.page_id = ep.page_id ");
598 - $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_pages` DROP COLUMN `ID`");
1144 + if (get_option('e2pdf_adobe_api_version') === false) {
1145 + if (get_option('e2pdf_adobesign_client_id', '') && get_option('e2pdf_adobesign_client_secret', '')) {
1146 + update_option('e2pdf_adobe_api_version', '0');
1147 + } else {
1148 + update_option('e2pdf_adobe_api_version', '1');
1149 + }
599 1150 }
600 1151
601 - $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_elements` (
602 - `page_id` int(11) NOT NULL DEFAULT '0',
603 - `template_id` int(11) NOT NULL DEFAULT '0',
604 - `element_id` int(11) NOT NULL DEFAULT '0',
605 - `type` varchar(255) NOT NULL,
606 - `top` int(11) NOT NULL DEFAULT '0',
607 - `left` int(11) NOT NULL DEFAULT '0',
608 - `width` int(11) NOT NULL DEFAULT '0',
609 - `height` int(11) NOT NULL DEFAULT '0',
610 - `value` longtext NOT NULL,
611 - `properties` longtext NOT NULL,
612 - `actions` longtext NOT NULL
613 - ) CHARSET=utf8 COLLATE=utf8_general_ci");
1152 + if ((int) get_option('e2pdf_templates_screen_per_page', '20') <= 0) {
1153 + update_option('e2pdf_templates_screen_per_page', '20');
1154 + }
614 1155
615 - if (version_compare(get_option('e2pdf_version'), '0.01.63', '<')) {
616 - $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` ADD COLUMN `actions` longtext NOT NULL");
617 - }
1156 + delete_option('e2pdf_developer');
1157 + delete_option('e2pdf_developer_ips');
1158 + delete_option('e2pdf_translatepress_translation');
1159 + delete_option('e2pdf_wc_invoice_template_id');
1160 + delete_option('e2pdf_wc_invoice_statuses');
1161 + delete_option('e2pdf_wc_checkout_template_id_order');
1162 + delete_option('e2pdf_wc_cart_template_id_order');
1163 + delete_option('e2pdf_hash_timeout');
618 1164
619 - if (version_compare(get_option('e2pdf_version'), '1.04.00', '<')) {
620 - $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` DROP COLUMN `ID`");
1165 + $license = $this->helper->load('license');
1166 + if ($license && method_exists($license, 'activate')) {
1167 + $license->activate();
621 1168 }
622 1169
623 - if (get_option('e2pdf_version') !== $this->helper->get('version')) {
624 - update_option('e2pdf_version', $this->helper->get('version'));
1170 + wp_clear_scheduled_hook('e2pdf_cronjob');
1171 + if (!wp_next_scheduled('e2pdf_cache_tmp_cron')) {
1172 + wp_schedule_event(time(), 'daily', 'e2pdf_cache_tmp_cron');
625 1173 }
626 1174
627 - $model_e2pdf_api = new Model_E2pdf_Api();
628 - $model_e2pdf_api->set(array(
629 - 'action' => 'common/activate'
630 - ));
631 - $model_e2pdf_api->request();
632 -
633 - $model_e2pdf_license = new Model_E2pdf_License();
634 -
635 1175 if ($blog_id) {
636 1176 restore_current_blog();
637 - $wp_upload_dir = wp_upload_dir();
638 - $this->helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
1177 + $this->helper->set('upload_dir', $this->helper->get_wp_upload_dir('basedir') . '/e2pdf/');
639 1178 $this->helper->set('tmp_dir', $this->helper->get('upload_dir') . 'tmp/');
1179 + $this->helper->set('cache_dir', $this->helper->get('upload_dir') . 'tmp/cache/');
640 1180 $this->helper->set('pdf_dir', $this->helper->get('upload_dir') . 'pdf/');
641 1181 $this->helper->set('fonts_dir', $this->helper->get('upload_dir') . 'fonts/');
642 1182 $this->helper->set('tpl_dir', $this->helper->get('upload_dir') . 'tpl/');
1183 + $this->helper->set('viewer_dir', $this->helper->get('upload_dir') . 'viewer/');
1184 + $this->helper->set('bulk_dir', $this->helper->get('upload_dir') . 'bulks/');
1185 + $this->helper->set('wpcf7_dir', $this->helper->get('upload_dir') . 'wpcf7/');
643 1186 }
644 1187 }
645 1188
646 - /**
647 - * On plugin deactivation
648 - */
649 - public function deactivate() {
650 -
1189 + // deactivate site
1190 + public function deactivate_site($blog_id = false) {
1191 + if ($blog_id) {
1192 + switch_to_blog($blog_id);
1193 + }
1194 + wp_clear_scheduled_hook('e2pdf_bulk_export_cron');
1195 + wp_clear_scheduled_hook('e2pdf_cache_pdfs_cron');
1196 + wp_clear_scheduled_hook('e2pdf_cache_tmp_cron');
1197 + if ($blog_id) {
1198 + restore_current_blog();
1199 + }
651 1200 }
652 1201
653 - /**
654 - * On plugin uninstall
655 - */
1202 + // uninstall
656 1203 public static function uninstall() {
657 1204 global $wpdb;
658 1205
659 - if (is_multisite() && is_super_admin() && is_main_site()) {
660 - foreach ($wpdb->get_col("SELECT blog_id FROM $wpdb->blogs") as $blog_id) {
1206 + if (is_multisite()) {
1207 + foreach ($wpdb->get_col('SELECT blog_id FROM `' . $wpdb->blogs . '`') as $blog_id) {
661 1208 self::uninstall_site($blog_id);
662 1209 }
663 1210 } else {
664 1211 self::uninstall_site();
@@ -664,53 +1211,68 @@
664 1211 self::uninstall_site();
665 1212 }
666 1213 }
667 1214
1215 + // uninstall site
668 1216 public static function uninstall_site($blog_id = false) {
669 1217 global $wpdb;
670 1218
671 1219 $db_prefix = $wpdb->prefix;
1220 + $helper = Helper_E2pdf_Helper::instance();
672 1221
673 - $wp_upload_dir = wp_upload_dir();
674 -
675 - $helper_e2pdf_helper = Helper_E2pdf_Helper::instance();
676 -
677 1222 if ($blog_id) {
678 1223 switch_to_blog($blog_id);
679 - $wp_upload_dir = wp_upload_dir();
680 1224 $db_prefix = $wpdb->get_blog_prefix($blog_id);
681 -
682 1225 if (!is_main_site($blog_id)) {
683 - $helper_e2pdf_helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
1226 + $helper->set('upload_dir', $helper->get_wp_upload_dir('basedir') . '/e2pdf/');
684 1227 }
685 1228 }
686 1229
1230 + wp_clear_scheduled_hook('e2pdf_bulk_export_cron');
1231 + wp_clear_scheduled_hook('e2pdf_cache_pdfs_cron');
1232 + wp_clear_scheduled_hook('e2pdf_cache_tmp_cron');
687 1233
688 1234 $model_e2pdf_api = new Model_E2pdf_Api();
689 - $model_e2pdf_api->set(array(
690 - 'action' => 'common/uninstall'
691 - ));
1235 + $model_e2pdf_api->set(
1236 + [
1237 + 'action' => 'common/uninstall',
1238 + ]
1239 + );
692 1240 $model_e2pdf_api->request();
693 1241
694 1242 $options = Model_E2pdf_Options::get_options();
695 1243 foreach ($options as $option_key => $option_value) {
696 - delete_option($option_key, $option_value);
1244 + delete_option($option_key);
697 1245 }
1246 + delete_option('e2pdf_adobe_api_key');
1247 + delete_option('e2pdf_adobe_api_version');
1248 + delete_option('e2pdf_cache_tmp_ttl');
1249 + delete_option('e2pdf_pdf_translation_check');
698 1250
699 - $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_templates' . '`');
700 - $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_entries' . '`');
701 - $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_datasets' . '`');
702 - $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_pages' . '`');
703 - $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_elements' . '`');
1251 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.PreparedSQL.NotPrepared
1252 + $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_templates`');
1253 + $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_entries`');
1254 + $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_datasets`');
1255 + $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_pages`');
1256 + $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_elements`');
1257 + $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_revisions`');
1258 + // phpcs:enable
1259 + // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
1260 + $wpdb->query($wpdb->prepare('DELETE FROM `' . $db_prefix . 'options` WHERE option_name LIKE %s OR option_name LIKE %s', '_transient_e2pdf_%', '_transient_timeout_e2pdf_%'));
704 1261
705 - $wpdb->query($wpdb->prepare('DELETE FROM `' . $db_prefix . 'options' . '` WHERE option_name LIKE %s OR option_name LIKE %s', '_transient_e2pdf_%', '_transient_e2pdf_%'));
1262 + $helper->delete_dir($helper->get('upload_dir'));
706 1263
707 - $helper_e2pdf_helper->delete_dir($helper_e2pdf_helper->get('upload_dir'));
1264 + $caps = $helper->get_caps();
1265 + $roles = wp_roles()->get_names();
1266 + foreach ($roles as $role_key => $sub_role) {
1267 + $role = get_role($role_key);
1268 + foreach ($caps as $cap_key => $cap) {
1269 + $role->remove_cap($cap_key);
1270 + }
1271 + }
708 1272
709 1273 if ($blog_id) {
710 1274 restore_current_blog();
711 - $wp_upload_dir = wp_upload_dir();
712 - $helper_e2pdf_helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
1275 + $helper->set('upload_dir', $helper->get_wp_upload_dir('basedir') . '/e2pdf/');
713 1276 }
714 1277 }
715 -
716 1278 }