MOON
Server: Apache
System: Linux server.netcommlabs.in 3.10.0-1160.83.1.el7.x86_64 #1 SMP Wed Jan 25 16:41:43 UTC 2023 x86_64
User: dermova (1051)
PHP: 5.4.45
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/dermova/www/india/wp-content/plugins/rit-core/html/shortcode-product.php
<?php
/**
 * RIT Core Plugin
 * @package     RIT Core
 * @version     0.1
 * @author      CleverSoft
 * @link        http://cleversoft.co
 * @copyright   Copyright (c) 2015 CleverSoft
 * @license     GPL v2
 */
?>
<?php
    if(!isset($_POST['show'])){
        echo '<input name="rit-filter-page-baseurl" type="hidden" value="'.rit_current_url().'">';
    }
?>
<div class="rit-products-wrap">
<?php if (isset($atts['title'])&& $atts['title']!=''){?>
    <h3 class="widget-title" >
        <span class="<?php echo $atts['title_align']; ?>"><?php echo htmlspecialchars_decode( $atts['title'] ); ?></span>
    </h3>
<?php }?>
<?php

if($atts['show_filter']){?>
    <div class="rit-filter-wrap  clearfix">
                <div class="rit-filter-nav clearfix">
                    <?php
                    //list category
                    if($atts['filter_categories'] != ''){
                        $product_categories = explode(',', $atts['filter_categories'] );
                        echo '<ul class="rit-ajax-load rit-list-product-category list-unstyled pull-left clearfix">';
                        foreach ($product_categories as $product_cat_id)
                        {
                            $product_cat = get_term( $product_cat_id, 'product_cat' );
                            $selected = '';
                            if(isset($atts['wc_attr']['product_cat'] ) && $atts['wc_attr']['product_cat'] == $product_cat->slug ){
                                $selected = 'chosen';
                            }
                            echo '<li><a class="'. esc_attr($selected) .'"
                            data-type="product_cat" data-value="'.esc_attr($product_cat->slug).'"
                            href="' . esc_url(get_term_link( $product_cat->slug, 'product_cat' )) . '"
                            title="' . esc_attr($product_cat->name) . '">' . esc_html($product_cat->name) . '</a></li>';

                        }

                        echo '</ul>';
                    }
                    //end of list category
                    ?>

                    <a class="btn btn-primary pull-right" role="button" data-toggle="collapse" href="#rit-filter" aria-expanded="false" aria-controls="rit-filter">
                        <?php echo esc_html__('Filter',RIT_TEXT_DOMAIN);?>
                    </a>
                </div>
                <?php
                //filter ?>
                <div class="collapse rit-filter-attribute clearfix" id="rit-filter">
                   <div class="widget">
                        <h3 class="filter-title"><?php echo esc_html__('Sort By',RIT_TEXT_DOMAIN);?></h3>
                        <?php
                        //list featured filter
                        $filter_arrs = array(
                            esc_html__('All', RIT_TEXT_DOMAIN) => 'all',
                            esc_html__('Featured', RIT_TEXT_DOMAIN) => 'featured',
                            esc_html__('Onsale', RIT_TEXT_DOMAIN) => 'onsale',
                            esc_html__('Best Selling', RIT_TEXT_DOMAIN) => 'best-selling',
                            esc_html__('Latest', RIT_TEXT_DOMAIN) => 'latest',
                            esc_html__('Top rate', RIT_TEXT_DOMAIN) => 'toprate ',
                            esc_html__('Price: low to high', RIT_TEXT_DOMAIN) => 'price',
                            esc_html__('Price: high to low', RIT_TEXT_DOMAIN) => 'price-desc',
                        );

                        echo '<ul class="rit-ajax-load rit-list-filter list-unstyled">';
                        foreach ($filter_arrs as $key => $value)
                        {
                            $selected = '';
                            if(isset($atts['show']) &&  $atts['show'] == $value){
                                $selected = 'chosen';
                            }
                            echo '<li>
                                            <a  class="'. esc_attr($selected) .'"
                                                data-type="show"
                                                data-value="'.esc_attr($value).'" href="" title="'.esc_attr($key).'">' . esc_html($key) . '
                                            </a>
                                  </li>';

                        }
                        echo '</ul>';?>
                   </div>

                   <?php
                   //list product_attributes
                   if($atts['filter_attributes'] != ''){
                       $product_attribute_taxonomies = explode(',', $atts['filter_attributes'] );


                       if(count($product_attribute_taxonomies) > 0){
                           foreach ($product_attribute_taxonomies as $product_attribute_taxonomie_id) {

                               global $wpdb;

                               $attribute_taxonomies = $wpdb->get_results( "SELECT * FROM " . $wpdb->prefix . "woocommerce_attribute_taxonomies where attribute_id='".$product_attribute_taxonomie_id."'" );

                               if(isset($attribute_taxonomies[0])){
                                   $product_attribute_taxonomie = $attribute_taxonomies[0];
                                   //$product_terms = get_terms( 'pa_'.$product_attribute_taxonomie->attribute_name, 'hide_empty=0' );
                                   $product_terms = get_terms( 'pa_'.$product_attribute_taxonomie->attribute_name);

                                   if(count($product_terms) > 0){
                                       echo '<div class="widget">';
                                       echo '<h3 class="filter-title">'.esc_html($product_attribute_taxonomie->attribute_label).'</h3>';
                                       echo '<ul class="rit-ajax-load rit-product-attribute-filter list-unstyled">';
                                       foreach ($product_terms as $product_term) {

                                           $selected = '';
                                           if(isset($atts['wc_attr']['tax_query']) && count($atts['wc_attr']['tax_query']) > 0){
                                               foreach ($atts['wc_attr']['tax_query'] as $tax_query) {
                                                   if($tax_query['taxonomy'] == $product_term->taxonomy && $tax_query['terms'] == $product_term->slug ){
                                                       $selected = 'chosen';
                                                   }
                                               }

                                           }
                                           echo '<li><a class="rit-product-attribute '. esc_attr($selected) .'"
                                            data-type="product_attribute"
                                            data-attribute_value="'.esc_attr($product_term->slug).'"
                                            data-value="'.esc_attr($product_term->taxonomy).'"
                                            title="'.esc_attr($product_term->name).'">' . esc_html($product_term->name) . '</a></li>';
                                       }
                                       echo '</ul></div>';
                                   }
                               }
                           }
                       }
                   }
                   //end list product_attributes

                   //list tags
                   if($atts['filter_tags'] != ''){
                       $product_tags = explode(',', $atts['filter_tags'] );
                       echo '<div class="widget">';
                       echo '<h3 class="filter-title">'.esc_html__('Tags',RIT_TEXT_DOMAIN).'</h3>';
                       echo '<ul class="rit-ajax-load rit-list-product-tag list-unstyled tags-list">';
                       foreach ($product_tags as $product_tag_id)
                       {
                           $selected = '';
                           $product_tag = get_term( $product_tag_id, 'product_tag' );
                           if(isset($atts['wc_attr']['product_tag']) && $atts['wc_attr']['product_tag'] == $product_tag->slug){
                               $selected = 'chosen';
                           }
                           echo '<li><a class="'. esc_attr($selected) .'"
                            data-type="product_tag"
                            data-value="'.esc_attr($product_tag->slug).'"
                            title="' . esc_attr($product_tag->name) . '">' . esc_html($product_tag->name) . '</a></li>';

                       }

                       echo '</ul></div>';
                   }
                   //end if list tag

                   //reset filter
                   echo '<div class="rit-ajax-load pull-right"><a class="btn btn-default" data-type="rit-reset-filter" href="'.rit_current_url().'">'.esc_html__('Reset', RIT_TEXT_DOMAIN).'</a></div>';
                   //end reset filter

                if(!isset($_POST['show'])){
                    //hidden argument shortcode
                    $init_atts = $atts;
                    unset($init_atts['wc_attr']);
                    echo '<script type="text/javascript">var data = jQuery.parseJSON(\''.json_encode($init_atts).'\')</script>';
                }else{
                    echo '<script type="text/javascript">var data = jQuery.parseJSON(\''.json_encode($_POST).'\')</script>';
                }
                ?>
                <script type="text/javascript">
                    jQuery(document).ready(function($){
                        function rit_ajax_filter(){
                            if(typeof filter_links == 'undefined'){

                                var filter_links = $('.rit-ajax-load a');

                                filter_links.click(function(e) {
                                    e.preventDefault();
                                    $('.rit-products-wrap').addClass('loading');

                                    var $this = $(this);
                                    var link  = $this.attr('href');
                                    var title = $this.attr('title');


                                    data['action'] = 'rit_ajax_product_filter';


                                    if($this.hasClass('rit-product-attribute')){
                                        if(typeof data['product_attribute'] == 'object'){
                                            data['product_attribute'].push($this.data('value'));

                                            data['attribute_value'].push( $this.data('attribute_value'));
                                        }else{
                                            data['product_attribute'] = [];
                                            data['product_attribute'].push($this.data('value'));

                                            data['attribute_value'] = [];
                                            data['attribute_value'].push( $this.data('attribute_value'));
                                        }

                                    }else {

                                        data[$this.data('type')] = $this.data('value');

                                    }


                                    data['paged'] = 1;

                                    if($this.data('type') == 'product_cat'){
                                        data['product_attribute'] = [];
                                        data['attribute_value'] = [];
                                        data['product_tag'] = '';
                                        data['show'] = '';
                                    }
                                    if($this.data('type') == 'rit-reset-filter'){
                                        data['product_attribute'] = [];
                                        data['attribute_value'] = [];
                                        data['product_tag'] = '';
                                        data['product_cat'] = '';
                                        data['show'] = '';
                                    }

                                    $.ajax({
                                        url: '<?php echo  admin_url( 'admin-ajax.php')?>',
                                        data: data,
                                        type: 'POST',
                                    }).success(function(response){
                                        if($this.data('type') == 'rit-reset-filter'){
                                            link = $('input[name="rit-filter-page-baseurl"]').val();

                                            window.history.pushState(null, title, link);
                                        }else{
                                            if(link != ''){
                                                window.history.pushState(null, title, link);
                                            }
                                        }
                                        //console.log(response);
                                        $('.rit-products-wrap').html($(response).html());
                                        $('.rit-products-wrap').removeClass('loading');
                                        if(max_num_pages == data['paged']){
                                            $('.rit_ajax_load_more_button').hide();
                                        }else{
                                            $('.rit_ajax_load_more_button').show();
                                        }
                                    })
                                })
                            }
                        }

                        rit_ajax_filter();
                    }(jQuery));
                </script>
                </div>
                <?php
                }

                $class = ''; ?>
                <div class="rit-wrapper-products-shortcode"  style="padding-bottom:<?php echo esc_attr($atts['padding_bottom_module']) ?>">
                        <?php
                        $class .= 'grid-layout';
                        if(isset($atts['element_custom_class']))
                            $class .= ' ' . $atts['element_custom_class'];

                        $product_query = new WP_Query(apply_filters('woocommerce_shortcode_products_query', $atts['wc_attr']));

                        $product_query->query($atts['wc_attr']);

                        $class_col ='col-md-3 col-sm-3';

                        $class_col = str_replace('column', 'products-',$atts['column']);

                        remove_filter( 'posts_clauses', array( 'WC_Shortcodes', 'order_by_rating_post_clauses' ) );
                        ?>
                        <div class="category-tabs category-tabs-filter widget">
                            <div class="products_shortcode_wrap product-grid woocommerce <?php esc_attr( $atts['element_custom_class']);?> ">
                                <div class="products row clearfix">
                                    <?php while ( $product_query->have_posts() ){
                                        $product_query->the_post();
                                        global $product;
                                        ?>
                                        <div class="<?php echo esc_attr($class_col); ?>">
                                            <?php wc_get_template_part( 'content', 'product-inner'); ?>
                                        </div>
                                    <?php
                                    }
                                    wp_reset_postdata();?>
                                </div>
                            </div>
                        </div>
                        <?php if($atts['show_loadmore']):?>
                            <script type="text/javascript">
                                var max_num_pages = <?php echo esc_js($product_query->max_num_pages);?>;
                            </script>
                        <?php endif; ?>
                    <?php
                    if(!isset($_POST['ajax'])):
                        if($atts['show_loadmore'] && $product_query->max_num_pages > $atts['wc_attr']['paged']):
                            echo '<div class="rit_ajax_load_more"><a class="rit_ajax_load_more_button ">'.esc_html__('Load more', RIT_TEXT_DOMAIN).'</a></div>';

                            ?>
                            <script type="text/javascript">

                                jQuery(document).ready(function ($) {
                                    if(typeof filter_links == 'undefined'){

                                        var rit_ajax_load_more_button = $('.rit_ajax_load_more_button');

                                        rit_ajax_load_more_button.click(function(e){


                                            e.preventDefault();
                                            rit_ajax_load_more_button.addClass('loading');
                                            if(data['paged'] < max_num_pages){

                                                data['paged'] = parseInt(data['paged'])+parseInt(1);

                                                $.ajax({
                                                    url: '<?php echo  admin_url( 'admin-ajax.php')?>',
                                                    data: data,
                                                    type: 'POST',
                                                }).success(function(response){

                                                    $('.products').append($(response).find('.products').html());

                                                    if(max_num_pages == data['paged']){
                                                        $('.rit_ajax_load_more_button').hide();
                                                    }else{
                                                        $('.rit_ajax_load_more_button').show();
                                                    }
                                                    rit_ajax_load_more_button.removeClass('loading');
                                                })
                                            }

                                        });
                                    }
                                });


                            </script>
                        <?php endif;?>
                    <?php endif;?>
                </div>
    </div>
<?php
wp_reset_postdata();
wp_reset_query();
?>
</div>