PluginProbe
E2Pdf – Export Pdf Tool for WordPress / 1.01.01
E2Pdf – Export Pdf Tool for WordPress v1.01.01
1.32.49 1.32.48 1.32.43 1.32.40 1.32.34 1.32.32 1.32.31 1.32.26 1.32.22 1.32.23 1.32.18 1.32.17 1.32.15 trunk 1.00.00 1.00.13 1.01.01 1.02.02 1.03.07 1.04.07 1.05.03 1.06.02 1.07.11 1.08.00 1.08.06 All 72 releases
e2pdf / classes / model / e2pdf-loader.php

e2pdf-loader.php in E2Pdf – Export Pdf Tool for WordPress 1.01.01, at classes/model/e2pdf-loader.php

707 lines 28.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
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
11 */
12 if (!defined('ABSPATH')) {
13 die('Access denied.');
14 }
15
16 class Model_E2pdf_Loader extends Model_E2pdf_Model {
17
18 private $errors = array();
19 private $e2pdf_admin_pages = array(
20 'toplevel_page_e2pdf',
21 'e2pdf_page_e2pdf-templates',
22 'e2pdf_page_e2pdf-settings',
23 'e2pdf_page_e2pdf-license',
24 'e2pdf_page_e2pdf-debug'
25 );
26
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 */
39 public function load() {
40
41 $this->load_translation();
42 $this->load_actions();
43 $this->load_filters();
44 $this->load_extensions();
45 $this->load_hooks();
46 $this->load_ajax();
47 $this->load_shortcodes();
48 }
49
50 public function load_translation() {
51 load_plugin_textdomain('e2pdf', false, '/e2pdf/languages/');
52 }
53
54 /**
55 * Load ajax
56 */
57 public function load_ajax() {
58 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'));
75 }
76 }
77
78 /**
79 * Load actions
80 */
81 public function load_actions() {
82 if (is_admin()) {
83 add_action('wpmu_new_blog', array(&$this, 'activate_new_network'), 10, 6);
84 add_action('admin_menu', array(&$this, 'admin_menu'));
85 add_action('admin_init', array(&$this, 'admin_settings'));
86 add_action('admin_enqueue_scripts', array(&$this, 'admin_js'));
87 add_action('admin_enqueue_scripts', array(&$this, 'admin_css'));
88 add_action('current_screen', array(&$this, 'admin_functions'));
89 add_action('plugins_loaded', array(&$this, 'after_load'));
90 } else {
91 add_action('wp_enqueue_scripts', array(&$this, 'frontend_js'));
92 add_action('wp', array(Helper_E2pdf_View::instance(), 'render_frontend_page'));
93 }
94 }
95
96 public function load_filters() {
97 }
98
99 public function after_load() {
100 if (get_option('e2pdf_version') !== $this->helper->get('version')) {
101 $this->activate();
102 }
103 }
104
105 /**
106 * Load extensions and its action/filters
107 */
108 public function load_extensions() {
109
110 $model_e2pdf_extension = new Model_E2pdf_Extension();
111 $extensions = $model_e2pdf_extension->get_extensions_list();
112 if (!empty($extensions)) {
113 foreach ($extensions as $extension => $extension_name) {
114 $model_e2pdf_extension->load($extension);
115 $model_e2pdf_extension->load_actions();
116 $model_e2pdf_extension->load_filters();
117 $model_e2pdf_extension->load_shortcodes();
118 }
119 }
120 }
121
122 /**
123 * Load filters
124 */
125 public function load_shortcodes() {
126 add_shortcode('e2pdf-download', array(new Model_E2pdf_Shortcode(), 'e2pdf_download'));
127 add_shortcode('e2pdf-attachment', array(new Model_E2pdf_Shortcode(), 'e2pdf_attachment'));
128 add_shortcode('e2pdf-save', array(new Model_E2pdf_Shortcode(), 'e2pdf_save'));
129 add_shortcode('e2pdf-view', array(new Model_E2pdf_Shortcode(), 'e2pdf_view'));
130 add_shortcode('e2pdf-format-number', array(new Model_E2pdf_Shortcode(), 'e2pdf_format_number'));
131 add_shortcode('e2pdf-format-date', array(new Model_E2pdf_Shortcode(), 'e2pdf_format_date'));
132 add_shortcode('e2pdf-format-output', array(new Model_E2pdf_Shortcode(), 'e2pdf_format_output'));
133 }
134
135 /**
136 * Load hooks
137 */
138 public function load_hooks() {
139 register_activation_hook($this->helper->get('plugin_file_path'), array(&$this, 'activate'));
140 register_deactivation_hook($this->helper->get('plugin_file_path'), array(&$this, 'deactivate'));
141 register_uninstall_hook($this->helper->get('plugin_file_path'), array('Model_E2pdf_Loader', 'uninstall'));
142 }
143
144 /**
145 * Load admin menu
146 */
147 public function admin_menu() {
148 ob_start();
149 add_menu_page('e2pdf', 'E2Pdf', 'manage_options', 'e2pdf', array(Helper_E2pdf_View::instance(), 'render_page'), '', '26');
150 add_submenu_page('e2pdf', __('Export', 'e2pdf'), __('Export', 'e2pdf'), 'manage_options', 'e2pdf', array(Helper_E2pdf_View::instance(), 'render_page'));
151 add_submenu_page('e2pdf', __('Templates', 'e2pdf'), __('Templates', 'e2pdf'), 'manage_options', 'e2pdf-templates', array(Helper_E2pdf_View::instance(), 'render_page'));
152 add_submenu_page('e2pdf', __('Settings', 'e2pdf'), __('Settings', 'e2pdf'), 'manage_options', 'e2pdf-settings', array(Helper_E2pdf_View::instance(), 'render_page'));
153 add_submenu_page('e2pdf', __('License', 'e2pdf'), __('License', 'e2pdf'), 'manage_options', 'e2pdf-license', array(Helper_E2pdf_View::instance(), 'render_page'));
154 if (get_option('e2pdf_debug') === '1') {
155 add_submenu_page('e2pdf', __('Debug', 'e2pdf'), __('Debug', 'e2pdf'), 'manage_options', 'e2pdf-debug', array(Helper_E2pdf_View::instance(), 'render_page'));
156 }
157 }
158
159 /**
160 * Setup settings page
161 */
162 public function admin_settings() {
163 register_setting('e2pdf-settings', 'e2pdf_debug');
164 }
165
166 /**
167 * Load admin css
168 */
169 public function admin_css($page) {
170
171 if (get_option('e2pdf_debug') === '1') {
172 $version = strtotime("now");
173 } else {
174 $version = $this->helper->get('version');
175 }
176
177
178 wp_register_style('e2pdf.backend', plugins_url('css/e2pdf.backend.css', $this->helper->get('plugin_file_path')), array(), $version);
179 wp_enqueue_style('e2pdf.backend');
180 }
181
182 /**
183 * Load admin javascript
184 *
185 * @param string $page - Current page
186 */
187 public function admin_js($page) {
188
189 if (!in_array($page, $this->e2pdf_admin_pages)) {
190 return;
191 }
192
193 if (get_option('e2pdf_debug') === '1') {
194 $version = strtotime("now");
195 } else {
196 $version = $this->helper->get('version');
197 }
198
199 wp_enqueue_script(
200 'js/e2pdf.backend', plugins_url('js/e2pdf.backend.js', $this->helper->get('plugin_file_path')), array('jquery'), $version
201 );
202
203 $js_lang = $this->get_js_lang();
204 wp_add_inline_script('js/e2pdf.backend', $js_lang, 'before');
205
206 $js_size = $this->get_js_template_sizes();
207 wp_add_inline_script('js/e2pdf.backend', $js_size, 'before');
208
209 $js_extension = $this->get_js_template_extensions();
210 wp_add_inline_script('js/e2pdf.backend', $js_extension, 'before');
211
212 $js_params = $this->get_js_params();
213 wp_add_inline_script('js/e2pdf.backend', $js_params, 'before');
214 }
215
216 /**
217 * Load admin javascript
218 *
219 * @param string $page - Current page
220 */
221 public function frontend_js() {
222
223 wp_register_script(
224 'js/e2pdf.frontend', plugins_url('js/e2pdf.frontend.js', $this->helper->get('plugin_file_path')), array('jquery'), $this->helper->get('version')
225 );
226 wp_enqueue_script(
227 'js/e2pdf.frontend'
228 );
229 }
230
231 /**
232 * Get nonce for JavaScript
233 *
234 * @return string - JS nonce
235 */
236 public function get_js_params() {
237 $params = array(
238 'nonce' => wp_create_nonce('e2pdf_ajax'),
239 'plugins_url' => plugins_url('', $this->helper->get('plugin_file_path')),
240 'upload_url' => $this->helper->get_upload_url(),
241 'license_type' => $this->helper->get('license')->get('type')
242 );
243
244 $helper_e2pdf_js = new Helper_E2pdf_Js();
245 $js_params = $helper_e2pdf_js->get_js_array('e2pdfParams', $params);
246 return $js_params;
247 }
248
249 /**
250 * Get Lang Key->Value for JavaScript
251 *
252 * @return string - JS language Key->Value
253 */
254 public function get_js_lang() {
255 $lang = array(
256 'Delete' => __('Delete', 'e2pdf'),
257 'Properties' => __('Properties', 'e2pdf'),
258 'License Key' => __('License Key', 'e2pdf'),
259 'Submit' => __('Submit', 'e2pdf'),
260 'Are you sure want to remove page?' => __('Are you sure want to remove page?', 'e2pdf'),
261 'Are you sure want to remove font?' => __('Are you sure want to remove font?', 'e2pdf'),
262 'Empty PDF' => __('Empty PDF', 'e2pdf'),
263 'Upload PDF' => __('Upload PDF', 'e2pdf'),
264 'Auto PDF' => __('Auto PDF', 'e2pdf'),
265 'Create PDF' => __('Create PDF', 'e2pdf'),
266 'Extension' => __('Extension', 'e2pdf'),
267 'Size' => __('Size', 'e2pdf'),
268 'Properties' => __('Properties', 'e2pdf'),
269 'Name' => __('Name', 'e2pdf'),
270 'Enter link here' => __('Enter link here', 'e2pdf'),
271 'Z-index' => __('Z-index', 'e2pdf'),
272 'Border' => __('Border', 'e2pdf'),
273 'Background' => __('Background', 'e2pdf'),
274 'Left' => __('Left', 'e2pdf'),
275 'Right' => __('Right', 'e2pdf'),
276 'Top' => __('Top', 'e2pdf'),
277 'Center' => __('Center', 'e2pdf'),
278 'Bottom' => __('Bottom', 'e2pdf'),
279 'Color' => __('Color', 'e2pdf'),
280 'Border Color' => __('Border Color', 'e2pdf'),
281 'Line Height' => __('Line Height', 'e2pdf'),
282 'Padding' => __('Padding', 'e2pdf'),
283 'Width' => __('Width', 'e2pdf'),
284 'Height' => __('Height', 'e2pdf'),
285 'Text Color' => __('Text Color', 'e2pdf'),
286 'Value' => __('Value', 'e2pdf'),
287 'Font' => __('Font', 'e2pdf'),
288 'Options' => __('Options', 'e2pdf'),
289 'Option' => __('Option', 'e2pdf'),
290 'Group' => __('Group', 'e2pdf'),
291 'Group Name' => __('Group Name', 'e2pdf'),
292 'Group Value' => __('Group Value', 'e2pdf'),
293 'Selector' => __('Selector', 'e2pdf'),
294 'Check' => __('Check', 'e2pdf'),
295 'Circle' => __('Circle', 'e2pdf'),
296 'Cross' => __('Cross', 'e2pdf'),
297 'Diamond' => __('Diamond', 'e2pdf'),
298 'Square' => __('Square', 'e2pdf'),
299 'Star' => __('Star', 'e2pdf'),
300 'Type' => __('Type', 'e2pdf'),
301 'Scale' => __('Scale', 'e2pdf'),
302 'Width&Height' => __('Width&Height', 'e2pdf'),
303 'Width' => __('Width', 'e2pdf'),
304 'Height' => __('Height', 'e2pdf'),
305 'Choose Image' => __('Choose Image', 'e2pdf'),
306 'PDF Options' => __('PDF Options', 'e2pdf'),
307 'PDF Upload' => __('PDF Upload', 'e2pdf'),
308 'Item' => __('Item', 'e2pdf'),
309 'Position' => __('Position', 'e2pdf'),
310 'Copy' => __('Copy', 'e2pdf'),
311 'Cut' => __('Cut', 'e2pdf'),
312 'Paste' => __('Paste', 'e2pdf'),
313 'Paste in Place' => __('Paste in Place', 'e2pdf'),
314 'Apply' => __('Apply', 'e2pdf'),
315 'Dynamic Height' => __('Dynamic Height', 'e2pdf'),
316 'Text Align' => __('Text Align', 'e2pdf'),
317 'Readonly' => __('Readonly', 'e2pdf'),
318 'Multiline' => __('Multiline', 'e2pdf'),
319 'Required' => __('Required', 'e2pdf'),
320 'Settings' => __('Settings', 'e2pdf'),
321 'Relative' => __('Relative', 'e2pdf'),
322 'Page Size' => __('Page Size', 'e2pdf'),
323 'Custom' => __('Custom', 'e2pdf'),
324 'Size Preset' => __('Size Preset', 'e2pdf'),
325 'Page Options' => __('Page Options', 'e2pdf'),
326 'Select' => __('Select', 'e2pdf'),
327 'Saved Template will be overwritten! Are you sure want to continue?' => __('Saved Template will be overwritten! Are you sure want to continue?', 'e2pdf'),
328 'All pages will be removed! Are you sure want to continue?' => __('All pages will be removed! Are you sure want to continue?', 'e2pdf'),
329 'Adding new pages not available in "Uploaded PDF"' => __('Adding new pages not available in "Uploaded PDF"', 'e2pdf'),
330 'Dataset will be removed! Are you sure want to continue?' => __('Dataset will be removed! Are you sure want to continue?', 'e2pdf'),
331 'All datasets will be removed! Are you sure want to continue?' => __('All datasets will be removed! Are you sure want to continue?', 'e2pdf'),
332 'WARNING: Template has changes after last save! Changes will be lost!' => __('WARNING: Template has changes after last save! Changes will be lost!', 'e2pdf'),
333 'Element will be removed! Are you sure want to continue?' => __('Element will be removed! Are you sure want to continue?', 'e2pdf'),
334 'Elements will be removed! Are you sure want to continue?' => __('Elements will be removed! Are you sure want to continue?', 'e2pdf'),
335 'Action will be removed! Are you sure want to continue?' => __('Action will be removed! Are you sure want to continue?', 'e2pdf'),
336 'Condition will be removed! Are you sure want to continue?' => __('Condition will be removed! Are you sure want to continue?', 'e2pdf'),
337 'RTL' => __('RTL', 'e2pdf'),
338 'Hide' => __('Hide', 'e2pdf'),
339 'Show' => __('Show', 'e2pdf'),
340 'Password' => __('Password', 'e2pdf'),
341 'Map Field' => __('Map Field', 'e2pdf'),
342 'Parent' => __('Parent', 'e2pdf'),
343 'Hide Empty' => __('Hide Empty', 'e2pdf'),
344 '--- Select ---' => __('--- Select ---', 'e2pdf'),
345 'Activated' => __('Activated', 'e2pdf'),
346 'Not Activated' => __('Not Activated', 'e2pdf'),
347 'Page ID' => __('Page ID', 'e2pdf'),
348 'New Position' => __('New Position', 'e2pdf'),
349 'Render New Fields' => __('Render New Fields', 'e2pdf'),
350 'Flush Elements' => __('Flush Elements', 'e2pdf'),
351 'Keep dimension' => __('Keep dimension', 'e2pdf'),
352 'ID' => __('ID', 'e2pdf'),
353 'Only 1 page allowed with "FREE" license type' => __('Only 1 page allowed with "FREE" license type', 'e2pdf'),
354 'Last condition can\'t be removed' => __('Last condition can\'t be removed', 'e2pdf'),
355 'Confirmation code' => __('Confirmation code', 'e2pdf'),
356 'Code' => __('Code', 'e2pdf'),
357 'Visual Mapper' => __('Visual Mapper', 'e2pdf'),
358 'Auto' => __('Auto', 'e2pdf'),
359 'Actions' => __('Actions', 'e2pdf'),
360 'Save' => __('Save', 'e2pdf'),
361 'Resize' => __('Resize', 'e2pdf'),
362 'Horizontal align' => __('Horizontal align', 'e2pdf'),
363 'Vertical align' => __('Vertical align', 'e2pdf'),
364 'Middle' => __('Middle', 'e2pdf'),
365 'Apply If' => __('Apply If', 'e2pdf'),
366 'Action' => __('Action', 'e2pdf'),
367 'Property' => __('Property', 'e2pdf'),
368 'If' => __('If', 'e2pdf'),
369 'Condition' => __('Condition', 'e2pdf'),
370 'Change' => __('Change', 'e2pdf'),
371 'Any' => __('Any', 'e2pdf'),
372 'All' => __('All', 'e2pdf'),
373 'Order' => __('Order', 'e2pdf'),
374 'E-signature' => __('E-signature', 'e2pdf'),
375 'Contact' => __('Contact', 'e2pdf'),
376 'Location' => __('Location', 'e2pdf'),
377 'Reason' => __('Reason', 'e2pdf'),
378 'Placeholder' => __('Placeholder', 'e2pdf'),
379 'Length' => __('Length', 'e2pdf'),
380 'Comb' => __('Comb', 'e2pdf')
381 );
382
383 $helper_e2pdf_js = new Helper_E2pdf_Js();
384 $js_lang = $helper_e2pdf_js->get_js_array('e2pdfLang', $lang);
385 return $js_lang;
386 }
387
388 /**
389 * Get Template sizes for JavaScript
390 *
391 * @return string - JS template sizes
392 */
393 public function get_js_template_sizes() {
394 $controller_e2pdf_templates = new Controller_E2pdf_Templates();
395 $sizes = $controller_e2pdf_templates->get_sizes_list();
396
397 $helper_e2pdf_js = new Helper_E2pdf_Js();
398 $js_template_sizes = $helper_e2pdf_js->get_js_array('e2pdfTemplateSizes', $sizes);
399
400 return $js_template_sizes;
401 }
402
403 /**
404 * Get Extensions list for JavaScript
405 *
406 * @return string - JS Extensions list
407 */
408 public function get_js_template_extensions() {
409 $controller_e2pdf_templates = new Controller_E2pdf_Templates();
410 $extensions = $controller_e2pdf_templates->get_extensions_list();
411
412 $helper_e2pdf_js = new Helper_E2pdf_Js();
413 $js_template_extensions = $helper_e2pdf_js->get_js_array('e2pdfTemplateExtensions', $extensions);
414
415 return $js_template_extensions;
416 }
417
418 /**
419 * Check requirenments before activation
420 */
421 public function requirenments() {
422 if (version_compare(PHP_VERSION, '5.3.3', '<')) {
423 throw new Exception(
424 sprintf(__("E2Pdf requires PHP version 5.3.3 or later. Your PHP version is %s", 'e2pdf'), PHP_VERSION)
425 );
426 }
427 }
428
429 public function admin_functions() {
430 $current_screen = get_current_screen();
431 if (!in_array($current_screen->id, $this->e2pdf_admin_pages)) {
432 return;
433 }
434 $this->helper->set('license', new Model_E2pdf_License());
435 }
436
437 /**
438 * On plugin activation
439 */
440 public function activate() {
441 global $wpdb;
442
443 try {
444 $this->requirenments();
445 if (is_multisite() && is_super_admin() && is_main_site()) {
446 foreach ($wpdb->get_col("SELECT blog_id FROM $wpdb->blogs") as $blog_id) {
447 $this->activate_site($blog_id);
448 }
449 } else {
450 $this->activate_site();
451 }
452 } catch (Exception $e) {
453 echo "<div style='line-height: 70px;'>";
454 echo $e->getMessage();
455 echo "</div>";
456 exit();
457 }
458 }
459
460 public function activate_new_network($blog_id, $user_id, $domain, $path, $site_id, $meta) {
461 if (is_plugin_active_for_network('e2pdf/e2pdf.php')) {
462 $this->activate_site($blog_id);
463 }
464 }
465
466 public function activate_site($blog_id = false) {
467 global $wpdb;
468
469 $db_prefix = $wpdb->prefix;
470
471 $wp_upload_dir = wp_upload_dir();
472
473 if ($blog_id) {
474 switch_to_blog($blog_id);
475 $wp_upload_dir = wp_upload_dir();
476 $db_prefix = $wpdb->get_blog_prefix($blog_id);
477 if (!is_main_site($blog_id)) {
478 $this->helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
479 $this->helper->set('tmp_dir', $this->helper->get('upload_dir') . 'tmp/');
480 $this->helper->set('pdf_dir', $this->helper->get('upload_dir') . 'pdf/');
481 $this->helper->set('fonts_dir', $this->helper->get('upload_dir') . 'fonts/');
482 $this->helper->set('tpl_dir', $this->helper->get('upload_dir') . 'tpl/');
483 }
484 }
485
486 $dirs = array(
487 $this->helper->get('upload_dir'),
488 $this->helper->get('tmp_dir'),
489 $this->helper->get('pdf_dir'),
490 $this->helper->get('fonts_dir'),
491 $this->helper->get('tpl_dir'),
492 );
493
494
495 if (!is_main_site($blog_id)) {
496 array_unshift($dirs, $wp_upload_dir['basedir']);
497 }
498
499 foreach ($dirs as $dir) {
500 if ($this->helper->create_dir($dir)) {
501 if ($dir == $this->helper->get('fonts_dir')) {
502 copy($this->helper->get('plugin_dir') . "data/fonts/NotoSans-Regular.ttf", $this->helper->get('fonts_dir') . "NotoSans-Regular.ttf");
503 }
504 } else {
505 throw new Exception(
506 sprintf(__("Can't create folder %s", 'e2pdf'), $dir)
507 );
508 }
509 }
510
511
512 $options = Model_E2pdf_Options::get_options();
513 foreach ($options as $option_key => $option_value) {
514 if (get_option($option_key) === false) {
515 add_option($option_key, $option_value);
516 }
517 }
518
519 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_templates` (
520 `ID` int(11) NOT NULL AUTO_INCREMENT,
521 `uid` varchar(255) NOT NULL,
522 `pdf` text,
523 `title` text,
524 `created_at` datetime NOT NULL,
525 `updated_at` datetime NOT NULL,
526 `flatten` enum('0','1','2') NOT NULL DEFAULT '0',
527 `compression` int(1) NOT NULL DEFAULT '-1',
528 `appearance` enum('0','1') NOT NULL DEFAULT '0',
529 `width` int(11) NOT NULL DEFAULT '0',
530 `height` int(11) NOT NULL DEFAULT '0',
531 `extension` varchar(255) NOT NULL,
532 `item` varchar(255) NOT NULL,
533 `format` enum('pdf') NOT NULL DEFAULT 'pdf',
534 `dataset_title` text NOT NULL,
535 `button_title` text NOT NULL,
536 `inline` enum('0','1') NOT NULL DEFAULT '0',
537 `auto` enum('0','1') NOT NULL DEFAULT '0',
538 `name` text NOT NULL,
539 `password` text NOT NULL,
540 `font` varchar(255) NOT NULL,
541 `font_size` varchar(255) NOT NULL,
542 `font_color` varchar(255) NOT NULL,
543 `line_height` varchar(255) NOT NULL,
544 `fonts` longtext NOT NULL,
545 `trash` enum('0','1') NOT NULL DEFAULT '0',
546 `activated` enum('0','1') NOT NULL DEFAULT '0',
547 `locked` enum('0','1') NOT NULL DEFAULT '0',
548 `author` int(11) NOT NULL,
549 PRIMARY KEY (`ID`)
550 ) CHARSET=utf8 COLLATE=utf8_general_ci");
551
552
553 if (version_compare(get_option('e2pdf_version'), '0.01.54', '<')) {
554 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` DROP COLUMN `blank`");
555 }
556
557
558 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_entries` (
559 `ID` int(11) NOT NULL AUTO_INCREMENT,
560 `uid` varchar(255) NOT NULL,
561 `entry` longtext,
562 `pdf_num` int(11) NOT NULL DEFAULT '0',
563 PRIMARY KEY (`ID`)
564 ) CHARSET=utf8 COLLATE=utf8_general_ci");
565
566 if (version_compare(get_option('e2pdf_version'), '0.01.33', '<')) {
567 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_entries` ADD COLUMN `pdf_num` INT(11) NOT NULL DEFAULT '0'");
568 }
569
570
571 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_datasets` (
572 `ID` int(11) NOT NULL AUTO_INCREMENT,
573 `extension` varchar(255) NOT NULL,
574 `item` varchar(255) NOT NULL,
575 `entry` longtext,
576 PRIMARY KEY (`ID`)
577 ) CHARSET=utf8 COLLATE=utf8_general_ci");
578
579
580 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_pages` (
581 `ID` int(11) NOT NULL AUTO_INCREMENT,
582 `page_id` int(11) NOT NULL DEFAULT '0',
583 `template_id` int(11) NOT NULL DEFAULT '0',
584 `properties` longtext NOT NULL,
585 `actions` longtext NOT NULL,
586 PRIMARY KEY (`ID`)
587 ) CHARSET=utf8 COLLATE=utf8_general_ci");
588
589 if (version_compare(get_option('e2pdf_version'), '0.01.63', '<')) {
590 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_pages` ADD COLUMN `actions` longtext NOT NULL");
591 }
592
593 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_elements` (
594 `ID` int(11) NOT NULL AUTO_INCREMENT,
595 `page_id` int(11) NOT NULL DEFAULT '0',
596 `template_id` int(11) NOT NULL DEFAULT '0',
597 `element_id` int(11) NOT NULL DEFAULT '0',
598 `type` varchar(255) NOT NULL,
599 `top` int(11) NOT NULL DEFAULT '0',
600 `left` int(11) NOT NULL DEFAULT '0',
601 `width` int(11) NOT NULL DEFAULT '0',
602 `height` int(11) NOT NULL DEFAULT '0',
603 `value` longtext NOT NULL,
604 `properties` longtext NOT NULL,
605 `actions` longtext NOT NULL,
606 PRIMARY KEY (`ID`)
607 ) CHARSET=utf8 COLLATE=utf8_general_ci");
608
609 if (version_compare(get_option('e2pdf_version'), '0.01.63', '<')) {
610 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` ADD COLUMN `actions` longtext NOT NULL");
611 }
612
613 if (get_option('e2pdf_version') !== $this->helper->get('version')) {
614 update_option('e2pdf_version', $this->helper->get('version'));
615 }
616
617 $model_e2pdf_api = new Model_E2pdf_Api();
618 $model_e2pdf_api->set(array(
619 'action' => 'common/activate'
620 ));
621 $model_e2pdf_api->request();
622
623 $model_e2pdf_license = new Model_E2pdf_License();
624
625 if ($blog_id) {
626 restore_current_blog();
627 $wp_upload_dir = wp_upload_dir();
628 $this->helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
629 $this->helper->set('tmp_dir', $this->helper->get('upload_dir') . 'tmp/');
630 $this->helper->set('pdf_dir', $this->helper->get('upload_dir') . 'pdf/');
631 $this->helper->set('fonts_dir', $this->helper->get('upload_dir') . 'fonts/');
632 $this->helper->set('tpl_dir', $this->helper->get('upload_dir') . 'tpl/');
633 }
634 }
635
636 /**
637 * On plugin deactivation
638 */
639 public function deactivate() {
640
641 }
642
643 /**
644 * On plugin uninstall
645 */
646 public static function uninstall() {
647 global $wpdb;
648
649 if (is_multisite() && is_super_admin() && is_main_site()) {
650 foreach ($wpdb->get_col("SELECT blog_id FROM $wpdb->blogs") as $blog_id) {
651 self::uninstall_site($blog_id);
652 }
653 } else {
654 self::uninstall_site();
655 }
656 }
657
658 public static function uninstall_site($blog_id = false) {
659 global $wpdb;
660
661 $db_prefix = $wpdb->prefix;
662
663 $wp_upload_dir = wp_upload_dir();
664
665 $helper_e2pdf_helper = Helper_E2pdf_Helper::instance();
666
667 if ($blog_id) {
668 switch_to_blog($blog_id);
669 $wp_upload_dir = wp_upload_dir();
670 $db_prefix = $wpdb->get_blog_prefix($blog_id);
671
672 if (!is_main_site($blog_id)) {
673 $helper_e2pdf_helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
674 }
675 }
676
677
678 $model_e2pdf_api = new Model_E2pdf_Api();
679 $model_e2pdf_api->set(array(
680 'action' => 'common/uninstall'
681 ));
682 $model_e2pdf_api->request();
683
684 $options = Model_E2pdf_Options::get_options();
685 foreach ($options as $option_key => $option_value) {
686 delete_option($option_key, $option_value);
687 }
688
689 $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_templates' . '`');
690 $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_entries' . '`');
691 $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_datasets' . '`');
692 $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_pages' . '`');
693 $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_elements' . '`');
694
695 $wpdb->query($wpdb->prepare('DELETE FROM `' . $db_prefix . 'options' . '` WHERE option_name LIKE %s OR option_name LIKE %s', '_transient_e2pdf_%', '_transient_e2pdf_%'));
696
697 $helper_e2pdf_helper->delete_dir($helper_e2pdf_helper->get('upload_dir'));
698
699 if ($blog_id) {
700 restore_current_blog();
701 $wp_upload_dir = wp_upload_dir();
702 $helper_e2pdf_helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
703 }
704 }
705
706 }
707