# e2pdf/1.01.01/classes/model/e2pdf-shortcode.php

E2Pdf – Export Pdf Tool for WordPress, version 1.01.01. 639 lines.

- Page: https://pluginprobe.com/plugins/e2pdf/1.01.01/code/classes/model/e2pdf-shortcode.php
- Raw: https://pluginprobe.com/plugins/e2pdf/1.01.01/raw/classes/model/e2pdf-shortcode.php
- Modified: 2018-11-07T14:59:18+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/e2pdf/1.01.01/code/classes/model/e2pdf-shortcode.php#L10-L20`.

```php
<?php

/**
 * E2pdf Post Helper
 * 
 * @copyright  Copyright 2017 https://e2pdf.com
 * @license    GPL v2
 * @version    1
 * @link       https://e2pdf.com
 * @since      0.00.01
 */
if (!defined('ABSPATH')) {
    die('Access denied.');
}

class Model_E2pdf_Shortcode extends Model_E2pdf_Model {

    function __construct() {
        parent::__construct();
    }

    /**
     * [e2pdf-attachment] shortcode
     * 
     * @param array $atts - Shortcode attributes
     */
    function e2pdf_attachment($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'];
                }

                /*
                 * @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 = "<a id='e2pdf-download' class='" . implode(" ", $classes) . "' target='_blank' href='{$url}'>{$title}</a>";
                }
            }
        }

        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 = "<iframe class='" . implode(" ", $classes) . "' width='{$width}' height='{$height}' src='{$url}'></iframe>";
            }
        } 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 = "<iframe class='" . implode(" ", $classes) . "' width='{$width}' height='{$height}' src='{$url}'></iframe>";
                    }
                }
            }
        }

        return $response;
    }

}

```
