HEX
Server: Apache/2.4.59 (Ubuntu) mod_fcgid/2.3.9 OpenSSL/3.0.2
System: Linux panel.ctvbarranquilla.com 5.15.0-102-generic #112-Ubuntu SMP Tue Mar 5 16:50:32 UTC 2024 x86_64
User: bastidas (1002)
PHP: 8.2.18
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,exec,system,passthru,shell_exec,proc_open,popen
Upload Files
File: /home/bastidas/web/bastidas.tv/public_html/wp-content/plugins/convertpro/convert-pro.php
<?php
use Finestics\Client;

/*
 * Plugin Name: EasyTest - Simplify A/B Testing (Former ConvertPro)
 * Plugin URI: https://wpgrids.com/
 * Description: EasyTest allows you to ab testing.
 * Version: 1.0.1
 * Author: wpgrids
 * Author URI: https://profiles.wordpress.org/wpgrids/
 * Text Domain: convertpro
 * License: GPL-2.0+
 * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
 */


// don't call the file directly
if (!defined('ABSPATH'))
    exit;


require_once __DIR__ . '/vendor/autoload.php';

use ConvertPro\Assets;
use ConvertPro\DataBase\Database;
use ConvertPro\Classes\Init;
use ConvertPro\Classes\Redirection;
use ConvertPro\Classes\ElementRedirection;

/**
 * ConvertPro class
 *
 * @class ConvertPro The class that holds the entire ConvertPro plugin
 */
final class ConvertPro
{

    /**
     * Plugin version
     *
     * @var string
     */
    public $version = '1.0.1';

    /**
     * Holds various class instances
     *
     * @var array
     */
    private $container = array();

    /**
     * Constructor for the ConvertPro class
     *
     * Sets up all the appropriate hooks and actions
     * within our plugin.
     */
    public function __construct()
    {

        $this->define_constants();

        register_activation_hook(__FILE__, array($this, 'activate'));
        register_deactivation_hook(__FILE__, array($this, 'deactivate'));
        add_action('wp_enqueue_scripts', array($this, 'enqueue_frontend_scripts'));
        add_action('plugins_loaded', array($this, 'init_plugin'));
    }
    public function enqueue_frontend_scripts()
    {
        // Enqueue your JavaScript file
        wp_enqueue_script(
            'frontent-script',
            plugin_dir_url(__FILE__) . 'assets/js/frontent-script.js',
            array('jquery'),
            '1.0',
            true
        );

        wp_localize_script(
            'frontent-script',
            'convertpro_object',
            array(
                'ajaxurl' => admin_url('admin-ajax.php'),
                'nonce' => wp_create_nonce('convertpro_nonce')
            )
        );
    }
    /**
     * Initializes the ConvertPro() class
     *
     * Checks for an existing ConvertPro() instance
     * and if it doesn't find one, creates it.
     */
    public static function init()
    {
        static $instance = false;

        if (!$instance) {
            $instance = new ConvertPro();
        }

        return $instance;
    }

    /**
     * Magic getter to bypass referencing plugin.
     *
     * @param $prop
     *
     * @return mixed
     */
    public function __get($prop)
    {
        if (array_key_exists($prop, $this->container)) {
            return $this->container[$prop];
        }

        return $this->{$prop};
    }

    /**
     * Magic isset to bypass referencing plugin.
     *
     * @param $prop
     *
     * @return mixed
     */
    public function __isset($prop)
    {
        return isset($this->{$prop}) || isset($this->container[$prop]);
    }

    /**
     * Define the constants
     *
     * @return void
     */
    public function define_constants()
    {
        define('CONVERTPRO_VERSION', $this->version);
        define('CONVERTPRO_FILE', __FILE__);
        define('CONVERTPRO_PATH', dirname(CONVERTPRO_FILE));
        define('CONVERTPRO_INCLUDES', CONVERTPRO_PATH . '/includes');
        define('CONVERTPRO_URL', plugins_url('', CONVERTPRO_FILE));
        define('CONVERTPRO_ASSETS', CONVERTPRO_URL . '/assets');
    }

    /**
     * Load the plugin after all plugis are loaded
     *
     * @return void
     */
    public function init_plugin()
    {
        new Assets();
        $init = new Init();
        $init->init();
        global $wpdb;
        // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery
        // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching
        $results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}convertpro");

        foreach ($results as $result) {
            if ($result->test_type == 'elements') {
                new ElementRedirection();
            } else {
                new Redirection();
            }
        }

        $this->includes();
        $this->init_hooks();

        if (!class_exists('Finestics\Client')) {
            require_once __DIR__. '/Finestics/Client.php';
        }

        $init_finestics = new Finestics\Client('convertpro', 'ConvertPro', __FILE__);
        $init_finestics->insights()->init();


    }

    /**
     * Placeholder for activation function
     *
     * Nothing being called here yet.
     */
    public function activate()
    {

        $installed = get_option('convertpro_installed');
        new Database();
        if (!$installed) {
            update_option('convertpro_installed', time());
        }

        update_option('convertpro_version', CONVERTPRO_VERSION);
    }

    /**
     * Placeholder for deactivation function
     *
     * Nothing being called here yet.
     */
    public function deactivate()
    {
    }

    /**
     * Include the required files
     *
     * @return void
     */
    public function includes()
    {

        require_once CONVERTPRO_INCLUDES . '/Assets.php';

        if ($this->is_request('admin')) {
            require_once CONVERTPRO_INCLUDES . '/Admin.php';
        }

        if ($this->is_request('ajax')) {
            // require_once CONVERTPRO_INCLUDES . '/class-ajax.php';
        }
    }

    /**
     * Initialize the hooks
     *
     * @return void
     */
    public function init_hooks()
    {

        add_action('init', array($this, 'init_classes'));

        // Localize our plugin
        add_action('init', array($this, 'localization_setup'));
        do_action('convertpro_init');
    }

    /**
     * Instantiate the required classes
     *
     * @return void
     */
    public function init_classes()
    {

        if ($this->is_request('admin')) {
            $this->container['admin'] = new ConvertPro\Admin();
        }

        if ($this->is_request('ajax')) {
            // $this->container['ajax'] =  new App\Ajax();
        }

        // $this->container['api'] = new AbTest\Api();
        $this->container['assets'] = new Assets();
    }

    /**
     * Initialize plugin for localization
     *
     * @uses load_plugin_textdomain()
     */
    public function localization_setup()
    {
        load_plugin_textdomain('convertpro', false, dirname(plugin_basename(__FILE__)) . '/languages/');
    }

    /**
     * What type of request is this?
     *
     * @param  string $type admin, ajax, cron or frontend.
     *
     * @return bool
     */
    private function is_request($type)
    {
        switch ($type) {
            case 'admin':
                return is_admin();

            case 'ajax':
                return defined('DOING_AJAX');

            case 'rest':
                return defined('REST_REQUEST');

            case 'cron':
                return defined('DOING_CRON');

            case 'frontend':
                return (!is_admin() || defined('DOING_AJAX')) && !defined('DOING_CRON');
        }
    }
} // ConvertPro

$convertpro = ConvertPro::init();