load($template_id)) {
$uid_params = array();
$uid_params['template_id'] = $template_id;
$uid_params['dataset'] = $dataset;
$extension = new Model_E2pdf_Extension();
$extension->load($template->get('extension'));
$extension->set('item', $template->get('item'));
$extension->set('dataset', $dataset);
if ($extension->verify()) {
if (array_key_exists('inline', $atts)) {
$inline = $atts['inline'] ? 1 : 0;
$uid_params['inline'] = $inline;
}
if (array_key_exists('flatten', $atts)) {
$flatten = (int) $atts['flatten'];
$uid_params['flatten'] = $flatten;
} else {
$flatten = $template->get('flatten');
}
if (array_key_exists('format', $atts)) {
$format = $atts['format'];
$uid_params['format'] = $format;
} else {
$format = $template->get('format');
}
if (array_key_exists('password', $atts)) {
$password = $atts['password'];
$uid_params['password'] = $password;
} else {
$password = $template->get('password');
}
if (array_key_exists('name', $atts)) {
$template->set('name', $atts['name']);
$uid_params['name'] = $atts['name'];
}
/*
* @since 0.01.33
*/
$entry = new Model_E2pdf_Entry();
$entry->set('entry', $uid_params);
if (!$entry->load_by_uid($entry->get('uid'))) {
$entry->save();
}
$template->set('format', $format);
$template->set('flatten', $flatten);
$template->set('password', $extension->render($password));
$template->fill($dataset, $entry->get('uid'));
$request = $template->render();
if (isset($request['error'])) {
return false;
} else {
if ($entry->get('ID')) {
$tmp_dir = $this->helper->get('tmp_dir') . 'e2pdf' . md5($entry->get('uid')) . '/';
$this->helper->create_dir($tmp_dir);
$name = $extension->render($template->get_filename());
$file_name = $name . '.pdf';
$file_path = $tmp_dir . $file_name;
file_put_contents($file_path, base64_decode($request['file']));
if (file_exists($file_path)) {
/*
* Pdf count increase
* @since 0.01.33
*/
$entry->set('pdf_num', $entry->get('pdf_num') + 1);
$entry->save();
return $file_path;
}
}
}
}
} else {
return false;
}
}
/**
* [e2pdf-download] shortcode
*
* @param array $atts - Shortcode attributes
*/
function e2pdf_download($atts = array()) {
$template_id = (int) $atts['id'];
$response = '';
if (!$template_id) {
return $response;
}
if (array_key_exists('dataset', $atts)) {
$dataset = $atts['dataset'];
} else {
return $response;
}
$template = new Model_E2pdf_Template();
if ($template->load($template_id)) {
$uid_params = array();
$uid_params['template_id'] = $template_id;
$uid_params['dataset'] = $dataset;
if (array_key_exists('class', $atts)) {
$classes = explode(" ", $atts['class']);
} else {
$classes = array();
}
$classes[] = 'e2pdf-download';
$extension = new Model_E2pdf_Extension();
$extension->load($template->get('extension'));
$extension->set('item', $template->get('item'));
$extension->set('dataset', $dataset);
if ($extension->verify()) {
$extension->set('no_filter', true);
if (array_key_exists('auto', $atts)) {
$auto = $atts['auto'] ? 1 : 0;
} else {
$auto = $template->get('auto');
}
if (array_key_exists('button-title', $atts)) {
$title = $extension->render($atts['button-title']);
} elseif ($extension->render($template->get('button_title')) !== '') {
$title = $extension->render($template->get('button_title'));
} else {
$title = __('Download', 'e2pdf');
}
if ($auto) {
$classes[] = 'e2pdf-auto';
}
if (array_key_exists('inline', $atts)) {
$inline = $atts['inline'] ? 1 : 0;
$uid_params['inline'] = $inline;
} else {
$inline = $template->get('inline');
}
if ($inline) {
$classes[] = 'e2pdf-inline';
}
if (array_key_exists('flatten', $atts)) {
$flatten = (int) $atts['flatten'];
$uid_params['flatten'] = $flatten;
} else {
$flatten = $template->get('flatten');
}
if (array_key_exists('format', $atts)) {
$format = $atts['format'];
$uid_params['format'] = $format;
} else {
$format = $template->get('format');
}
if (array_key_exists('password', $atts)) {
$password = $atts['password'];
} else {
$password = $template->get('password');
}
if (array_key_exists('name', $atts)) {
$name = $atts['name'];
$uid_params['name'] = $name;
} elseif ($template->get('name') != '') {
$name = $template->get('name');
} else {
$name = $template->get('title');
}
/*
* @since 0.01.33
*/
$entry = new Model_E2pdf_Entry();
$entry->set('entry', $uid_params);
if (!$entry->load_by_uid($entry->get('uid'))) {
$entry->save();
}
if ($entry->get('ID')) {
$url = esc_url(add_query_arg(array(
'page' => 'e2pdf-download',
'uid' => $entry->get('uid'),
), site_url('/')
));
$response = "{$title}";
}
}
}
return $response;
}
/**
* [e2pdf-format-number] shortcode
*
* @param array $atts - Shortcode attributes
* @param string $value - Value
*/
function e2pdf_format_number($atts = array(), $value = '') {
$dec_point = isset($atts['dec_point']) ? $atts['dec_point'] : '.';
$thousands_sep = isset($atts['thousands_sep']) ? $atts['thousands_sep'] : '';
$decimal = isset($atts['decimal']) ? $atts['decimal'] : false;
$explode = isset($atts['explode']) ? $atts['explode'] : '';
$implode = isset($atts['implode']) ? $atts['implode'] : '';
$new_value = array();
$value = array_filter((array) $value, 'strlen');
foreach ($value as $v) {
if ($explode && strpos($v, $explode)) {
$v = explode($explode, $v);
}
foreach ((array) $v as $n) {
$n = str_replace(array(" ", ","), array("", "."), $n);
$n = preg_replace('/\.(?=.*\.)/', '', $n);
$n = floatval($n);
if (!$decimal) {
$num = explode('.', $n);
$decimal = isset($num[1]) ? strlen($num[1]) : 0;
}
$n = number_format($n, $decimal, $dec_point, $thousands_sep);
$new_value[] = $n;
}
unset($v);
}
$new_value = array_filter((array) $new_value, 'strlen');
return implode($implode, $new_value);
}
function e2pdf_format_date($atts = array(), $value = '') {
$format = isset($atts['format']) ? $atts['format'] : get_option('date_format');
if (!$value) {
return '';
}
$value = date($format, strtotime($value));
return $value;
}
/**
* [e2pdf-format-output] shortcode
*
* @param array $atts - Shortcode attributes
* @param string $value - Value
*/
function e2pdf_format_output($atts = array(), $value = '') {
$explode = isset($atts['explode']) ? $atts['explode'] : false;
$implode = isset($atts['implode']) ? $atts['implode'] : '';
$output = isset($atts['output']) ? $atts['output'] : false;
$filter = isset($atts['filter']) ? $atts['filter'] : false;
$new_value = array();
$value = array_filter((array) $value, 'strlen');
foreach ($value as $v) {
if ($explode && strpos($v, $explode)) {
$v = explode($explode, $v);
}
foreach ((array) $v as $n) {
if ($filter) {
if (strpos($filter, ',')) {
$filter = explode(',', $filter);
} else {
$filter = array_filter((array) $filter, 'strlen');
}
foreach ((array) $filter as $sub_filter) {
switch ($sub_filter) {
case 'trim':
$n = trim($n);
break;
case 'strip_tags':
$n = strip_tags($n);
break;
case 'strtolower':
if (function_exists('mb_strtolower')) {
$n = mb_strtolower($n);
} elseif (function_exists('strtolower')) {
$n = strtolower($n);
}
break;
case 'ucfirst':
if (function_exists('mb_strtoupper') && function_exists('mb_strtolower')) {
$fc = mb_strtoupper(mb_substr($n, 0, 1));
$n = $fc . mb_substr($n, 1);
} else if (function_exists('ucfirst') && function_exists('strtolower')) {
$n = ucfirst($n);
}
break;
case 'strtoupper':
if (function_exists('mb_strtoupper')) {
$n = mb_strtoupper($n);
} elseif (function_exists('strtoupper')) {
$n = strtoupper($n);
}
break;
case 'lines':
$n = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $n);
break;
default:
break;
}
}
}
$new_value[] = $n;
}
unset($v);
}
if ($output) {
$search = array();
$replace = array();
foreach ($new_value as $key => $value) {
$search[] = "{" . $key . "}";
$replace[] = $value;
}
$output = str_replace($search, $replace, $output);
return preg_replace('~(?:{/?)[^/}]+/?}~s', "", $output);
} else {
return implode($implode, $new_value);
}
}
/**
* @since 0.01.44
*
* [e2pdf-save] shortcode
*
* @param array $atts - Shortcode attributes
*/
function e2pdf_save($atts = array()) {
$template_id = (int) $atts['id'];
if (!array_key_exists('apply', $atts) || !array_key_exists('dataset', $atts) || !$template_id) {
return '';
}
$dataset = $atts['dataset'];
$template = new Model_E2pdf_Template();
if ($template->load($template_id)) {
$uid_params = array();
$uid_params['template_id'] = $template_id;
$uid_params['dataset'] = $dataset;
$extension = new Model_E2pdf_Extension();
$extension->load($template->get('extension'));
$extension->set('item', $template->get('item'));
$extension->set('dataset', $dataset);
if ($extension->verify()) {
if (array_key_exists('inline', $atts)) {
$inline = $atts['inline'] ? 1 : 0;
$uid_params['inline'] = $inline;
}
if (array_key_exists('flatten', $atts)) {
$flatten = (int) $atts['flatten'];
$uid_params['flatten'] = $flatten;
} else {
$flatten = $template->get('flatten');
}
if (array_key_exists('format', $atts)) {
$format = $atts['format'];
$uid_params['format'] = $format;
} else {
$format = $template->get('format');
}
if (array_key_exists('password', $atts)) {
$password = $atts['password'];
$uid_params['password'] = $password;
} else {
$password = $template->get('password');
}
if (array_key_exists('name', $atts)) {
$template->set('name', $atts['name']);
$uid_params['name'] = $atts['name'];
}
$entry = new Model_E2pdf_Entry();
$entry->set('entry', $uid_params);
if (!$entry->load_by_uid($entry->get('uid'))) {
$entry->save();
}
$template->set('format', $format);
$template->set('flatten', $flatten);
$template->set('password', $extension->render($password));
$template->fill($dataset, $entry->get('uid'));
$request = $template->render();
if (isset($request['error'])) {
return false;
} else {
if ($entry->get('ID')) {
if (array_key_exists('dir', $atts)) {
$save_dir = $atts['dir'];
} else {
$tpl_dir = $this->helper->get('tpl_dir') . $template->get('ID') . "/";
$save_dir = $tpl_dir . "save/";
$this->helper->create_dir($tpl_dir);
$this->helper->create_dir($save_dir);
}
if (is_dir($save_dir) && is_writable($save_dir)) {
$name = $extension->render($template->get_filename());
$file_name = $name . '.pdf';
$file_path = $save_dir . $file_name;
file_put_contents($file_path, base64_decode($request['file']));
if (file_exists($file_path)) {
$entry->set('pdf_num', $entry->get('pdf_num') + 1);
$entry->save();
}
}
}
}
}
}
return '';
}
/**
* [e2pdf-view] shortcode
*
* @param array $atts - Shortcode attributes
*/
function e2pdf_view($atts = array()) {
$template_id = (int) $atts['id'];
$response = '';
$width = isset($atts['width']) ? $atts['width'] : '100%';
$height = isset($atts['height']) ? $atts['height'] : '500';
$pdf_url = isset($atts['pdf']) ? $atts['pdf'] : false;
if (array_key_exists('class', $atts)) {
$classes = explode(" ", $atts['class']);
} else {
$classes = array();
}
$classes[] = 'e2pdf-view';
if ($pdf_url) {
if (filter_var($pdf_url, FILTER_VALIDATE_URL)) {
$url = plugins_url('assets/pdf.js/web/viewer.html?file=' . urlencode($pdf_url), $this->helper->get('plugin_file_path'));
$response = "";
}
} else {
if (!$template_id) {
return $response;
}
if (array_key_exists('dataset', $atts)) {
$dataset = $atts['dataset'];
} else {
return $response;
}
$template = new Model_E2pdf_Template();
if ($template->load($template_id)) {
$uid_params = array();
$uid_params['template_id'] = $template_id;
$uid_params['dataset'] = $dataset;
$extension = new Model_E2pdf_Extension();
$extension->load($template->get('extension'));
$extension->set('item', $template->get('item'));
$extension->set('dataset', $dataset);
if ($extension->verify()) {
$extension->set('no_filter', true);
if (array_key_exists('auto', $atts)) {
$auto = $atts['auto'] ? 1 : 0;
} else {
$auto = $template->get('auto');
}
if (array_key_exists('button-title', $atts)) {
$title = $extension->render($atts['button-title']);
} elseif ($extension->render($template->get('button_title')) !== '') {
$title = $extension->render($template->get('button_title'));
} else {
$title = __('Download', 'e2pdf');
}
if (array_key_exists('inline', $atts)) {
$inline = $atts['inline'] ? 1 : 0;
$uid_params['inline'] = $inline;
} else {
$inline = $template->get('inline');
}
if (array_key_exists('flatten', $atts)) {
$flatten = (int) $atts['flatten'];
$uid_params['flatten'] = $flatten;
} else {
$flatten = $template->get('flatten');
}
if (array_key_exists('format', $atts)) {
$format = $atts['format'];
$uid_params['format'] = $format;
} else {
$format = $template->get('format');
}
if (array_key_exists('password', $atts)) {
$password = $atts['password'];
} else {
$password = $template->get('password');
}
if (array_key_exists('name', $atts)) {
$name = $atts['name'];
$uid_params['name'] = $name;
} elseif ($template->get('name') != '') {
$name = $template->get('name');
} else {
$name = $template->get('title');
}
$entry = new Model_E2pdf_Entry();
$entry->set('entry', $uid_params);
if (!$entry->load_by_uid($entry->get('uid'))) {
$entry->save();
}
if ($entry->get('ID')) {
$pdf_url = esc_url_raw(add_query_arg(array(
'page' => 'e2pdf-download',
'uid' => $entry->get('uid'),
), site_url('/')
));
$url = plugins_url('assets/pdf.js/web/viewer.html?file=' . urlencode($pdf_url), $this->helper->get('plugin_file_path'));
$response = "";
}
}
}
}
return $response;
}
}