PluginProbe
E2Pdf – Export Pdf Tool for WordPress / 1.05.03
E2Pdf – Export Pdf Tool for WordPress v1.05.03
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.05.03, at classes/model/e2pdf-loader.php

728 lines 29.9 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 }
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'));
94 }
95
96 public function load_filters() {
97
98 }
99
100 public function after_load() {
101 if (get_option('e2pdf_version') !== $this->helper->get('version')) {
102 $this->activate();
103 }
104 }
105
106 /**
107 * Load extensions and its action/filters
108 */
109 public function load_extensions() {
110
111 $model_e2pdf_extension = new Model_E2pdf_Extension();
112 $extensions = $model_e2pdf_extension->extensions();
113 if (!empty($extensions)) {
114 foreach ($extensions as $extension => $extension_name) {
115 $model_e2pdf_extension->load($extension);
116 $model_e2pdf_extension->load_actions();
117 $model_e2pdf_extension->load_filters();
118 $model_e2pdf_extension->load_shortcodes();
119 }
120 }
121 }
122
123 /**
124 * Load filters
125 */
126 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 }
136
137 /**
138 * Load hooks
139 */
140 public function load_hooks() {
141 register_activation_hook($this->helper->get('plugin_file_path'), array(&$this, 'activate'));
142 register_deactivation_hook($this->helper->get('plugin_file_path'), array(&$this, 'deactivate'));
143 register_uninstall_hook($this->helper->get('plugin_file_path'), array('Model_E2pdf_Loader', 'uninstall'));
144 }
145
146 /**
147 * Load admin menu
148 */
149 public function admin_menu() {
150 ob_start();
151 add_menu_page('e2pdf', 'E2Pdf', 'manage_options', 'e2pdf', array(Helper_E2pdf_View::instance(), 'render_page'), '', '26');
152 add_submenu_page('e2pdf', __('Export', 'e2pdf'), __('Export', 'e2pdf'), 'manage_options', 'e2pdf', array(Helper_E2pdf_View::instance(), 'render_page'));
153 add_submenu_page('e2pdf', __('Templates', 'e2pdf'), __('Templates', 'e2pdf'), 'manage_options', 'e2pdf-templates', array(Helper_E2pdf_View::instance(), 'render_page'));
154 add_submenu_page('e2pdf', __('Settings', 'e2pdf'), __('Settings', 'e2pdf'), 'manage_options', 'e2pdf-settings', array(Helper_E2pdf_View::instance(), 'render_page'));
155 add_submenu_page('e2pdf', __('License', 'e2pdf'), __('License', 'e2pdf'), 'manage_options', 'e2pdf-license', array(Helper_E2pdf_View::instance(), 'render_page'));
156 if (get_option('e2pdf_debug') === '1') {
157 add_submenu_page('e2pdf', __('Debug', 'e2pdf'), __('Debug', 'e2pdf'), 'manage_options', 'e2pdf-debug', array(Helper_E2pdf_View::instance(), 'render_page'));
158 }
159 }
160
161 /**
162 * Setup settings page
163 */
164 public function admin_settings() {
165 register_setting('e2pdf-settings', 'e2pdf_debug');
166 }
167
168 /**
169 * Load admin css
170 */
171 public function admin_css($page) {
172 if (get_option('e2pdf_debug') === '1') {
173 $version = strtotime("now");
174 } else {
175 $version = $this->helper->get('version');
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 $js_params = $this->helper->load('js')->get_js_array('e2pdfParams', $params);
245 return $js_params;
246 }
247
248 /**
249 * Get Lang Key->Value for JavaScript
250 *
251 * @return string - JS language Key->Value
252 */
253 public function get_js_lang() {
254 $lang = array(
255 'Delete' => __('Delete', 'e2pdf'),
256 'Properties' => __('Properties', 'e2pdf'),
257 'License Key' => __('License Key', 'e2pdf'),
258 'Submit' => __('Submit', 'e2pdf'),
259 'Are you sure want to remove page?' => __('Are you sure want to remove page?', 'e2pdf'),
260 'Are you sure want to remove font?' => __('Are you sure want to remove font?', 'e2pdf'),
261 'Empty PDF' => __('Empty PDF', 'e2pdf'),
262 'Upload PDF' => __('Upload PDF', 'e2pdf'),
263 'Auto PDF' => __('Auto PDF', 'e2pdf'),
264 'Create PDF' => __('Create PDF', 'e2pdf'),
265 'Extension' => __('Extension', 'e2pdf'),
266 'Size' => __('Size', 'e2pdf'),
267 'Properties' => __('Properties', 'e2pdf'),
268 'Name' => __('Name', 'e2pdf'),
269 'Enter link here' => __('Enter link here', 'e2pdf'),
270 'Z-index' => __('Z-index', 'e2pdf'),
271 'Border' => __('Border', 'e2pdf'),
272 'Background' => __('Background', 'e2pdf'),
273 'Left' => __('Left', 'e2pdf'),
274 'Right' => __('Right', 'e2pdf'),
275 'Top' => __('Top', 'e2pdf'),
276 'Center' => __('Center', 'e2pdf'),
277 'Bottom' => __('Bottom', 'e2pdf'),
278 'Color' => __('Color', 'e2pdf'),
279 'Border Color' => __('Border Color', 'e2pdf'),
280 'Line Height' => __('Line Height', 'e2pdf'),
281 'Padding' => __('Padding', 'e2pdf'),
282 'Width' => __('Width', 'e2pdf'),
283 'Height' => __('Height', 'e2pdf'),
284 'Text Color' => __('Text Color', 'e2pdf'),
285 'Value' => __('Value', 'e2pdf'),
286 'Font' => __('Font', 'e2pdf'),
287 'Options' => __('Options', 'e2pdf'),
288 'Option' => __('Option', 'e2pdf'),
289 'Group' => __('Group', 'e2pdf'),
290 'Group Name' => __('Group Name', 'e2pdf'),
291 'Group Value' => __('Group Value', 'e2pdf'),
292 'Selector' => __('Selector', 'e2pdf'),
293 'Check' => __('Check', 'e2pdf'),
294 'Circle' => __('Circle', 'e2pdf'),
295 'Cross' => __('Cross', 'e2pdf'),
296 'Diamond' => __('Diamond', 'e2pdf'),
297 'Square' => __('Square', 'e2pdf'),
298 'Star' => __('Star', 'e2pdf'),
299 'Type' => __('Type', 'e2pdf'),
300 'Scale' => __('Scale', 'e2pdf'),
301 'Width&Height' => __('Width&Height', 'e2pdf'),
302 'Width' => __('Width', 'e2pdf'),
303 'Height' => __('Height', 'e2pdf'),
304 'Choose Image' => __('Choose Image', 'e2pdf'),
305 'PDF Options' => __('PDF Options', 'e2pdf'),
306 'PDF Upload' => __('PDF Upload', 'e2pdf'),
307 'Item' => __('Item', 'e2pdf'),
308 'Position' => __('Position', 'e2pdf'),
309 'Copy' => __('Copy', 'e2pdf'),
310 'Cut' => __('Cut', 'e2pdf'),
311 'Paste' => __('Paste', 'e2pdf'),
312 'Paste in Place' => __('Paste in Place', 'e2pdf'),
313 'Apply' => __('Apply', 'e2pdf'),
314 'Dynamic Height' => __('Dynamic Height', 'e2pdf'),
315 'Text Align' => __('Text Align', 'e2pdf'),
316 'Readonly' => __('Readonly', 'e2pdf'),
317 'Multiline' => __('Multiline', 'e2pdf'),
318 'Required' => __('Required', 'e2pdf'),
319 'Settings' => __('Settings', 'e2pdf'),
320 'Relative' => __('Relative', 'e2pdf'),
321 'Page Size' => __('Page Size', 'e2pdf'),
322 'Custom' => __('Custom', 'e2pdf'),
323 'Size Preset' => __('Size Preset', 'e2pdf'),
324 'Page Options' => __('Page Options', 'e2pdf'),
325 'Select' => __('Select', 'e2pdf'),
326 'Saved Template will be overwritten! Are you sure want to continue?' => __('Saved Template will be overwritten! Are you sure want to continue?', 'e2pdf'),
327 'All pages will be removed! Are you sure want to continue?' => __('All pages will be removed! Are you sure want to continue?', 'e2pdf'),
328 'Adding new pages not available in "Uploaded PDF"' => __('Adding new pages not available in "Uploaded PDF"', 'e2pdf'),
329 'Dataset will be removed! Are you sure want to continue?' => __('Dataset will be removed! Are you sure want to continue?', 'e2pdf'),
330 'All datasets will be removed! Are you sure want to continue?' => __('All datasets will be removed! Are you sure want to continue?', 'e2pdf'),
331 'WARNING: Template has changes after last save! Changes will be lost!' => __('WARNING: Template has changes after last save! Changes will be lost!', 'e2pdf'),
332 'Element will be removed! Are you sure want to continue?' => __('Element will be removed! Are you sure want to continue?', 'e2pdf'),
333 'Elements will be removed! Are you sure want to continue?' => __('Elements will be removed! Are you sure want to continue?', 'e2pdf'),
334 'Action will be removed! Are you sure want to continue?' => __('Action will be removed! Are you sure want to continue?', 'e2pdf'),
335 'Condition will be removed! Are you sure want to continue?' => __('Condition will be removed! Are you sure want to continue?', 'e2pdf'),
336 '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'),
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 'None' => __('None', 'e2pdf'),
382 'Highlight' => __('Highlight', 'e2pdf'),
383 'Invert' => __('Invert', 'e2pdf'),
384 'Outline' => __('Outline', 'e2pdf'),
385 'Push' => __('Push', 'e2pdf'),
386 'Title' => __('Title', 'e2pdf'),
387 'Status' => __('Status', 'e2pdf'),
388 'Confirm' => __('Confirm', 'e2pdf'),
389 'Cancel' => __('Cancel', 'e2pdf')
390 );
391
392 $js_lang = $this->helper->load('js')->get_js_array('e2pdfLang', $lang);
393 return $js_lang;
394 }
395
396 /**
397 * Get Template sizes for JavaScript
398 *
399 * @return string - JS template sizes
400 */
401 public function get_js_template_sizes() {
402 $controller_e2pdf_templates = new Controller_E2pdf_Templates();
403 $sizes = $controller_e2pdf_templates->get_sizes_list();
404
405 $js_template_sizes = $this->helper->load('js')->get_js_array('e2pdfTemplateSizes', $sizes);
406
407 return $js_template_sizes;
408 }
409
410 /**
411 * Get Extensions list for JavaScript
412 *
413 * @return string - JS Extensions list
414 */
415 public function get_js_template_extensions() {
416 $model_e2pdf_extension = new Model_E2pdf_Extension();
417 $extensions = $model_e2pdf_extension->extensions();
418
419 $js_template_extensions = $this->helper->load('js')->get_js_array('e2pdfTemplateExtensions', $extensions);
420
421 return $js_template_extensions;
422 }
423
424 /**
425 * Check requirenments before activation
426 */
427 public function requirenments() {
428 if (version_compare(PHP_VERSION, '5.3.3', '<')) {
429 throw new Exception(
430 sprintf(__("E2Pdf requires PHP version 5.3.3 or later. Your PHP version is %s", 'e2pdf'), PHP_VERSION)
431 );
432 }
433 }
434
435 public function admin_functions() {
436 $current_screen = get_current_screen();
437 if (!$current_screen || !in_array($current_screen->id, $this->e2pdf_admin_pages)) {
438 return;
439 }
440
441 if ($current_screen->id == 'e2pdf_page_e2pdf-templates' && !isset($_GET['action'])) {
442 $screen_option = array(
443 'label' => __('Templates per page', 'e2pdf') . ':',
444 'default' => get_option('e2pdf_templates_screen_per_page') ? get_option('e2pdf_templates_screen_per_page') : '20',
445 'option' => 'e2pdf_templates_screen_per_page'
446 );
447 add_screen_option('per_page', $screen_option);
448 }
449
450 $this->helper->set('license', new Model_E2pdf_License());
451 }
452
453 public function wp_loaded() {
454 if (!get_transient('e2pdf_adobesign_refresh_token')) {
455 new Model_E2pdf_AdobeSign();
456 }
457 }
458
459 /**
460 * On plugin activation
461 */
462 public function activate() {
463 global $wpdb;
464
465 try {
466 $this->requirenments();
467 if (is_multisite() && is_super_admin() && is_main_site()) {
468 foreach ($wpdb->get_col("SELECT blog_id FROM $wpdb->blogs") as $blog_id) {
469 $this->activate_site($blog_id);
470 }
471 } else {
472 $this->activate_site();
473 }
474 } catch (Exception $e) {
475 echo "<div style='line-height: 70px;'>";
476 echo $e->getMessage();
477 echo "</div>";
478 exit();
479 }
480 }
481
482 public function activate_new_network($blog_id, $user_id, $domain, $path, $site_id, $meta) {
483 if (is_plugin_active_for_network('e2pdf/e2pdf.php')) {
484 $this->activate_site($blog_id);
485 }
486 }
487
488 public function activate_site($blog_id = false) {
489 global $wpdb;
490
491 $db_prefix = $wpdb->prefix;
492
493 $wp_upload_dir = wp_upload_dir();
494
495 if ($blog_id) {
496 switch_to_blog($blog_id);
497 $wp_upload_dir = wp_upload_dir();
498 $db_prefix = $wpdb->get_blog_prefix($blog_id);
499 if (!is_main_site($blog_id)) {
500 $this->helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
501 $this->helper->set('tmp_dir', $this->helper->get('upload_dir') . 'tmp/');
502 $this->helper->set('pdf_dir', $this->helper->get('upload_dir') . 'pdf/');
503 $this->helper->set('fonts_dir', $this->helper->get('upload_dir') . 'fonts/');
504 $this->helper->set('tpl_dir', $this->helper->get('upload_dir') . 'tpl/');
505 }
506 }
507
508 $dirs = array(
509 $this->helper->get('upload_dir'),
510 $this->helper->get('tmp_dir'),
511 $this->helper->get('pdf_dir'),
512 $this->helper->get('fonts_dir'),
513 $this->helper->get('tpl_dir'),
514 );
515
516 if (!is_main_site($blog_id)) {
517 array_unshift($dirs, $wp_upload_dir['basedir']);
518 }
519
520 foreach ($dirs as $dir) {
521 if ($this->helper->create_dir($dir)) {
522 if ($dir == $this->helper->get('fonts_dir')) {
523 copy($this->helper->get('plugin_dir') . "data/fonts/NotoSans-Regular.ttf", $this->helper->get('fonts_dir') . "NotoSans-Regular.ttf");
524 }
525 } else {
526 throw new Exception(
527 sprintf(__("Can't create folder %s", 'e2pdf'), $dir)
528 );
529 }
530 }
531
532 $options = Model_E2pdf_Options::get_options();
533 foreach ($options as $option_key => $option_value) {
534 if (get_option($option_key) === false) {
535 add_option($option_key, $option_value);
536 }
537 }
538
539 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_templates` (
540 `ID` int(11) NOT NULL AUTO_INCREMENT,
541 `uid` varchar(255) NOT NULL,
542 `pdf` text,
543 `title` text,
544 `created_at` datetime NOT NULL,
545 `updated_at` datetime NOT NULL,
546 `flatten` enum('0','1','2') NOT NULL DEFAULT '0',
547 `compression` int(1) NOT NULL DEFAULT '-1',
548 `appearance` enum('0','1') NOT NULL DEFAULT '0',
549 `width` int(11) NOT NULL DEFAULT '0',
550 `height` int(11) NOT NULL DEFAULT '0',
551 `extension` varchar(255) NOT NULL,
552 `item` varchar(255) NOT NULL,
553 `format` enum('pdf') NOT NULL DEFAULT 'pdf',
554 `dataset_title` text NOT NULL,
555 `button_title` text NOT NULL,
556 `inline` enum('0','1') NOT NULL DEFAULT '0',
557 `auto` enum('0','1') NOT NULL DEFAULT '0',
558 `name` text NOT NULL,
559 `password` text NOT NULL,
560 `font` varchar(255) NOT NULL,
561 `font_size` varchar(255) NOT NULL,
562 `font_color` varchar(255) NOT NULL,
563 `line_height` varchar(255) NOT NULL,
564 `fonts` longtext NOT NULL,
565 `trash` enum('0','1') NOT NULL DEFAULT '0',
566 `activated` enum('0','1') NOT NULL DEFAULT '0',
567 `locked` enum('0','1') NOT NULL DEFAULT '0',
568 `author` int(11) NOT NULL,
569 PRIMARY KEY (`ID`)
570 ) CHARSET=utf8 COLLATE=utf8_general_ci");
571
572 if (version_compare(get_option('e2pdf_version'), '0.01.54', '<')) {
573 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` DROP COLUMN `blank`");
574 }
575
576 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_entries` (
577 `ID` int(11) NOT NULL AUTO_INCREMENT,
578 `uid` varchar(255) NOT NULL,
579 `entry` longtext,
580 `pdf_num` int(11) NOT NULL DEFAULT '0',
581 PRIMARY KEY (`ID`)
582 ) CHARSET=utf8 COLLATE=utf8_general_ci");
583
584 if (version_compare(get_option('e2pdf_version'), '0.01.33', '<')) {
585 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_entries` ADD COLUMN `pdf_num` INT(11) NOT NULL DEFAULT '0'");
586 }
587
588 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_datasets` (
589 `ID` int(11) NOT NULL AUTO_INCREMENT,
590 `extension` varchar(255) NOT NULL,
591 `item` varchar(255) NOT NULL,
592 `entry` longtext,
593 PRIMARY KEY (`ID`)
594 ) CHARSET=utf8 COLLATE=utf8_general_ci");
595
596 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_pages` (
597 `page_id` int(11) NOT NULL DEFAULT '0',
598 `template_id` int(11) NOT NULL DEFAULT '0',
599 `properties` longtext NOT NULL,
600 `actions` longtext NOT NULL
601 ) CHARSET=utf8 COLLATE=utf8_general_ci");
602
603 if (version_compare(get_option('e2pdf_version'), '0.01.63', '<')) {
604 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_pages` ADD COLUMN `actions` longtext NOT NULL");
605 }
606
607 if (version_compare(get_option('e2pdf_version'), '1.04.00', '<')) {
608 $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 ");
609 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_pages` DROP COLUMN `ID`");
610 }
611
612 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_elements` (
613 `page_id` int(11) NOT NULL DEFAULT '0',
614 `template_id` int(11) NOT NULL DEFAULT '0',
615 `element_id` int(11) NOT NULL DEFAULT '0',
616 `type` varchar(255) NOT NULL,
617 `top` int(11) NOT NULL DEFAULT '0',
618 `left` int(11) NOT NULL DEFAULT '0',
619 `width` int(11) NOT NULL DEFAULT '0',
620 `height` int(11) NOT NULL DEFAULT '0',
621 `value` longtext NOT NULL,
622 `properties` longtext NOT NULL,
623 `actions` longtext NOT NULL
624 ) CHARSET=utf8 COLLATE=utf8_general_ci");
625
626 if (version_compare(get_option('e2pdf_version'), '0.01.63', '<')) {
627 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` ADD COLUMN `actions` longtext NOT NULL");
628 }
629
630 if (version_compare(get_option('e2pdf_version'), '1.04.00', '<')) {
631 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` DROP COLUMN `ID`");
632 }
633
634 if (get_option('e2pdf_version') !== $this->helper->get('version')) {
635 update_option('e2pdf_version', $this->helper->get('version'));
636 }
637
638 $model_e2pdf_api = new Model_E2pdf_Api();
639 $model_e2pdf_api->set(array(
640 'action' => 'common/activate'
641 ));
642 $model_e2pdf_api->request();
643
644 $model_e2pdf_license = new Model_E2pdf_License();
645
646 if ($blog_id) {
647 restore_current_blog();
648 $wp_upload_dir = wp_upload_dir();
649 $this->helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
650 $this->helper->set('tmp_dir', $this->helper->get('upload_dir') . 'tmp/');
651 $this->helper->set('pdf_dir', $this->helper->get('upload_dir') . 'pdf/');
652 $this->helper->set('fonts_dir', $this->helper->get('upload_dir') . 'fonts/');
653 $this->helper->set('tpl_dir', $this->helper->get('upload_dir') . 'tpl/');
654 }
655 }
656
657 /**
658 * On plugin deactivation
659 */
660 public function deactivate() {
661
662 }
663
664 /**
665 * On plugin uninstall
666 */
667 public static function uninstall() {
668 global $wpdb;
669
670 if (is_multisite() && is_super_admin() && is_main_site()) {
671 foreach ($wpdb->get_col("SELECT blog_id FROM $wpdb->blogs") as $blog_id) {
672 self::uninstall_site($blog_id);
673 }
674 } else {
675 self::uninstall_site();
676 }
677 }
678
679 public static function uninstall_site($blog_id = false) {
680 global $wpdb;
681
682 $db_prefix = $wpdb->prefix;
683
684 $wp_upload_dir = wp_upload_dir();
685
686 $helper_e2pdf_helper = Helper_E2pdf_Helper::instance();
687
688 if ($blog_id) {
689 switch_to_blog($blog_id);
690 $wp_upload_dir = wp_upload_dir();
691 $db_prefix = $wpdb->get_blog_prefix($blog_id);
692
693 if (!is_main_site($blog_id)) {
694 $helper_e2pdf_helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
695 }
696 }
697
698
699 $model_e2pdf_api = new Model_E2pdf_Api();
700 $model_e2pdf_api->set(array(
701 'action' => 'common/uninstall'
702 ));
703 $model_e2pdf_api->request();
704
705 $options = Model_E2pdf_Options::get_options();
706 foreach ($options as $option_key => $option_value) {
707 delete_option($option_key, $option_value);
708 }
709
710 $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_templates' . '`');
711 $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_entries' . '`');
712 $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_datasets' . '`');
713 $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_pages' . '`');
714 $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_elements' . '`');
715
716 $wpdb->query($wpdb->prepare('DELETE FROM `' . $db_prefix . 'options' . '` WHERE option_name LIKE %s OR option_name LIKE %s', '_transient_e2pdf_%', '_transient_e2pdf_%'));
717
718 $helper_e2pdf_helper->delete_dir($helper_e2pdf_helper->get('upload_dir'));
719
720 if ($blog_id) {
721 restore_current_blog();
722 $wp_upload_dir = wp_upload_dir();
723 $helper_e2pdf_helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
724 }
725 }
726
727 }
728