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