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/inc/shortcode/rit_tabsproduct.php
<?php

/* ================================================================================== */
/*      Products Shortcode
/* ================================================================================== */
function get_TabTitle($type){
    switch ($type) {
        case 'latest':
            return array('title'=>__('Latest',RIT_TEXT_DOMAIN));
        case 'featured':
            return array('title'=>__('Featured',RIT_TEXT_DOMAIN));
        case 'toprate':
            return array('title'=> __('Top Rated',RIT_TEXT_DOMAIN));
        case 'best-selling':
            return array('title'=>__('BestSeller',RIT_TEXT_DOMAIN));
        case 'onsale':
            return array('title'=>__('Onsale',RIT_TEXT_DOMAIN));
            break;
    }
}
if (!function_exists('rit_shortcode_tabsproduct')) {
    function rit_shortcode_tabsproduct($atts, $content) {
        $outputs='';
        $atts = shortcode_atts(array(
            'post_type' 			=> 'product',
            'pagination' 			=> 'simple',
            'column' 				=> 'col-md-3 col-sm-6',
            'posts_per_page'		=> 4,
            'meta_query'            => '',
            'list_type'            => 'latest,featured,toprate',
            'products_types'		=> 'products_carousel',
            'carousel_style'		=> 'false',
            'title_align'			=> 'center',
            'paged' 				=> -1,
            'ignore_sticky_posts'	=> 1,
            'show'					=> '',
            'style'                 =>'default',
            'bg_box_css'            =>'',
            'element_custom_class'	=> '',
            'category'              =>'',
            'padding_bottom_module' => '0px'
        ), $atts);

        //category
        if(isset($atts['category']) && empty($atts['category'])){
            $args = array(
                'post_type'     => 'product',
                'post_status'   => 'publish',
                'tax_query'     => array(
                    array(
                        'taxonomy'  => 'product_cat'
                    )
                )
            );
            $query_shop = new WP_Query($args);
            $atts['tax_query']  = $query_shop;
        }
        else{
            $args['tax_query'] = array(
                'taxonomy'  => 'product_cat',
                'field'     => 'id',
                'terms'     => $atts['category']
            );
            $atts['tax_query']  = $args;
        }

        //list tabs
        $types = explode(',',$atts['list_type']);
        foreach ($types as $type) {
            $list_types[$type] = get_TabTitle($type);
        }

        ob_start();
        ?>

        <div data-example-id="togglable-tabs" role="tabpanel" class="product-tabs widget">
            <div class="widget-title <?php echo  $atts['title_align'];?>">
                <ul role="tablist" class="nav nav-tabs">
                    <?php
                    $count=0;
                    foreach ($list_types as $key =>$list) {
                        ?>
                        <li class="<?php echo ($count==0)?'active':''; ?>" role="presentation">
                            <a class="tabs-title-product" aria-expanded="true" data-toggle="tab" role="tab" href="#<?php echo  $key; ?>">
                                <span><?php echo $list['title']; ?></span>
                            </a>
                        </li>
                        <?php
                        $count++;
                    }
                    ?>
                </ul>
            </div>
            <div class="tab-content widget-content clearfix" id="tabs_product">
                <?php $count=0; ?>
                <?php foreach ($list_types as $key => $list) {
                    switch ($key) {
                        case 'best-selling':
                            $atts['meta_key'] = 'total_sales';
                            $meta_query = WC()->query->get_meta_query();
                            $atts['meta_query'] = $meta_query;
                            break;

                        case 'toprate':
                            add_filter( 'posts_clauses',  array( WC()->query, 'order_by_rating_post_clauses' ) );
                            $meta_query = WC()->query->get_meta_query();
                            $atts['meta_query'] = $meta_query;
                            break;

                        case 'latest':
                            $meta_query = WC()->query->visibility_meta_query();
                            $meta_query = WC()->query->stock_status_meta_query();
                            $atts['meta_query'] = $meta_query;
                            break;

                        case 'featured':
                            $meta_query = WC()->query->get_meta_query();
                            $meta_query[] = array(
                                'key' => '_featured',
                                'value' => 'yes'
                            );
                            $atts['meta_query'] = $meta_query;
                            break;

                        case 'onsale':
                            $product_ids_on_sale = wc_get_product_ids_on_sale();
                            $atts['post__in'] = $product_ids_on_sale;
                            $meta_query = WC()->query->get_meta_query();
                            $atts['meta_query'] = $meta_query;
                            break;
                    }
                    ?>
                    <div  id="<?php echo  $key; ?>" class="tab-pane <?php echo ($count==0)?' active':''; ?>" role="tabpanel">
                                    <?php
                                        switch ($atts['products_types']) {
                                            case 'products_carousel':
                                                $output = ri_get_template_part('product-layout/shortcode', 'product-carousel', array('atts' => $atts));
                                                break;
                                            case 'products_grid':
                                                $output = ri_get_template_part('product-layout/shortcode', 'product-grid', array('atts' => $atts));
                                                break;
                                            case 'products_list':
                                                $output = ri_get_template_part('product-layout/shortcode', 'product-list', array('atts' => $atts));
                                                break;
                                            default:
                                                $output = ri_get_template_part('product-layout/shortcode', 'product-list', array('atts' => $atts));
                                                break;
                                        }
                                    ?>
                    </div>
                    <?php $count++;
                    ?>
                <?php } ?>
            </div>
        </div>
        <?php
        $output = ob_get_contents();
        ob_end_clean();
        return $output;
    }
}

add_shortcode('rit_tabsproduct', 'rit_shortcode_tabsproduct');

add_action('vc_before_init', 'rit_tabsproduct_integrate_vc');

if (!function_exists('rit_tabsproduct_integrate_vc')) {
    function rit_tabsproduct_integrate_vc()
    {
        $show_tab = array(
            array('latest', __('Latest Products', RIT_TEXT_DOMAIN)),
            array('featured', __('Featured Products', RIT_TEXT_DOMAIN )),
            array('best-selling', __('Best Selling Products', RIT_TEXT_DOMAIN )),
            array('toprate', __('TopRated Products', RIT_TEXT_DOMAIN )),
            array('onsale', __('Special Products', RIT_TEXT_DOMAIN ))
        );
        vc_map(
            array(
                'name' => __('RIT Tabs Products', RIT_TEXT_DOMAIN),
                'base' => 'rit_tabsproduct',
                'icon' => 'icon-rit',
                'category' => __('RIT', RIT_TEXT_DOMAIN),
                'description' => __('Show multiple tabs products .', RIT_TEXT_DOMAIN),
                'params' => array(
                    array(
                        'type' => 'dropdown',
                        'heading' => __('Title align', RIT_TEXT_DOMAIN),
                        'value' => array(
                            __('Center', RIT_TEXT_DOMAIN) => 'center',
                            __('Left', RIT_TEXT_DOMAIN) => 'left',
                            __('Right', RIT_TEXT_DOMAIN) => 'right',
                            __('Hidden', RIT_TEXT_DOMAIN) => 'hidden'
                        ),
                        'param_name' => 'title_align',
                    ),
                    array(
                        'type' => 'sorted_list',
                        'heading' => __('Show Tab', RIT_TEXT_DOMAIN),
                        'param_name' => 'list_type',
                        'description' => __('Control teasers look. Enable blocks and place them in desired order.', RIT_TEXT_DOMAIN),
                        'value' => 'latest,featured,toprate',
                        'options' => $show_tab
                    ),
                    array(
                        'type' => 'rit_product_categories',
                        'heading' => __( 'Category',RIT_TEXT_DOMAIN ),
                        'param_name' => 'category',
                        'description' => __( 'Product category list',RIT_TEXT_DOMAIN),
                    ),
                    array(
                        'type' => 'dropdown',
                        'heading' => __('Select type', RIT_TEXT_DOMAIN),
                        'value' => array(
                            __('Carousel', RIT_TEXT_DOMAIN)    => 'products_carousel',
                            __('Grid', RIT_TEXT_DOMAIN)        => 'products_grid',
                            __('List', RIT_TEXT_DOMAIN)        => 'products_list'
                        ),
                        'param_name' => 'products_types',
                    ),
                    array(
                        'type' => 'checkbox',
                        'heading' => __("Pagination Carousel:", RIT_TEXT_DOMAIN),
                        'param_name' => 'carousel_style',
                        'value' => array(
                            __('Yes', RIT_TEXT_DOMAIN) => 'true')
                    ),
                    array(
                        'type' => 'dropdown',
                        'heading' => __('Column count', RIT_TEXT_DOMAIN),
                        'value' => array(
                            __('1 Columns', RIT_TEXT_DOMAIN) => 'col-md-12 col-sm-12',
                            __('2 Columns', RIT_TEXT_DOMAIN) => 'col-md-6 col-sm-6',
                            __('3 Columns', RIT_TEXT_DOMAIN) => 'col-md-4 col-sm-6',
                            __('4 Columns', RIT_TEXT_DOMAIN) => 'col-md-3 col-sm-6',
                            __('6 Columns', RIT_TEXT_DOMAIN) => 'col-md-2 col-sm-4'
                        ),
                        'std' => 'col-md-3 col-sm-6',
                        'param_name' => 'column',
                    ),
                    array(
                        'type' => 'textfield',
                        'heading' => __('Number of Post', RIT_TEXT_DOMAIN),
                        'value' => 6,
                        'param_name' => 'posts_per_page',
                    ),

                    array(
                        'type' => 'textfield',
                        'heading' => __('Custom Class', RIT_TEXT_DOMAIN),
                        'value' => '',
                        'param_name' => 'element_custom_class',
                        'description' => __('You can use the custom CSS class for this module', RIT_TEXT_DOMAIN),
                    ),
                    array(
                        'type' => 'textfield',
                        'heading' => __('Bottom padding for the module', RIT_TEXT_DOMAIN),
                        'value' => '35px',
                        'param_name' => 'padding_bottom_module',
                    )
                )
            )
        );
    }
}