Current Path : /storage/v11800/affypharma/public_html/wp-content/plugins/auxin-elements/includes/elements/ |
Linux v11800 5.3.0-1023-aws #25~18.04.1-Ubuntu SMP Fri Jun 5 15:19:18 UTC 2020 aarch64
|
Current File : /storage/v11800/affypharma/public_html/wp-content/plugins/auxin-elements/includes/elements/recent-products.php |
<?php
/**
* Woocommerce Recent Products Element
*
*
* @package Auxin
* @license LICENSE.txt
* @author averta
* @link http://phlox.pro/
* @copyright (c) 2010-2024 averta
*/
function auxin_get_the_recent_products_master_array( $master_array ) {
$master_array['aux_recent_product'] = array(
'name' => __("Recent Products", 'auxin-elements' ),
'auxin_output_callback' => 'auxin_widget_the_recent_products_callback',
'base' => 'aux_recent_product',
'description' => __("a Widget for Display Your Store's Products", 'auxin-elements' ),
'class' => 'aux-widget-recent-products',
'show_settings_on_create' => true,
'weight' => 1,
'category' => THEME_NAME,
'is_widget' => true,
'is_shortcode' => true,
'group' => '',
'admin_enqueue_js' => '',
'admin_enqueue_css' => '',
'front_enqueue_js' => '',
'front_enqueue_css' => '',
'icon' => 'aux-element aux-pb-icons-grid',
'custom_markup' => '',
'js_view' => '',
'html_template' => '',
'deprecated' => '',
'content_element' => '',
'as_parent' => '',
'as_child' => '',
'params' => array(
array(
'heading' => __('Title','auxin-elements' ),
'description' => __('Recent products title, leave it empty if you don`t need title.', 'auxin-elements'),
'param_name' => 'title',
'type' => 'textfield',
'value' => '',
'holder' => 'textfield',
'class' => 'title',
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => '',
'edit_field_class' => ''
),
array(
'heading' => __('Subtitle','auxin-elements' ),
'description' => __('Recent products subtitle, leave it empty if you don`t need title.', 'auxin-elements'),
'param_name' => 'subtitle',
'type' => 'textfield',
'value' => '',
'holder' => 'textfield',
'class' => 'title',
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => '',
'edit_field_class' => ''
),
array(
'heading' => __('Categories', 'auxin-elements'),
'description' => __('Specifies a category that you want to show posts from it.', 'auxin-elements' ),
'param_name' => 'cat',
'type' => 'aux_taxonomy',
'taxonomy' => 'product_cat',
'def_value' => ' ',
'holder' => '',
'class' => 'cat',
'value' => ' ', // should use the taxonomy name
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => 'Query',
'edit_field_class' => ''
),
array(
'heading' => __('Image aspect ratio', 'auxin-elements'),
'description' => '',
'param_name' => 'image_aspect_ratio',
'type' => 'dropdown',
'def_value' => '0.75',
'holder' => '',
'class' => 'order',
'value' =>array (
'0.75' => __('Horizontal 4:3' , 'auxin-elements'),
'0.56' => __('Horizontal 16:9', 'auxin-elements'),
'1.00' => __('Square 1:1' , 'auxin-elements'),
'1.33' => __('Vertical 3:4' , 'auxin-elements'),
'1.5' => __('Vertical 10:15' , 'auxin-elements'),
),
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => '',
'edit_field_class' => ''
),
array(
'heading' => __('Exclude posts without media','auxin-elements' ),
'description' => '',
'param_name' => 'exclude_without_media',
'type' => 'aux_switch',
'value' => '0',
'class' => '',
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => 'Query',
'edit_field_class' => ''
),
array(
'heading' => __('Order by', 'auxin-elements'),
'description' => '',
'param_name' => 'order_by',
'type' => 'dropdown',
'def_value' => 'date',
'holder' => '',
'class' => 'order_by',
'value' => array (
'date' => __('Date', 'auxin-elements'),
'menu_order date' => __('Menu Order', 'auxin-elements'),
'title' => __('Title', 'auxin-elements'),
'ID' => __('ID', 'auxin-elements'),
'rand' => __('Random', 'auxin-elements'),
'comment_count' => __('Comments', 'auxin-elements'),
'modified' => __('Date Modified', 'auxin-elements'),
'author' => __('Author', 'auxin-elements'),
'post__in' => __('Inserted Post IDs', 'auxin-elements')
),
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => 'Query',
'edit_field_class' => ''
),
array(
'heading' => __('Order', 'auxin-elements'),
'description' => '',
'param_name' => 'order',
'type' => 'dropdown',
'def_value' => 'DESC',
'holder' => '',
'class' => 'order',
'value' =>array (
'DESC' => __('Descending', 'auxin-elements'),
'ASC' => __('Ascending', 'auxin-elements'),
),
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => 'Query',
'edit_field_class' => ''
),
array(
'heading' => __('Only products','auxin-elements' ),
'description' => __('If you intend to display ONLY specific products, you should specify the products here. You have to insert the Products IDs that are separated by comma (eg. 53,34,87,25).', 'auxin-elements' ),
'param_name' => 'only_products__in',
'type' => 'textfield',
'value' => '',
'holder' => '',
'class' => '',
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => 'Query',
'edit_field_class' => ''
),
array(
'heading' => __('Include products','auxin-elements' ),
'description' => __('If you intend to include additional products, you should specify the products here. You have to insert the Products IDs that are separated by comma (eg. 53,34,87,25)', 'auxin-elements' ),
'param_name' => 'include',
'type' => 'textfield',
'value' => '',
'holder' => '',
'class' => '',
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => 'Query',
'edit_field_class' => ''
),
array(
'heading' => __('Exclude products','auxin-elements' ),
'description' => __('If you intend to exclude specific products from result, you should specify the products here. You have to insert the Products IDs that are separated by comma (eg. 53,34,87,25)', 'auxin-elements' ),
'param_name' => 'exclude',
'type' => 'textfield',
'value' => '',
'holder' => '',
'class' => '',
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => 'Query',
'edit_field_class' => ''
),
array(
'heading' => __('Start offset','auxin-elements' ),
'description' => __('Number of products to displace or pass over.', 'auxin-elements' ),
'param_name' => 'offset',
'type' => 'textfield',
'value' => '',
'holder' => '',
'class' => '',
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => 'Query',
'edit_field_class' => ''
),
array(
'heading' => __('Display products price', 'auxin-elements' ),
'param_name' => 'display_price',
'type' => 'aux_switch',
'def_value' => '',
'value' => '1',
'holder' => '',
'class' => 'display_price',
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => '',
'edit_field_class' => ''
),
array(
'heading' => __('Display sale badge', 'auxin-elements' ),
'param_name' => 'display_sale_badge',
'type' => 'aux_switch',
'def_value' => '',
'value' => '1',
'holder' => '',
'class' => 'display_sale_badge',
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => '',
'edit_field_class' => ''
),
array(
'heading' => __('Display product title','auxin-elements' ),
'description' => '',
'param_name' => 'display_title',
'type' => 'aux_switch',
'value' => '1',
'class' => 'display_title',
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => '',
'edit_field_class' => ''
),
array(
'heading' => __('Display Categories','auxin-elements' ),
'description' => '',
'param_name' => 'display_categories',
'type' => 'aux_switch',
'value' => '1',
'holder' => '',
'class' => 'display_categories',
'admin_label' => false,
'weight' => '',
'group' => '',
'edit_field_class' => ''
),
array(
'heading' => __('Number of columns', 'auxin-elements'),
'description' => '',
'param_name' => 'desktop_cnum',
'type' => 'dropdown',
'def_value' => '4',
'holder' => '',
'class' => 'num',
'value' => array(
'1' => '1', '2' => '2', '3' => '3',
'4' => '4', '5' => '5', '6' => '6'
),
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => 'Layout',
'edit_field_class' => ''
),
array(
'heading' => __('Number of columns in tablet size', 'auxin-elements'),
'description' => '',
'param_name' => 'tablet_cnum',
'type' => 'dropdown',
'def_value' => 'inherit',
'holder' => '',
'class' => 'num',
'value' => array(
'inherit' => 'Inherited from larger',
'1' => '1', '2' => '2', '3' => '3',
'4' => '4', '5' => '5', '6' => '6'
),
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => 'Layout',
'edit_field_class' => ''
),
array(
'heading' => __('Number of columns in phone size', 'auxin-elements'),
'description' => '',
'param_name' => 'phone_cnum',
'type' => 'dropdown',
'def_value' => '1',
'holder' => '',
'class' => 'num',
'value' => array(
'1' => '1', '2' => '2', '3' => '3'
),
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => 'Layout',
'edit_field_class' => ''
),
// array(
// 'heading' => __('Content layout', 'auxin-elements'),
// 'description' => __('Specifies the style of content for each post column.', 'auxin-elements' ),
// 'param_name' => 'content_layout',
// 'type' => 'dropdown',
// 'def_value' => 'default',
// 'holder' => '',
// 'class' => 'content_layout',
// 'value' =>array (
// 'default' => __('Full Content', 'auxin-elements'),
// 'entry-boxed' => __('Boxed Content', 'auxin-elements')
// ),
// 'admin_label' => false,
// 'dependency' => '',
// 'weight' => '',
// 'group' => '',
// 'edit_field_class' => ''
// ),
array(
'heading' => __('Extra class name','auxin-elements' ),
'description' => __('If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.', 'auxin-elements' ),
'param_name' => 'extra_classes',
'type' => 'textfield',
'value' => '',
'def_value' => '',
'holder' => '',
'class' => 'extra_classes',
'admin_label' => false,
'dependency' => '',
'weight' => '',
'group' => '',
'edit_field_class' => ''
)
)
);
return $master_array;
}
add_filter( 'auxin_master_array_shortcodes', 'auxin_get_the_recent_products_master_array', 10, 1 );
function auxin_widget_the_recent_products_callback( $atts, $shortcode_content = null ){
// Defining default attributes
$default_atts = array(
'title' => '', // header title (required)
'subtitle' => '', // header subtitle
'cat' => ' ',
'num' => '8', // max generated entry
'only_products__in' => '', // display only these post IDs. array or string comma separated
'include' => '', // include these post IDs in result too. array or string comma separated
'exclude' => '', // exclude these post IDs from result. array or string comma separated
'offset' => '',
'paged' => 1,
'post_type' => 'product',
'taxonomy_name' => 'product_cat', // the taxonomy that we intent to display in post info
'tax_args' => '',
'order_by' => 'date',
'order' => 'DESC',
'exclude_without_media' => 0,
'display_title' => true,
'show_media' => true,
'display_categories' => true,
'display_button' => true,
'preloadable' => false,
'preload_preview' => true,
'preload_bgcolor' => '',
// 'content_layout' => '', // entry-boxed
'image_aspect_ratio' => 0.75,
'desktop_cnum' => 4,
'tablet_cnum' => 'inherit',
'phone_cnum' => '1',
'display_price' => true,
'display_sale_badge' => true,
'extra_classes' => '',
'template_part_file' => 'recent-products',
'extra_template_path' => AUXELS_PUB_DIR . '/templates/woocommerce',
'universal_id' => '',
'use_wp_query' => false, // true to use the global wp_query, false to use internal custom query
'reset_query' => true,
'wp_query_args' => array(), // additional wp_query args
'custom_wp_query' => '',
'base' => 'aux_recent_products',
'base_class' => 'aux-widget-recent-products',
'show_pagination' => ''
);
$result = auxin_get_widget_scafold( $atts, $default_atts, $shortcode_content );
extract( $result['parsed_atts'] );
$acceptedTemplateFiles = apply_filters( 'auxin_recent_products_accepted_template_files', [
'recent-products',
]);
if ( ! in_array( $template_part_file, $acceptedTemplateFiles ) ) {
return;
}
// get content width
global $aux_content_width;
ob_start();
if( empty( $cat ) || $cat == " " || ( is_array( $cat ) && in_array( " ", $cat ) ) ) {
$tax_args = array();
} else {
$tax_args = array(
array(
'taxonomy' => $taxonomy_name,
'field' => 'term_id',
'terms' => ! is_array( $cat ) ? explode( ",", $cat ) : $cat
)
);
}
if( $custom_wp_query ){
$wp_query = $custom_wp_query;
} elseif( ! $use_wp_query ){
// create wp_query to get latest items ---------------------------------
$args = array(
'post_type' => $post_type,
'orderby' => $order_by,
'order' => $order,
'offset' => $offset,
'paged' => $paged,
'tax_query' => $tax_args,
'post_status' => 'publish',
'posts_per_page' => $num,
'ignore_sticky_posts' => 1,
'include_posts__in' => $include, // include posts in this list
'posts__not_in' => $exclude, // exclude posts in this list
'posts__in' => $only_products__in, // only posts in this list
'exclude_without_media' => $exclude_without_media,
);
// ---------------------------------------------------------------------
// add the additional query args if available
if( $wp_query_args ){
$args = wp_parse_args( $wp_query_args, $args );
}
// pass the args through the auxin query parser
$wp_query = new WP_Query( auxin_parse_query_args( $args ) );
} else {
global $wp_query;
}
// widget header ------------------------------
echo wp_kses_post( $result['widget_header'] );
echo wp_kses_post( $result['widget_title'] );
echo '<h4 class="aux-h4 widget-subtitle">' . esc_html( $subtitle ) . '</h4>';
$phone_break_point = 767;
$tablet_break_point = 1025;
$show_comments = true; // shows comments icon
$post_counter = 0;
$column_class = '';
$item_class = '';
$columns_custom_styles = '';
if( ! empty( $loadmore_type ) ) {
$item_class .= ' aux-ajax-item';
}
$column_class .= '';
$item_class .= ' aux-recent-product-item aux-col';
// Specifies whether the columns have footer meta or not
$column_class .= ' aux-recent-products-wrapper aux-row aux-ajax-view aux-de-col' . $desktop_cnum;
$tablet_cnum = ('inherit' == $tablet_cnum ) ? $desktop_cnum : $tablet_cnum ;
$column_class .= ' aux-tb-col'.$tablet_cnum . ' aux-mb-col'.$phone_cnum;
// automatically calculate the media size if was empty
if( empty( $size ) ){
$column_media_width = auxin_get_content_column_width( $desktop_cnum, 15, $content_width );
$size = array( 'width' => $column_media_width, 'height' => $column_media_width * $image_aspect_ratio );
}
if ( !empty( $show_pagination ) ) {
$requiredData = array(
'display_price' => $result['parsed_atts']['display_price'],
'display_sale_badge' => $result['parsed_atts']['display_sale_badge'],
'show_media' => $result['parsed_atts']['show_media'],
'preloadable' => $result['parsed_atts']['preloadable'],
'preload_preview' => $result['parsed_atts']['preload_preview'],
'preload_bgcolor' => $result['parsed_atts']['preload_bgcolor'],
'display_title' => $result['parsed_atts']['display_title'],
'display_categories' => $result['parsed_atts']['display_categories'],
'display_button' => $result['parsed_atts']['display_button'],
'desktop_cnum' => $result['parsed_atts']['desktop_cnum'],
'tablet_cnum' => $result['parsed_atts']['tablet_cnum'],
'phone_cnum' => $result['parsed_atts']['phone_cnum'],
'cat' => $result['parsed_atts']['cat'],
'num' => $result['parsed_atts']['num'],
'exclude_without_media' => $result['parsed_atts']['exclude_without_media'],
'order_by' => $result['parsed_atts']['order_by'],
'order' => $result['parsed_atts']['order'],
'only_products__in' => $result['parsed_atts']['only_products__in'],
'include' => $result['parsed_atts']['include'],
'exclude' => $result['parsed_atts']['exclude'],
'offset' => $result['parsed_atts']['offset'],
'show_pagination' => $result['parsed_atts']['show_pagination'],
'image_aspect_ratio' => $result['parsed_atts']['image_aspect_ratio'],
);
echo '<div class="aux-isotope-animated"><div class="aux-items-loading aux-loading-hide"><div class="aux-loading-loop"><svg class="aux-circle" width="100%" height="100%" viewBox="0 0 42 42"><circle class="aux-stroke-bg" r="20" cx="21" cy="21" fill="none"></circle><circle class="aux-progress" r="20" cx="21" cy="21" fill="none" transform="rotate(-90 21 21)"></circle></svg></div></div></div>';
}
echo '<div class="'. esc_attr( $column_class ) .'" ' . ( !empty( $show_pagination ) ? "data-widget-data='" . auxin_escape_json( $requiredData ) . "'" : '' ) . ">";
$have_posts = $wp_query->have_posts();
if( $have_posts ){
while ( $wp_query->have_posts() ) {
$wp_query->the_post();
$post = get_post();
$post_vars = auxin_get_post_type_media_args(
$post,
array(
'post_type' => $post_type,
'request_from' => 'element',
'media_width' => $phone_break_point,
'media_size' => $size,
'upscale_image' => true,
'image_from_content' => ! $exclude_without_media, // whether to try to get image from content or not
'ignore_media' => ! $show_media,
'add_image_hw' => false, // whether add width and height attr or not
'preloadable' => $preloadable,
'preload_preview' => $preload_preview,
'preload_bgcolor' => $preload_bgcolor,
'image_sizes' => 'auto',
'srcset_sizes' => 'auto'
)
);
extract( $post_vars );
$the_format = get_post_format( $post );
// add specific class to current classes for each column
$post_classes = $has_attach && $show_media ? 'post column-entry' : 'post column-entry no-media';
// Generate the markup by template parts
if( has_action( $base_class . '-template-part' ) ){
do_action( $base_class . '-template-part', $result, $post_vars, $item_class );
} else {
?>
<div <?php wc_product_class( $item_class . ' post-'. $post->ID, $post->ID );?>>
<?php
include auxin_get_template_file( $template_part_file, '', $extra_template_path );
echo '</div>';
}
}
if( ! $skip_wrappers ) {
// End tag for aux-ajax-view wrapper
echo '</div>';
} else {
// Get post counter in the query
echo '<span class="aux-post-count hidden">'. esc_html( $wp_query->post_count ) .'</span>';
echo '<span class="aux-all-posts-count hidden">'. esc_html( $wp_query->found_posts ) .'</span>';
}
if ( !empty( $show_pagination ) ) {
echo auxin_the_paginate_nav( [
'wp_query' => $wp_query,
'current' => $args['paged']
] );
}
}
if( $reset_query ){
wp_reset_postdata();
}
// return false if no result found
if( ! $have_posts ){
ob_get_clean();
return false;
}
// widget custom output -----------------------
// widget footer ------------------------------
echo wp_kses_post( $result['widget_footer'] );
return ob_get_clean();
}
function auxin_ajax_widget_the_recent_products(){
if ( !isset( $_GET['auxinNonce'] ) || !wp_verify_nonce( $_GET['auxinNonce'], 'auxin-security-nonce' ) ) {
die();
}
$args = !empty($_GET['data']) ? auxin_sanitize_input( $_GET['data'] ) : [];
$args['paged'] = !empty($_GET['paged']) ? sanitize_text_field( $_GET['paged'] ) : $args['paged'];
echo auxin_widget_the_recent_products_callback( $args );
die();
}
add_action( 'wp_ajax_aux_the_recent_products', 'auxin_ajax_widget_the_recent_products' );
add_action( 'wp_ajax_nopriv_aux_the_recent_products', 'auxin_ajax_widget_the_recent_products');