HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux sa-dev.otherchirps.net 5.15.0-139-generic #149-Ubuntu SMP Fri Apr 11 22:06:13 UTC 2025 x86_64
User: www-data (33)
PHP: 8.0.30
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_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/wp-content/plugins/image-hover-effects-ultimate/Page/Create.php
<?php

namespace OXI_IMAGE_HOVER_PLUGINS\Page;

use OXI_IMAGE_HOVER_PLUGINS\Helper\CSS_JS_Loader;
use OXI_IMAGE_HOVER_PLUGINS\Helper\Public_Helper;

if (!defined('ABSPATH')) {
    exit;
}

/**
 * Description of Create
 *
 * @author $biplob018
 */
class Create
{

    /**
     * Database Parent Table
     *
     * @since 9.3.0
     */
    public $parent_table;

    /**
     * Database Import Table
     *
     * @since 9.3.0
     */
    public $child_table;

    /**
     * Database Import Table
     *
     * @since 9.3.0
     */
    public $import_table;

    /**
     * Define $wpdb
     *
     * @since 9.3.0
     */
    public $wpdb;

    /**
     * Define $wpdb
     *
     * @since 9.3.0
     */
    public $effects;

    /**
     * Define $wpdb
     *
     * @since 9.3.0
     */
    public $oxitype;
    public $TEMPLATE = [];
    public $pre_active = [];
    public $pre_clecked = [];
    public $activated_template = [];

    use Public_Helper;
    use CSS_JS_Loader;

    

    public function Render()
    {
        $import = (!empty($_GET['import']) ? sanitize_text_field($_GET['import']) : '');
        if ($import == 'templates') :
?>
            <div class="oxi-addons-row">
                <?php
                $this->Import_header();
                $this->import_template();
                ?>
            </div>
        <?php
        else :
        ?>
            <div class="oxi-addons-row">
                <?php
                $this->Admin_header();
                $this->template();
                $this->create_new();
                ?>
            </div>
        <?php
        endif;
    }
    public function Import_header()
    {
    ?>
        <div class="oxi-addons-wrapper">
            <div class="oxi-addons-import-layouts">
                <h1><?php echo esc_html(ucfirst($this->effects)); ?> Effects › Import Templates</h1>
                <p> Select Image Hover layouts, Import Templates for future Use.</p>
            </div>
        </div>

    <?php
        apply_filters('oxi-image-hover-support-and-comments', true);
    }
    public function create_new()
    {
        ?>
        <div class="modal fade" id="oxi-addons-style-create-modal">
            <form method="post" id="oxi-addons-style-modal-form">
                <div class="modal-dialog modal-sm">
                    <div class="modal-content">
                        <div class="modal-header">
                            <h4 class="modal-title">New Image Hover</h4>
                            <button type="button" class="close" data-dismiss="modal">&times;</button>
                        </div>
                        <div class="modal-body">
                            <div class=" form-group row">
                                <label for="addons-style-name" class="col-sm-6 col-form-label" oxi-addons-tooltip="Give your Shortcode Name Here">Name</label>
                                <div class="col-sm-6 addons-dtm-laptop-lock">
                                    <input class="form-control" type="text" value="" id="style-name" name="style-name" required>
                                </div>
                            </div>
                            <div class="form-group row">
                                <label for="oxi-tabs-link" class="col-sm-5 col-form-label" title="Select Layouts">Layouts</label>
                                <div class="col-sm-7">
                                    <div class="btn-group" data-toggle="buttons">
                                        <label class="btn btn-secondary active">
                                            <input type="radio" name="image-hover-box-layouts" value="1" checked="">1st
                                        </label>
                                        <label class="btn btn-secondary">
                                            <input type="radio" name="image-hover-box-layouts" value="2">2nd
                                        </label>
                                        <label class="btn btn-secondary">
                                            <input type="radio" name="image-hover-box-layouts" value="3">3rd
                                        </label>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="modal-footer">
                            <input type="hidden" id="oxistyledata" name="oxistyledata" value="">
                            <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
                            <input type="submit" class="btn btn-success" name="addonsdatasubmit" id="addonsdatasubmit" value="Save">
                        </div>
                    </div>
                </div>
            </form>
        </div>

        <div class="modal fade" tabindex="-1" role="dialog" id="oxi-addons-style-web-template" aria-labelledby="myLargeModalLabel" aria-hidden="true">
            <div class="modal-dialog modal-xl">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="exampleModalLabel">Web Template</h5>
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body">

                    </div>
                </div>
            </div>
        </div>
    <?php
    }

    /**
     * Image Hover Ultimate Pre Active Check.
     *
     * @since 9.3.0
     */
    public function pre_active_check()
    {
        $template = $this->wpdb->get_results("SELECT * FROM  $this->import_table WHERE type = '$this->oxitype' ORDER BY id DESC", ARRAY_A);
        if (count($template) < 1) :
            foreach ($this->pre_active as $value) {
                $this->wpdb->query($this->wpdb->prepare("INSERT INTO {$this->import_table} (type, name) VALUES (%s, %s)", [$this->oxitype, $value]));
            }
            $this->activated_template = $this->pre_clecked;
        else :
            foreach ($template as $value) {
                $this->activated_template[$value['name']] = $value['name'];
            }
        endif;
    }
   

    public function import_template()
    {
    ?>
        <div class="oxi-addons-row">
            <?php
            foreach ($this->TEMPLATE as $key => $value) {

                if (!array_key_exists($this->effects . '-' . $key, $this->activated_template)) :
            ?>
                    <div class="oxi-addons-col-1" id="<?php echo esc_attr($key); ?>">
                        <div class="oxi-addons-style-preview">
                            <div class="oxi-addons-style-preview-top oxi-addons-center">
                                <?php
                                $i = 1;
                                $lays = count($value);
                                foreach ($value as $filename) {
                                    $folder = OXI_IMAGE_HOVER_PATH . 'Modules/' . ucfirst($this->effects) . '/Layouts/' . $key . '/';

                                    if (is_file($folder . $filename)) {
                                        $template = file_get_contents($folder . $filename);
                                        $params = json_decode($template, true);
                                        $s = explode('-', $params['style']['style_name']);

                                        if ($lays == 3) :
                                ?>
                                            <div class="oxi-bt-col-lg-4 oxi-bt-col-md-6 oxi-bt-col-sm-12">
                                            <?php
                                        elseif ($lays == 2) :
                                            ?>
                                                <div class="oxi-bt-col-lg-6 oxi-bt-col-md-12 oxi-bt-col-sm-12">
                                                <?php
                                            else :
                                                ?>
                                                    <div class="oxi-bt-col-lg-12 oxi-bt-col-md-12 oxi-bt-col-sm-12">
                                                    <?php
                                                endif;

                                                $CLASS = 'OXI_IMAGE_HOVER_PLUGINS\Modules\\' . ucfirst($s[0]) . '\Render\Effects' . $s[1];
                                                if (class_exists($CLASS)) :
                                                    new $CLASS($params['style'], $params['child']);
                                                endif;
                                                    ?>
                                                    </div>
                                            <?php
                                            $i++;
                                        }
                                    }
                                            ?>
                                                </div>
                                                <div class="oxi-addons-style-preview-bottom">
                                                    <div class="oxi-addons-style-preview-bottom-left">
                                                        <?php echo esc_html(ucfirst($this->effects)); ?>
                                                        <?php echo esc_html($key); ?>
                                                    </div>
                                                    <div class="oxi-addons-style-preview-bottom-right">
                                                        <?php
                                                        if (apply_filters('oxi-image-hover-plugin-version', false) == true || array_key_exists($this->effects . '-' . $key, $this->pre_clecked)) :
                                                        ?>
                                                            <button class="btn btn-success oxi-addons-addons-style-btn-active" title="Active Templates" data-value="<?php echo esc_attr($key); ?>" data-effects="<?php echo esc_attr($this->effects); ?>" type="button" value="Active" name="styleactive<?php echo esc_attr($key); ?>">Active Templates</button>
                                                        <?php
                                                        else :
                                                        ?>
                                                            <button class="btn btn-danger" title="Premium Templates" type="button" value="Premium Templates" name="styleactive<?php echo esc_attr($key); ?>">Premium Templates</button>
                                                        <?php
                                                        endif;
                                                        ?>
                                                    </div>
                                                </div>
                                            </div>
                            </div>
                    <?php
                endif;
            }
                    ?>
                        </div>
                    <?php
                }

                public function Admin_header()
                {
                    ?>
                        <div class="oxi-addons-wrapper">
                            <div class="oxi-addons-import-layouts">
                                <h1><?php echo esc_html(ucfirst($this->effects)); ?> Effects › Create New</h1>
                                <p> Select Image Hover layouts, Gives your Image Hover name and create new Image Hover.</p>
                            </div>
                        </div>

                    <?php
                    apply_filters('oxi-image-hover-support-and-comments', true);
                }

                public function template()
                {
                    ?>
                        <div class="oxi-addons-row">
                            <?php
                            $importbutton = false;
                            foreach ($this->TEMPLATE as $key => $value) {
                                if (array_key_exists($this->effects . '-' . $key, $this->activated_template)) :
                            ?>
                                    <div class="oxi-addons-col-1" id="<?php echo esc_attr($this->effects) . '-' . esc_attr($key); ?>">
                                        <div class="oxi-addons-style-preview">
                                            <div class="oxi-addons-style-preview-top oxi-addons-center">
                                                <?php
                                                $i = 1;

                                                $lays = count($value);
                                                foreach ($value as $filename) {
                                                    $folder = OXI_IMAGE_HOVER_PATH . 'Modules/' . ucfirst($this->effects) . '/Layouts/' . $key . '/';

                                                    if (is_file($folder . $filename)) {
                                                        $template = file_get_contents($folder . $filename);
                                                        $params = json_decode($template, true);
                                                        $s = explode('-', $params['style']['style_name']);
                                                        if ($lays == 3) :
                                                ?>
                                                            <div class="oxi-bt-col-lg-4 oxi-bt-col-md-6 oxi-bt-col-sm-12">
                                                            <?php
                                                        elseif ($lays == 2) :
                                                            ?>
                                                                <div class="oxi-bt-col-lg-6 oxi-bt-col-md-12 oxi-bt-col-sm-12">
                                                                <?php
                                                            else :
                                                                ?>
                                                                    <div class="oxi-bt-col-lg-12 oxi-bt-col-md-12 oxi-bt-col-sm-12">
                                                                    <?php
                                                                endif;

                                                                $CLASS = 'OXI_IMAGE_HOVER_PLUGINS\Modules\\' . ucfirst($s[0]) . '\Render\Effects' . $s[1];
                                                                if (class_exists($CLASS)) :
                                                                    new $CLASS($params['style'], $params['child']);
                                                                endif;
                                                                    ?>
                                                                    <input type="hidden" id="oxi-template-<?php echo esc_attr($key); ?>-data-<?php echo esc_attr($i); ?>" name="custId" value="Modules/<?php echo esc_attr(ucfirst($this->effects)); ?>/Layouts/<?php echo esc_attr($key); ?>/<?php echo esc_attr($filename); ?>">
                                                                    </div>
                                                            <?php
                                                            $i++;
                                                        }
                                                    }
                                                            ?>
                                                                </div>
                                                                <div class="oxi-addons-style-preview-bottom">
                                                                    <div class="oxi-addons-style-preview-bottom-left">
                                                                        <?php echo esc_html(ucfirst($this->effects)); ?>
                                                                        <?php echo esc_html($key); ?>
                                                                    </div>
                                                                    <div class="oxi-addons-style-preview-bottom-right">
                                                                        <button class="btn btn-warning oxi-addons-addons-style-btn-warning" title="Delete" data-value="<?php echo esc_attr($key); ?>" data-effects="<?php echo esc_html($this->effects); ?>" type="button" value="Deactive">Deactive</button>
                                                                        <button type="button" class="btn btn-success oxi-addons-addons-template-create" effects-data="oxi-template-<?php echo esc_attr($key); ?>">Create Style</button>
                                                                    </div>
                                                                </div>
                                                            </div>
                                            </div>
                                        <?php
                                    else :
                                        $importbutton = true;
                                    endif;
                                }

                                if ($importbutton) :
                                        ?>
                                        <div class="oxi-addons-col-1 oxi-import">
                                            <div class="oxi-addons-style-preview">
                                                <div class="oxilab-admin-style-preview-top">
                                                    <a href="<?php echo esc_url(admin_url("admin.php?page=oxi-image-hover-ultimate&effects=$this->effects&import=templates")); ?>">
                                                        <div class="oxilab-admin-add-new-item">
                                                            <span>
                                                                <i class="fas fa-plus-circle oxi-icons"></i>
                                                                Add More Templates
                                                            </span>
                                                        </div>
                                                    </a>
                                                </div>
                                            </div>
                                        </div>
                                    <?php
                                endif;
                                    ?>


                                        </div>
                                <?php
                            }



                            public function rec_listFiles($from = '.')
                            {
                                if (!is_dir($from)) {
                                    return false;
                                }

                                $files = [];
                                if ($dh = opendir($from)) {
                                    while (false !== ($file = readdir($dh))) {
                                        // Skip '.' and '..'
                                        if ($file == '.' || $file == '..')
                                            continue;
                                        $path = $from . '/' . $file;
                                        if (is_dir($path)) {
                                            $files += $this->rec_listFiles($path);
                                        } else {
                                            if (strpos($path, 'json') !== false) {
                                                $folder = explode("/Layouts/", $path);
                                                $folder = explode("/", $folder[1]);
                                            }
                                            if (isset($folder[1])) {
                                                $files[$folder[0]][] = $folder[1];
                                            }
                                        }
                                    }
                                    closedir($dh);
                                }
                                ksort($files);
                                return $files;
                            }

                            public function __construct()
                            {
                                global $wpdb;
                                $this->wpdb = $wpdb;
                                $this->parent_table = $this->wpdb->prefix . 'image_hover_ultimate_style';
                                $this->child_table = $this->wpdb->prefix . 'image_hover_ultimate_list';
                                $this->import_table = $this->wpdb->prefix . 'oxi_div_import';
                                $this->effects = (!empty($_GET['effects']) ? sanitize_text_field($_GET['effects']) : '');
                                $this->oxitype = $this->effects . '-ultimate';
                                $this->CSSJS_load();
                                $this->Render();
                            }

                            public function CSSJS_load()
                            {

                                $this->JSON_DATA();
                                $this->pre_clecked = array_flip($this->pre_active);
                                $this->admin_css_loader();
                                $this->admin_rest_api();
                                $this->pre_active_check();
                                apply_filters('oxi-image-hover-plugin/admin_menu', true);
                            }

                            /**
                             * Admin Notice JS file loader
                             * @return void
                             */
                            public function admin_rest_api()
                            {
                                wp_enqueue_script('oxi-image-hover-create', OXI_IMAGE_HOVER_URL . 'assets/backend/js/create.js', false, OXI_IMAGE_HOVER_PLUGIN_VERSION);
                            }
                        }