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; } }