# e2pdf/1.04.07/classes/model/e2pdf-extension.php

E2Pdf – Export Pdf Tool for WordPress, version 1.04.07. 284 lines.

- Page: https://pluginprobe.com/plugins/e2pdf/1.04.07/code/classes/model/e2pdf-extension.php
- Raw: https://pluginprobe.com/plugins/e2pdf/1.04.07/raw/classes/model/e2pdf-extension.php
- Modified: 2019-02-18T09:41:42+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.04.07/code/classes/model/e2pdf-extension.php#L10-L20`.

```php
<?php

/**
 * E2pdf Extension Model
 * 
 * @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_Extension extends Model_E2pdf_Model {

    private $extension;

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

    public function load($name) {
        if (is_array(get_option('e2pdf_disabled_extensions')) &&
                in_array($name, get_option('e2pdf_disabled_extensions'))) {
            return false;
        }
        $class = 'Extension_E2pdf_' . ucfirst($name);
        if (class_exists($class)) {
            $extension = new $class();
            if ($extension->active()) {
                $this->extension = $extension;
                return true;
            }
        }
        return false;
    }

    public function loaded($extension) {
        if ($this->extension() && method_exists($this->extension(), 'info')) {
            $info = $this->extension()->info();
            if (isset($info[$extension])) {
                return true;
            }
        }
        return false;
    }

    public function info($attr = false) {
        if (method_exists($this->extension(), 'info')) {
            return $this->extension()->info($attr);
        }
        return false;
    }

    public function extension() {
        return $this->extension;
    }

    public function set($attr, $value) {
        if (method_exists($this->extension(), 'set')) {
            return $this->extension()->set($attr, $value);
        }
        return false;
    }

    public function get($attr) {
        if (method_exists($this->extension(), 'get')) {
            return $this->extension()->get($attr);
        }
        return false;
    }

    public function verify() {
        if (method_exists($this->extension(), 'verify')) {
            return $this->extension()->verify();
        }
        return false;
    }

    public function import() {
        if (method_exists($this->extension(), 'import')) {
            return $this->extension()->import();
        }
        return false;
    }

    public function backup($xml = false) {
        if (method_exists($this->extension(), 'backup')) {
            return $this->extension()->backup($xml);
        }
        return false;
    }

    public function item($item_id = false) {
        if (method_exists($this->extension(), 'item')) {
            return $this->extension()->item($item_id);
        }
        return false;
    }

    public function items() {
        if (method_exists($this->extension(), 'items')) {
            return $this->extension()->items();
        }
        return false;
    }

    /**
     * Load styles from extension
     */
    public function styles() {
        if (method_exists($this->extension(), 'styles')) {
            return $this->extension()->styles();
        }
        return false;
    }

    /**
     * Render Value via extension
     */
    public function render($value, $type = false, $field = array()) {
        if (method_exists($this->extension(), 'render')) {
            return $this->extension()->render($value, $type, $field);
        }
        return false;
    }

    /**
     * Get available datasets
     */
    public function datasets($item = false, $name = false) {
        if (method_exists($this->extension(), 'datasets')) {
            return $this->extension()->datasets($item, $name);
        }
        return false;
    }

    /**
     * Get current extension dataset
     */
    public function dataset($dataset_id = false) {
        if (method_exists($this->extension(), 'dataset')) {
            return $this->extension()->dataset($dataset_id);
        }
        return false;
    }

    /**
     * List of available extensions
     */
    public function extensions($load = true) {
        $list = array();
        $extentions_path = $this->helper->get('plugin_dir') . 'classes/extension/*';
        foreach (array_filter(glob($extentions_path), 'is_file') as $file) {
            $info = pathinfo($file);
            $file_name = basename($file, '.' . $info['extension']);
            $file_name = substr($file_name, 6);

            if ($load) {
                if ($this->load($file_name)) {
                    $list = array_merge($list, $this->extension->info());
                }
            } else {
                $list[] = $file_name;
            }
        }
        return $list;
    }

    /**
     * Delete item
     */
    public function delete_item($template_id = false, $dataset_id = false) {
        if (method_exists($this->extension(), 'delete_item')) {
            return $this->extension()->delete_item($template_id, $dataset_id);
        }
        return false;
    }

    /**
     * Delete all items
     */
    public function delete_items($template_id = false) {
        if (method_exists($this->extension(), 'delete_items')) {
            return $this->extension()->delete_items($template_id);
        }
        return false;
    }

    /**
     * Visual Mapper for Mapping field
     * 
     * @return bool|string - Prepared form or false
     */
    public function visual_mapper() {

        if (method_exists($this->extension(), 'visual_mapper')) {
            if (!extension_loaded('libxml')) {
                return __('libxml is required', 'e2pdf');
            }
            if (!extension_loaded('Dom')) {
                return __('DOM is required', 'e2pdf');
            }
            return $this->extension()->visual_mapper();
        }
        return false;
    }

    public function add_form($template) {
        if (method_exists($this->extension(), 'add_form')) {
            return $this->extension()->add_form($template);
        }
        return $template;
    }

    /**
     * Convert Field name to Value
     * @since 0.01.34
     * 
     * @param string $name - Field name
     * 
     * @return bool|string - Converted value or false
     */
    public function auto_map($name = false) {
        if (method_exists($this->extension(), 'auto_map') && $name) {
            return $this->extension()->auto_map($name);
        }
        return false;
    }

    /**
     * Auto PDF generation
     */
    public function auto() {
        if (method_exists($this->extension(), 'auto')) {
            return $this->extension()->auto();
        }
        return false;
    }

    /**
     * Check if function exists inside extension
     */
    public function method($attr = false) {
        if ($attr && method_exists($this->extension(), $attr)) {
            return true;
        }
        return false;
    }

    /**
     * Load actions from extension
     */
    public function load_actions() {
        if (method_exists($this->extension(), 'load_actions')) {
            return $this->extension()->load_actions();
        }
        return false;
    }

    /**
     * Load filters from extension
     */
    public function load_filters() {
        if (method_exists($this->extension(), 'load_filters')) {
            return $this->extension()->load_filters();
        }
        return false;
    }

    /**
     * Load shortcodes from extension
     */
    public function load_shortcodes() {
        if (method_exists($this->extension(), 'load_shortcodes')) {
            return $this->extension()->load_shortcodes();
        }
        return false;
    }

}

```
