post->get('screenoptionnonce')) {
if (wp_verify_nonce($this->post->get('screenoptionnonce'), 'screen-options-nonce')) {
$this->screen_action();
} else {
wp_die($this->message('wp_verify_nonce_error'));
}
} elseif ($this->post->get('_wpnonce')) {
if (wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_templates')) {
if ($this->post->get('action') == '-1' && $this->post->get('action2') == '-1') {
$redirect_url = [
'page' => 'e2pdf-templates',
'status' => $this->get->get('status'),
'orderby' => $this->get->get('orderby'),
'order' => $this->get->get('order'),
];
if ($this->post->get('s')) {
$redirect_url['s'] = $this->post->get('s');
}
$this->redirect(
$this->helper->get_url($redirect_url)
);
} else {
$action = $this->post->get('action') != '-1' ? $this->post->get('action') : $this->post->get('action2');
if ($this->post->get('post')) {
if ($action == 'trash') {
foreach ($this->post->get('post') as $key => $value) {
$this->trash_template($value);
}
$this->add_notification('update', sprintf(__('Templates Trashed: %d', 'e2pdf'), count($this->post->get('post'))));
} elseif ($action == 'activate') {
foreach ($this->post->get('post') as $key => $value) {
$this->activate_template($value);
}
$this->add_notification('update', sprintf(__('Templates Activated: %d', 'e2pdf'), count($this->post->get('post'))));
} elseif ($action == 'deactivate') {
foreach ($this->post->get('post') as $key => $value) {
$this->deactivate_template($value);
}
$this->add_notification('update', sprintf(__('Templates Deactivated: %d', 'e2pdf'), count($this->post->get('post'))));
} elseif ($action == 'restore') {
foreach ($this->post->get('post') as $key => $value) {
$this->restore_template($value);
}
$this->add_notification('update', sprintf(__('Templates Restored: %d', 'e2pdf'), count($this->post->get('post'))));
} elseif ($action == 'delete') {
foreach ($this->post->get('post') as $key => $value) {
$this->delete_template($value);
}
$this->add_notification('update', sprintf(__('Templates Deleted: %d', 'e2pdf'), count($this->post->get('post'))));
}
$this->helper->load('license')->load();
}
}
} else {
wp_die($this->message('wp_verify_nonce_error'));
}
}
}
/**
* @url admin.php?page=e2pdf-templates&action=view&id=$id
* @return file
*/
public function view_action() {
if ($this->get->get('id')) {
$template = new Model_E2pdf_Template();
if ($template->load($this->get->get('id'))) {
$pages = $template->get('pages');
foreach ($pages as $page_key => $page) {
if (!empty($page['elements'])) {
foreach ($page['elements'] as $element_key => $element) {
if (isset($element['type'])) {
switch ($element['type']) {
case 'e2pdf-image':
if (isset($element['properties']['quality']) && $element['properties']['quality']) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf
} else {
$element['properties']['quality'] = $template->get('optimization');
$pages[$page_key]['elements'][$element_key]['properties']['quality'] = $template->get('optimization');
}
if ($image = $this->helper->load('image')->get_image($element['value'], null, $element)) {
$pages[$page_key]['elements'][$element_key]['value'] = $image;
} else {
$pages[$page_key]['elements'][$element_key]['value'] = $this->helper->load('image')->get_image($this->helper->get('plugin_dir') . 'img/upload.svg');
$pages[$page_key]['elements'][$element_key]['properties']['preview'] = '1';
}
break;
case 'e2pdf-signature':
$esig = isset($element['properties']['esig']) && $element['properties']['esig'] ? true : false;
if (!$esig) {
if ($image = $this->helper->load('image')->get_image($element['value'])) {
$pages[$page_key]['elements'][$element_key]['value'] = $image;
} else {
$pages[$page_key]['elements'][$element_key]['value'] = $this->helper->load('image')->get_image($this->helper->get('plugin_dir') . 'img/signature.svg');
$pages[$page_key]['elements'][$element_key]['properties']['preview'] = '1';
}
}
break;
case 'e2pdf-qrcode':
$pages[$page_key]['elements'][$element_key]['type'] = 'e2pdf-image';
$pages[$page_key]['elements'][$element_key]['value'] = $this->helper->load('image')->get_image($this->helper->get('plugin_dir') . 'img/qrcode.svg');
$pages[$page_key]['elements'][$element_key]['properties']['preview'] = '1';
break;
case 'e2pdf-barcode':
$pages[$page_key]['elements'][$element_key]['type'] = 'e2pdf-image';
$pages[$page_key]['elements'][$element_key]['value'] = $this->helper->load('image')->get_image($this->helper->get('plugin_dir') . 'img/barcode.svg');
$pages[$page_key]['elements'][$element_key]['properties']['preview'] = '1';
break;
case 'e2pdf-graph':
$pages[$page_key]['elements'][$element_key]['type'] = 'e2pdf-image';
$pages[$page_key]['elements'][$element_key]['value'] = $this->helper->load('image')->get_image($this->helper->get('plugin_dir') . 'img/graph.svg');
$pages[$page_key]['elements'][$element_key]['properties']['preview'] = '1';
break;
case 'e2pdf-html':
if (isset($pages[$page_key]['elements'][$element_key]['properties']['hide_page_if_empty'])) {
unset($pages[$page_key]['elements'][$element_key]['properties']['hide_page_if_empty']);
}
if (isset($pages[$page_key]['elements'][$element_key]['properties']['hide_if_empty'])) {
unset($pages[$page_key]['elements'][$element_key]['properties']['hide_if_empty']);
}
if (isset($element['properties']['nl2br']) && $element['properties']['nl2br']) {
$element['value'] = nl2br($element['value']);
}
if (isset($element['properties']['html_worker']) && $element['properties']['html_worker']) {
$element['value'] = $this->helper->load('properties')->html_worker(
$element['value']
);
}
$pages[$page_key]['elements'][$element_key]['value'] = $this->helper->load('filter')->filter_html_tags(
$element['value']
);
break;
case 'e2pdf-page-number':
if (isset($element['properties']['html_worker']) && $element['properties']['html_worker']) {
$element['value'] = $this->helper->load('properties')->html_worker(
$element['value']
);
}
$pages[$page_key]['elements'][$element_key]['value'] = $this->helper->load('filter')->filter_html_tags(
$element['value']
);
break;
default:
break;
}
}
}
}
}
$template->set('pages', $pages);
$request = $template->render();
if (isset($request['error'])) {
$this->add_notification('error', $request['error']);
$this->render('blocks', 'notifications');
} else {
$this->download_response($template->get('format'), $request['file'], $template->get_name(), 'inline');
exit;
}
} else {
$this->add_notification('error', __('Something went wrong!', 'e2pdf'));
$this->render('blocks', 'notifications');
}
} else {
$this->redirect(
$this->helper->get_url(
[
'page' => 'e2pdf',
]
)
);
}
}
/**
* @url admin.php?page=e2pdf-templates&action=preview
*/
public function preview_action() {
$preview = array();
if ($this->post->get('preview')) {
$preview = json_decode(stripslashes($this->post->get('preview')), true);
}
if (empty($preview)) {
$this->close_tab_response();
} else {
$data = $preview;
$pages = $preview['pages'];
unset($preview['pages']);
if (wp_verify_nonce(isset($preview['_wpnonce']) ? $preview['_wpnonce'] : '', 'e2pdf_templates')) {
$template = new Model_E2pdf_Template();
foreach ($data as $key => $value) {
$template->set($key, $value);
}
$template->set('uid', $template->get('uid', true));
$template->set('activated', $template->get('activated', true));
$preview_pages = array();
foreach ($pages as $page_key => $page) {
$new_page = new Model_E2pdf_Page();
foreach ($page as $page_set_key => $page_set_value) {
$new_page->set($page_set_key, $page_set_value);
}
$new_page->set('page_id', $page_key);
$elements = array();
foreach ($page['elements'] as $element_key => $element) {
if (isset($element['type'])) {
switch ($element['type']) {
case 'e2pdf-image':
if (isset($element['properties']['quality']) && $element['properties']['quality']) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf
} else {
$element['properties']['quality'] = $template->get('optimization');
$pages[$page_key]['elements'][$element_key]['properties']['quality'] = $template->get('optimization');
}
if ($image = $this->helper->load('image')->get_image($element['value'], null, $element)) {
$element['value'] = $image;
} else {
$element['value'] = $this->helper->load('image')->get_image($this->helper->get('plugin_dir') . 'img/upload.svg');
$element['properties']['preview'] = '1';
}
break;
case 'e2pdf-signature':
$esig = isset($element['properties']['esig']) && $element['properties']['esig'] ? true : false;
if (!$esig) {
if ($image = $this->helper->load('image')->get_image($element['value'])) {
$element['value'] = $image;
} else {
$element['value'] = $this->helper->load('image')->get_image($this->helper->get('plugin_dir') . 'img/signature.svg');
$element['properties']['preview'] = '1';
}
}
break;
case 'e2pdf-qrcode':
$element['type'] = 'e2pdf-image';
$element['value'] = $this->helper->load('image')->get_image($this->helper->get('plugin_dir') . 'img/qrcode.svg');
$element['properties']['preview'] = '1';
break;
case 'e2pdf-barcode':
$element['type'] = 'e2pdf-image';
$element['value'] = $this->helper->load('image')->get_image($this->helper->get('plugin_dir') . 'img/barcode.svg');
$element['properties']['preview'] = '1';
break;
case 'e2pdf-graph':
$element['type'] = 'e2pdf-image';
$element['value'] = $this->helper->load('image')->get_image($this->helper->get('plugin_dir') . 'img/graph.svg');
$element['properties']['preview'] = '1';
break;
case 'e2pdf-html':
if (isset($element['properties']['hide_page_if_empty'])) {
unset($element['properties']['hide_page_if_empty']);
}
if (isset($element['properties']['hide_if_empty'])) {
unset($element['properties']['hide_if_empty']);
}
if (isset($element['properties']['nl2br']) && $element['properties']['nl2br']) {
$element['value'] = nl2br($element['value']);
}
if (isset($element['properties']['html_worker']) && $element['properties']['html_worker']) {
$element['value'] = $this->helper->load('properties')->html_worker(
$element['value']
);
}
$element['value'] = $this->helper->load('filter')->filter_html_tags(
$element['value']
);
break;
case 'e2pdf-page-number':
$element['value'] = str_replace(array('[e2pdf-page-number]', '[e2pdf-page-total]'), array('e2pdf-page-number', 'e2pdf-page-total'), $element['value']);
if (isset($element['properties']['html_worker']) && $element['properties']['html_worker']) {
$element['value'] = $this->helper->load('properties')->html_worker(
$element['value']
);
}
$element['value'] = $this->helper->load('filter')->filter_html_tags(
$element['value']
);
break;
default:
break;
}
}
$new_element = new Model_E2pdf_Element();
foreach ($element as $element_set_key => $element_set_value) {
$new_element->set($element_set_key, $element_set_value);
}
if (isset($element['properties'])) {
$element_properties = $element['properties'];
} else {
$element_properties = array();
}
$new_element->set('properties', $element_properties);
$elements[] = $new_element->get_element();
}
$new_page->set('elements', $elements);
$preview_pages[] = $new_page->get_page();
}
$template->set('pages', $preview_pages);
$template->load_fonts();
$type = isset($_GET['type']) ? sanitize_text_field(wp_unslash($_GET['type'])) : false;
if ($type == 'php') {
$request = $template->render('php');
if (isset($request['error'])) {
$this->add_notification('error', $request['error']);
$this->render('blocks', 'notifications');
} else {
$this->download_response('php', $request['file'], 'template');
exit;
}
} else {
$request = $template->render();
if (isset($request['error'])) {
$this->add_notification('error', $request['error']);
$this->render('blocks', 'notifications');
} else {
$this->download_response($template->get('format'), $request['file'], $template->get_name(), 'inline', false, true);
exit;
}
}
} else {
wp_die($this->message('wp_verify_nonce_error'));
}
}
}
/**
* @url admin.php?page=e2pdf-templates&action=create
*/
public function create_action() {
$template = new Model_E2pdf_Template();
$this->load_metaboxes();
$this->load_scripts();
$this->load_styles();
$this->view('license', $this->helper->get('license'));
$this->view('template', $template);
}
/**
* @url admin.php?page=e2pdf-templates&action=edit&id=$id
*/
public function edit_action() {
if ($this->get->get('id')) {
$template = new Model_E2pdf_Template();
$revision_id = (int) $this->get->get('revision_id');
if ($template->load($this->get->get('id'), true, $revision_id)) {
if (is_array($this->helper->get('license')->get('activated_templates'))) {
if ($template->get('activated') && !in_array($template->get('uid'), $this->helper->get('license')->get('activated_templates'))) {
$template->deactivate();
} elseif (!$template->get('activated') && in_array($template->get('uid'), $this->helper->get('license')->get('activated_templates'))) {
$template->activate();
}
}
$this->view('license', $this->helper->get('license'));
$this->view('template', $template);
$this->load_metaboxes();
$this->load_scripts();
$this->load_styles($template->get('extension'));
} else {
$this->add_notification('error', __('Something went wrong!', 'e2pdf'));
$this->render('blocks', 'notifications');
}
} else {
$this->redirect(
$this->helper->get_url(
[
'page' => 'e2pdf-templates',
]
)
);
}
}
/**
* @url admin.php?page=e2pdf-templates&action=trash&id=$id
*/
public function trash_action() {
$notification = '';
if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {
if ($this->get->get('id')) {
$this->trash_template($this->get->get('id'));
$notification = $this->add_notification('update', __('Template Trashed', 'e2pdf'));
}
} else {
wp_die($this->message('wp_verify_nonce_error'));
}
$this->redirect(
$this->helper->get_url(
[
'page' => 'e2pdf-templates',
'status' => $this->get->get('status'),
'orderby' => $this->get->get('orderby'),
'order' => $this->get->get('order'),
's' => $this->get->get('s'),
'notification' => $notification,
]
)
);
}
/**
* @url admin.php?page=e2pdf-templates&action=restore&id=$id&status=$status
*/
public function restore_action() {
$notification = '';
if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {
if ($this->get->get('id')) {
$this->restore_template($this->get->get('id'));
$notification = $this->add_notification('update', __('Template Restored', 'e2pdf'));
}
} else {
wp_die($this->message('wp_verify_nonce_error'));
}
$this->redirect(
$this->helper->get_url(
[
'page' => 'e2pdf-templates',
'status' => $this->get->get('status'),
'orderby' => $this->get->get('orderby'),
'order' => $this->get->get('order'),
's' => $this->get->get('s'),
'notification' => $notification,
]
)
);
}
/**
* @url admin.php?page=e2pdf-templates&action=delete&id=$id&status=$status
*/
public function delete_action() {
$notification = '';
if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {
if ($this->get->get('id')) {
$this->delete_template($this->get->get('id'));
$notification = $this->add_notification('update', __('Template Deleted', 'e2pdf'));
}
} else {
wp_die($this->message('wp_verify_nonce_error'));
}
$this->redirect(
$this->helper->get_url(
[
'page' => 'e2pdf-templates',
'status' => $this->get->get('status'),
'orderby' => $this->get->get('orderby'),
'order' => $this->get->get('order'),
's' => $this->get->get('s'),
'notification' => $notification,
]
)
);
}
/**
* @url admin.php?page=e2pdf-templates&action=duplicate&id=$id
*/
public function duplicate_action() {
$notification = '';
if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {
if ($this->get->get('id')) {
$this->duplicate_template($this->get->get('id'));
$notification = $this->add_notification('update', __('Template Duplicated', 'e2pdf'));
}
} else {
wp_die($this->message('wp_verify_nonce_error'));
}
$this->redirect(
$this->helper->get_url(
[
'page' => 'e2pdf-templates',
'status' => $this->get->get('status'),
'orderby' => $this->get->get('orderby'),
'order' => $this->get->get('order'),
's' => $this->get->get('s'),
'notification' => $notification,
]
)
);
}
/**
* @url admin.php?page=e2pdf-templates&action=import
*/
public function import_action() {
if ($this->post->get('_wpnonce')) {
if (!wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_templates')) {
wp_die($this->message('wp_verify_nonce_error'));
}
$file = $this->helper->load('files')->upload($this->files->get('template'), ['xml'], ['text/xml', 'application/xml']);
if (isset($file['error'])) {
$this->add_notification('error', $file['error']);
} else {
$errors = [];
$options = $this->post->get('options');
$xml = simplexml_load_file($file['tmp_name'], 'SimpleXMLElement', LIBXML_PARSEHUGE);
if (!isset($xml->template->pages)) {
$this->add_notification('error', __('The file is not a valid E2Pdf Template', 'e2pdf'));
} else {
$pages = $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->pages));
if (is_array($pages)) {
foreach ($pages as $page_key => $page) {
if (isset($page['elements']) && !empty($page['elements'])) {
foreach ($page['elements'] as $element_key => $element) {
if ($element['type'] === 'e2pdf-image' && isset($element['base64']) && $element['base64']) {
if ($options['images']) {
$image = base64_decode($element['base64']);
$file_name = basename($element['value']);
$upload_file = wp_upload_bits($file_name, null, $image);
if (!$upload_file['error']) {
$wp_filetype = wp_check_filetype($file_name, null);
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_parent' => 0,
'post_title' => preg_replace('/\.[^.]+$/', '', $file_name),
'post_content' => '',
'post_status' => 'inherit',
);
$attachment_id = wp_insert_attachment($attachment, $upload_file['file'], 0);
if (!is_wp_error($attachment_id)) {
require_once ABSPATH . 'wp-admin/includes/image.php';
$attachment_data = wp_generate_attachment_metadata($attachment_id, $upload_file['file']);
wp_update_attachment_metadata($attachment_id, $attachment_data);
$pages[$page_key]['elements'][$element_key]['value'] = $upload_file['url'];
}
}
}
unset($pages[$page_key]['elements'][$element_key]['base64']);
}
}
}
}
}
$template = new Model_E2pdf_Template();
if ($options['overwrite']) {
if ($options['overwrite'] == '1' && $options['template_id']) {
$template->load((int) $options['template_id']);
} elseif ($options['overwrite'] == '2' && $options['custom_template_id']) {
if (!$template->load((int) $options['custom_template_id'])) {
$template->set('TMP_ID', (int) $options['custom_template_id']);
}
} elseif ($options['overwrite'] == '3') {
if (!$template->load((int) $xml->template->ID)) {
$template->set('TMP_ID', (int) $xml->template->ID);
}
}
}
$template->set('title', (string) $xml->template->title);
$template->set('flatten', (string) $xml->template->flatten);
if (isset($xml->template->tab_order)) {
$template->set('tab_order', (string) $xml->template->tab_order);
}
$template->set('compression', (string) $xml->template->compression);
if (isset($xml->template->optimization)) {
$template->set('optimization', (string) $xml->template->optimization);
}
$template->set('appearance', (string) $xml->template->appearance);
$template->set('width', (string) $xml->template->width);
$template->set('height', (string) $xml->template->height);
$template->set('extension', (string) $xml->template->extension);
if (isset($xml->template->item)) {
$template->set('item', (string) $xml->template->item);
}
if (isset($xml->template->item1)) {
$template->set('item1', (string) $xml->template->item1);
}
if (isset($xml->template->item2)) {
$template->set('item2', (string) $xml->template->item2);
}
$fpro2pdf_backup = false;
if ($xml->source) {
if ((string) $xml->source == 'fpro2pdf') {
$fpro2pdf_backup = true;
}
}
$extension = new Model_E2pdf_Extension();
$extension->load($template->get('extension'));
if ($options['item'] && $xml->item && !$fpro2pdf_backup) {
$extension->set('item', $template->get('item'));
if ($template->get('item') == '-2') {
$extension->set('item1', $template->get('item1'));
$extension->set('item2', $template->get('item2'));
}
$updated_items = $extension->import($xml->item, $options);
if ($updated_items) {
if (isset($updated_items['errors'])) {
$errors = array_merge($errors, $updated_items['errors']);
} else {
if ($template->get('item') == '-2') {
if ($template->get('item1') && isset($updated_items[$template->get('item1')])) {
$item1 = $updated_items[$template->get('item1')];
$template->set('item1', $item1);
$extension->set('item1', $item1);
} else {
$template->set('item1', '');
$extension->set('item1', '');
}
if ($template->get('item2') && isset($updated_items[$template->get('item2')])) {
$item2 = $updated_items[$template->get('item2')];
$template->set('item2', $item2);
$extension->set('item2', $item2);
} else {
$template->set('item2', '');
$extension->set('item2', '');
}
} else {
if (isset($updated_items[$template->get('item')])) {
$item = $updated_items[$template->get('item')];
$template->set('item', $item);
$extension->set('item', $item);
} else {
$template->set('item', '');
$extension->set('item', '');
}
}
}
}
}
$template->set('format', (string) $xml->template->format);
if (isset($xml->template->resample)) {
$template->set('resample', (string) $xml->template->resample);
}
$template->set(
'dataset_title',
apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->dataset_title, $options, $xml, $template, $extension)
);
if (isset($xml->template->dataset_title1)) {
$template->set(
'dataset_title1',
apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->dataset_title1, $options, $xml, $template, $extension)
);
}
if (isset($xml->template->dataset_title2)) {
$template->set(
'dataset_title2',
apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->dataset_title2, $options, $xml, $template, $extension)
);
}
$template->set(
'button_title',
apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->button_title, $options, $xml, $template, $extension)
);
if (isset($xml->template->dpdf)) {
$template->set(
'dpdf',
apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->dpdf, $options, $xml, $template, $extension)
);
}
if (isset($xml->template->attachments)) {
$template->set(
'attachments',
apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->attachments, $options, $xml, $template, $extension)
);
}
$template->set('inline', (string) $xml->template->inline);
$template->set('auto', (string) $xml->template->auto);
if (isset($xml->template->rtl)) {
$template->set('rtl', (string) $xml->template->rtl);
}
if (isset($xml->template->font_processor)) {
$template->set('font_processor', (string) $xml->template->font_processor);
}
$template->set(
'name',
apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->name, $options, $xml, $template, $extension)
);
if (isset($xml->template->savename)) {
$template->set(
'savename',
apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->savename, $options, $xml, $template, $extension)
);
}
$template->set(
'password',
apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->password, $options, $xml, $template, $extension)
);
if (isset($xml->template->owner_password)) {
$template->set(
'owner_password',
apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->owner_password, $options, $xml, $template, $extension)
);
}
if (isset($xml->template->permissions)) {
$template->set('permissions', $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->permissions)));
} else {
$template->set('permissions', array('printing'));
}
if (isset($xml->template->hooks)) {
$template->set(
'hooks',
(string) $xml->template->hooks
);
}
$template->set(
'meta_title',
apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->meta_title, $options, $xml, $template, $extension)
);
$template->set(
'meta_subject',
apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->meta_subject, $options, $xml, $template, $extension)
);
$template->set(
'meta_author',
apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->meta_author, $options, $xml, $template, $extension)
);
$template->set(
'meta_keywords',
apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->meta_keywords, $options, $xml, $template, $extension)
);
if (isset($xml->template->lang_code)) {
$template->set('lang_code', (string) $xml->template->lang_code);
}
$template->set('font', (string) $xml->template->font);
$template->set('font_size', (string) $xml->template->font_size);
$template->set('font_color', (string) $xml->template->font_color);
$template->set('line_height', (string) $xml->template->line_height);
if (isset($xml->template->text_align)) {
$template->set('text_align', (string) $xml->template->text_align);
}
$template->set('fonts', $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->fonts)));
$template->set(
'properties',
apply_filters('e2pdf_controller_templates_import_properties', $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->properties)), $options, $xml, $template, $extension)
);
$template->set(
'actions',
apply_filters('e2pdf_controller_templates_import_actions', $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->actions)), $options, $xml, $template, $extension)
);
$template->set(
'pages',
apply_filters('e2pdf_controller_templates_import_pages', $pages, $options, $xml, $template, $extension)
);
if ($options['fonts'] && $xml->fonts) {
$model_e2pdf_font = new Model_E2pdf_Font();
$fonts = $model_e2pdf_font->get_fonts();
if ($xml->fonts) {
foreach ($xml->fonts->children() as $key => $font) {
$title = (string) $font->title;
$name = (string) $font->name;
$value = (string) $font->value;
if ($title == 'Noto Sans' && $name == 'NotoSans-Regular.ttf') {
$title = 'Noto Sans Regular';
}
$exist = array_search($title, $fonts);
if (!$exist) {
if (!file_exists($this->helper->get('fonts_dir') . $name)) {
$f_name = $name;
} else {
$i = 0;
do {
$f_name = $i . '_' . $name;
$i++;
} while (file_exists($this->helper->get('fonts_dir') . $f_name));
}
$font_ext = strtolower(pathinfo($f_name, PATHINFO_EXTENSION));
if (in_array($font_ext, $model_e2pdf_font->get_allowed_extensions())) {
file_put_contents($this->helper->get('fonts_dir') . $f_name, base64_decode($value), LOCK_EX);
}
}
}
}
}
if ($xml->pdf && $xml->pdf->source) {
$pdf_name = md5(time());
$pdf_dir = $this->helper->get('pdf_dir') . $pdf_name . '/';
$pdf_images_dir = $pdf_dir . 'images/';
$this->helper->create_dir($pdf_dir);
$this->helper->create_dir($pdf_images_dir);
$pdf_source = (string) $xml->pdf->source;
file_put_contents($pdf_dir . $pdf_name . '.pdf', base64_decode($pdf_source), LOCK_EX);
if ($xml->pdf->images) {
foreach ($xml->pdf->images->children() as $key => $image) {
$page_id = (string) $image->page_id;
$image_source = (string) $image->source;
file_put_contents($pdf_dir . 'images/' . $page_id . '.png', base64_decode($image_source), LOCK_EX);
}
}
$template->set('pdf', $pdf_name);
}
if (empty($errors)) {
$template->save(true);
if ($options['item']) {
$extension->after_import((string) $xml->template->ID, $template->get('ID'));
}
$template->activate();
if ($template->get('ID')) {
$this->add_notification(
'update', sprintf(
__('Template Imported: View | Edit', 'e2pdf'),
$this->helper->get_url(
[
'page' => 'e2pdf-templates',
'action' => 'view',
'id' => $template->get('ID')
]
),
$this->helper->get_url(
[
'page' => 'e2pdf-templates',
'action' => 'edit',
'id' => $template->get('ID')
]
)
)
);
} else {
$this->add_notification('error', __('Something went wrong!', 'e2pdf'));
}
} else {
foreach ($errors as $key => $error) {
$this->add_notification('error', $error);
}
}
}
if (is_file($file['tmp_name'])) {
unlink($file['tmp_name']);
}
}
}
$this->view('import_disabled', false);
if (!$this->helper->load('xml')->check()) {
$this->add_notification('error', sprintf(__('The PHP %s extension is required', 'e2pdf'), 'SimpleXml'));
$this->view('import_disabled', true);
}
global $wpdb;
$order_condition = array(
'orderby' => 'ID',
'order' => 'desc',
);
$orderby = $this->helper->load('db')->prepare_orderby($order_condition);
$tpls = $wpdb->get_results($wpdb->prepare('SELECT `ID`, `title` FROM `' . (new Model_E2pdf_Template())->get_table() . '`' . $orderby . ''));
$templates = [
'' => __('--- Select ---', 'e2pdf')
];
if (!empty($tpls)) {
foreach ($tpls as $tpl) {
$templates[$tpl->ID] = $tpl->ID . ' | ' . $tpl->title;
}
}
$options = array(
'overwrite' => [
'name' => __('Overwrite Options', 'e2pdf'),
'options' => [
[
'name' => __('Overwrite Template by ID', 'e2pdf'),
'key' => 'options[overwrite]',
'value' => '',
'default_value' => '',
'type' => 'select',
'options' => [
'' => __('Create New E2Pdf Template ID', 'e2pdf'),
'1' => __('Existing Template ID', 'e2pdf'),
'2' => __('Custom Template ID', 'e2pdf'),
'3' => __('Backup Template ID', 'e2pdf'),
]
],
[
'name' => __('Template ID', 'e2pdf'),
'key' => 'options[template_id]',
'value' => '',
'default_value' => '',
'type' => 'select',
'options' => $templates,
'li' => array(
'class' => 'e2pdf-import-overwrite-option e2pdf-hide',
),
],
[
'name' => __('Template ID', 'e2pdf'),
'key' => 'options[custom_template_id]',
'value' => '',
'default_value' => '',
'type' => 'text',
'class' => 'e2pdf-numbers',
'placeholder' => __('Template ID', 'e2pdf'),
'li' => array(
'class' => 'e2pdf-import-overwrite-option e2pdf-hide',
),
],
],
],
'template' => array(
'name' => __('Template Options', 'e2pdf'),
'options' => array(
array(
'name' => __('Import Images', 'e2pdf'),
'key' => 'options[images]',
'value' => '1',
'default_value' => '0',
'type' => 'checkbox',
'placeholder' => '',
),
array(
'name' => __('Import Fonts', 'e2pdf'),
'key' => 'options[fonts]',
'value' => '1',
'default_value' => '0',
'type' => 'checkbox',
'placeholder' => '',
),
),
),
'item' => array(
'name' => __('Connection Options', 'e2pdf'),
'options' => array(
array(
'name' => __('Import Connection', 'e2pdf'),
'key' => 'options[item]',
'value' => '0',
'default_value' => '0',
'type' => 'checkbox',
'placeholder' => '',
'class' => 'e2pdf-collapse',
'data-collapse' => 'e2pdf-import-extension-option',
),
),
),
);
$options = apply_filters('e2pdf_controller_templates_import_options', $options);
$this->view('options', $options);
$this->view('upload_max_filesize', $this->helper->load('files')->get_upload_max_filesize());
}
/**
* @url admin.php?page=e2pdf-templates&action=backup&id=$id
*/
public function download_action() {
if ($this->post->get('_wpnonce')) {
if (wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_templates')) {
if ($this->helper->load('xml')->check()) {
$options = $this->post->get('options');
$xml = $this->helper->load('xml')->create('backup');
$template = new Model_E2pdf_Template();
if ($template->load($this->post->get('id'))) {
if ($template->get('title') != '') {
$filename = $template->get('ID') . ' - ' . $template->get('title') . '.' . date('Y-m-d.H-i-s') . '.e2pdf';
} else {
$filename = date('Y-m-d.H-i-s') . '.e2pdf';
}
$pages = $template->get('pages');
if ($options['images']) {
foreach ($pages as $page_key => $page) {
if (isset($page['elements']) && !empty($page['elements'])) {
foreach ($page['elements'] as $element_key => $element) {
if ($element['type'] === 'e2pdf-image') {
$file = false;
if ($this->helper->load('pdf')->get_extension($element['value'])) {
$file = $this->helper->load('pdf')->get_pdf($element['value']);
} else {
$file = $this->helper->load('image')->get_image($element['value']);
}
if ($file) {
$pages[$page_key]['elements'][$element_key]['base64'] = $file;
}
}
}
}
}
}
/*
* Build Xml
*/
$xml->addChildCData('version', $this->helper->get('version'));
$xml->addChildCData('date', date('Y-m-d H:i:s'));
$options_xml = $xml->addChild('options');
foreach ($options as $option_key => $option) {
$options_xml->addChildCData($option_key, $option);
}
$template_xml = $xml->addChild('template');
$template_xml->addChildCData('ID', $template->get('ID'));
$template_xml->addChildCData('title', $template->get('title'));
$template_xml->addChildCData('created_at', $template->get('created_at'));
$template_xml->addChildCData('updated_at', $template->get('updated_at'));
$template_xml->addChildCData('flatten', $template->get('flatten'));
$template_xml->addChildCData('tab_order', $template->get('tab_order'));
$template_xml->addChildCData('compression', $template->get('compression'));
$template_xml->addChildCData('optimization', $template->get('optimization'));
$template_xml->addChildCData('appearance', $template->get('appearance'));
$template_xml->addChildCData('width', $template->get('width'));
$template_xml->addChildCData('height', $template->get('height'));
$template_xml->addChildCData('extension', $template->get('extension'));
$template_xml->addChildCData('item', $template->get('item'));
$template_xml->addChildCData('item1', $template->get('item1'));
$template_xml->addChildCData('item2', $template->get('item2'));
$template_xml->addChildCData('format', $template->get('format'));
$template_xml->addChildCData('resample', $template->get('resample'));
$template_xml->addChildCData(
'dataset_title',
apply_filters('e2pdf_controller_templates_backup_replace_shortcodes', $template->get('dataset_title'), $options, $template, $template->extension())
);
$template_xml->addChildCData(
'dataset_title1',
apply_filters('e2pdf_controller_templates_backup_replace_shortcodes', $template->get('dataset_title1'), $options, $template, $template->extension())
);
$template_xml->addChildCData(
'dataset_title2',
apply_filters('e2pdf_controller_templates_backup_replace_shortcodes', $template->get('dataset_title2'), $options, $template, $template->extension())
);
$template_xml->addChildCData(
'button_title',
apply_filters('e2pdf_controller_templates_backup_replace_shortcodes', $template->get('button_title'), $options, $template, $template->extension())
);
$template_xml->addChildCData(
'dpdf',
apply_filters('e2pdf_controller_templates_backup_replace_shortcodes', $template->get('dpdf'), $options, $template, $template->extension())
);
$template_xml->addChildCData(
'attachments',
apply_filters('e2pdf_controller_templates_backup_replace_shortcodes', $template->get('attachments'), $options, $template, $template->extension())
);
$template_xml->addChildCData('inline', $template->get('inline'));
$template_xml->addChildCData('auto', $template->get('auto'));
$template_xml->addChildCData('rtl', $template->get('rtl'));
$template_xml->addChildCData('font_processor', $template->get('font_processor'));
$template_xml->addChildCData(
'name',
apply_filters('e2pdf_controller_templates_backup_replace_shortcodes', $template->get('name'), $options, $template, $template->extension())
);
$template_xml->addChildCData(
'savename',
apply_filters('e2pdf_controller_templates_backup_replace_shortcodes', $template->get('savename'), $options, $template, $template->extension())
);
$template_xml->addChildCData(
'password',
apply_filters('e2pdf_controller_templates_backup_replace_shortcodes', $template->get('password'), $options, $template, $template->extension())
);
$template_xml->addChildCData(
'owner_password',
apply_filters('e2pdf_controller_templates_backup_replace_shortcodes', $template->get('owner_password'), $options, $template, $template->extension())
);
$template_xml->addChildCData('permissions', base64_encode(serialize($template->get('permissions'))));
$template_xml->addChildCData('hooks', $template->get('hooks'));
$template_xml->addChildCData(
'meta_title',
apply_filters('e2pdf_controller_templates_backup_replace_shortcodes', $template->get('meta_title'), $options, $template, $template->extension())
);
$template_xml->addChildCData(
'meta_subject',
apply_filters('e2pdf_controller_templates_backup_replace_shortcodes', $template->get('meta_subject'), $options, $template, $template->extension())
);
$template_xml->addChildCData(
'meta_author',
apply_filters('e2pdf_controller_templates_backup_replace_shortcodes', $template->get('meta_author'), $options, $template, $template->extension())
);
$template_xml->addChildCData(
'meta_keywords',
apply_filters('e2pdf_controller_templates_backup_replace_shortcodes', $template->get('meta_keywords'), $options, $template, $template->extension())
);
$template_xml->addChildCData('lang_code', $template->get('lang_code'));
$template_xml->addChildCData('font', $template->get('font'));
$template_xml->addChildCData('font_size', $template->get('font_size'));
$template_xml->addChildCData('font_color', $template->get('font_color'));
$template_xml->addChildCData('line_height', $template->get('line_height'));
$template_xml->addChildCData('text_align', $template->get('text_align'));
$template_xml->addChildCData('fonts', base64_encode(serialize($template->get('fonts'))));
$template_xml->addChildCData(
'properties', base64_encode(
serialize(
apply_filters('e2pdf_controller_templates_backup_properties', $template->get('properties'), $options, $template, $template->extension())
)
)
);
$template_xml->addChildCData(
'actions', base64_encode(
serialize(
apply_filters('e2pdf_controller_templates_backup_actions', $template->get('actions'), $options, $template, $template->extension())
)
)
);
$template_xml->addChildCData('pages', base64_encode(
serialize(
apply_filters('e2pdf_controller_templates_backup_pages', $pages, $options, $template, $template->extension())
)
)
);
// include pdf
if ($template->get('pdf')) {
$pdf_xml = $xml->addChild('pdf');
$pdf_xml->addChildCData('source', base64_encode(file_get_contents($this->helper->get('pdf_dir') . $template->get('pdf') . '/' . $template->get('pdf') . '.pdf')));
$pdf_xml_images = $pdf_xml->addChild('images');
foreach ($template->get('pages') as $key => $page) {
$pdf_xml_image = $pdf_xml_images->addChild('image');
$pdf_xml_image->addChildCData('page_id', $page['page_id']);
$pdf_xml_image->addChildCData('source', base64_encode(file_get_contents($this->helper->get('pdf_dir') . $template->get('pdf') . '/images/' . $page['page_id'] . '.png')));
}
}
// include fonts
if ($options['fonts']) {
$fonts_xml = $xml->addChild('fonts');
if ($template->get('fonts')) {
$model_e2pdf_font = new Model_E2pdf_Font();
foreach ($template->get('fonts') as $key => $value) {
$font = $fonts_xml->addChild('font');
$font->addChildCData('title', $value);
$font->addChildCData('name', $key);
$font->addChildCData('value', $model_e2pdf_font->get_font($key));
}
}
}
// include item
if ($options['item']) {
if ($template->extension()->method('backup')) {
$item = $xml->addChild('item');
$template->extension()->backup($item);
}
}
$this->download_response('xml', $this->helper->load('xml')->get_xml(), $filename);
exit;
} else {
$this->add_notification('error', __('Something went wrong!', 'e2pdf'));
$this->render('blocks', 'notifications');
}
}
} else {
wp_die($this->message('wp_verify_nonce_error'));
}
}
$this->view('export_disabled', false);
if (!$this->helper->load('xml')->check()) {
$this->add_notification('error', sprintf(__('The PHP %s extension is required', 'e2pdf'), 'SimpleXml'));
$this->view('export_disabled', true);
}
$template = new Model_E2pdf_Template();
if ($template->load($this->get->get('id'))) {
$this->view('template', $template);
$options = array(
'common' => array(
'name' => __('Options', 'e2pdf'),
'options' => array(
array(
'name' => __('Include Connection', 'e2pdf'),
'key' => 'options[item]',
'value' => $template->extension()->method('backup') ? '1' : '0',
'default_value' => 0,
'type' => 'checkbox',
'placeholder' => '',
'disabled' => $template->extension()->method('backup') ? false : 'disabled',
),
array(
'name' => __('Include Images', 'e2pdf'),
'key' => 'options[images]',
'value' => 1,
'default_value' => 0,
'type' => 'checkbox',
'placeholder' => '',
),
array(
'name' => __('Include Fonts', 'e2pdf'),
'key' => 'options[fonts]',
'value' => 1,
'default_value' => 0,
'type' => 'checkbox',
'placeholder' => '',
),
),
),
);
$options = apply_filters('e2pdf_controller_templates_backup_options', $options, $template, $template->extension());
$this->view('options', $options);
} else {
$this->add_notification('error', __('Something went wrong!', 'e2pdf'));
$this->render('blocks', 'notifications');
}
}
// screen action
public function screen_action() {
$option = $this->post->get('wp_screen_options');
if (is_array($option) && isset($option['option'], $option['value']) && $option['option'] === 'e2pdf_templates_screen_per_page') {
$per_page = (int) $option['value'];
if ($per_page > 0) {
update_option($option['option'], $per_page);
}
}
$this->redirect(
$this->helper->get_url(
[
'page' => 'e2pdf-templates',
]
)
);
}
// ajax save form
public function ajax_save_form() {
global $wpdb;
if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {
$data = json_decode($this->post->get('data'), true);
$template = new Model_E2pdf_Template();
if (isset($data['ID'])) {
$template->load($data['ID']);
}
if (!isset($data['permissions'])) {
$data['permissions'] = array();
}
foreach ($data as $key => $value) {
if ($key == 'pdf' && $value) {
if (file_exists($this->helper->get('pdf_dir') . $value . '/' . $value . '.pdf')) {
$template->set($key, $value);
}
} else {
$template->set($key, $value);
}
}
$template_id = $template->save(true);
if (!$template_id) {
if ($wpdb->last_error) {
$response = array(
'error' => $wpdb->last_error,
);
} else {
$response = array(
'error' => __('Something went wrong!', 'e2pdf'),
);
}
} else {
if (isset($data['item']) && $data['item'] == '-1') {
$template->load($template_id);
if ($template->extension()->method('auto_form')) {
$template = $template->extension()->auto_form($template, $data);
} else {
$template->set('item', '');
}
$template->save(true);
}
if (!isset($data['ID'])) {
$template->activate();
}
$response = array(
'redirect' => $this->helper->get_url(
array(
'page' => 'e2pdf-templates',
'action' => 'edit',
'id' => $template->get('ID'),
'notification' => $this->add_notification('update', __('Template Saved', 'e2pdf')),
)
),
);
}
} else {
$response['error'] = $this->message('wp_verify_nonce_error');
}
$this->json_response($response);
}
public function ajax_get_styles() {
if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {
$data = $this->post->get('data');
$content = array();
if (isset($data['extension']) && isset($data['item'])) {
$extension = new Model_E2pdf_Extension();
if ($extension->load($data['extension'])) {
$content = $extension->styles($data['item']);
}
}
$response = array(
'content' => $content,
);
} else {
$response['error'] = $this->message('wp_verify_nonce_error');
}
$this->json_response($response);
}
// ajax extension
public function ajax_extension() {
if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {
$data = $this->post->get('data');
$extension = new Model_E2pdf_Extension();
$content = array();
if ($extension->load($data)) {
$content = $extension->items();
if ($extension->method('merged_items')) {
$select = new stdClass();
$select->id = '-2';
$select->url = '';
$select->name = __('Merged Connections', 'e2pdf');
array_unshift($content, $select);
}
if ($extension->method('auto_form')) {
$select = new stdClass();
$select->id = '-1';
$select->url = '';
$select->name = __('Auto Form from PDF', 'e2pdf');
array_unshift($content, $select);
}
}
$select = new stdClass();
$select->id = '';
$select->url = '';
$select->name = __('--- Select ---', 'e2pdf');
array_unshift($content, $select);
$response = array(
'content' => $content,
);
} else {
$response['error'] = $this->message('wp_verify_nonce_error');
}
$this->json_response($response);
}
// ajax visual mapper
public function ajax_visual_mapper() {
if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {
$data = $this->post->get('data');
$item = isset($data['item']) ? $data['item'] : '';
$item1 = isset($data['item1']) ? $data['item1'] : '';
$item2 = isset($data['item2']) ? $data['item2'] : '';
$extension = new Model_E2pdf_Extension();
$extension->load($data['extension']);
$extension->set('item', $item);
if ($item == '-2') {
$extension->set('item1', $item1);
$extension->set('item2', $item2);
}
$visual_mapper = $extension->visual_mapper();
if ($visual_mapper) {
$response = array(
'content' => $visual_mapper,
);
} elseif (!$item || ($item == '-2' && !$item1 && !$item2)) {
$response = array(
'content' => __('You must set the Connection to use the Visual Mapper', 'e2pdf'),
);
} else {
$response = array(
'content' => __("Sorry, this Extension doesn't support the Visual Mapper", 'e2pdf'),
);
}
} else {
$response['error'] = $this->message('wp_verify_nonce_error');
}
$this->json_response($response);
}
// ajax upload
public function ajax_upload() {
if (!wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {
$this->json_response(
[
'error' => $this->message('wp_verify_nonce_error'),
]
);
}
$data = $this->post->get();
$post_extension = $data['extension'];
$item = isset($data['item']) ? $data['item'] : '';
$template_id = isset($data['template_id']) && $data['template_id'] ? $data['template_id'] : false;
$font = isset($data['font']) ? $data['font'] : false;
$font_size = isset($data['font_size']) ? $data['font_size'] : false;
$line_height = isset($data['line_height']) ? $data['line_height'] : false;
$title = isset($data['title']) ? $data['title'] : __('(no title)', 'e2pdf');
$rtl = isset($data['rtl']) && $data['rtl'] ? '1' : '0';
$text_align = isset($data['text_align']) ? $data['text_align'] : 'left';
$file = $this->helper->load('files')->upload($this->files->get('pdf'), ['pdf'], ['application/pdf']);
if (isset($file['error'])) {
$this->json_response(
[
'error' => $file['error'],
]
);
}
wp_raise_memory_limit('admin');
if (get_option('e2pdf_api_protocol', '0') == '1' && ($tmp = realpath($file['tmp_name']))) {
$upload = class_exists('CURLFile') ? new CURLFile($tmp) : '@' . $tmp;
} else {
$upload = base64_encode(file_get_contents($file['tmp_name']));
}
$model_e2pdf_api = new Model_E2pdf_Api();
$model_e2pdf_api->set(
array(
'action' => 'template/upload2',
'data' => array(
'title' => $file['name'],
'pdf' => $upload,
),
)
);
$request = $model_e2pdf_api->request();
if (isset($request['error'])) {
$this->json_response(
[
'error' => $request['error'],
]
);
}
$extension = new Model_E2pdf_Extension();
if ($post_extension) {
$extension->load($post_extension);
if ($item && $item != '-1') {
$extension->set('item', $item);
}
}
$pdf_name = md5(time());
$pdf_dir = $this->helper->get('pdf_dir') . $pdf_name . '/';
$pdf_images_dir = $pdf_dir . 'images/';
$this->helper->create_dir($pdf_dir);
$this->helper->create_dir($pdf_images_dir);
if (!move_uploaded_file($file['tmp_name'], $pdf_dir . $pdf_name . '.pdf')) {
$this->json_response(
[
'error' => 'Failed to move uploaded file',
]
);
}
try {
$xml_template = [];
$pages = [];
if (class_exists('XMLReader')) {
$reader = new XMLReader();
if (!$reader->XML($request['file'])) {
throw new Exception(__('Failed to parse PDF', 'e2pdf'));
}
while ($reader->read()) {
if ($reader->nodeType == XMLReader::ELEMENT) {
switch ($reader->name) {
case 'template':
$template_node = new SimpleXMLElement($reader->readOuterXML(), LIBXML_PARSEHUGE);
$xml_template = [
'width' => (string) $template_node->width,
'height' => (string) $template_node->height,
'format' => (string) $template_node->format,
'compression' => (string) $template_node->compression,
'appearance' => (string) $template_node->appearance,
'meta_title' => (string) $template_node->meta_title,
'meta_subject' => (string) $template_node->meta_subject,
'meta_author' => (string) $template_node->meta_author,
'meta_keywords' => (string) $template_node->meta_keywords,
'lang_code' => (string) $template_node->lang_code,
'font' => (string) $template_node->font,
'font_size' => (string) $template_node->font_size,
'font_color' => (string) $template_node->font_color,
];
break;
case 'page':
$page_node = new SimpleXMLElement($reader->readOuterXML(), LIBXML_PARSEHUGE);
$this->helper->load('xml')->parse_xml_page($page_node, $pages, $pdf_images_dir, $extension);
break;
case 'fonts':
$fonts_node = new SimpleXMLElement($reader->readOuterXML(), LIBXML_PARSEHUGE);
foreach ($fonts_node->children() as $xml_font) {
$this->helper->load('xml')->parse_xml_font($xml_font);
}
break;
default:
break;
}
}
}
$reader->close();
unset($reader);
} elseif (is_callable('simplexml_load_string')) {
$xml = simplexml_load_string($request['file'], 'SimpleXMLElement', LIBXML_PARSEHUGE);
if (isset($xml->pages)) {
foreach ($xml->pages->page as $page_node) {
$this->helper->load('xml')->parse_xml_page($page_node, $pages, $pdf_images_dir, $extension);
}
}
if (isset($xml->template)) {
$xml_template = [
'width' => (string) $xml->template->width,
'height' => (string) $xml->template->height,
'format' => (string) $xml->template->format,
'compression' => (string) $xml->template->compression,
'appearance' => (string) $xml->template->appearance,
'meta_title' => (string) $xml->template->meta_title,
'meta_subject' => (string) $xml->template->meta_subject,
'meta_author' => (string) $xml->template->meta_author,
'meta_keywords' => (string) $xml->template->meta_keywords,
'lang_code' => (string) $xml->template->lang_code,
'font' => (string) $xml->template->font,
'font_size' => (string) $xml->template->font_size,
'font_color' => (string) $xml->template->font_color,
];
}
if (isset($xml->fonts) && $xml->fonts) {
foreach ($xml->fonts->children() as $key => $xml_font) {
$this->helper->load('xml')->parse_xml_font($xml_font);
}
}
}
if (empty($pages) || !is_array($pages)) {
throw new Exception(__('Failed to parse PDF pages', 'e2pdf'));
}
$this->helper->load('sort')->stable_uasort($pages, 'sort_by_pageid');
$template = new Model_E2pdf_Template();
if ($template_id) {
$template->load($template_id);
$template->set('title', $title);
$template->set('pages', $pages);
$template->set('pdf', $pdf_name);
$template->set('width', $xml_template['width']);
$template->set('height', $xml_template['height']);
$template->set('extension', $post_extension);
$template->set('item', $item);
$template->set('rtl', $rtl);
$template->set('font', $font ? $font : $xml_template['font']);
$template->set('font_size', $font_size ? $font_size : $xml_template['font_size']);
$template->set('line_height', $line_height ? $line_height : $xml_template['font_size']);
$template->set('text_align', $text_align);
} else {
$template->set('title', $title);
$template->set('flatten', '1');
$template->set('format', $xml_template['format']);
$template->set('compression', $xml_template['compression']);
$template->set('appearance', $xml_template['appearance']);
$template->set('width', $xml_template['width']);
$template->set('height', $xml_template['height']);
$template->set('extension', $post_extension);
$template->set('item', $item);
$template->set('dataset_title', '');
$template->set('button_title', '');
$template->set('dpdf', '');
$template->set('attachments', '');
$template->set('inline', '');
$template->set('auto', '');
$template->set('rtl', $rtl);
$template->set('name', '[e2pdf-dataset]');
$template->set('savename', '[e2pdf-dataset]');
$template->set('password', '');
$template->set('meta_title', $xml_template['meta_title']);
$template->set('meta_subject', $xml_template['meta_subject']);
$template->set('meta_author', $xml_template['meta_author']);
$template->set('meta_keywords', $xml_template['meta_keywords']);
$template->set('lang_code', $xml_template['lang_code']);
$template->set('font', $font ? $font : $xml_template['font']);
$template->set('font_size', $font_size ? $font_size : $xml_template['font_size']);
$template->set('line_height', $line_height ? $line_height : $xml_template['font_size']);
$template->set('text_align', $text_align);
$template->set('font_color', $xml_template['font_color']);
$template->set('pages', $pages);
$template->set('pdf', $pdf_name);
}
$template->save(true);
if ($item == '-1' && $extension->method('auto_form')) {
$template = $extension->auto_form($template, $data);
$template->save(true);
}
if (!$template_id) {
$template->activate();
}
$this->json_response(
[
'redirect' => $this->helper->get_url(
[
'page' => 'e2pdf-templates',
'action' => 'edit',
'id' => $template->get('ID'),
]
),
]
);
} catch (Exception $ex) {
if (file_exists($pdf_dir)) {
$this->helper->delete_dir($pdf_dir);
}
$this->json_response(
[
'error' => $ex->getMessage(),
]
);
}
}
// ajax reupload
public function ajax_reupload() {
if (!wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {
$this->json_response(
[
'error' => $this->message('wp_verify_nonce_error'),
]
);
}
$data = $this->post->get();
$new = isset($data['new']) ? $data['new'] : array();
$flush = isset($data['flush']) ? $data['flush'] : array();
$positions = isset($data['positions']) ? $data['positions'] : array();
$template_id = isset($data['template_id']) && $data['template_id'] ? $data['template_id'] : false;
if (!$template_id) {
return false;
}
$file = $this->helper->load('files')->upload($this->files->get('pdf'), ['pdf'], ['application/pdf']);
if (isset($file['error'])) {
$this->json_response(
[
'error' => $file['error'],
]
);
}
wp_raise_memory_limit('admin');
if (get_option('e2pdf_api_protocol', '0') == '1' && ($tmp = realpath($file['tmp_name']))) {
$upload = class_exists('CURLFile') ? new CURLFile($tmp) : '@' . $tmp;
} else {
$upload = base64_encode(file_get_contents($file['tmp_name']));
}
$model_e2pdf_api = new Model_E2pdf_Api();
$model_e2pdf_api->set(
array(
'action' => 'template/upload2',
'data' => array(
'title' => $file['name'],
'pdf' => $upload,
),
)
);
$request = $model_e2pdf_api->request();
if (isset($request['error'])) {
$this->json_response(
[
'error' => $request['error'],
]
);
}
$template = new Model_E2pdf_Template();
if (!$template->load($template_id)) {
$this->json_response(
[
'error' => __('Failed to load E2Pdf Template', 'e2pdf'),
]
);
}
$extension = new Model_E2pdf_Extension();
if ($template->get('extension') && $template->get('item')) {
$extension->load($template->get('extension'));
$extension->set('item', $template->get('item'));
}
$pdf_name = md5(time());
$pdf_dir = $this->helper->get('pdf_dir') . $pdf_name . '/';
$pdf_images_dir = $pdf_dir . 'images/';
$this->helper->create_dir($pdf_dir);
$this->helper->create_dir($pdf_images_dir);
if (!move_uploaded_file($file['tmp_name'], $pdf_dir . $pdf_name . '.pdf')) {
$this->json_response(
[
'error' => 'Failed to move uploaded file',
]
);
}
try {
$pages = [];
$pos_pages = [];
if (class_exists('XMLReader')) {
$reader = new XMLReader();
if (!$reader->XML($request['file'])) {
throw new Exception(__('Failed to parse PDF', 'e2pdf'));
}
while ($reader->read()) {
if ($reader->nodeType == XMLReader::ELEMENT) {
if ($reader->name == 'page') {
$page_node = new SimpleXMLElement($reader->readOuterXML(), LIBXML_PARSEHUGE);
$pos_pages[] = (string) $page_node['number'];
}
}
}
$reader->close();
unset($reader);
foreach ($positions as $pos_key => $pos_page) {
if (!in_array($pos_key, $flush)) {
if ($pos_page == '0') {
$flush[] = $pos_key;
} elseif (!in_array($pos_page, $pos_pages, false)) {
throw new Exception(sprintf(__('Invalid position of %s page', 'e2pdf'), $pos_key));
}
}
}
$reader = new XMLReader();
$reader->XML($request['file']);
while ($reader->read()) {
if ($reader->nodeType == XMLReader::ELEMENT) {
switch ($reader->name) {
case 'page':
$page_node = new SimpleXMLElement($reader->readOuterXML(), LIBXML_PARSEHUGE);
$this->helper->load('xml')->parse_xml_page($page_node, $pages, $pdf_images_dir, $extension);
break;
default:
break;
}
}
}
$reader->close();
unset($reader);
} elseif (is_callable('simplexml_load_string')) {
$xml = simplexml_load_string($request['file'], 'SimpleXMLElement', LIBXML_PARSEHUGE);
if (isset($xml->pages)) {
foreach ($xml->pages->page as $page_node) {
$pos_pages[] = (string) $page_node['number'];
}
}
foreach ($positions as $pos_key => $pos_page) {
if (!in_array($pos_key, $flush)) {
if ($pos_page == '0') {
$flush[] = $pos_key;
} elseif (!in_array($pos_page, $pos_pages, false)) {
throw new Exception(sprintf(__('Invalid position of %s page', 'e2pdf'), $pos_key));
}
}
}
if (isset($xml->pages)) {
foreach ($xml->pages->page as $page_node) {
$this->helper->load('xml')->parse_xml_page($page_node, $pages, $pdf_images_dir, $extension);
}
}
}
if (empty($pages) || !is_array($pages)) {
throw new Exception(__('Failed to parse PDF pages', 'e2pdf'));
}
$this->helper->load('sort')->stable_uasort($pages, 'sort_by_pageid');
$model_e2pdf_element = new Model_E2pdf_Element();
$last_element_id = $model_e2pdf_element->get_last_element_id($template_id);
$original_pages = $template->get('pages');
foreach ($pages as $page_key => $page) {
if (isset($page['elements']) && !empty($page['elements'])) {
foreach ($page['elements'] as $element_key => $element) {
$last_element_id++;
$pages[$page_key]['elements'][$element_key]['element_id'] = $last_element_id;
}
}
foreach ($positions as $pos_key => $pos_page) {
if ($pos_page == $page_key) {
if (in_array($pos_key, $new)) {
if (isset($original_pages[$pos_key]['elements']) && !in_array($pos_key, $flush)) {
$elements = $original_pages[$pos_key]['elements'];
$pages[$page_key]['elements'] = array_merge($pages[$page_key]['elements'], $elements);
}
} else {
if (isset($original_pages[$pos_key]['elements']) && !in_array($pos_key, $flush)) {
$elements = $original_pages[$pos_key]['elements'];
$pages[$page_key]['elements'] = $elements;
} else {
$pages[$page_key]['elements'] = array();
}
}
if (isset($original_pages[$pos_key]['actions'])) {
$pages[$page_key]['actions'] = $original_pages[$pos_key]['actions'];
}
}
}
}
$template->set('pdf', $pdf_name);
$template->set('pages', $pages);
$template->save(true);
$this->json_response(
[
'redirect' => $this->helper->get_url(
array(
'page' => 'e2pdf-templates',
'action' => 'edit',
'id' => $template->get('ID'),
)
),
]
);
} catch (Exception $ex) {
if (file_exists($pdf_dir)) {
$this->helper->delete_dir($pdf_dir);
}
$this->json_response(
[
'error' => $ex->getMessage(),
]
);
}
}
// ajax auto
public function ajax_auto() {
if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {
$data = $this->post->get('data');
$extension = $data['extension'];
$item = isset($data['item']) ? $data['item'] : '';
$item1 = isset($data['item1']) ? $data['item1'] : '';
$item2 = isset($data['item2']) ? $data['item2'] : '';
$font_size = isset($data['font_size']) ? $data['font_size'] : '14';
$line_height = isset($data['line_height']) ? $data['line_height'] : '14';
if (!$extension || !$item) {
return;
}
$model_e2pdf_extension = new Model_E2pdf_Extension();
$model_e2pdf_extension->load($extension);
$model_e2pdf_extension->set('item', $item);
$model_e2pdf_extension->set('item1', $item1);
$model_e2pdf_extension->set('item2', $item2);
$model_e2pdf_extension->set('font_size', $font_size);
$model_e2pdf_extension->set('line_height', $line_height);
if (method_exists($model_e2pdf_extension->extension(), 'auto')) {
$content = $model_e2pdf_extension->auto();
} else {
$content = array();
}
$response = array(
'content' => $content,
);
} else {
$response['error'] = $this->message('wp_verify_nonce_error');
}
$this->json_response($response);
}
// ajax activate template
public function ajax_activate_template() {
if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {
$data = $this->post->get('data');
$id = $data['id'];
if (!$id) {
return;
}
$request = $this->activate_template($id);
if (isset($request['error'])) {
$response = array(
'error' => $request['error'],
);
} else {
$response = array(
'content' => 'activated',
);
}
} else {
$response['error'] = $this->message('wp_verify_nonce_error');
}
$this->json_response($response);
}
// ajax deactivaate template
public function ajax_deactivate_template() {
if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {
$data = $this->post->get('data');
$id = $data['id'];
if (!$id) {
return;
}
$request = $this->deactivate_template($id);
if (isset($request['error'])) {
$response = array(
'error' => $request['error'],
);
} else {
$response = array(
'content' => 'deactivated',
);
}
} else {
$response['error'] = $this->message('wp_verify_nonce_error');
}
$this->json_response($response);
}
// ajax email
public function ajax_email() {
if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {
$data = $this->post->get('data');
$email = isset($data['email']) ? trim($data['email']) : '';
$email_code = isset($data['email_code']) ? trim($data['email_code']) : '';
$model_e2pdf_api = new Model_E2pdf_Api();
$model_e2pdf_api->set(
array(
'action' => 'common/email',
'data' => array(
'email' => $email,
'email_code' => $email_code,
'email_confirm' => isset($data['email_code']),
),
)
);
$request = $model_e2pdf_api->request();
if (isset($request['error'])) {
if ($request['error'] === 'incorrect_email') {
$response = array(
'error' => __('Invalid E-mail address format', 'e2pdf'),
);
} elseif ($request['error'] === 'incorrect_code') {
$response = array(
'error' => __('Invalid Confirmation Code', 'e2pdf'),
);
} else {
$response = array(
'error' => $request['error'],
);
}
} elseif (isset($request['success'])) {
$response = array(
'content' => $request['success'],
);
if ($request['success'] == 'subscribed') {
update_option('e2pdf_email', $email);
}
}
} else {
$response['error'] = $this->message('wp_verify_nonce_error');
}
$this->json_response($response);
}
// trash template
public function trash_template($id = false) {
$id = (int) $id;
$template = new Model_E2pdf_Template();
if ($id && $template->load($id, false)) {
$template->set('trash', '1');
$template->update(array('trash'));
$this->deactivate_template($template->get('ID'));
return true;
}
return false;
}
// delete template
public function delete_template($id = false) {
$id = (int) $id;
$template = new Model_E2pdf_Template();
if ($id && $template->load($id)) {
$this->deactivate_template($template->get('ID'));
$template->delete();
return true;
}
return false;
}
// restore template
public function restore_template($id = false) {
$id = (int) $id;
$template = new Model_E2pdf_Template();
if ($id && $template->load($id, false)) {
$template->set('trash', '0');
$template->update(array('trash'));
return true;
}
return false;
}
// duplicate template
public function duplicate_template($id = false) {
$id = (int) $id;
$template = new Model_E2pdf_Template();
if ($id && $template->load($id)) {
$title = $template->get('title') . ' ' . __('(Copy)', 'e2pdf');
$template->set('ID', false);
$template->set('title', $title);
$template->set('uid', '');
$template->set('activated', '0');
if ($template->get('pdf')) {
$pdf_name = md5(time());
$pdf_dir = $this->helper->get('pdf_dir') . $pdf_name . '/';
$pdf_images_dir = $pdf_dir . 'images/';
$this->helper->create_dir($pdf_dir);
$this->helper->create_dir($pdf_images_dir);
if (file_exists($this->helper->get('pdf_dir') . $template->get('pdf') . '/' . $template->get('pdf') . '.pdf')) {
$images = glob($this->helper->get('pdf_dir') . $template->get('pdf') . '/images/*');
foreach ($images as $image) {
copy($image, $pdf_images_dir . pathinfo($image, PATHINFO_BASENAME));
}
copy($this->helper->get('pdf_dir') . $template->get('pdf') . '/' . $template->get('pdf') . '.pdf', $this->helper->get('pdf_dir') . $pdf_name . '/' . $pdf_name . '.pdf');
$template->set('pdf', $pdf_name);
}
}
$template->save(true);
return true;
}
return false;
}
// activate template
public function activate_template($id = false) {
$id = (int) $id;
$template = new Model_E2pdf_Template();
if ($id && $template->load($id, false)) {
return $template->activate();
} else {
return array(
'error' => __('Something went wrong!', 'e2pdf'),
);
}
}
// deactivate template
public function deactivate_template($id = false) {
$id = (int) $id;
$template = new Model_E2pdf_Template();
if ($id && $template->load($id, false)) {
return $template->deactivate();
} else {
return array(
'error' => __('Something went wrong!', 'e2pdf'),
);
}
}
// get templates list
public function get_templates_list($filters = array(), $count = false) {
global $wpdb;
$model_e2pdf_template = new Model_E2pdf_Template();
$condition = array();
if (isset($filters['status']) && $filters['status'] == 'trash') {
$condition = array(
'trash' => array(
'condition' => '=',
'value' => '1',
'type' => '%d',
),
);
} else {
$condition = array(
'trash' => array(
'condition' => '<>',
'value' => '1',
'type' => '%d',
),
);
}
if (isset($filters['s']) && $filters['s']) {
$condition['title'] = array(
'condition' => 'LIKE',
'value' => '%%' . $filters['s'] . '%%',
'type' => '%s',
'or' => array(
array(
'ID' => array(
'condition' => 'LIKE',
'value' => '%%' . $filters['s'] . '%%',
'type' => '%s',
),
),
),
);
}
$order_condition = array();
$sortable = array('id', 'title', 'updated_at');
if (isset($filters['orderby']) && in_array($filters['orderby'], $sortable) && isset($filters['order'])) {
$order_condition = array(
'orderby' => $filters['orderby'],
'order' => $filters['order'] == 'asc' ? 'asc' : 'desc',
);
} else {
$order_condition = array(
'orderby' => 'id',
'order' => 'desc',
);
}
$limit_condition = array();
if (!$count) {
$paged = isset($filters['paged']) && $filters['paged'] ? $filters['paged'] : '0';
$paged = (int) $paged <= 0 ? 1 : (int) $paged;
$per_page = (int) get_option('e2pdf_templates_screen_per_page', '20');
$limit_condition = array(
'limit' => (int) $per_page,
'offset' => (int) ($paged - 1) * $per_page,
);
}
$where = $this->helper->load('db')->prepare_where($condition);
$orderby = $this->helper->load('db')->prepare_orderby($order_condition);
$limit = $this->helper->load('db')->prepare_limit($limit_condition);
// phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare
$tpls = $wpdb->get_results($wpdb->prepare('SELECT `ID` FROM `' . $model_e2pdf_template->get_table() . '`' . $where['sql'] . $orderby . $limit . '', $where['filter']));
if ($count) {
return count($tpls);
}
$templates = array();
foreach ($tpls as $key => $tpl) {
$template = new Model_E2pdf_Template();
$template->load($tpl->ID, false);
if (is_array($this->helper->get('license')->get('activated_templates'))) {
if ($template->get('activated') && !in_array($template->get('uid'), $this->helper->get('license')->get('activated_templates'))) {
$template->deactivate();
} elseif (!$template->get('activated') && in_array($template->get('uid'), $this->helper->get('license')->get('activated_templates'))) {
$template->activate();
}
}
$templates[] = $template;
}
return $templates;
}
// get sizes list
public function get_sizes_list($size = false, $attr = false) {
$sizes = array(
'A4 (PORTRAIT)' => array(
'width' => '595',
'height' => '842',
),
'A4 (LANDSCAPE)' => array(
'width' => '842',
'height' => '595',
),
'LETTER' => array(
'width' => '612',
'height' => '792',
),
'NOTE' => array(
'width' => '540',
'height' => '720',
),
'LEGAL' => array(
'width' => '612',
'height' => '1008',
),
'TABLOID' => array(
'width' => '792',
'height' => '1224',
),
'EXECUTIVE' => array(
'width' => '522',
'height' => '756',
),
'POSTCARD' => array(
'width' => '283',
'height' => '416',
),
);
if (!$size) {
return $sizes;
} else {
if (isset($sizes[$size][$attr])) {
return $sizes[$size][$attr];
}
return false;
}
}
// get fonts
public function get_fonts($with_path = false) {
$model_e2pdf_font = new Model_E2pdf_Font();
$fonts = $model_e2pdf_font->get_fonts();
if ($with_path) {
foreach ($fonts as $key => $value) {
$fonts[$key] = array(
'key' => $value,
'subfield' => array(
'path' => $key,
),
'value' => $value,
);
}
}
return $fonts;
}
// get font sizes
public function get_font_sizes() {
$max_font_size = apply_filters('e2pdf_controller_templates_max_font_size', 512);
$sizes = array();
for ($i = 1; $i <= $max_font_size; $i++) {
$sizes[$i] = $i;
}
return $sizes;
}
// get line heights
public function get_line_heights() {
$max_line_height = apply_filters('e2pdf_controller_templates_max_line_height', 512);
$line_heights = array();
for ($i = 1; $i <= $max_line_height; $i++) {
$line_heights[$i] = $i;
}
return $line_heights;
}
// get lang codes
public function get_lang_codes() {
return array(
'' => '',
'aa' => 'aa',
'ab' => 'ab',
'ae' => 'ae',
'af' => 'af',
'ak' => 'ak',
'am' => 'am',
'an' => 'an',
'ar' => 'ar',
'ar-AE' => 'ar-AE',
'ar-BH' => 'ar-BH',
'ar-DZ' => 'ar-DZ',
'ar-EG' => 'ar-EG',
'ar-IQ' => 'ar-IQ',
'ar-JO' => 'ar-JO',
'ar-KW' => 'ar-KW',
'ar-LB' => 'ar-LB',
'ar-LY' => 'ar-LY',
'ar-MA' => 'ar-MA',
'ar-OM' => 'ar-OM',
'ar-QA' => 'ar-QA',
'ar-SA' => 'ar-SA',
'ar-SY' => 'ar-SY',
'ar-TN' => 'ar-TN',
'ar-YE' => 'ar-YE',
'as' => 'as',
'av' => 'av',
'ay' => 'ay',
'az' => 'az',
'ba' => 'ba',
'be' => 'be',
'bg' => 'bg',
'bh' => 'bh',
'bi' => 'bi',
'bm' => 'bm',
'bn' => 'bn',
'bo' => 'bo',
'br' => 'br',
'bs' => 'bs',
'ca' => 'ca',
'ce' => 'ce',
'ch' => 'ch',
'co' => 'co',
'cr' => 'cr',
'cs' => 'cs',
'cu' => 'cu',
'cv' => 'cv',
'cy' => 'cy',
'da' => 'da',
'de' => 'de',
'de-AT' => 'de-AT',
'de-CH' => 'de-CH',
'de-DE' => 'de-DE',
'de-LI' => 'de-LI',
'de-LU' => 'de-LU',
'div' => 'div',
'dv' => 'dv',
'dz' => 'dz',
'ee' => 'ee',
'el' => 'el',
'en' => 'en',
'en-AU' => 'en-AU',
'en-BZ' => 'en-BZ',
'en-CA' => 'en-CA',
'en-CB' => 'en-CB',
'en-GB' => 'en-GB',
'en-IE' => 'en-IE',
'en-JM' => 'en-JM',
'en-NZ' => 'en-NZ',
'en-PH' => 'en-PH',
'en-TT' => 'en-TT',
'en-US' => 'en-US',
'en-ZA' => 'en-ZA',
'en-ZW' => 'en-ZW',
'eo' => 'eo',
'es' => 'es',
'es-AR' => 'es-AR',
'es-BO' => 'es-BO',
'es-CL' => 'es-CL',
'es-CO' => 'es-CO',
'es-CR' => 'es-CR',
'es-DO' => 'es-DO',
'es-EC' => 'es-EC',
'es-ES' => 'es-ES',
'es-GT' => 'es-GT',
'es-HN' => 'es-HN',
'es-MX' => 'es-MX',
'es-NI' => 'es-NI',
'es-PA' => 'es-PA',
'es-PE' => 'es-PE',
'es-PR' => 'es-PR',
'es-PY' => 'es-PY',
'es-SV' => 'es-SV',
'es-US' => 'es-US',
'es-UY' => 'es-UY',
'es-VE' => 'es-VE',
'et' => 'et',
'eu' => 'eu',
'fa' => 'fa',
'ff' => 'ff',
'fi' => 'fi',
'fj' => 'fj',
'fo' => 'fo',
'fr' => 'fr',
'fr-BE' => 'fr-BE',
'fr-CA' => 'fr-CA',
'fr-CH' => 'fr-CH',
'fr-FR' => 'fr-FR',
'fr-LU' => 'fr-LU',
'fr-MC' => 'fr-MC',
'fy' => 'fy',
'ga' => 'ga',
'gd' => 'gd',
'gl' => 'gl',
'gn' => 'gn',
'gu' => 'gu',
'gv' => 'gv',
'ha' => 'ha',
'he' => 'he',
'hi' => 'hi',
'ho' => 'ho',
'hr' => 'hr',
'hr-BA' => 'hr-BA',
'hr-HR' => 'hr-HR',
'ht' => 'ht',
'hu' => 'hu',
'hy' => 'hy',
'hz' => 'hz',
'ia' => 'ia',
'id' => 'id',
'ie' => 'ie',
'ig' => 'ig',
'ii' => 'ii',
'ik' => 'ik',
'in' => 'in',
'io' => 'io',
'is' => 'is',
'it' => 'it',
'it-CH' => 'it-CH',
'it-IT' => 'it-IT',
'iu' => 'iu',
'iw' => 'iw',
'ja' => 'ja',
'ji' => 'ji',
'jv' => 'jv',
'jw' => 'jw',
'ka' => 'ka',
'kg' => 'kg',
'ki' => 'ki',
'kj' => 'kj',
'kk' => 'kk',
'kl' => 'kl',
'km' => 'km',
'kn' => 'kn',
'ko' => 'ko',
'kok' => 'kok',
'kr' => 'kr',
'ks' => 'ks',
'ku' => 'ku',
'kv' => 'kv',
'kw' => 'kw',
'ky' => 'ky',
'kz' => 'kz',
'la' => 'la',
'lb' => 'lb',
'lg' => 'lg',
'li' => 'li',
'ln' => 'ln',
'lo' => 'lo',
'ls' => 'ls',
'lt' => 'lt',
'lu' => 'lu',
'lv' => 'lv',
'mg' => 'mg',
'mh' => 'mh',
'mi' => 'mi',
'mk' => 'mk',
'ml' => 'ml',
'mn' => 'mn',
'mo' => 'mo',
'mr' => 'mr',
'ms' => 'ms',
'ms-BN' => 'ms-BN',
'ms-MY' => 'ms-MY',
'mt' => 'mt',
'my' => 'my',
'na' => 'na',
'nb' => 'nb',
'nd' => 'nd',
'ne' => 'ne',
'ng' => 'ng',
'nl' => 'nl',
'nl-BE' => 'nl-BE',
'nl-NL' => 'nl-NL',
'nn' => 'nn',
'no' => 'no',
'nr' => 'nr',
'ns' => 'ns',
'nv' => 'nv',
'ny' => 'ny',
'oc' => 'oc',
'oj' => 'oj',
'om' => 'om',
'or' => 'or',
'os' => 'os',
'pa' => 'pa',
'pi' => 'pi',
'pl' => 'pl',
'ps' => 'ps',
'pt' => 'pt',
'pt-BR' => 'pt-BR',
'pt-PT' => 'pt-PT',
'qu' => 'qu',
'qu-BO' => 'qu-BO',
'qu-EC' => 'qu-EC',
'qu-PE' => 'qu-PE',
'rm' => 'rm',
'rn' => 'rn',
'ro' => 'ro',
'ru' => 'ru',
'rw' => 'rw',
'sa' => 'sa',
'sb' => 'sb',
'sc' => 'sc',
'sd' => 'sd',
'se' => 'se',
'se-FI' => 'se-FI',
'se-NO' => 'se-NO',
'se-SE' => 'se-SE',
'sg' => 'sg',
'sh' => 'sh',
'si' => 'si',
'sk' => 'sk',
'sl' => 'sl',
'sm' => 'sm',
'sn' => 'sn',
'so' => 'so',
'sq' => 'sq',
'sr' => 'sr',
'sr-BA' => 'sr-BA',
'sr-SP' => 'sr-SP',
'ss' => 'ss',
'st' => 'st',
'su' => 'su',
'sv' => 'sv',
'sv-FI' => 'sv-FI',
'sv-SE' => 'sv-SE',
'sw' => 'sw',
'sx' => 'sx',
'syr' => 'syr',
'ta' => 'ta',
'te' => 'te',
'tg' => 'tg',
'th' => 'th',
'ti' => 'ti',
'tk' => 'tk',
'tl' => 'tl',
'tn' => 'tn',
'to' => 'to',
'tr' => 'tr',
'ts' => 'ts',
'tt' => 'tt',
'tw' => 'tw',
'ty' => 'ty',
'ug' => 'ug',
'uk' => 'uk',
'ur' => 'ur',
'us' => 'us',
'uz' => 'uz',
've' => 've',
'vi' => 'vi',
'vo' => 'vo',
'wa' => 'wa',
'wo' => 'wo',
'xh' => 'xh',
'yi' => 'yi',
'yo' => 'yo',
'za' => 'za',
'zh' => 'zh',
'zh-CN' => 'zh-CN',
'zh-HK' => 'zh-HK',
'zh-MO' => 'zh-MO',
'zh-SG' => 'zh-SG',
'zh-TW' => 'zh-TW',
'zu' => 'zu',
);
}
// load metaboxes
public function load_metaboxes() {
add_meta_box(
'e2pdf_templates_save', __('Preset', 'e2pdf'), array($this, 'render_metabox'), null, 'side', 'default', array('tpl' => 'e2pdf_templates_save')
);
add_meta_box(
'e2pdf_templates_builder', __('PDF Builder', 'e2pdf'), array($this, 'render_metabox'), null, 'side', 'default', array('tpl' => 'e2pdf_templates_builder')
);
add_meta_box(
'e2pdf_templates_settings', __('Settings', 'e2pdf'), array($this, 'render_metabox'), null, 'side', 'default', array('tpl' => 'e2pdf_templates_settings')
);
}
// load scripts
public function load_scripts() {
wp_enqueue_script('postbox');
wp_enqueue_script('jquery-ui-droppable');
wp_enqueue_script('jquery-ui-resizable');
wp_enqueue_script('jquery-ui-selectable');
wp_enqueue_script('jquery-ui-dialog');
wp_enqueue_script('jquery-ui-autocomplete');
wp_enqueue_script('wp-color-picker');
wp_enqueue_media();
}
// load styles
public function load_styles($ext = false) {
$version = get_option('e2pdf_debug', '0') === '1' ? strtotime('now') : $this->helper->get('version');
wp_enqueue_style('css/e2pdf.jquery-ui', plugins_url('css/jquery-ui.css', $this->helper->get('plugin_file_path')), false, $version, false);
wp_enqueue_style('wp-color-picker');
if ($ext) {
$extension = new Model_E2pdf_Extension();
if ($extension->load($ext)) {
$styles = $extension->styles();
if ($styles && is_array($styles)) {
foreach ($styles as $key => $value) {
wp_enqueue_style('e2pdf-dynamic-style-' . $key, $value, false, $version, false);
}
}
}
}
}
}