CVE-2022-4207: Insufficient Information (NVD-CWE-noinfo)
value: The Image Hover Effects Ultimate plugin for WordPress is vulnerable to Stored Cross-Site Scripting via several values that can be added to an Image Hover in versions 9.8.1 to 9.8.4 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. By default, the plugin only allows administrators access to edit Image Hovers, however, if a site admin makes the plugin's features available to lower privileged users through the 'Who Can Edit?' setting then this can be exploited by those users.
CWE description: There is insufficient information about the issue to classify it; details are unkown or unspecified.
CVSS v3 base score: 5.4
Published: 2022-12-13T21:15Z
Repository: https://github.com/MrOxizen/image-hover-effects-ultimate
Language: PHP
Files changed: Modules/Lightbox/Render/Effects1.php, Modules/Lightbox/Render/Effects2.php, Page/Public_Render.php
Commit date: 2022-12-05 12:52:56 +0600
Commit message: Update

Diff: diff --git a/Modules/Lightbox/Render/Effects1.php b/Modules/Lightbox/Render/Effects1.php
index 50d7e54..b84bf2f 100755
--- a/Modules/Lightbox/Render/Effects1.php
+++ b/Modules/Lightbox/Render/Effects1.php
@@ -133,11 +133,11 @@ class Effects1 extends Public_Render {
                                        ?>
                                     <div class="oxi_addons__button_main">
                                         <button class="oxi_addons__button">
                                             <?php $this->text_render($value['oxi_image_light_box_button_text']); ?>
                                         </button>
-                                    </div> 
+                                    </div>
                                     <?php
                                 }
                             } elseif (array_key_exists('oxi_image_light_box_clickable', $style) && $style['oxi_image_light_box_clickable'] == 'image') {
                                 if ($this->custom_media_render('oxi_image_light_box_image_front', $value) != '') {
                                     ?>
diff --git a/Modules/Lightbox/Render/Effects2.php b/Modules/Lightbox/Render/Effects2.php
index dba23d4..ace6819 100755
--- a/Modules/Lightbox/Render/Effects2.php
+++ b/Modules/Lightbox/Render/Effects2.php
@@ -43,27 +43,27 @@ class Effects2 extends Public_Render {
         foreach ($child as $key => $val) {
             $value = json_decode(stripslashes($val['rawdata']), true);
             ?>
             <div class="oxi_addons__light_box_style_2 oxi_addons__light_box <?php $this->column_render('oxi-image-hover-col', $style) ?>  <?php
             echo ($admin == "admin" ? 'oxi-addons-admin-edit-list' : '');
-            ?>"> 
-                <div class="oxi_addons__light_box_parent"> 
+            ?>">
+                <div class="oxi_addons__light_box_parent">
                     <?php
                     if ($this->custom_media_render('oxi_image_light_box_image', $value) != '') {
                         ?>
-                    <div class="oxi_addons__light_box_item  lightbox_key_<?php echo (int) $key; ?>" <?php
+                        <div class="oxi_addons__light_box_item  lightbox_key_<?php echo (int) $key; ?>" <?php
                         if (array_key_exists('oxi_image_light_box_clickable', $style) && $style['oxi_image_light_box_clickable'] == 'image'):
                             echo ' style="width: 100%" ';
                         endif;
-                        ?>>  
-                             <?php
+                        ?>>
+                                 <?php
                                  if (array_key_exists('oxi_image_light_box_clickable', $style) && $style['oxi_image_light_box_clickable'] == 'button') {
                                      if (array_key_exists('oxi_image_light_box_button_text', $value) && $value['oxi_image_light_box_button_text'] != '') {
                                          ?>
                                     <div class="oxi_addons__button_main">
                                         <button class="oxi_addons__button">
-                                            <?php $this->text_render($value['oxi_image_light_box_button_text']) ?> 
+                                            <?php $this->text_render($value['oxi_image_light_box_button_text']) ?>
                                         </button>
                                     </div>
                                     <?php
                                 }
                             } elseif (array_key_exists('oxi_image_light_box_clickable', $style) && $style['oxi_image_light_box_clickable'] == 'image') {
@@ -90,18 +90,18 @@ class Effects2 extends Public_Render {
                             }
                             ?>
                         </div>
                         <?php
                     }
-                    ?>  
+                    ?>
                 </div>
                 <?php
                 if ($admin == 'admin') :
                     $this->oxi_addons_admin_edit_delete_clone($val['id']);
                 endif;
                 ?>
-            </div> 
+            </div>
             <?php
         }
     }
 
     public function inline_public_jquery() {
@@ -132,13 +132,13 @@ class Effects2 extends Public_Render {
             $js .= 'jQuery(".' . $this->WRAPPER . ' .lightbox_key_' . $key . '").OxizenPopup({
                         ' . $image_video . '
                         mainClass: "' . $this->WRAPPER . '",
                         callbacks: {
                                     beforeChange: function() {
-                                     this.items[0].src = this.items[0].src + "?=" + Math.random(); 
+                                     this.items[0].src = this.items[0].src + "?=" + Math.random();
                                     }
-                        },  
+                        },
                         closeBtnInside: true,
                         closeOnContentClick: true,
                         tLoading: "",
                     });';
         }
@@ -159,15 +159,15 @@ class Effects2 extends Public_Render {
                     }
                   .oxi-image-hover-wrapper-' . $this->oxiid . ' .Oxipopup-close{
                       z-index: ' . ($style['oxi_image_light_z_ind'] + 3) . ';
                   }
 
-                 .oxi-image-hover-wrapper-' . $this->oxiid . ' .Oxipopup-image-holder .Oxipopup-close, 
+                 .oxi-image-hover-wrapper-' . $this->oxiid . ' .Oxipopup-image-holder .Oxipopup-close,
                  .oxi-image-hover-wrapper-' . $this->oxiid . ' .Oxipopup-iframe-holder .Oxipopup-close{
                      color: ' . $style['oxi_image_light_cls_clr'] . ';
                   }
-                 
+
                   .oxi-image-hover-wrapper-' . $this->oxiid . ' .Oxipopup-preloader{
                      background: ' . $style['oxi_image_light_pre_clr'] . ';
                   }';
     }
 
diff --git a/Page/Public_Render.php b/Page/Public_Render.php
index 3d080fb..e762500 100755
--- a/Page/Public_Render.php
+++ b/Page/Public_Render.php
@@ -9,12 +9,11 @@ if (!defined('ABSPATH')) {
 /**
  * Description of Public
  *
  * @author $biplob018
  */
-class Public_Render
-{
+class Public_Render {
 
     /**
      * Current Elements id
      *
      * @since 9.3.0
@@ -112,12 +111,11 @@ class Public_Render
     public $child_table;
     public $dynamicPost;
     public $dynamicCarousel;
     public $dynamicLoad;
 
-    public function __construct(array $dbdata = [], array $child = [], $admin = 'user')
-    {
+    public function __construct(array $dbdata = [], array $child = [], $admin = 'user') {
         if (count($dbdata) > 0) :
             global $wpdb;
             $this->dbdata = $dbdata;
             $this->child = $child;
             $this->admin = $admin;
@@ -142,12 +140,11 @@ class Public_Render
     /**
      * Current element loader
      *
      * @since 9.3.0
      */
-    public function loader()
-    {
+    public function loader() {
         $this->style = json_decode(stripslashes($this->dbdata['rawdata']), true);
         $this->CSSDATA = $this->dbdata['stylesheet'];
         $this->WRAPPER = 'oxi-image-hover-wrapper-' . $this->dbdata['id'];
         $this->hooks();
     }
@@ -155,22 +152,20 @@ class Public_Render
     /**
      * load old data since 1.7
      *
      * @since 9.3.0
      */
-    public function old_loader()
-    {
+    public function old_loader() {
         $this->old_render();
     }
 
     /**
      * front end loader css and js
      *
      * @since 9.3.0
      */
-    public function public_frontend_loader()
-    {
+    public function public_frontend_loader() {
         wp_enqueue_script("jquery");
         wp_enqueue_style('oxi-animation', OXI_IMAGE_HOVER_URL . '/assets/frontend/css/animation.css', false, OXI_IMAGE_HOVER_PLUGIN_VERSION);
         wp_enqueue_style('oxi-image-hover', OXI_IMAGE_HOVER_URL . '/assets/frontend/css/style.css', false, OXI_IMAGE_HOVER_PLUGIN_VERSION);
         if (get_option('oxi_addons_way_points') != 'no') {
             wp_enqueue_script('waypoints.min', OXI_IMAGE_HOVER_URL . '/assets/frontend/js/waypoints.min.js', false, OXI_IMAGE_HOVER_PLUGIN_VERSION);
@@ -185,12 +180,11 @@ class Public_Render
     /**
      * load css and js hooks
      *
      * @since 9.3.0
      */
-    public function hooks()
-    {
+    public function hooks() {
         $this->public_frontend_loader();
         $this->public_jquery();
         $this->public_css();
         $this->render();
         $inlinecss = $this->inline_public_css() . $this->inline_css . $this->style['image-hover-custom-css'];
@@ -219,13 +213,10 @@ class Public_Render
                 wp_add_inline_script($this->JSHANDLE, $jquery);
             endif;
 
         endif;
         if ($inlinecss != '') :
-
-
-
             $css = html_entity_decode(str_replace('<br>', '', str_replace('&nbsp;', ' ', $inlinecss)));
             if ($this->admin == 'admin' || $this->admin == 'web') :
                 //only load while ajax called
                 echo '<style>';
                 echo $css;
@@ -239,28 +230,27 @@ class Public_Render
     /**
      * load current element render since 9.3.0
      *
      * @since 9.3.0
      */
-    public function render()
-    {
+    public function render() {
         if ($this->admin == 'request') :
             $this->default_render($this->style, $this->child, $this->admin);
         else :
-?>
+            ?>
             <div class="oxi-addons-container noLightbox <?php echo esc_attr($this->WRAPPER); ?> <?php echo esc_attr(get_option('oxi_addons_custom_parent_class')); ?>" id="<?php echo esc_attr($this->WRAPPER); ?>">
                 <div class="oxi-addons-row">
                     <?php
                     $this->default_render($this->style, $this->child, $this->admin);
                     ?>
                 </div>
             </div>
         <?php
         endif;
     }
-     public function oxi_addons_admin_edit_delete_clone($param)
-    {
+
+    public function oxi_addons_admin_edit_delete_clone($param) {
         ?>
         <div class="oxi-addons-admin-absulote">
             <div class="oxi-addons-admin-absulate-edit">
                 <button class="btn btn-primary shortcode-addons-template-item-edit" type="button" value="<?php echo esc_attr($param); ?>" title="Edit">Edit</button>
             </div>
@@ -269,130 +259,117 @@ class Public_Render
             </div>
             <div class="oxi-addons-admin-absulate-delete">
                 <button class="btn btn-danger shortcode-addons-template-item-delete" type="submit" value="<?php echo esc_attr($param); ?>" title="Delete">Del</button>
             </div>
         </div>
-<?php
+        <?php
     }
 
     /**
      * old empty old render
      *
      * @since 9.3.0
      */
-    public function old_render()
-    {
+    public function old_render() {
         echo '';
     }
 
     /**
      * load public jquery
      *
      * @since 9.3.0
      */
-    public function public_jquery()
-    {
+    public function public_jquery() {
         echo '';
     }
 
     /**
      * load public css
      *
      * @since 9.3.0
      */
-    public function public_css()
-    {
+    public function public_css() {
         echo '';
     }
 
     /**
      * load inline public jquery
      *
      * @since 9.3.0
      */
-    public function inline_public_jquery()
-    {
+    public function inline_public_jquery() {
         echo '';
     }
 
     /**
      * load inline public css
      *
      * @since 9.3.0
      */
-    public function inline_public_css()
-    {
+    public function inline_public_css() {
         echo '';
     }
 
     /**
      * load default render
      *
      * @since 9.3.0
      */
-    public function default_render($style, $child, $admin)
-    {
+    public function default_render($style, $child, $admin) {
         echo '';
     }
 
     /**
      * load default render
      *
      * @since 9.3.0
      */
-    public function Json_Decode($rawdata)
-    {
+    public function Json_Decode($rawdata) {
         return $rawdata != '' ? json_decode(stripcslashes($rawdata), true) : [];
     }
 
-    public function name_converter($data)
-    {
+    public function name_converter($data) {
         $data = str_replace('_', ' ', $data);
         $data = str_replace('-', ' ', $data);
         $data = str_replace('+', ' ', $data);
-        return ucwords($data);
+        return esc_attr(ucwords($data));
     }
 
-    public function font_familly_validation($data = [])
-    {
+    public function font_familly_validation($data = []) {
         $api = get_option('oxi_addons_google_font');
         if ($api == 'no') :
             return;
         endif;
         foreach ($data as $value) {
             wp_enqueue_style('' . $value . '', 'https://fonts.googleapis.com/css?family=' . $value . '');
         }
     }
 
-    public function font_familly($data = '')
-    {
+    public function font_familly($data = '') {
         $api = get_option('oxi_addons_google_font');
         if ($api != 'no') :
             wp_enqueue_style('' . $data . '', 'https://fonts.googleapis.com/css?family=' . $data . '');
         endif;
         $data = str_replace('+', ' ', $data);
         $data = explode(':', $data);
-        return '"' . $data[0] . '"';
+        return '"' . esc_attr($data[0]) . '"';
     }
 
-    public function admin_name_validation($data)
-    {
+    public function admin_name_validation($data) {
         $data = str_replace('_', ' ', $data);
         $data = str_replace('-', ' ', $data);
         $data = str_replace('+', ' ', $data);
-        return ucwords($data);
+        return esc_attr(ucwords($data));
     }
 
-    public function array_render($id, $style)
-    {
+    public function array_render($id, $style) {
         if (array_key_exists($id, $style)) :
             return $style[$id];
         endif;
     }
 
-    public function check_media_render($id, $style)
-    {
+    public function check_media_render($id, $style) {
 
         $url = '';
         if (array_key_exists($id . '-select', $style)) :
             if ($style[$id . '-select'] == 'media-library') :
                 $url = $style[$id . '-image'];
@@ -404,12 +381,11 @@ class Public_Render
             endif;
         endif;
         return false;
     }
 
-    public function media_render($id, $style)
-    {
+    public function media_render($id, $style) {
         $url = '';
         if (array_key_exists($id . '-select', $style)) :
             if ($style[$id . '-select'] == 'media-library') :
                 $url = $style[$id . '-image'];
             else :
@@ -421,25 +397,23 @@ class Public_Render
                 echo 'src="' . esc_url($url) . '" ';
             endif;
         endif;
     }
 
-    public function media_background_render($id, $style)
-    {
+    public function media_background_render($id, $style) {
         $url = '';
         if (array_key_exists($id . '-select', $style)) :
             if ($style[$id . '-select'] == 'media-library') :
                 $url = $style[$id . '-image'];
             else :
                 $url = $style[$id . '-url'];
             endif;
         endif;
-        return $url;
+        return esc_url($url);
     }
 
-    public function allowed_html_sanitize($rawdata)
-    {
+    public function allowed_html_sanitize($rawdata) {
         $allowed_tags = array(
             'a' => array(
                 'class' => array(),
                 'href' => array(),
                 'rel' => array(),
@@ -527,31 +501,27 @@ class Public_Render
         );
 
         echo wp_kses($rawdata, $allowed_tags);
     }
 
-    public function text_render($data)
-    {
-        echo do_shortcode(str_replace('spTac', '&nbsp;', str_replace('spBac', '<br>', html_entity_decode($data))), $ignore_html = false);
+    public function text_render($data) {
+        echo wp_kses_post(do_shortcode(str_replace('spTac', '&nbsp;', str_replace('spBac', '<br>', html_entity_decode($data))), $ignore_html = false));
     }
 
-    public function return_text($data)
-    {
-        return do_shortcode(str_replace('spTac', '&nbsp;', str_replace('spBac', '<br>', html_entity_decode($data))), $ignore_html = false);
+    public function return_text($data) {
+        return wp_kses_post(do_shortcode(str_replace('spTac', '&nbsp;', str_replace('spBac', '<br>', html_entity_decode($data))), $ignore_html = false));
     }
 
-    public function font_awesome_render($data)
-    {
+    public function font_awesome_render($data) {
         $fadata = get_option('oxi_addons_font_awesome');
         if ($fadata != 'no') :
             wp_enqueue_style('font-awsome.min', OXI_IMAGE_HOVER_URL . '/assets/frontend/css/font-awsome.min.css', false, OXI_IMAGE_HOVER_PLUGIN_VERSION);
         endif;
         echo '<i class="' . esc_attr($data) . ' oxi-icons"></i>';
     }
 
-    public function tab_column_render($id, $style)
-    {
+    public function tab_column_render($id, $style) {
         if ($style[$id . '-lap'] == 'oxi-bt-col-lg-8') :
             return 'oxi-bt-col-md-3';
         elseif ($style[$id . '-lap'] == 'oxi-bt-col-lg-5') :
             return 'oxi-bt-col-md-6';
         elseif ($style[$id . '-lap'] == 'oxi-bt-col-lg-4') :
@@ -561,12 +531,11 @@ class Public_Render
         else :
             return 'oxi-bt-col-md-12';
         endif;
     }
 
-    public function mob_column_render($id, $style)
-    {
+    public function mob_column_render($id, $style) {
 
         if ($style[$id . '-lap'] == 'oxi-bt-col-lg-2') :
             return 'oxi-bt-col-sm-6';
         elseif ($style[$id . '-lap'] == 'oxi-bt-col-lg-8') :
             return 'oxi-bt-col-sm-6';
@@ -575,12 +544,11 @@ class Public_Render
         else :
             return 'oxi-bt-col-sm-12';
         endif;
     }
 
-    public function column_render($id, $style)
-    {
+    public function column_render($id, $style) {
         $file = $style[$id . '-lap'] . ' ';
         if (!array_key_exists($id . '-tab', $style) || $style[$id . '-tab'] == '') :
             $file .= $this->tab_column_render($id, $style) . ' ';
         else :
             $file .= $style[$id . '-tab'] . ' ';
@@ -591,21 +559,19 @@ class Public_Render
             $file .= $style[$id . '-mob'] . ' ';
         endif;
         echo esc_attr($file);
     }
 
-    public function checkurl_render($id, $style)
-    {
+    public function checkurl_render($id, $style) {
 
         if (array_key_exists($id . '-url', $style) && $style[$id . '-url'] != '') :
             return true;
         endif;
         return false;
     }
 
-    public function url_render($id, $style)
-    {
+    public function url_render($id, $style) {
 
         if (array_key_exists($id . '-url', $style) && $style[$id . '-url'] != '') :
             echo ' href="' . esc_url($style[$id . '-url']) . '"';
             if (array_key_exists($id . '-target', $style) && $style[$id . '-target'] != '0') :
                 echo ' target="_blank"';
@@ -617,12 +583,11 @@ class Public_Render
                 echo ($style[$id . '-id'] != '' ? ' id="' . esc_attr($style[$id . '-id']) . '"' : '');
             endif;
         endif;
     }
 
-    public function animation_render($id, $style)
-    {
+    public function animation_render($id, $style) {
 
         if (array_key_exists($id . '-type', $style) && $style[$id . '-type'] != '') :
             echo 'sa-data-animation="' . esc_attr($style[$id . '-type']);
             if (array_key_exists($id . '-looping', $style) && $style[$id . '-looping'] != '0') :
                 echo 'infinite';
@@ -633,12 +598,11 @@ class Public_Render
             echo (array_key_exists($id . '-duration-size', $style) ? ' sa-data-animation-duration="' . esc_attr($style[$id . '-duration-size']) . 'ms"' : '');
 
         endif;
     }
 
-    public function background_render($id, $style, $class)
-    {
+    public function background_render($id, $style, $class) {
         $backround = '';
         if (array_key_exists($id . '-color', $style)) :
             $color = $style[$id . '-color'];
             if (array_key_exists($id . '-img', $style) && $style[$id . '-img'] != '0') :
                 if (strpos(strtolower($color), 'gradient') === FALSE) :
@@ -670,19 +634,17 @@ class Public_Render
             endif;
         endif;
         return $backround;
     }
 
-    public function CatStringToClassReplacce($string, $number = '000')
-    {
+    public function CatStringToClassReplacce($string, $number = '000') {
         $entities = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', "t");
         $replacements = array('!', '*', "'", "(", ")", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]", " ");
         return 'sa_STCR_' . str_replace($replacements, $entities, urlencode($string)) . $number;
     }
 
-    public function old_column_render($d, $type)
-    {
+    public function old_column_render($d, $type) {
         if ($d == 'image-ultimate-responsive-1') :
             if ($type == 'lap') :
                 return 'oxi-bt-col-lg-12';
             elseif ($type == 'tab') :
                 return 'oxi-bt-col-md-12';
@@ -729,22 +691,22 @@ class Public_Render
             elseif ($type == 'mob') :
                 return 'oxi-bt-col-sm-6';
             endif;
         endif;
     }
-  public function old_button_alignment_render($d)
-    {
+
+    public function old_button_alignment_render($d) {
         if ($d == 'float: left;') :
             return 'left';
         elseif ($d == 'margin: 0 auto;') :
             return 'center';
         elseif ($d == 'float: right;') :
             return 'right';
         endif;
     }
-    public function old_alignment_render($d)
-    {
+
+    public function old_alignment_render($d) {
         if ($d == 'vertical-align: top;text-align: left;') :
             return 'image-hover-align-top-top';
         elseif ($d == 'vertical-align: top;text-align: center;') :
             return 'image-hover-align-top-center';
         elseif ($d == 'vertical-align: top;text-align: right;') :
@@ -762,9 +724,6 @@ class Public_Render
         elseif ($d == 'vertical-align: bottom;text-align: right;') :
             return 'image-hover-align-bottom-right';
         endif;
     }
 
-  
-
-   
 }

Vulnerable code:                                     </div> 
            ?>"> 
                <div class="oxi_addons__light_box_parent"> 
                    <div class="oxi_addons__light_box_item  lightbox_key_<?php echo (int) $key; ?>" <?php
                        ?>>  
                             <?php
                                            <?php $this->text_render($value['oxi_image_light_box_button_text']) ?> 
                    ?>  
            </div> 
                                     this.items[0].src = this.items[0].src + "?=" + Math.random(); 
                        },  
                 .oxi-image-hover-wrapper-' . $this->oxiid . ' .Oxipopup-image-holder .Oxipopup-close, 
                 
class Public_Render
{
    public function __construct(array $dbdata = [], array $child = [], $admin = 'user')
    {
    public function loader()
    {
    public function old_loader()
    {
    public function public_frontend_loader()
    {
    public function hooks()
    {



    public function render()
    {
?>
     public function oxi_addons_admin_edit_delete_clone($param)
    {
<?php
    public function old_render()
    {
    public function public_jquery()
    {
    public function public_css()
    {
    public function inline_public_jquery()
    {
    public function inline_public_css()
    {
    public function default_render($style, $child, $admin)
    {
    public function Json_Decode($rawdata)
    {
    public function name_converter($data)
    {
        return ucwords($data);
    public function font_familly_validation($data = [])
    {
    public function font_familly($data = '')
    {
        return '"' . $data[0] . '"';
    public function admin_name_validation($data)
    {
        return ucwords($data);
    public function array_render($id, $style)
    {
    public function check_media_render($id, $style)
    {
    public function media_render($id, $style)
    {
    public function media_background_render($id, $style)
    {
        return $url;
    public function allowed_html_sanitize($rawdata)
    {
    public function text_render($data)
    {
        echo do_shortcode(str_replace('spTac', '&nbsp;', str_replace('spBac', '<br>', html_entity_decode($data))), $ignore_html = false);
    public function return_text($data)
    {
        return do_shortcode(str_replace('spTac', '&nbsp;', str_replace('spBac', '<br>', html_entity_decode($data))), $ignore_html = false);
    public function font_awesome_render($data)
    {
    public function tab_column_render($id, $style)
    {
    public function mob_column_render($id, $style)
    {
    public function column_render($id, $style)
    {
    public function checkurl_render($id, $style)
    {
    public function url_render($id, $style)
    {
    public function animation_render($id, $style)
    {
    public function background_render($id, $style, $class)
    {
    public function CatStringToClassReplacce($string, $number = '000')
    {
    public function old_column_render($d, $type)
    {
  public function old_button_alignment_render($d)
    {
    public function old_alignment_render($d)
    {
  

   
Fixed code:                                     </div>
            ?>">
                <div class="oxi_addons__light_box_parent">
                        <div class="oxi_addons__light_box_item  lightbox_key_<?php echo (int) $key; ?>" <?php
                        ?>>
                                 <?php
                                            <?php $this->text_render($value['oxi_image_light_box_button_text']) ?>
                    ?>
            </div>
                                     this.items[0].src = this.items[0].src + "?=" + Math.random();
                        },
                 .oxi-image-hover-wrapper-' . $this->oxiid . ' .Oxipopup-image-holder .Oxipopup-close,

class Public_Render {
    public function __construct(array $dbdata = [], array $child = [], $admin = 'user') {
    public function loader() {
    public function old_loader() {
    public function public_frontend_loader() {
    public function hooks() {
    public function render() {
            ?>

    public function oxi_addons_admin_edit_delete_clone($param) {
        <?php
    public function old_render() {
    public function public_jquery() {
    public function public_css() {
    public function inline_public_jquery() {
    public function inline_public_css() {
    public function default_render($style, $child, $admin) {
    public function Json_Decode($rawdata) {
    public function name_converter($data) {
        return esc_attr(ucwords($data));
    public function font_familly_validation($data = []) {
    public function font_familly($data = '') {
        return '"' . esc_attr($data[0]) . '"';
    public function admin_name_validation($data) {
        return esc_attr(ucwords($data));
    public function array_render($id, $style) {
    public function check_media_render($id, $style) {
    public function media_render($id, $style) {
    public function media_background_render($id, $style) {
        return esc_url($url);
    public function allowed_html_sanitize($rawdata) {
    public function text_render($data) {
        echo wp_kses_post(do_shortcode(str_replace('spTac', '&nbsp;', str_replace('spBac', '<br>', html_entity_decode($data))), $ignore_html = false));
    public function return_text($data) {
        return wp_kses_post(do_shortcode(str_replace('spTac', '&nbsp;', str_replace('spBac', '<br>', html_entity_decode($data))), $ignore_html = false));
    public function font_awesome_render($data) {
    public function tab_column_render($id, $style) {
    public function mob_column_render($id, $style) {
    public function column_render($id, $style) {
    public function checkurl_render($id, $style) {
    public function url_render($id, $style) {
    public function animation_render($id, $style) {
    public function background_render($id, $style, $class) {
    public function CatStringToClassReplacce($string, $number = '000') {
    public function old_column_render($d, $type) {

    public function old_button_alignment_render($d) {

    public function old_alignment_render($d) {