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

717 lines 29.2 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
173 if (get_option('e2pdf_debug') === '1') {
174 $version = strtotime("now");
175 } else {
176 $version = $this->helper->get('version');
177 }
178
179
180 wp_register_style('e2pdf.backend', plugins_url('css/e2pdf.backend.css', $this->helper->get('plugin_file_path')), array(), $version);
181 wp_enqueue_style('e2pdf.backend');
182 }
183
184 /**
185 * Load admin javascript
186 *
187 * @param string $page - Current page
188 */
189 public function admin_js($page) {
190
191 if (!in_array($page, $this->e2pdf_admin_pages)) {
192 return;
193 }
194
195 if (get_option('e2pdf_debug') === '1') {
196 $version = strtotime("now");
197 } else {
198 $version = $this->helper->get('version');
199 }
200
201 wp_enqueue_script(
202 'js/e2pdf.backend', plugins_url('js/e2pdf.backend.js', $this->helper->get('plugin_file_path')), array('jquery'), $version
203 );
204
205 $js_lang = $this->get_js_lang();
206 wp_add_inline_script('js/e2pdf.backend', $js_lang, 'before');
207
208 $js_size = $this->get_js_template_sizes();
209 wp_add_inline_script('js/e2pdf.backend', $js_size, 'before');
210
211 $js_extension = $this->get_js_template_extensions();
212 wp_add_inline_script('js/e2pdf.backend', $js_extension, 'before');
213
214 $js_params = $this->get_js_params();
215 wp_add_inline_script('js/e2pdf.backend', $js_params, 'before');
216 }
217
218 /**
219 * Load admin javascript
220 *
221 * @param string $page - Current page
222 */
223 public function frontend_js() {
224
225 wp_register_script(
226 'js/e2pdf.frontend', plugins_url('js/e2pdf.frontend.js', $this->helper->get('plugin_file_path')), array('jquery'), $this->helper->get('version')
227 );
228 wp_enqueue_script(
229 'js/e2pdf.frontend'
230 );
231 }
232
233 /**
234 * Get nonce for JavaScript
235 *
236 * @return string - JS nonce
237 */
238 public function get_js_params() {
239 $params = array(
240 'nonce' => wp_create_nonce('e2pdf_ajax'),
241 'plugins_url' => plugins_url('', $this->helper->get('plugin_file_path')),
242 'upload_url' => $this->helper->get_upload_url(),
243 'license_type' => $this->helper->get('license')->get('type')
244 );
245
246 $js_params = $this->helper->load('js')->get_js_array('e2pdfParams', $params);
247 return $js_params;
248 }
249
250 /**
251 * Get Lang Key->Value for JavaScript
252 *
253 * @return string - JS language Key->Value
254 */
255 public function get_js_lang() {
256 $lang = array(
257 'Delete' => __('Delete', 'e2pdf'),
258 'Properties' => __('Properties', 'e2pdf'),
259 'License Key' => __('License Key', 'e2pdf'),
260 'Submit' => __('Submit', 'e2pdf'),
261 'Are you sure want to remove page?' => __('Are you sure want to remove page?', 'e2pdf'),
262 'Are you sure want to remove font?' => __('Are you sure want to remove font?', 'e2pdf'),
263 'Empty PDF' => __('Empty PDF', 'e2pdf'),
264 'Upload PDF' => __('Upload PDF', 'e2pdf'),
265 'Auto PDF' => __('Auto PDF', 'e2pdf'),
266 'Create PDF' => __('Create PDF', 'e2pdf'),
267 'Extension' => __('Extension', 'e2pdf'),
268 'Size' => __('Size', 'e2pdf'),
269 'Properties' => __('Properties', 'e2pdf'),
270 'Name' => __('Name', 'e2pdf'),
271 'Enter link here' => __('Enter link here', 'e2pdf'),
272 'Z-index' => __('Z-index', 'e2pdf'),
273 'Border' => __('Border', 'e2pdf'),
274 'Background' => __('Background', 'e2pdf'),
275 'Left' => __('Left', 'e2pdf'),
276 'Right' => __('Right', 'e2pdf'),
277 'Top' => __('Top', 'e2pdf'),
278 'Center' => __('Center', 'e2pdf'),
279 'Bottom' => __('Bottom', 'e2pdf'),
280 'Color' => __('Color', 'e2pdf'),
281 'Border Color' => __('Border Color', 'e2pdf'),
282 'Line Height' => __('Line Height', 'e2pdf'),
283 'Padding' => __('Padding', 'e2pdf'),
284 'Width' => __('Width', 'e2pdf'),
285 'Height' => __('Height', 'e2pdf'),
286 'Text Color' => __('Text Color', 'e2pdf'),
287 'Value' => __('Value', 'e2pdf'),
288 'Font' => __('Font', 'e2pdf'),
289 'Options' => __('Options', 'e2pdf'),
290 'Option' => __('Option', 'e2pdf'),
291 'Group' => __('Group', 'e2pdf'),
292 'Group Name' => __('Group Name', 'e2pdf'),
293 'Group Value' => __('Group Value', 'e2pdf'),
294 'Selector' => __('Selector', 'e2pdf'),
295 'Check' => __('Check', 'e2pdf'),
296 'Circle' => __('Circle', 'e2pdf'),
297 'Cross' => __('Cross', 'e2pdf'),
298 'Diamond' => __('Diamond', 'e2pdf'),
299 'Square' => __('Square', 'e2pdf'),
300 'Star' => __('Star', 'e2pdf'),
301 'Type' => __('Type', 'e2pdf'),
302 'Scale' => __('Scale', 'e2pdf'),
303 'Width&Height' => __('Width&Height', 'e2pdf'),
304 'Width' => __('Width', 'e2pdf'),
305 'Height' => __('Height', 'e2pdf'),
306 'Choose Image' => __('Choose Image', 'e2pdf'),
307 'PDF Options' => __('PDF Options', 'e2pdf'),
308 'PDF Upload' => __('PDF Upload', 'e2pdf'),
309 'Item' => __('Item', 'e2pdf'),
310 'Position' => __('Position', 'e2pdf'),
311 'Copy' => __('Copy', 'e2pdf'),
312 'Cut' => __('Cut', 'e2pdf'),
313 'Paste' => __('Paste', 'e2pdf'),
314 'Paste in Place' => __('Paste in Place', 'e2pdf'),
315 'Apply' => __('Apply', 'e2pdf'),
316 'Dynamic Height' => __('Dynamic Height', 'e2pdf'),
317 'Text Align' => __('Text Align', 'e2pdf'),
318 'Readonly' => __('Readonly', 'e2pdf'),
319 'Multiline' => __('Multiline', 'e2pdf'),
320 'Required' => __('Required', 'e2pdf'),
321 'Settings' => __('Settings', 'e2pdf'),
322 'Relative' => __('Relative', 'e2pdf'),
323 'Page Size' => __('Page Size', 'e2pdf'),
324 'Custom' => __('Custom', 'e2pdf'),
325 'Size Preset' => __('Size Preset', 'e2pdf'),
326 'Page Options' => __('Page Options', 'e2pdf'),
327 'Select' => __('Select', 'e2pdf'),
328 'Saved Template will be overwritten! Are you sure want to continue?' => __('Saved Template will be overwritten! Are you sure want to continue?', 'e2pdf'),
329 'All pages will be removed! Are you sure want to continue?' => __('All pages will be removed! Are you sure want to continue?', 'e2pdf'),
330 'Adding new pages not available in "Uploaded PDF"' => __('Adding new pages not available in "Uploaded PDF"', 'e2pdf'),
331 'Dataset will be removed! Are you sure want to continue?' => __('Dataset will be removed! Are you sure want to continue?', 'e2pdf'),
332 'All datasets will be removed! Are you sure want to continue?' => __('All datasets will be removed! Are you sure want to continue?', 'e2pdf'),
333 'WARNING: Template has changes after last save! Changes will be lost!' => __('WARNING: Template has changes after last save! Changes will be lost!', 'e2pdf'),
334 'Element will be removed! Are you sure want to continue?' => __('Element will be removed! Are you sure want to continue?', 'e2pdf'),
335 'Elements will be removed! Are you sure want to continue?' => __('Elements will be removed! Are you sure want to continue?', 'e2pdf'),
336 'Action will be removed! Are you sure want to continue?' => __('Action will be removed! Are you sure want to continue?', 'e2pdf'),
337 'Condition will be removed! Are you sure want to continue?' => __('Condition will be removed! Are you sure want to continue?', 'e2pdf'),
338 'RTL' => __('RTL', 'e2pdf'),
339 'Hide' => __('Hide', 'e2pdf'),
340 'Show' => __('Show', 'e2pdf'),
341 'Password' => __('Password', 'e2pdf'),
342 'Map Field' => __('Map Field', 'e2pdf'),
343 'Parent' => __('Parent', 'e2pdf'),
344 'Hide Empty' => __('Hide Empty', 'e2pdf'),
345 '--- Select ---' => __('--- Select ---', 'e2pdf'),
346 'Activated' => __('Activated', 'e2pdf'),
347 'Not Activated' => __('Not Activated', 'e2pdf'),
348 'Page ID' => __('Page ID', 'e2pdf'),
349 'New Position' => __('New Position', 'e2pdf'),
350 'Render New Fields' => __('Render New Fields', 'e2pdf'),
351 'Flush Elements' => __('Flush Elements', 'e2pdf'),
352 'Keep dimension' => __('Keep dimension', 'e2pdf'),
353 'ID' => __('ID', 'e2pdf'),
354 'Only 1 page allowed with "FREE" license type' => __('Only 1 page allowed with "FREE" license type', 'e2pdf'),
355 'Last condition can\'t be removed' => __('Last condition can\'t be removed', 'e2pdf'),
356 'Confirmation code' => __('Confirmation code', 'e2pdf'),
357 'Code' => __('Code', 'e2pdf'),
358 'Visual Mapper' => __('Visual Mapper', 'e2pdf'),
359 'Auto' => __('Auto', 'e2pdf'),
360 'Actions' => __('Actions', 'e2pdf'),
361 'Save' => __('Save', 'e2pdf'),
362 'Resize' => __('Resize', 'e2pdf'),
363 'Horizontal align' => __('Horizontal align', 'e2pdf'),
364 'Vertical align' => __('Vertical align', 'e2pdf'),
365 'Middle' => __('Middle', 'e2pdf'),
366 'Apply If' => __('Apply If', 'e2pdf'),
367 'Action' => __('Action', 'e2pdf'),
368 'Property' => __('Property', 'e2pdf'),
369 'If' => __('If', 'e2pdf'),
370 'Condition' => __('Condition', 'e2pdf'),
371 'Change' => __('Change', 'e2pdf'),
372 'Any' => __('Any', 'e2pdf'),
373 'All' => __('All', 'e2pdf'),
374 'Order' => __('Order', 'e2pdf'),
375 'E-signature' => __('E-signature', 'e2pdf'),
376 'Contact' => __('Contact', 'e2pdf'),
377 'Location' => __('Location', 'e2pdf'),
378 'Reason' => __('Reason', 'e2pdf'),
379 'Placeholder' => __('Placeholder', 'e2pdf'),
380 'Length' => __('Length', 'e2pdf'),
381 'Comb' => __('Comb', 'e2pdf'),
382 'None' => __('None', 'e2pdf'),
383 'Highlight' => __('Highlight', 'e2pdf'),
384 'Invert' => __('Invert', 'e2pdf'),
385 'Outline' => __('Outline', 'e2pdf'),
386 'Push' => __('Push', 'e2pdf'),
387 'Title' => __('Title', 'e2pdf'),
388 'Status' => __('Status', 'e2pdf'),
389 );
390
391 $js_lang = $this->helper->load('js')->get_js_array('e2pdfLang', $lang);
392 return $js_lang;
393 }
394
395 /**
396 * Get Template sizes for JavaScript
397 *
398 * @return string - JS template sizes
399 */
400 public function get_js_template_sizes() {
401 $controller_e2pdf_templates = new Controller_E2pdf_Templates();
402 $sizes = $controller_e2pdf_templates->get_sizes_list();
403
404 $js_template_sizes = $this->helper->load('js')->get_js_array('e2pdfTemplateSizes', $sizes);
405
406 return $js_template_sizes;
407 }
408
409 /**
410 * Get Extensions list for JavaScript
411 *
412 * @return string - JS Extensions list
413 */
414 public function get_js_template_extensions() {
415 $model_e2pdf_extension = new Model_E2pdf_Extension();
416 $extensions = $model_e2pdf_extension->extensions();
417
418 $js_template_extensions = $this->helper->load('js')->get_js_array('e2pdfTemplateExtensions', $extensions);
419
420 return $js_template_extensions;
421 }
422
423 /**
424 * Check requirenments before activation
425 */
426 public function requirenments() {
427 if (version_compare(PHP_VERSION, '5.3.3', '<')) {
428 throw new Exception(
429 sprintf(__("E2Pdf requires PHP version 5.3.3 or later. Your PHP version is %s", 'e2pdf'), PHP_VERSION)
430 );
431 }
432 }
433
434 public function admin_functions() {
435 $current_screen = get_current_screen();
436 if (!in_array($current_screen->id, $this->e2pdf_admin_pages)) {
437 return;
438 }
439 $this->helper->set('license', new Model_E2pdf_License());
440 }
441
442 public function wp_loaded() {
443 if (!get_transient('e2pdf_adobesign_refresh_token')) {
444 new Model_E2pdf_AdobeSign();
445 }
446 }
447
448 /**
449 * On plugin activation
450 */
451 public function activate() {
452 global $wpdb;
453
454 try {
455 $this->requirenments();
456 if (is_multisite() && is_super_admin() && is_main_site()) {
457 foreach ($wpdb->get_col("SELECT blog_id FROM $wpdb->blogs") as $blog_id) {
458 $this->activate_site($blog_id);
459 }
460 } else {
461 $this->activate_site();
462 }
463 } catch (Exception $e) {
464 echo "<div style='line-height: 70px;'>";
465 echo $e->getMessage();
466 echo "</div>";
467 exit();
468 }
469 }
470
471 public function activate_new_network($blog_id, $user_id, $domain, $path, $site_id, $meta) {
472 if (is_plugin_active_for_network('e2pdf/e2pdf.php')) {
473 $this->activate_site($blog_id);
474 }
475 }
476
477 public function activate_site($blog_id = false) {
478 global $wpdb;
479
480 $db_prefix = $wpdb->prefix;
481
482 $wp_upload_dir = wp_upload_dir();
483
484 if ($blog_id) {
485 switch_to_blog($blog_id);
486 $wp_upload_dir = wp_upload_dir();
487 $db_prefix = $wpdb->get_blog_prefix($blog_id);
488 if (!is_main_site($blog_id)) {
489 $this->helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
490 $this->helper->set('tmp_dir', $this->helper->get('upload_dir') . 'tmp/');
491 $this->helper->set('pdf_dir', $this->helper->get('upload_dir') . 'pdf/');
492 $this->helper->set('fonts_dir', $this->helper->get('upload_dir') . 'fonts/');
493 $this->helper->set('tpl_dir', $this->helper->get('upload_dir') . 'tpl/');
494 }
495 }
496
497 $dirs = array(
498 $this->helper->get('upload_dir'),
499 $this->helper->get('tmp_dir'),
500 $this->helper->get('pdf_dir'),
501 $this->helper->get('fonts_dir'),
502 $this->helper->get('tpl_dir'),
503 );
504
505 if (!is_main_site($blog_id)) {
506 array_unshift($dirs, $wp_upload_dir['basedir']);
507 }
508
509 foreach ($dirs as $dir) {
510 if ($this->helper->create_dir($dir)) {
511 if ($dir == $this->helper->get('fonts_dir')) {
512 copy($this->helper->get('plugin_dir') . "data/fonts/NotoSans-Regular.ttf", $this->helper->get('fonts_dir') . "NotoSans-Regular.ttf");
513 }
514 } else {
515 throw new Exception(
516 sprintf(__("Can't create folder %s", 'e2pdf'), $dir)
517 );
518 }
519 }
520
521 $options = Model_E2pdf_Options::get_options();
522 foreach ($options as $option_key => $option_value) {
523 if (get_option($option_key) === false) {
524 add_option($option_key, $option_value);
525 }
526 }
527
528 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_templates` (
529 `ID` int(11) NOT NULL AUTO_INCREMENT,
530 `uid` varchar(255) NOT NULL,
531 `pdf` text,
532 `title` text,
533 `created_at` datetime NOT NULL,
534 `updated_at` datetime NOT NULL,
535 `flatten` enum('0','1','2') NOT NULL DEFAULT '0',
536 `compression` int(1) NOT NULL DEFAULT '-1',
537 `appearance` enum('0','1') NOT NULL DEFAULT '0',
538 `width` int(11) NOT NULL DEFAULT '0',
539 `height` int(11) NOT NULL DEFAULT '0',
540 `extension` varchar(255) NOT NULL,
541 `item` varchar(255) NOT NULL,
542 `format` enum('pdf') NOT NULL DEFAULT 'pdf',
543 `dataset_title` text NOT NULL,
544 `button_title` text NOT NULL,
545 `inline` enum('0','1') NOT NULL DEFAULT '0',
546 `auto` enum('0','1') NOT NULL DEFAULT '0',
547 `name` text NOT NULL,
548 `password` text NOT NULL,
549 `font` varchar(255) NOT NULL,
550 `font_size` varchar(255) NOT NULL,
551 `font_color` varchar(255) NOT NULL,
552 `line_height` varchar(255) NOT NULL,
553 `fonts` longtext NOT NULL,
554 `trash` enum('0','1') NOT NULL DEFAULT '0',
555 `activated` enum('0','1') NOT NULL DEFAULT '0',
556 `locked` enum('0','1') NOT NULL DEFAULT '0',
557 `author` int(11) NOT NULL,
558 PRIMARY KEY (`ID`)
559 ) CHARSET=utf8 COLLATE=utf8_general_ci");
560
561 if (version_compare(get_option('e2pdf_version'), '0.01.54', '<')) {
562 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_templates` DROP COLUMN `blank`");
563 }
564
565 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_entries` (
566 `ID` int(11) NOT NULL AUTO_INCREMENT,
567 `uid` varchar(255) NOT NULL,
568 `entry` longtext,
569 `pdf_num` int(11) NOT NULL DEFAULT '0',
570 PRIMARY KEY (`ID`)
571 ) CHARSET=utf8 COLLATE=utf8_general_ci");
572
573 if (version_compare(get_option('e2pdf_version'), '0.01.33', '<')) {
574 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_entries` ADD COLUMN `pdf_num` INT(11) NOT NULL DEFAULT '0'");
575 }
576
577 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_datasets` (
578 `ID` int(11) NOT NULL AUTO_INCREMENT,
579 `extension` varchar(255) NOT NULL,
580 `item` varchar(255) NOT NULL,
581 `entry` longtext,
582 PRIMARY KEY (`ID`)
583 ) CHARSET=utf8 COLLATE=utf8_general_ci");
584
585 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_pages` (
586 `page_id` int(11) NOT NULL DEFAULT '0',
587 `template_id` int(11) NOT NULL DEFAULT '0',
588 `properties` longtext NOT NULL,
589 `actions` longtext NOT NULL
590 ) CHARSET=utf8 COLLATE=utf8_general_ci");
591
592 if (version_compare(get_option('e2pdf_version'), '0.01.63', '<')) {
593 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_pages` ADD COLUMN `actions` longtext NOT NULL");
594 }
595
596 if (version_compare(get_option('e2pdf_version'), '1.04.00', '<')) {
597 $wpdb->query("UPDATE `" . $db_prefix . "e2pdf_elements` ee INNER JOIN `" . $db_prefix . "e2pdf_pages` ep ON ee.page_id = ep.ID set ee.page_id = ep.page_id ");
598 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_pages` DROP COLUMN `ID`");
599 }
600
601 $wpdb->query("CREATE TABLE IF NOT EXISTS `" . $db_prefix . "e2pdf_elements` (
602 `page_id` int(11) NOT NULL DEFAULT '0',
603 `template_id` int(11) NOT NULL DEFAULT '0',
604 `element_id` int(11) NOT NULL DEFAULT '0',
605 `type` varchar(255) NOT NULL,
606 `top` int(11) NOT NULL DEFAULT '0',
607 `left` int(11) NOT NULL DEFAULT '0',
608 `width` int(11) NOT NULL DEFAULT '0',
609 `height` int(11) NOT NULL DEFAULT '0',
610 `value` longtext NOT NULL,
611 `properties` longtext NOT NULL,
612 `actions` longtext NOT NULL
613 ) CHARSET=utf8 COLLATE=utf8_general_ci");
614
615 if (version_compare(get_option('e2pdf_version'), '0.01.63', '<')) {
616 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` ADD COLUMN `actions` longtext NOT NULL");
617 }
618
619 if (version_compare(get_option('e2pdf_version'), '1.04.00', '<')) {
620 $wpdb->query("ALTER TABLE `" . $db_prefix . "e2pdf_elements` DROP COLUMN `ID`");
621 }
622
623 if (get_option('e2pdf_version') !== $this->helper->get('version')) {
624 update_option('e2pdf_version', $this->helper->get('version'));
625 }
626
627 $model_e2pdf_api = new Model_E2pdf_Api();
628 $model_e2pdf_api->set(array(
629 'action' => 'common/activate'
630 ));
631 $model_e2pdf_api->request();
632
633 $model_e2pdf_license = new Model_E2pdf_License();
634
635 if ($blog_id) {
636 restore_current_blog();
637 $wp_upload_dir = wp_upload_dir();
638 $this->helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
639 $this->helper->set('tmp_dir', $this->helper->get('upload_dir') . 'tmp/');
640 $this->helper->set('pdf_dir', $this->helper->get('upload_dir') . 'pdf/');
641 $this->helper->set('fonts_dir', $this->helper->get('upload_dir') . 'fonts/');
642 $this->helper->set('tpl_dir', $this->helper->get('upload_dir') . 'tpl/');
643 }
644 }
645
646 /**
647 * On plugin deactivation
648 */
649 public function deactivate() {
650
651 }
652
653 /**
654 * On plugin uninstall
655 */
656 public static function uninstall() {
657 global $wpdb;
658
659 if (is_multisite() && is_super_admin() && is_main_site()) {
660 foreach ($wpdb->get_col("SELECT blog_id FROM $wpdb->blogs") as $blog_id) {
661 self::uninstall_site($blog_id);
662 }
663 } else {
664 self::uninstall_site();
665 }
666 }
667
668 public static function uninstall_site($blog_id = false) {
669 global $wpdb;
670
671 $db_prefix = $wpdb->prefix;
672
673 $wp_upload_dir = wp_upload_dir();
674
675 $helper_e2pdf_helper = Helper_E2pdf_Helper::instance();
676
677 if ($blog_id) {
678 switch_to_blog($blog_id);
679 $wp_upload_dir = wp_upload_dir();
680 $db_prefix = $wpdb->get_blog_prefix($blog_id);
681
682 if (!is_main_site($blog_id)) {
683 $helper_e2pdf_helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
684 }
685 }
686
687
688 $model_e2pdf_api = new Model_E2pdf_Api();
689 $model_e2pdf_api->set(array(
690 'action' => 'common/uninstall'
691 ));
692 $model_e2pdf_api->request();
693
694 $options = Model_E2pdf_Options::get_options();
695 foreach ($options as $option_key => $option_value) {
696 delete_option($option_key, $option_value);
697 }
698
699 $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_templates' . '`');
700 $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_entries' . '`');
701 $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_datasets' . '`');
702 $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_pages' . '`');
703 $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_elements' . '`');
704
705 $wpdb->query($wpdb->prepare('DELETE FROM `' . $db_prefix . 'options' . '` WHERE option_name LIKE %s OR option_name LIKE %s', '_transient_e2pdf_%', '_transient_e2pdf_%'));
706
707 $helper_e2pdf_helper->delete_dir($helper_e2pdf_helper->get('upload_dir'));
708
709 if ($blog_id) {
710 restore_current_blog();
711 $wp_upload_dir = wp_upload_dir();
712 $helper_e2pdf_helper->set('upload_dir', $wp_upload_dir['basedir'] . '/e2pdf/');
713 }
714 }
715
716 }
717