PluginProbe
E2Pdf – Export Pdf Tool for WordPress / 1.32.53
E2Pdf – Export Pdf Tool for WordPress v1.32.53
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 1.06.02 1.07.11 All 74 releases
← All changes | classes/model/e2pdf-loader.php +1029 -548 1.00.13 → 1.32.53 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,160 +32,242 @@
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'));
90 - if (get_site_option('e2pdf_force_update')) {
91 - add_action('upgrader_process_complete', array(&$this, 'after_update'), 10, 2);
92 - }
93 - } else {
94 - add_action('wp_enqueue_scripts', array(&$this, 'frontend_js'));
95 - add_action('wp', array(Helper_E2pdf_View::instance(), 'render_frontend_page'));
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']);
96 77 }
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']);
97 91 }
98 92
99 - public function load_filters() {
100 - add_filter('site_transient_update_plugins', array(&$this, 'check_update'));
101 - }
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);
102 101
103 - public function update_info($obj, $action, $args) {
104 - if ($action !== 'plugin_information') {
105 - return false;
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);
106 133 }
107 134
108 - if ($this->helper->get('slug') !== $args->slug) {
109 - return $obj;
110 - }
135 + if (get_option('e2pdf_mod_rewrite', '0')) {
136 + global $wp_rewrite;
111 137
112 - $model_e2pdf_api = new Model_E2pdf_Api();
113 - $model_e2pdf_api->set(array(
114 - 'action' => 'update/info',
115 - ));
116 - $request = $model_e2pdf_api->request();
138 + $rewrite_url = rtrim(str_replace('%uid%', '([A-Za-z0-9]+)', get_option('e2pdf_mod_rewrite_url', 'e2pdf/%uid%/')), '/');
117 139
118 - if (isset($request['version'])) {
119 - $obj = new stdClass();
120 - $obj->name = $request['name'];
121 - $obj->slug = $this->helper->get('slug');
122 - $obj->version = $request['version'];
123 - $obj->tested = $request['tested'];
124 - $obj->requires = $request['requires'];
125 - $obj->author = $request['author'];
126 - $obj->download_link = $request['package'];
127 - $obj->trunk = $request['package'];
128 - $obj->last_updated = $request['last_updated'];
129 - $obj->sections = $request['sections'];
130 - $obj->banners = $request['banners'];
131 - $obj->contributors = $request['contributors'];
132 - return $obj;
133 - }
134 - return $obj;
135 - }
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);
136 147
137 - public function check_update($transient) {
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');
138 153
139 - if (empty($transient->checked)) {
140 - return $transient;
141 - }
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');
142 159
143 - if (isset($transient->response[$this->helper->get('plugin_slug')])) {
144 - $update_info = $transient->response[$this->helper->get('plugin_slug')];
145 - if (isset($update_info->new_version) && version_compare($this->helper->get('version'), $update_info->new_version, '<')) {
146 - $model_e2pdf_api = new Model_E2pdf_Api();
147 - $model_e2pdf_api->set(array(
148 - 'action' => 'update/info',
149 - ));
150 - $request = $model_e2pdf_api->request();
151 - if (isset($request['package'])) {
152 - $transient->response[$this->helper->get('plugin_slug')]->package = $request['package'];
153 - } else {
154 - unset($transient->response[$this->helper->get('plugin_slug')]);
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 + }
155 201 }
156 202 }
157 - } elseif (get_site_option('e2pdf_force_update')) {
158 - $model_e2pdf_api = new Model_E2pdf_Api();
159 - $model_e2pdf_api->set(array(
160 - 'action' => 'update/info',
161 - ));
162 - $request = $model_e2pdf_api->request();
163 - if (isset($request['version'])) {
164 - $obj = new stdClass();
165 - $obj->slug = $this->helper->get('slug');
166 - $obj->new_version = $request['version'];
167 - $obj->url = $request['url'];
168 - $obj->plugin = $this->helper->get('plugin_slug');
169 - $obj->package = $request['package'];
170 - $obj->tested = $request['tested'];
171 - $obj->icons = $request['icons'];
172 - $transient->response[$this->helper->get('plugin_slug')] = $obj;
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 + }
173 210 }
174 211 }
212 + }
175 213
176 - return $transient;
214 + // bulk export cron
215 + public function cronjob() { // phpcs:ignore Squiz.WhiteSpace.SuperfluousWhitespace.EndLine
177 216 }
178 217
179 - public function after_update($upgrader_object, $options) {
180 - if ($options['action'] == 'update' && $options['type'] == 'plugin' && isset($options['plugins'])) {
181 - foreach ($options['plugins'] as $plugin) {
182 - if ($plugin == $this->helper->get('plugin_slug')) {
183 - update_site_option('e2pdf_force_update', false);
184 - }
185 - }
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
229 + public function load_filters() {
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']);
186 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);
187 257 }
188 258
189 - public function after_load() {
259 + // plugins loaded action
260 + public function action_plugins_loaded() {
190 261 if (get_option('e2pdf_version') !== $this->helper->get('version')) {
191 262 $this->activate();
192 263 }
193 264 }
194 265
195 - /**
196 - * Load extensions and its action/filters
197 - */
266 + // load extensions
198 267 public function load_extensions() {
199 -
200 268 $model_e2pdf_extension = new Model_E2pdf_Extension();
201 - $extensions = $model_e2pdf_extension->get_extensions_list();
269 + $extensions = $model_e2pdf_extension->extensions();
202 270 if (!empty($extensions)) {
203 271 foreach ($extensions as $extension => $extension_name) {
204 272 $model_e2pdf_extension->load($extension);
205 273 $model_e2pdf_extension->load_actions();
@@ -208,537 +276,935 @@
208 276 }
209 277 }
210 278 }
211 279
212 - /**
213 - * Load filters
214 - */
280 + // load shortcodes
215 281 public function load_shortcodes() {
216 - add_shortcode('e2pdf-download', array(new Model_E2pdf_Shortcode(), 'e2pdf_download'));
217 - add_shortcode('e2pdf-attachment', array(new Model_E2pdf_Shortcode(), 'e2pdf_attachment'));
218 - add_shortcode('e2pdf-save', array(new Model_E2pdf_Shortcode(), 'e2pdf_save'));
219 - add_shortcode('e2pdf-view', array(new Model_E2pdf_Shortcode(), 'e2pdf_view'));
220 - add_shortcode('e2pdf-format-number', array(new Model_E2pdf_Shortcode(), 'e2pdf_format_number'));
221 - add_shortcode('e2pdf-format-date', array(new Model_E2pdf_Shortcode(), 'e2pdf_format_date'));
222 - 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 + }
223 289 }
224 290
225 - /**
226 - * Load hooks
227 - */
291 + // load hooks
228 292 public function load_hooks() {
229 - register_activation_hook($this->helper->get('plugin_file_path'), array(&$this, 'activate'));
230 - register_deactivation_hook($this->helper->get('plugin_file_path'), array(&$this, 'deactivate'));
231 - 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 + }
232 299 }
233 300
234 - /**
235 - * Load admin menu
236 - */
237 - public function admin_menu() {
238 - ob_start();
239 - add_menu_page('e2pdf', 'E2Pdf', 'manage_options', 'e2pdf', array(Helper_E2pdf_View::instance(), 'render_page'), '', '26');
240 - add_submenu_page('e2pdf', __('Export', 'e2pdf'), __('Export', 'e2pdf'), 'manage_options', 'e2pdf', array(Helper_E2pdf_View::instance(), 'render_page'));
241 - add_submenu_page('e2pdf', __('Templates', 'e2pdf'), __('Templates', 'e2pdf'), 'manage_options', 'e2pdf-templates', array(Helper_E2pdf_View::instance(), 'render_page'));
242 - add_submenu_page('e2pdf', __('Settings', 'e2pdf'), __('Settings', 'e2pdf'), 'manage_options', 'e2pdf-settings', array(Helper_E2pdf_View::instance(), 'render_page'));
243 - add_submenu_page('e2pdf', __('License', 'e2pdf'), __('License', 'e2pdf'), 'manage_options', 'e2pdf-license', array(Helper_E2pdf_View::instance(), 'render_page'));
244 - if (get_option('e2pdf_debug') === '1') {
245 - 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';
246 315 }
316 + return $tags;
247 317 }
248 318
249 - /**
250 - * Setup settings page
251 - */
252 - public function admin_settings() {
253 - 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;
254 326 }
255 327
256 - /**
257 - * Load admin css
258 - */
259 - 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 + }
260 341
261 - if (get_option('e2pdf_debug') === '1') {
262 - $version = strtotime("now");
263 - } else {
264 - $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;
265 347 }
266 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();
267 356
268 - wp_register_style('e2pdf.backend', plugins_url('css/e2pdf.backend.css', $this->helper->get('plugin_file_path')), array(), $version);
269 - 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;
270 386 }
271 387
272 - /**
273 - * Load admin javascript
274 - *
275 - * @param string $page - Current page
276 - */
277 - 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) {
278 390
279 - if (!in_array($page, $this->e2pdf_admin_pages)) {
280 - return;
281 - }
391 + $post = isset($data['post']) ? $data['post'] : null;
392 + $data = isset($data['data']) ? $data['data'] : '';
282 393
283 - if (get_option('e2pdf_debug') === '1') {
284 - $version = strtotime("now");
285 - } else {
286 - $version = $this->helper->get('version');
394 + $atts = [];
395 + parse_str($data, $atts);
396 + if (!empty($post->ID)) {
397 + $atts['dataset'] = $post->ID;
287 398 }
399 + $atts = array_filter((array) $atts, 'strlen');
400 + return (new Model_E2pdf_Shortcode())->e2pdf_download($atts);
401 + }
288 402
289 - wp_enqueue_script(
290 - 'js/e2pdf.backend', plugins_url('js/e2pdf.backend.js', $this->helper->get('plugin_file_path')), array('jquery'), $version
291 - );
403 + // vc_gitem_template_attribute_e2pdf_view filter
404 + public function filter_vc_gitem_template_attribute_e2pdf_view($value, $data) {
292 405
293 - $js_lang = $this->get_js_lang();
294 - 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'] : '';
295 408
296 - $js_size = $this->get_js_template_sizes();
297 - 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 + }
298 417
299 - $js_extension = $this->get_js_template_extensions();
300 - 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 + }
301 433
302 - $js_params = $this->get_js_params();
303 - 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;
304 440 }
305 441
306 - /**
307 - * Load admin javascript
308 - *
309 - * @param string $page - Current page
310 - */
311 - 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 + }
312 447
313 - wp_register_script(
314 - 'js/e2pdf.frontend', plugins_url('js/e2pdf.frontend.js', $this->helper->get('plugin_file_path')), array('jquery'), $this->helper->get('version')
315 - );
316 - wp_enqueue_script(
317 - 'js/e2pdf.frontend'
318 - );
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 + }
319 474 }
320 475
321 - /**
322 - * Get nonce for JavaScript
323 - *
324 - * @return string - JS nonce
325 - */
326 - public function get_js_params() {
327 - $params = array(
328 - 'nonce' => wp_create_nonce('e2pdf_ajax'),
329 - 'plugins_url' => plugins_url('', $this->helper->get('plugin_file_path')),
330 - 'upload_url' => $this->helper->get_upload_url(),
331 - 'license_type' => $this->helper->get('license')->get('type')
332 - );
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 + }
333 495
334 - $helper_e2pdf_js = new Helper_E2pdf_Js();
335 - $js_params = $helper_e2pdf_js->get_js_array('e2pdfParams', $params);
336 - return $js_params;
496 + // icon
497 + public function get_icon() {
498 + $icon = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0idXVpZC00NjQyOGQyMi0wMzg2LTQ1ZmItODEyZC03YzViMTg0NDhlZDciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDU4MCA1MDIuNTMiPgogIDxkZWZzPgogICAgPHN0eWxlPgogICAgICAuY2xzLTEgewogICAgICAgIGZpbGw6ICNhN2FhYWQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTY4LjI5LDBjLTEyLjM1LDAtMjMuOTMsMy4zMS0zMy45LDkuMDctMTAuMjksNS45NS0xOC44NywxNC41NC0yNC44MiwyNC44M0MzLjgsNDMuODcuNDksNTUuNDUuNDksNjcuOHYyMzcuMzRjMCwxMi4zNSwzLjMsMjMuOTMsOS4wNywzMy45MSw1Ljk1LDEwLjI5LDE0LjU0LDE4Ljg3LDI0LjgzLDI0LjgyLDkuOTcsNS43OCwyMS41NSw5LjA3LDMzLjksOS4wN2gyNDQuMTNjLS45MS00LjMzLTEuMzgtOC44MS0xLjM4LTEzLjQsMC03LjYxLDEuMy0xNC45MywzLjcxLTIxLjczLDQuNjYtMTMuMTksMTMuNDQtMjQuNDMsMjQuNzktMzIuMTh2LTYxLjY0Yy0zLjY3LTMuODktNS45MS05LjEzLTUuOTEtMTQuODlzMi4yNC0xMSw1LjkxLTE0Ljg5VjBINjguMjlaTTkwLjMzLDc3Ljc4aDE1OS4zNmMxMC45LDAsMTkuNzUsOS43NCwxOS43NSwyMS43M3MtOC44NSwyMS43NC0xOS43NSwyMS43NEg5MC4zM2MtMTAuOTEsMC0xOS43NC05LjczLTE5Ljc0LTIxLjc0czguODMtMjEuNzMsMTkuNzQtMjEuNzNaTTI0OS42OSwyOTUuMTdIOTAuMzNjLTEwLjkxLDAtMTkuNzQtOS43My0xOS43NC0yMS43NHM4LjgzLTIxLjc0LDE5Ljc0LTIxLjc0aDE1OS4zNmMxMC45LDAsMTkuNzUsOS43NCwxOS43NSwyMS43NHMtOC44NSwyMS43NC0xOS43NSwyMS43NFpNMjQ5LjY5LDIwOC4yMUg5MC4zM2MtMTAuOTEsMC0xOS43NC05LjczLTE5Ljc0LTIxLjc0czguODMtMjEuNzQsMTkuNzQtMjEuNzRoMTU5LjM2YzEwLjksMCwxOS43NSw5Ljc0LDE5Ljc1LDIxLjc0cy04Ljg1LDIxLjc0LTE5Ljc1LDIxLjc0WiIvPgogIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTU3MC45MSwxNjMuNDljLTUuOTUtMTAuMjktMTQuNTMtMTguODctMjQuODMtMjQuODMtOS45Ni01Ljc2LTIxLjU0LTkuMDctMzMuODktOS4wN0gyNDAuOTR2MzUuMTRoOC43NWMxMC45LDAsMTkuNzUsOS43NCwxOS43NSwyMS43NHMtOC44NSwyMS43NC0xOS43NSwyMS43NGgtOC43NXY0My40OGg4Ljc1YzEwLjksMCwxOS43NSw5Ljc0LDE5Ljc1LDIxLjc0cy04Ljg1LDIxLjc0LTE5Ljc1LDIxLjc0aC04Ljc1djIwNy4zNmgyNzEuMjVjMTIuMzUsMCwyMy45My0zLjI5LDMzLjg5LTkuMDcsMTAuMy01Ljk1LDE4Ljg5LTE0LjUyLDI0Ljg0LTI0LjgyLDUuNzctOS45OCw5LjA3LTIxLjU2LDkuMDctMzMuOTF2LTIzNy4zNGMwLTEyLjM1LTMuMzEtMjMuOTMtOS4wOC0zMy45Wk00ODguMTYsNDI0Ljc2aC0xMTIuNzRjLTI4LjAzLS4zNS01MS44MS0xOC4zOS02MC42Ny00My40OC0uOTYtMi43LTEuNzQtNS40OS0yLjMzLTguMzQtLjkxLTQuMzMtMS4zOC04LjgxLTEuMzgtMTMuNCwwLTcuNjEsMS4zLTE0LjkzLDMuNzEtMjEuNzMsNC42Ni0xMy4xOSwxMy40NC0yNC40MywyNC43OS0zMi4xOCwxMC40Ni03LjEzLDIzLjEtMTEuMzEsMzYuNzMtMTEuMzFoNjUuMjJjMTIsMCwyMS43NC05LjczLDIxLjc0LTIxLjc0cy05Ljc0LTIxLjc0LTIxLjc0LTIxLjc0aC04Ni4xMmMtNi4yNSwwLTExLjg4LTIuNjMtMTUuODMtNi44NS0zLjY3LTMuODktNS45MS05LjEzLTUuOTEtMTQuODlzMi4yNC0xMSw1LjkxLTE0Ljg5YzMuOTYtNC4yMSw5LjU4LTYuODQsMTUuODMtNi44NGg4Ni45NmMyNi4zNy4zMiw0OC45NiwxNi4zMSw1OC45MywzOS4wOCwzLjUsOC4wMSw1LjQ1LDE2Ljg0LDUuNDUsMjYuMTMsMCwzNi4wMi0yOS4yLDY1LjIzLTY1LjIyLDY1LjIzaC02NS4yMmMtMTIuMDIsMC0yMS43NCw5LjcyLTIxLjc0LDIxLjczczkuNzIsMjEuNzQsMjEuNzQsMjEuNzRoMTExLjg5YzExLjk5LDAsMjEuNzMsOS43NCwyMS43MywyMS43NHMtOS43NCwyMS43NC0yMS43MywyMS43NFoiLz4KPC9zdmc+';
499 + return $icon;
337 500 }
338 501
339 - /**
340 - * Get Lang Key->Value for JavaScript
341 - *
342 - * @return string - JS language Key->Value
343 - */
344 - public function get_js_lang() {
345 - $lang = array(
346 - 'Delete' => __('Delete', 'e2pdf'),
347 - 'Properties' => __('Properties', 'e2pdf'),
348 - 'License Key' => __('License Key', 'e2pdf'),
349 - 'Submit' => __('Submit', 'e2pdf'),
350 - 'Are you sure want to remove page?' => __('Are you sure want to remove page?', 'e2pdf'),
351 - 'Are you sure want to remove font?' => __('Are you sure want to remove font?', 'e2pdf'),
352 - 'Empty PDF' => __('Empty PDF', 'e2pdf'),
353 - 'Upload PDF' => __('Upload PDF', 'e2pdf'),
354 - 'Auto PDF' => __('Auto PDF', 'e2pdf'),
355 - 'Create PDF' => __('Create PDF', 'e2pdf'),
356 - 'Extension' => __('Extension', 'e2pdf'),
357 - 'Size' => __('Size', 'e2pdf'),
358 - 'Properties' => __('Properties', 'e2pdf'),
359 - 'Name' => __('Name', 'e2pdf'),
360 - 'Enter link here' => __('Enter link here', 'e2pdf'),
361 - 'Z-index' => __('Z-index', 'e2pdf'),
362 - 'Border' => __('Border', 'e2pdf'),
363 - 'Background' => __('Background', 'e2pdf'),
364 - 'Left' => __('Left', 'e2pdf'),
365 - 'Right' => __('Right', 'e2pdf'),
366 - 'Top' => __('Top', 'e2pdf'),
367 - 'Center' => __('Center', 'e2pdf'),
368 - 'Bottom' => __('Bottom', 'e2pdf'),
369 - 'Color' => __('Color', 'e2pdf'),
370 - 'Border Color' => __('Border Color', 'e2pdf'),
371 - 'Line Height' => __('Line Height', 'e2pdf'),
372 - 'Padding' => __('Padding', 'e2pdf'),
373 - 'Width' => __('Width', 'e2pdf'),
374 - 'Height' => __('Height', 'e2pdf'),
375 - 'Text Color' => __('Text Color', 'e2pdf'),
376 - 'Value' => __('Value', 'e2pdf'),
377 - 'Font' => __('Font', 'e2pdf'),
378 - 'Options' => __('Options', 'e2pdf'),
379 - 'Option' => __('Option', 'e2pdf'),
380 - 'Group' => __('Group', 'e2pdf'),
381 - 'Group Name' => __('Group Name', 'e2pdf'),
382 - 'Group Value' => __('Group Value', 'e2pdf'),
383 - 'Selector' => __('Selector', 'e2pdf'),
384 - 'Check' => __('Check', 'e2pdf'),
385 - 'Circle' => __('Circle', 'e2pdf'),
386 - 'Cross' => __('Cross', 'e2pdf'),
387 - 'Diamond' => __('Diamond', 'e2pdf'),
388 - 'Square' => __('Square', 'e2pdf'),
389 - 'Star' => __('Star', 'e2pdf'),
390 - 'Type' => __('Type', 'e2pdf'),
391 - 'Scale' => __('Scale', 'e2pdf'),
392 - 'Width&Height' => __('Width&Height', 'e2pdf'),
393 - 'Width' => __('Width', 'e2pdf'),
394 - 'Height' => __('Height', 'e2pdf'),
395 - 'Choose Image' => __('Choose Image', 'e2pdf'),
396 - 'PDF Options' => __('PDF Options', 'e2pdf'),
397 - 'PDF Upload' => __('PDF Upload', 'e2pdf'),
398 - 'Item' => __('Item', 'e2pdf'),
399 - 'Position' => __('Position', 'e2pdf'),
400 - 'Copy' => __('Copy', 'e2pdf'),
401 - 'Cut' => __('Cut', 'e2pdf'),
402 - 'Paste' => __('Paste', 'e2pdf'),
403 - 'Paste in Place' => __('Paste in Place', 'e2pdf'),
404 - 'Apply' => __('Apply', 'e2pdf'),
405 - 'Dynamic Height' => __('Dynamic Height', 'e2pdf'),
406 - 'Text Align' => __('Text Align', 'e2pdf'),
407 - 'Readonly' => __('Readonly', 'e2pdf'),
408 - 'Multiline' => __('Multiline', 'e2pdf'),
409 - 'Required' => __('Required', 'e2pdf'),
410 - 'Settings' => __('Settings', 'e2pdf'),
411 - 'Relative' => __('Relative', 'e2pdf'),
412 - 'Page Size' => __('Page Size', 'e2pdf'),
413 - 'Custom' => __('Custom', 'e2pdf'),
414 - 'Size Preset' => __('Size Preset', 'e2pdf'),
415 - 'Page Options' => __('Page Options', 'e2pdf'),
416 - 'Select' => __('Select', 'e2pdf'),
417 - 'Saved Template will be overwritten! Are you sure want to continue?' => __('Saved Template will be overwritten! Are you sure want to continue?', 'e2pdf'),
418 - 'All pages will be removed! Are you sure want to continue?' => __('All pages will be removed! Are you sure want to continue?', 'e2pdf'),
419 - 'Adding new pages not available in "Uploaded PDF"' => __('Adding new pages not available in "Uploaded PDF"', 'e2pdf'),
420 - 'Dataset will be removed! Are you sure want to continue?' => __('Dataset will be removed! Are you sure want to continue?', 'e2pdf'),
421 - 'All datasets will be removed! Are you sure want to continue?' => __('All datasets will be removed! Are you sure want to continue?', 'e2pdf'),
422 - 'WARNING: Template has changes after last save! Changes will be lost!' => __('WARNING: Template has changes after last save! Changes will be lost!', 'e2pdf'),
423 - 'Element will be removed! Are you sure want to continue?' => __('Element will be removed! Are you sure want to continue?', 'e2pdf'),
424 - 'Elements will be removed! Are you sure want to continue?' => __('Elements will be removed! Are you sure want to continue?', 'e2pdf'),
425 - 'Action will be removed! Are you sure want to continue?' => __('Action will be removed! Are you sure want to continue?', 'e2pdf'),
426 - 'Condition will be removed! Are you sure want to continue?' => __('Condition will be removed! Are you sure want to continue?', 'e2pdf'),
427 - 'RTL' => __('RTL', 'e2pdf'),
428 - 'Hide' => __('Hide', 'e2pdf'),
429 - 'Show' => __('Show', 'e2pdf'),
430 - 'Password' => __('Password', 'e2pdf'),
431 - 'Map Field' => __('Map Field', 'e2pdf'),
432 - 'Parent' => __('Parent', 'e2pdf'),
433 - 'Hide Empty' => __('Hide Empty', 'e2pdf'),
434 - '--- Select ---' => __('--- Select ---', 'e2pdf'),
435 - 'Activated' => __('Activated', 'e2pdf'),
436 - 'Not Activated' => __('Not Activated', 'e2pdf'),
437 - 'Page ID' => __('Page ID', 'e2pdf'),
438 - 'New Position' => __('New Position', 'e2pdf'),
439 - 'Render New Fields' => __('Render New Fields', 'e2pdf'),
440 - 'Flush Elements' => __('Flush Elements', 'e2pdf'),
441 - 'Keep dimension' => __('Keep dimension', 'e2pdf'),
442 - 'ID' => __('ID', 'e2pdf'),
443 - 'Only 1 page allowed with "FREE" license type' => __('Only 1 page allowed with "FREE" license type', 'e2pdf'),
444 - 'Last condition can\'t be removed' => __('Last condition can\'t be removed', 'e2pdf'),
445 - 'Confirmation code' => __('Confirmation code', 'e2pdf'),
446 - 'Code' => __('Code', 'e2pdf'),
447 - 'Visual Mapper' => __('Visual Mapper', 'e2pdf'),
448 - 'Auto' => __('Auto', 'e2pdf'),
449 - 'Actions' => __('Actions', 'e2pdf'),
450 - 'Save' => __('Save', 'e2pdf'),
451 - 'Resize' => __('Resize', 'e2pdf'),
452 - 'Horizontal align' => __('Horizontal align', 'e2pdf'),
453 - 'Vertical align' => __('Vertical align', 'e2pdf'),
454 - 'Middle' => __('Middle', 'e2pdf'),
455 - 'Apply If' => __('Apply If', 'e2pdf'),
456 - 'Action' => __('Action', 'e2pdf'),
457 - 'Property' => __('Property', 'e2pdf'),
458 - 'If' => __('If', 'e2pdf'),
459 - 'Condition' => __('Condition', 'e2pdf'),
460 - 'Change' => __('Change', 'e2pdf'),
461 - 'Any' => __('Any', 'e2pdf'),
462 - 'All' => __('All', 'e2pdf'),
463 - 'Order' => __('Order', 'e2pdf'),
464 - 'E-signature' => __('E-signature', 'e2pdf'),
465 - 'Contact' => __('Contact', 'e2pdf'),
466 - 'Location' => __('Location', 'e2pdf'),
467 - 'Reason' => __('Reason', 'e2pdf'),
468 - 'Placeholder' => __('Placeholder', 'e2pdf'),
469 - 'Length' => __('Length', 'e2pdf'),
470 - 'Comb' => __('Comb', 'e2pdf')
471 - );
502 + // settings page
503 + public function action_admin_init() {
504 + register_setting('e2pdf-settings', 'e2pdf_debug');
472 505
473 - $helper_e2pdf_js = new Helper_E2pdf_Js();
474 - $js_lang = $helper_e2pdf_js->get_js_array('e2pdfLang', $lang);
475 - 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 + }
476 538 }
477 539
478 - /**
479 - * Get Template sizes for JavaScript
480 - *
481 - * @return string - JS template sizes
482 - */
483 - public function get_js_template_sizes() {
484 - $controller_e2pdf_templates = new Controller_E2pdf_Templates();
485 - $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 + }
486 548
487 - $helper_e2pdf_js = new Helper_E2pdf_Js();
488 - $js_template_sizes = $helper_e2pdf_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 + }
489 566
490 - 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 + );
491 577 }
492 578
493 - /**
494 - * Get Extensions list for JavaScript
495 - *
496 - * @return string - JS Extensions list
497 - */
498 - public function get_js_template_extensions() {
499 - $controller_e2pdf_templates = new Controller_E2pdf_Templates();
500 - $extensions = $controller_e2pdf_templates->get_extensions_list();
501 -
502 - $helper_e2pdf_js = new Helper_E2pdf_Js();
503 - $js_template_extensions = $helper_e2pdf_js->get_js_array('e2pdfTemplateExtensions', $extensions);
504 -
505 - 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 + ];
922 + break;
923 + default:
924 + break;
925 + }
926 + return $data;
506 927 }
507 928
508 - /**
509 - * Check requirenments before activation
510 - */
929 + // requirenments
511 930 public function requirenments() {
512 - if (version_compare(PHP_VERSION, '5.3.3', '<')) {
931 + if (version_compare(PHP_VERSION, '5.4', '<')) {
513 932 throw new Exception(
514 - sprintf(__("E2Pdf requires PHP version 5.3.3 or later. Your PHP version is %s", 'e2pdf'), PHP_VERSION)
515 - );
933 + /* translators: %s: PHP Version */
934 + sprintf(__('E2Pdf requires PHP version 5.4 or later. Your PHP version is %s', 'e2pdf'), PHP_VERSION)
935 + );
516 936 }
937 +
938 + if (!function_exists('curl_version')) {
939 + throw new Exception(
940 + /* translators: %s: PHP Extension */
941 + sprintf(__('The PHP %s extension is required', 'e2pdf'), 'CURL')
942 + );
943 + }
517 944 }
518 945
519 - public function admin_functions() {
946 + // current_screen action
947 + public function action_current_screen() {
520 948 $current_screen = get_current_screen();
521 - if (!in_array($current_screen->id, $this->e2pdf_admin_pages)) {
949 + if (!$current_screen || !in_array($current_screen->id, $this->e2pdf_admin_pages, false)) {
522 950 return;
523 951 }
524 - $this->helper->set('license', new Model_E2pdf_License());
952 +
953 + // phpcs:ignore WordPress.Security.NonceVerification.Recommended
954 + if ($current_screen->id == 'toplevel_page_e2pdf' || ($current_screen->id == 'e2pdf_page_e2pdf-templates' && isset($_GET['action']) && $_GET['action'] == 'edit')) {
955 + add_filter('admin_body_class', [&$this, 'filter_admin_body_loading_class']);
956 + }
957 +
958 + // phpcs:ignore WordPress.Security.NonceVerification.Recommended
959 + if ($current_screen->id == 'e2pdf_page_e2pdf-templates' && !isset($_GET['action'])) {
960 + $screen_option = [
961 + 'label' => __('Templates per page', 'e2pdf') . ':',
962 + 'default' => (int) get_option('e2pdf_templates_screen_per_page', '20'),
963 + 'option' => 'e2pdf_templates_screen_per_page',
964 + ];
965 + add_screen_option('per_page', $screen_option);
966 + }
967 + $this->helper->load('license')->load();
525 968 }
526 969
527 - /**
528 - * On plugin activation
529 - */
530 - public function activate() {
970 + // wp_loaded action
971 + public function action_wp_loaded() {
972 + if (get_option('e2pdf_adobesign_refresh_token') && !get_transient('e2pdf_adobesign_refresh_token')) {
973 + new Model_E2pdf_AdobeSign();
974 + }
975 + }
976 +
977 + // activate website wrapper
978 + public function activate($network = false) {
531 979 global $wpdb;
532 980
533 981 try {
534 982 $this->requirenments();
535 - if (is_multisite() && is_super_admin() && is_main_site()) {
536 - foreach ($wpdb->get_col("SELECT blog_id FROM $wpdb->blogs") as $blog_id) {
983 + if (is_multisite() && $network) {
984 + foreach ($wpdb->get_col('SELECT blog_id FROM `' . $wpdb->blogs . '`') as $blog_id) {
537 985 $this->activate_site($blog_id);
538 986 }
539 987 } else {
540 988 $this->activate_site();
541 989 }
542 - } catch (Exception $e) {
543 - echo "<div style='line-height: 70px;'>";
544 - echo $e->getMessage();
545 - echo "</div>";
990 + } catch (Exception $ex) {
991 + echo '<div style="line-height: 70px;">';
992 + echo $ex->getMessage();
993 + echo '</div>';
546 994 exit();
547 995 }
548 996 }
549 997
550 - public function activate_new_network($blog_id, $user_id, $domain, $path, $site_id, $meta) {
998 + // deactivate website wrapper
999 + public function deactivate($network = false) {
1000 + global $wpdb;
1001 + if (is_multisite() && $network) {
1002 + foreach ($wpdb->get_col('SELECT blog_id FROM `' . $wpdb->blogs . '`') as $blog_id) {
1003 + $this->activate_site($blog_id);
1004 + }
1005 + } else {
1006 + $this->deactivate_site();
1007 + }
1008 + }
1009 +
1010 + // wpmu_new_blog action
1011 + public function action_wpmu_new_blog($blog_id) {
551 1012 if (is_plugin_active_for_network('e2pdf/e2pdf.php')) {
552 1013 $this->activate_site($blog_id);
553 1014 }
554 1015 }
555 1016
1017 + // activate site
556 1018 public function activate_site($blog_id = false) {
557 1019 global $wpdb;
558 1020
559 1021 $db_prefix = $wpdb->prefix;
560 1022
561 - $wp_upload_dir = wp_upload_dir();
562 -
563 1023 if ($blog_id) {
564 1024 switch_to_blog($blog_id);
565 - $wp_upload_dir = wp_upload_dir();
566 1025 $db_prefix = $wpdb->get_blog_prefix($blog_id);
567 1026 if (!is_main_site($blog_id)) {
568 - $this->helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
1027 + $this->helper->set('upload_dir', $this->helper->get_wp_upload_dir('basedir') . '/e2pdf/');
569 1028 $this->helper->set('tmp_dir', $this->helper->get('upload_dir') . 'tmp/');
1029 + $this->helper->set('cache_dir', $this->helper->get('upload_dir') . 'tmp/cache/');
570 1030 $this->helper->set('pdf_dir', $this->helper->get('upload_dir') . 'pdf/');
571 1031 $this->helper->set('fonts_dir', $this->helper->get('upload_dir') . 'fonts/');
572 1032 $this->helper->set('tpl_dir', $this->helper->get('upload_dir') . 'tpl/');
1033 + $this->helper->set('viewer_dir', $this->helper->get('upload_dir') . 'viewer/');
1034 + $this->helper->set('bulk_dir', $this->helper->get('upload_dir') . 'bulks/');
1035 + $this->helper->set('wpcf7_dir', $this->helper->get('upload_dir') . 'wpcf7/');
573 1036 }
574 1037 }
575 1038
576 - $dirs = array(
1039 + $dirs = [
577 1040 $this->helper->get('upload_dir'),
578 1041 $this->helper->get('tmp_dir'),
1042 + $this->helper->get('cache_dir'),
579 1043 $this->helper->get('pdf_dir'),
580 1044 $this->helper->get('fonts_dir'),
581 1045 $this->helper->get('tpl_dir'),
582 - );
1046 + $this->helper->get('viewer_dir'),
1047 + $this->helper->get('bulk_dir'),
1048 + $this->helper->get('wpcf7_dir'),
1049 + ];
583 1050
584 -
585 1051 if (!is_main_site($blog_id)) {
586 - array_unshift($dirs, $wp_upload_dir['basedir']);
1052 + array_unshift($dirs, $this->helper->get_wp_upload_dir('basedir'));
587 1053 }
588 1054
589 1055 foreach ($dirs as $dir) {
590 1056 if ($this->helper->create_dir($dir)) {
591 1057 if ($dir == $this->helper->get('fonts_dir')) {
592 - copy($this->helper->get('plugin_dir') . "data/fonts/NotoSans-Regular.ttf", $this->helper->get('fonts_dir') . "NotoSans-Regular.ttf");
1058 + if (!file_exists($this->helper->get('fonts_dir') . 'NotoSans-Regular.ttf') || version_compare(get_option('e2pdf_version'), '1.10.05', '<')) {
1059 + copy($this->helper->get('plugin_dir') . 'data/fonts/NotoSans-Regular.ttf', $this->helper->get('fonts_dir') . 'NotoSans-Regular.ttf');
1060 + }
1061 + } elseif ($dir == $this->helper->get('viewer_dir')) {
1062 + if (!file_exists($this->helper->get('viewer_dir') . 'style.css')) {
1063 + $this->helper->create_file($this->helper->get('viewer_dir') . 'style.css');
1064 + }
1065 + } elseif ($dir == $this->helper->get('bulk_dir') || $dir == $this->helper->get('cache_dir') || $dir == $this->helper->get('tmp_dir')) {
1066 + $htaccess = $dir . '.htaccess';
1067 + if (!file_exists($htaccess)) {
1068 + $this->helper->create_file($htaccess, 'DENY FROM ALL');
1069 + }
593 1070 }
594 1071 } else {
595 1072 throw new Exception(
596 - sprintf(__("Can't create folder %s", 'e2pdf'), $dir)
597 - );
1073 + /* translators: %s: directory */
1074 + sprintf(__("Can't create folder %s", 'e2pdf'), $dir)
1075 + );
598 1076 }
599 1077 }
600 1078
1079 + $this->helper->load('db')->db_init($db_prefix);
601 1080
602 - $options = Model_E2pdf_Options::get_options();
603 - foreach ($options as $option_key => $option_value) {
604 - if (get_option($option_key) === false) {
605 - add_option($option_key, $option_value);
1081 + if (get_option('e2pdf_version') === false) {
1082 + update_option('e2pdf_download_loader', '1');
1083 + update_option('e2pdf_api_protocol', '1');
1084 + }
1085 +
1086 + if (class_exists('TRP_Translate_Press')) {
1087 + if (get_option('e2pdf_pdf_translation') === false && get_option('e2pdf_translatepress_translation') !== false) {
1088 + update_option('e2pdf_pdf_translation', get_option('e2pdf_translatepress_translation'));
606 1089 }
607 1090 }
608 1091
609 - $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_templates` (
610 - `ID` int(11) NOT NULL AUTO_INCREMENT,
611 - `uid` varchar(255) NOT NULL,
612 - `pdf` text,
613 - `title` text,
614 - `created_at` datetime NOT NULL,
615 - `updated_at` datetime NOT NULL,
616 - `flatten` enum('0','1','2') NOT NULL DEFAULT '0',
617 - `compression` int(1) NOT NULL DEFAULT '-1',
618 - `appearance` enum('0','1') NOT NULL DEFAULT '0',
619 - `width` int(11) NOT NULL DEFAULT '0',
620 - `height` int(11) NOT NULL DEFAULT '0',
621 - `extension` varchar(255) NOT NULL,
622 - `item` varchar(255) NOT NULL,
623 - `format` enum('pdf') NOT NULL DEFAULT 'pdf',
624 - `dataset_title` text NOT NULL,
625 - `button_title` text NOT NULL,
626 - `inline` enum('0','1') NOT NULL DEFAULT '0',
627 - `auto` enum('0','1') NOT NULL DEFAULT '0',
628 - `name` text NOT NULL,
629 - `password` text NOT NULL,
630 - `font` varchar(255) NOT NULL,
631 - `font_size` varchar(255) NOT NULL,
632 - `font_color` varchar(255) NOT NULL,
633 - `line_height` varchar(255) NOT NULL,
634 - `fonts` longtext NOT NULL,
635 - `trash` enum('0','1') NOT NULL DEFAULT '0',
636 - `activated` enum('0','1') NOT NULL DEFAULT '0',
637 - `locked` enum('0','1') NOT NULL DEFAULT '0',
638 - `author` int(11) NOT NULL,
639 - PRIMARY KEY (`ID`)
640 - ) CHARSET=utf8 COLLATE=utf8_general_ci");
1092 + if (get_option('e2pdf_pdf_translation_check') === false) {
1093 + if (get_option('e2pdf_pdf_translation') === false && get_option('e2pdf_version') !== false && function_exists('icl_register_string')) {
1094 + update_option('e2pdf_pdf_translation', '0');
1095 + }
1096 + update_option('e2pdf_pdf_translation_check', '1');
1097 + }
641 1098
1099 + if (get_option('e2pdf_version') !== $this->helper->get('version')) {
1100 + update_option('e2pdf_version', $this->helper->get('version'));
1101 + }
642 1102
643 - if (version_compare(get_option('e2pdf_version'), '0.01.54', '<')) {
644 - $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` DROP COLUMN `blank`");
1103 + if (get_option('e2pdf_nonce_key') === false) {
1104 + if (function_exists('wp_generate_password')) {
1105 + update_option('e2pdf_nonce_key', wp_generate_password('64'));
1106 + }
645 1107 }
646 1108
1109 + if (get_option('e2pdf_wc_invoice_template_id') !== false) {
1110 + update_option('e2pdf_wc_my_orders_actions_template_id', get_option('e2pdf_wc_invoice_template_id'));
1111 + }
1112 + if (get_option('e2pdf_wc_invoice_statuses') !== false) {
1113 + update_option('e2pdf_wc_my_orders_actions_template_id_status', get_option('e2pdf_wc_invoice_statuses'));
1114 + }
1115 + if (get_option('e2pdf_wc_checkout_template_id_order') !== false) {
1116 + update_option('e2pdf_wc_checkout_template_id_priority', get_option('e2pdf_wc_checkout_template_id_order'));
1117 + }
1118 + if (get_option('e2pdf_wc_cart_template_id_order') !== false) {
1119 + update_option('e2pdf_wc_cart_template_id_priority', get_option('e2pdf_wc_cart_template_id_order'));
1120 + }
1121 + 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) {
1122 + update_option('e2pdf_wc_cart_template_id_priority', '99');
1123 + }
647 1124
648 - $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_entries` (
649 - `ID` int(11) NOT NULL AUTO_INCREMENT,
650 - `uid` varchar(255) NOT NULL,
651 - `entry` longtext,
652 - `pdf_num` int(11) NOT NULL DEFAULT '0',
653 - PRIMARY KEY (`ID`)
654 - ) CHARSET=utf8 COLLATE=utf8_general_ci");
1125 + if (get_option('e2pdf_zapier_api_key') === false) {
1126 + if (function_exists('wp_generate_password')) {
1127 + update_option('e2pdf_zapier_api_key', strtoupper(wordwrap(wp_generate_password('24', false), 4, '-', true)));
1128 + }
1129 + }
655 1130
656 - if (version_compare(get_option('e2pdf_version'), '0.01.33', '<')) {
657 - $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_entries` ADD COLUMN `pdf_num` INT(11) NOT NULL DEFAULT '0'");
1131 + if (get_option('e2pdf_adobe_api_key') === false) {
1132 + if (function_exists('wp_generate_password')) {
1133 + update_option('e2pdf_adobe_api_key', strtoupper(wordwrap(wp_generate_password('24', false), 4, '-', true)));
1134 + }
658 1135 }
659 1136
1137 + if (get_option('e2pdf_gdrive_api_key') === false) {
1138 + if (function_exists('wp_generate_password')) {
1139 + update_option('e2pdf_gdrive_api_key', strtoupper(wordwrap(wp_generate_password('24', false), 4, '-', true)));
1140 + }
1141 + }
660 1142
661 - $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_datasets` (
662 - `ID` int(11) NOT NULL AUTO_INCREMENT,
663 - `extension` varchar(255) NOT NULL,
664 - `item` varchar(255) NOT NULL,
665 - `entry` longtext,
666 - PRIMARY KEY (`ID`)
667 - ) CHARSET=utf8 COLLATE=utf8_general_ci");
1143 + if (get_option('e2pdf_adobe_api_version') === false) {
1144 + if (get_option('e2pdf_adobesign_client_id', '') && get_option('e2pdf_adobesign_client_secret', '')) {
1145 + update_option('e2pdf_adobe_api_version', '0');
1146 + } else {
1147 + update_option('e2pdf_adobe_api_version', '1');
1148 + }
1149 + }
668 1150
669 -
670 - $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_pages` (
671 - `ID` int(11) NOT NULL AUTO_INCREMENT,
672 - `page_id` int(11) NOT NULL DEFAULT '0',
673 - `template_id` int(11) NOT NULL DEFAULT '0',
674 - `properties` longtext NOT NULL,
675 - `actions` longtext NOT NULL,
676 - PRIMARY KEY (`ID`)
677 - ) CHARSET=utf8 COLLATE=utf8_general_ci");
678 -
679 - if (version_compare(get_option('e2pdf_version'), '0.01.63', '<')) {
680 - $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_pages` ADD COLUMN `actions` longtext NOT NULL");
1151 + if ((int) get_option('e2pdf_templates_screen_per_page', '20') <= 0) {
1152 + update_option('e2pdf_templates_screen_per_page', '20');
681 1153 }
682 1154
683 - $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_elements` (
684 - `ID` int(11) NOT NULL AUTO_INCREMENT,
685 - `page_id` int(11) NOT NULL DEFAULT '0',
686 - `template_id` int(11) NOT NULL DEFAULT '0',
687 - `element_id` int(11) NOT NULL DEFAULT '0',
688 - `type` varchar(255) NOT NULL,
689 - `top` int(11) NOT NULL DEFAULT '0',
690 - `left` int(11) NOT NULL DEFAULT '0',
691 - `width` int(11) NOT NULL DEFAULT '0',
692 - `height` int(11) NOT NULL DEFAULT '0',
693 - `value` longtext NOT NULL,
694 - `properties` longtext NOT NULL,
695 - `actions` longtext NOT NULL,
696 - PRIMARY KEY (`ID`)
697 - ) CHARSET=utf8 COLLATE=utf8_general_ci");
1155 + delete_option('e2pdf_developer');
1156 + delete_option('e2pdf_developer_ips');
1157 + delete_option('e2pdf_translatepress_translation');
1158 + delete_option('e2pdf_wc_invoice_template_id');
1159 + delete_option('e2pdf_wc_invoice_statuses');
1160 + delete_option('e2pdf_wc_checkout_template_id_order');
1161 + delete_option('e2pdf_wc_cart_template_id_order');
1162 + delete_option('e2pdf_hash_timeout');
698 1163
699 - if (version_compare(get_option('e2pdf_version'), '0.01.63', '<')) {
700 - $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` ADD COLUMN `actions` longtext NOT NULL");
1164 + $license = $this->helper->load('license');
1165 + if ($license && method_exists($license, 'activate')) {
1166 + $license->activate();
701 1167 }
702 1168
703 - if (get_option('e2pdf_version') !== $this->helper->get('version')) {
704 - update_option('e2pdf_version', $this->helper->get('version'));
1169 + wp_clear_scheduled_hook('e2pdf_cronjob');
1170 + if (!wp_next_scheduled('e2pdf_cache_tmp_cron')) {
1171 + wp_schedule_event(time(), 'daily', 'e2pdf_cache_tmp_cron');
705 1172 }
706 1173
707 - $model_e2pdf_api = new Model_E2pdf_Api();
708 - $model_e2pdf_api->set(array(
709 - 'action' => 'common/activate'
710 - ));
711 - $model_e2pdf_api->request();
712 -
713 - $model_e2pdf_license = new Model_E2pdf_License();
714 -
715 1174 if ($blog_id) {
716 1175 restore_current_blog();
717 - $wp_upload_dir = wp_upload_dir();
718 - $this->helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
1176 + $this->helper->set('upload_dir', $this->helper->get_wp_upload_dir('basedir') . '/e2pdf/');
719 1177 $this->helper->set('tmp_dir', $this->helper->get('upload_dir') . 'tmp/');
1178 + $this->helper->set('cache_dir', $this->helper->get('upload_dir') . 'tmp/cache/');
720 1179 $this->helper->set('pdf_dir', $this->helper->get('upload_dir') . 'pdf/');
721 1180 $this->helper->set('fonts_dir', $this->helper->get('upload_dir') . 'fonts/');
722 1181 $this->helper->set('tpl_dir', $this->helper->get('upload_dir') . 'tpl/');
1182 + $this->helper->set('viewer_dir', $this->helper->get('upload_dir') . 'viewer/');
1183 + $this->helper->set('bulk_dir', $this->helper->get('upload_dir') . 'bulks/');
1184 + $this->helper->set('wpcf7_dir', $this->helper->get('upload_dir') . 'wpcf7/');
723 1185 }
724 1186 }
725 1187
726 - /**
727 - * On plugin deactivation
728 - */
729 - public function deactivate() {
730 -
1188 + // deactivate site
1189 + public function deactivate_site($blog_id = false) {
1190 + if ($blog_id) {
1191 + switch_to_blog($blog_id);
1192 + }
1193 + wp_clear_scheduled_hook('e2pdf_bulk_export_cron');
1194 + wp_clear_scheduled_hook('e2pdf_cache_pdfs_cron');
1195 + wp_clear_scheduled_hook('e2pdf_cache_tmp_cron');
1196 + if ($blog_id) {
1197 + restore_current_blog();
1198 + }
731 1199 }
732 1200
733 - /**
734 - * On plugin uninstall
735 - */
1201 + // uninstall
736 1202 public static function uninstall() {
737 1203 global $wpdb;
738 1204
739 - if (is_multisite() && is_super_admin() && is_main_site()) {
740 - foreach ($wpdb->get_col("SELECT blog_id FROM $wpdb->blogs") as $blog_id) {
1205 + if (is_multisite()) {
1206 + foreach ($wpdb->get_col('SELECT blog_id FROM `' . $wpdb->blogs . '`') as $blog_id) {
741 1207 self::uninstall_site($blog_id);
742 1208 }
743 1209 } else {
744 1210 self::uninstall_site();
@@ -744,53 +1210,68 @@
744 1210 self::uninstall_site();
745 1211 }
746 1212 }
747 1213
1214 + // uninstall site
748 1215 public static function uninstall_site($blog_id = false) {
749 1216 global $wpdb;
750 1217
751 1218 $db_prefix = $wpdb->prefix;
1219 + $helper = Helper_E2pdf_Helper::instance();
752 1220
753 - $wp_upload_dir = wp_upload_dir();
754 -
755 - $helper_e2pdf_helper = Helper_E2pdf_Helper::instance();
756 -
757 1221 if ($blog_id) {
758 1222 switch_to_blog($blog_id);
759 - $wp_upload_dir = wp_upload_dir();
760 1223 $db_prefix = $wpdb->get_blog_prefix($blog_id);
761 -
762 1224 if (!is_main_site($blog_id)) {
763 - $helper_e2pdf_helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
1225 + $helper->set('upload_dir', $helper->get_wp_upload_dir('basedir') . '/e2pdf/');
764 1226 }
765 1227 }
766 1228
1229 + wp_clear_scheduled_hook('e2pdf_bulk_export_cron');
1230 + wp_clear_scheduled_hook('e2pdf_cache_pdfs_cron');
1231 + wp_clear_scheduled_hook('e2pdf_cache_tmp_cron');
767 1232
768 1233 $model_e2pdf_api = new Model_E2pdf_Api();
769 - $model_e2pdf_api->set(array(
770 - 'action' => 'common/uninstall'
771 - ));
1234 + $model_e2pdf_api->set(
1235 + [
1236 + 'action' => 'common/uninstall',
1237 + ]
1238 + );
772 1239 $model_e2pdf_api->request();
773 1240
774 1241 $options = Model_E2pdf_Options::get_options();
775 1242 foreach ($options as $option_key => $option_value) {
776 - delete_option($option_key, $option_value);
1243 + delete_option($option_key);
777 1244 }
1245 + delete_option('e2pdf_adobe_api_key');
1246 + delete_option('e2pdf_adobe_api_version');
1247 + delete_option('e2pdf_cache_tmp_ttl');
1248 + delete_option('e2pdf_pdf_translation_check');
778 1249
779 - $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_templates' . '`');
780 - $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_entries' . '`');
781 - $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_datasets' . '`');
782 - $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_pages' . '`');
783 - $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_elements' . '`');
1250 + // phpcs:disable WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.PreparedSQL.NotPrepared
1251 + $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_templates`');
1252 + $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_entries`');
1253 + $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_datasets`');
1254 + $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_pages`');
1255 + $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_elements`');
1256 + $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_revisions`');
1257 + // phpcs:enable
1258 + // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
1259 + $wpdb->query($wpdb->prepare('DELETE FROM `' . $db_prefix . 'options` WHERE option_name LIKE %s OR option_name LIKE %s', '_transient_e2pdf_%', '_transient_timeout_e2pdf_%'));
784 1260
785 - $wpdb->query($wpdb->prepare('DELETE FROM `' . $db_prefix . 'options' . '` WHERE option_name LIKE %s OR option_name LIKE %s', '_transient_e2pdf_%', '_transient_e2pdf_%'));
1261 + $helper->delete_dir($helper->get('upload_dir'));
786 1262
787 - $helper_e2pdf_helper->delete_dir($helper_e2pdf_helper->get('upload_dir'));
1263 + $caps = $helper->get_caps();
1264 + $roles = wp_roles()->get_names();
1265 + foreach ($roles as $role_key => $sub_role) {
1266 + $role = get_role($role_key);
1267 + foreach ($caps as $cap_key => $cap) {
1268 + $role->remove_cap($cap_key);
1269 + }
1270 + }
788 1271
789 1272 if ($blog_id) {
790 1273 restore_current_blog();
791 - $wp_upload_dir = wp_upload_dir();
792 - $helper_e2pdf_helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
1274 + $helper->set('upload_dir', $helper->get_wp_upload_dir('basedir') . '/e2pdf/');
793 1275 }
794 1276 }
795 -
796 1277 }