HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.2.34
System: Linux atalantini.com 3.10.0-1127.13.1.el7.x86_64 #1 SMP Tue Jun 23 15:46:38 UTC 2020 x86_64
User: root (0)
PHP: 7.2.34
Disabled: NONE
Upload Files
File: /var/www/html/toniolo/wp-content/plugins/uiform-cost-estimator/classes/uiform-base-module.php
<?php

/**
 * Frontend
 *
 * PHP version 5
 *
 * @category  PHP
 * @package   Rocket_form
 * @author    Softdiscover <info@softdiscover.com>
 * @copyright 2015 Softdiscover
 * @license   http://www.php.net/license/3_01.txt  PHP License 3.01
 * @link      http://wordpress-cost-estimator.uiform.com
 */
if (!defined('ABSPATH')) {
    exit('No direct script access allowed');
}
if (class_exists('Uiform_Base_Module')) {
    return;
}

/**
 * Abstract class to define/implement base methods for all module classes
 */
abstract class Uiform_Base_Module {

    private static $instances = array();
    public static $_modules = array();
    public static $_models = array();

    /*
     * Magic methods
     */

    /**
     * Public getter for protected variables
     *
     * @mvc Model
     *
     * @param string $variable
     * @return mixed
     */
    public function __get($variable) {
        $module = get_called_class();

        if (in_array($variable, $module::$readable_properties)) {
            return $this->$variable;
        } else {
            throw new Exception(__METHOD__ . " error: $" . $variable . " doesn't exist or isn't readable.");
        }
    }

    /**
     * Public setter for protected variables
     *
     * @mvc Model
     *
     * @param string $variable
     * @param mixed  $value
     */
    public function __set($variable, $value) {
        $module = get_called_class();

        if (in_array($variable, $module::$writeable_properties)) {
            $this->$variable = $value;

            if (!$this->is_valid()) {
                throw new Exception(__METHOD__ . ' error: $' . $value . ' is not valid.');
            }
        } else {
            throw new Exception(__METHOD__ . " error: $" . $variable . " doesn't exist or isn't writable.");
        }
    }

    /*
     * Non-abstract methods
     */

    /**
     * Provides access to a single instance of a module using the singleton pattern
     *
     * @mvc Controller
     *
     * @return object
     */
    public static function get_instance() {
        $module = get_called_class();

        if (!isset(self::$instances[$module])) {
            self::$instances[$module] = new $module();
        }

        return self::$instances[$module];
    }

    /**
     * Render a template
     *
     * Allows parent/child themes to override the markup by placing the a file named basename( $default_template_path ) in their root folder,
     * and also allows plugins or themes to override the markup by a filter. Themes might prefer that method if they place their templates
     * in sub-directories to avoid cluttering the root folder. In both cases, the theme/plugin will have access to the variables so they can
     * fully customize the output.
     *
     * @mvc @model
     *
     * @param  string $default_template_path The path to the template, relative to the plugin's `views` folder
     * @param  array  $variables             An array of variables to pass into the template's scope, indexed with the variable name so that it can be extract()-ed
     * @param  string $require               'once' to use require_once() | 'always' to use require()
     * @return string
     */
    protected static function render_template($default_template_path = false, $variables = array(), $require = 'once') {
        $template_path = locate_template(basename($default_template_path));
        if (!$template_path) {
            $template_path = dirname(__DIR__) . '/modules/' . $default_template_path;
        }
        $template_path = apply_filters('uiform_rocket_template_path', $template_path);

        if (is_file($template_path)) {
            extract($variables);
            ob_start();

            if ('always' == $require) {
                require( $template_path );
            } else {
                require_once( $template_path );
            }

            $template_content = apply_filters('uiform_rocket_template_content', ob_get_clean(), $default_template_path, $template_path, $variables);
        } else {
            $template_content = '';
        }

        return $template_content;
    }

    /**
     * Render a layout
     *
     * Allows parent/child themes to override the markup by placing the a file named basename( $default_template_path ) in their root folder,
     * and also allows plugins or themes to override the markup by a filter. Themes might prefer that method if they place their templates
     * in sub-directories to avoid cluttering the root folder. In both cases, the theme/plugin will have access to the variables so they can
     * fully customize the output.
     *
     * @mvc @model
     *
     * @param  string $default_template_path The path to the template, relative to the plugin's `views` folder
     * @param  array  $variables             An array of variables to pass into the template's scope, indexed with the variable name so that it can be extract()-ed
     * @param  string $require               'once' to use require_once() | 'always' to use require()
     * @return string
     */
    protected static function render_layout($default_template_path = false, $variables = array(), $require = 'once') {
        $template_path = locate_template(basename($default_template_path));
        if (!$template_path) {
            $template_path = dirname(__DIR__) . '/views/' . $default_template_path;
        }
        $template_path = apply_filters('uiform_rocket_template_path', $template_path);

        if (is_file($template_path)) {
            extract($variables);
            ob_start();

            if ('always' == $require) {
                require( $template_path );
            } else {
                require_once( $template_path );
            }

            $template_content = apply_filters('uiform_rocket_template_content', ob_get_clean(), $default_template_path, $template_path, $variables);
        } else {
            $template_content = '';
        }

        return $template_content;
    }

    /**
     * Load partial
     *
     * @param string  $template  template
     * @param string  $view      view
     * @param string  $view_data view_data
     * @param boolean $return    return
     * 
     * @return	array
     */
    protected static function loadPartial($template = '', $view = '', $view_data = array(), $return = false) {
        $data = array();
        $data['content'] = self::render_template($view, $view_data);
        //$this->set('content', $this->template_data['controller']->load->view($view, $view_data, true));
        // return $this->template_data['controller']->load->view($template, $this->template_data, $return);
        echo self::render_layout($template, $data);
    }

    /*
     * Abstract methods
     */

    /**
     * Constructor
     *
     * @mvc Controller
     */
    abstract protected function __construct();

    /**
     * Prepares sites to use the plugin during single or network-wide activation
     *
     * @mvc Controller
     *
     * @param bool $network_wide
     */
    abstract public function activate($network_wide);

    /**
     * Rolls back activation procedures when de-activating the plugin
     *
     * @mvc Controller
     */
    abstract public function deactivate();
    
    

    /**
     * Register callbacks for actions and filters
     *
     * @mvc Controller
     */
    abstract public function register_hook_callbacks();

    /**
     * Initializes variables
     *
     * @mvc Controller
     */
    abstract public function init();

    /**
     * Checks if the plugin was recently updated and upgrades if necessary
     *
     * @mvc Controller
     *
     * @param string $db_version
     */
    abstract public function upgrade($db_version = 0);

    /**
     * Checks that the object is in a correct state
     *
     * @mvc Model
     *
     * @param string $property An individual property to check, or 'all' to check all of them
     * @return bool
     */
    abstract protected function is_valid($property = 'all');
}