%PDF- %PDF-
Direktori : /proc/self/root/home/infra/new-ong/bethemeold/functions/builder/ |
Current File : //proc/self/root/home/infra/new-ong/bethemeold/functions/builder/class-mfn-builder-woo-helper.php |
<?php if( ! defined( 'ABSPATH' ) ){ exit; // Exit if accessed directly } class Mfn_Builder_Woo_Helper { public static function get_woo_cat_image($attr, $cat){ $output = ''; if($attr['image'] == 1){ $thumbnail_id = get_term_meta( $cat->term_id, 'thumbnail_id', true ); if(isset($thumbnail_id) && !empty($thumbnail_id)){ $output .= wp_get_attachment_image( $thumbnail_id, 'shop_catalog', false, array('class'=>'scale-with-grid' ) ); }else{ $output .= wc_placeholder_img(); } } return $output; } public static function get_woo_cat_title($attr, $cat){ $output = ''; if($attr['title'] == 1){ $output .= '<'.$attr['title_tag'].' class="woocommerce-loop-category__title">'.$cat->name; if(isset($attr['count']) && $attr['count'] == 1){ $output .= '<mark class="count">('.$cat->count.')</mark>'; } $output .= '</'.$attr['title_tag'].'>'; } return $output; } public static function get_woo_product_title($product, $attr = false){ remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10); $output = '<div class="mfn-li-product-row mfn-li-product-row-title">'; ob_start(); do_action('woocommerce_before_shop_loop_item_title'); $output .= ob_get_clean(); $output .= '<'.$attr['title_tag'].' class="title"><a href="'.get_permalink($product->get_id()).'">'.get_the_title($product->get_id()).'</a></'.$attr['title_tag'].'>'; if ( wc_review_ratings_enabled() ) { $output .= wc_get_rating_html( $product->get_average_rating() ); } $output .= '</div>'; if( has_action('woocommerce_after_shop_loop_item_title') ){ ob_start(); echo '<div class="mfn-after-shop-loop-item-title">'; do_action('woocommerce_after_shop_loop_item_title'); echo '</div>'; $output .= ob_get_clean(); } return $output; } public static function sample_item($type){ $post = false; $posts = get_posts( array('post_type' => $type, 'numberposts' => 1, 'orderby' => 'ID', 'order' => 'ASC' ) ); if( isset($posts[0]) && count($posts) > 0 ){ $post = $posts[0]; } return $post; } public static function get_woo_product_image($product, $attr = false){ $wishlist_position = mfn_opts_get('shop-wishlist-position'); $is_translatable = mfn_opts_get('translate'); $translate['translate-add-to-cart'] = $is_translatable ? mfn_opts_get('translate-add-to-cart', 'Add to cart') : __('Add to cart', 'woocommerce'); $translate['translate-view-product'] = $is_translatable ? mfn_opts_get('translate-view-product', 'View product') : __('View product', 'woocommerce'); $translate['translate-add-to-wishlist'] = $is_translatable ? mfn_opts_get('translate-add-to-wishlist', 'Add to wishlist') : __('Add to wishlist', 'betheme'); // ! betheme $translate['translate-if-preview'] = $is_translatable ? mfn_opts_get('translate-if-preview', 'Preview') : __('Preview', 'woocommerce'); // output ----- $output = '<div class="mfn-li-product-row mfn-li-product-row-image">'; $shop_images = mfn_opts_get( 'shop-images' ); if( 'plugin' == $shop_images ){ $output .= '<a href="'. apply_filters( 'the_permalink', get_permalink($product->get_id()) ) .'" class="product-loop-thumb">'; remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10); ob_start(); do_action( 'woocommerce_before_shop_loop_item_title' ); $output .= ob_get_clean(); $output .= '</a>'; } else { $output .= '<div class="image_frame scale-with-grid product-loop-thumb">'; if( mfn_opts_get('shop-wishlist') && isset($wishlist_position[1]) ){ $output .= '<span data-position="left" data-id="'.$product->get_id().'" class="mfn-wish-button mfn-abs-top"><svg width="26" viewBox="0 0 26 26"><defs><style>.path{fill:none;stroke:#333;stroke-width:1.5px;}</style></defs><path class="path" d="M16.7,6a3.78,3.78,0,0,0-2.3.8A5.26,5.26,0,0,0,13,8.5a5,5,0,0,0-1.4-1.6A3.52,3.52,0,0,0,9.3,6a4.33,4.33,0,0,0-4.2,4.6c0,2.8,2.3,4.7,5.7,7.7.6.5,1.2,1.1,1.9,1.7H13a.37.37,0,0,0,.3-.1c.7-.6,1.3-1.2,1.9-1.7,3.4-2.9,5.7-4.8,5.7-7.7A4.3,4.3,0,0,0,16.7,6Z"></path></svg></span>'; } ob_start(); wc_get_template( 'single-product/sale-flash.php'); do_action('mfn_product_image'); $output .= ob_get_clean(); // secondary image on hover $secondary_image_id = false; if( 'secondary' == $shop_images ){ if( $attachment_ids = $product->get_gallery_image_ids() ) { if( isset( $attachment_ids['0'] ) ){ $secondary_image_id = $attachment_ids['0']; } } } $output .= '<div class="image_wrapper '. ( $secondary_image_id ? 'hover-secondary-image' : '' ) .'">'; $output .= '<a href="'. apply_filters( 'the_permalink', get_permalink($product->get_id()) ) .'" tabindex="-1">'; $output .= '<div class="mask"></div>'; $output .= woocommerce_get_product_thumbnail(); if( $secondary_image_id ){ $output .= wp_get_attachment_image( $secondary_image_id, 'shop_catalog', '', $attr = array( 'class' => 'image-secondary scale-with-grid' ) ); } $output .= '</a>'; $output .= '<div class="image_links">'; if( $product->is_in_stock() && (! mfn_opts_get('shop-catalogue')) && (! in_array($product->get_type(), array('external', 'grouped', 'variable'))) ){ if( mfn_opts_get('image-frame-style') == 'modern-overlay' ){ if( $product->supports( 'ajax_add_to_cart' ) ){ $output .= '<a rel="nofollow" tabindex="-1" data-tooltip="'. esc_html($translate['translate-add-to-cart']) .'" data-position="left" href="'. apply_filters('add_to_cart_url', esc_url($product->add_to_cart_url())) .'" data-quantity="1" data-product_id="'. esc_attr($product->get_id()) .'" class="add_to_cart_button ajax_add_to_cart product_type_simple tooltip tooltip-txt"><svg viewBox="0 0 26 26"><defs><style>.path{fill:none;stroke:#333;stroke-miterlimit:10;stroke-width:1.5px;}</style></defs><polygon class="path" points="20.4 20.4 5.6 20.4 6.83 10.53 19.17 10.53 20.4 20.4"></polygon><path class="path" d="M9.3,10.53V9.3a3.7,3.7,0,1,1,7.4,0v1.23"></path></svg></a>'; } else { $output .= '<a rel="nofollow" tabindex="-1" data-tooltip="'. esc_html($translate['translate-add-to-cart']) .'" data-position="left" href="'. apply_filters('add_to_cart_url', esc_url($product->add_to_cart_url())) .'" data-quantity="1" data-product_id="'. esc_attr($product->get_id()) .'" class="add_to_cart_button product_type_simple tooltip tooltip-txt"><svg viewBox="0 0 26 26"><defs><style>.path{fill:none;stroke:#333;stroke-miterlimit:10;stroke-width:1.5px;}</style></defs><polygon class="path" points="20.4 20.4 5.6 20.4 6.83 10.53 19.17 10.53 20.4 20.4"></polygon><path class="path" d="M9.3,10.53V9.3a3.7,3.7,0,1,1,7.4,0v1.23"></path></svg></a>'; } }else{ if( $product->supports( 'ajax_add_to_cart' ) ){ $output .= '<a rel="nofollow" tabindex="-1" href="'. apply_filters('add_to_cart_url', esc_url($product->add_to_cart_url())) .'" data-quantity="1" data-product_id="'. esc_attr($product->get_id()) .'" class="add_to_cart_button ajax_add_to_cart product_type_simple"><svg viewBox="0 0 26 26"><defs><style>.path{fill:none;stroke:#333;stroke-miterlimit:10;stroke-width:1.5px;}</style></defs><polygon class="path" points="20.4 20.4 5.6 20.4 6.83 10.53 19.17 10.53 20.4 20.4"></polygon><path class="path" d="M9.3,10.53V9.3a3.7,3.7,0,1,1,7.4,0v1.23"></path></svg></a>'; } else { $output .= '<a rel="nofollow" tabindex="-1" href="'. apply_filters('add_to_cart_url', esc_url($product->add_to_cart_url())) .'" data-quantity="1" data-product_id="'. esc_attr($product->get_id()) .'" class="add_to_cart_button product_type_simple"><svg viewBox="0 0 26 26"><defs><style>.path{fill:none;stroke:#333;stroke-miterlimit:10;stroke-width:1.5px;}</style></defs><polygon class="path" points="20.4 20.4 5.6 20.4 6.83 10.53 19.17 10.53 20.4 20.4"></polygon><path class="path" d="M9.3,10.53V9.3a3.7,3.7,0,1,1,7.4,0v1.23"></path></svg></a>'; } } } if( mfn_opts_get('image-frame-style') == 'modern-overlay' ){ $output .= '<a class="link tooltip tooltip-txt" data-tooltip="'. esc_html($translate['translate-view-product']) .'" data-position="left" href="'. apply_filters('the_permalink', get_permalink($product->get_id())) .'"><svg viewBox="0 0 26 26"><defs><style>.path{fill:none;stroke:#333;stroke-miterlimit:10;stroke-width:1.5px;}</style></defs><g><path d="M10.17,8.76l2.12-2.12a5,5,0,0,1,7.07,0h0a5,5,0,0,1,0,7.07l-2.12,2.12" class="path"/><path d="M15.83,17.24l-2.12,2.12a5,5,0,0,1-7.07,0h0a5,5,0,0,1,0-7.07l2.12-2.12" class="path"/><line x1="10.17" y1="15.83" x2="15.83" y2="10.17" class="path"/></g></svg></a>'; }else{ $output .= '<a class="link" tabindex="-1" href="'. apply_filters('the_permalink', get_permalink($product->get_id())) .'"><svg viewBox="0 0 26 26"><defs><style>.path{fill:none;stroke:#333;stroke-miterlimit:10;stroke-width:1.5px;}</style></defs><g><path d="M10.17,8.76l2.12-2.12a5,5,0,0,1,7.07,0h0a5,5,0,0,1,0,7.07l-2.12,2.12" class="path"/><path d="M15.83,17.24l-2.12,2.12a5,5,0,0,1-7.07,0h0a5,5,0,0,1,0-7.07l2.12-2.12" class="path"/><line x1="10.17" y1="15.83" x2="15.83" y2="10.17" class="path"/></g></svg></a>'; } if( mfn_opts_get('shop-wishlist') && isset($wishlist_position[2]) ){ if( mfn_opts_get('image-frame-style') == 'modern-overlay' ){ $output .= '<a href="#" tabindex="-1" data-tooltip="'. $translate['translate-add-to-wishlist'] .'" data-position="left" data-id="'.$product->get_id().'" class="mfn-wish-button tooltip tooltip-txt link"><svg width="26" viewBox="0 0 26 26"><defs><style>.path{fill:none;stroke:#333;stroke-width:1.5px;}</style></defs><path class="path" d="M16.7,6a3.78,3.78,0,0,0-2.3.8A5.26,5.26,0,0,0,13,8.5a5,5,0,0,0-1.4-1.6A3.52,3.52,0,0,0,9.3,6a4.33,4.33,0,0,0-4.2,4.6c0,2.8,2.3,4.7,5.7,7.7.6.5,1.2,1.1,1.9,1.7H13a.37.37,0,0,0,.3-.1c.7-.6,1.3-1.2,1.9-1.7,3.4-2.9,5.7-4.8,5.7-7.7A4.3,4.3,0,0,0,16.7,6Z"></path></svg></a>'; }else{ $output .= '<a href="#" tabindex="-1" data-id="'.$product->get_id().'" class="mfn-wish-button link"><svg width="26" viewBox="0 0 26 26"><defs><style>.path{fill:none;stroke:#333;stroke-width:1.5px;}</style></defs><path class="path" d="M16.7,6a3.78,3.78,0,0,0-2.3.8A5.26,5.26,0,0,0,13,8.5a5,5,0,0,0-1.4-1.6A3.52,3.52,0,0,0,9.3,6a4.33,4.33,0,0,0-4.2,4.6c0,2.8,2.3,4.7,5.7,7.7.6.5,1.2,1.1,1.9,1.7H13a.37.37,0,0,0,.3-.1c.7-.6,1.3-1.2,1.9-1.7,3.4-2.9,5.7-4.8,5.7-7.7A4.3,4.3,0,0,0,16.7,6Z"></path></svg></a>'; } } if(mfn_opts_get('shop-quick-view') == 1){ if( mfn_opts_get('image-frame-style') == 'modern-overlay' ){ $output .= '<a href="#" tabindex="-1" data-tooltip="'. esc_html($translate['translate-if-preview']) .'" data-position="left" data-id="'.$product->get_id().'" data-id="'.$product->get_id().'" class="mfn-quick-view tooltip tooltip-txt"><svg viewBox="0 0 26 26"><defs><style>.path{fill:none;stroke:#333;stroke-miterlimit:10;stroke-width:1.5px;}</style></defs><line x1="7" y1="7" x2="11.29" y2="11.29" class="path"/><line x1="14.62" y1="14.62" x2="18.91" y2="18.91" class="path"/><polyline points="7 15.57 7 19 10.43 19" class="path"/><polyline points="15.57 19 19 19 19 15.57" class="path"/><polyline points="10.43 7 7 7 7 10.43" class="path"/><polyline points="19 10.43 19 7 15.57 7" class="path"/><line x1="14.71" y1="11.29" x2="19" y2="7" class="path"/><line x1="7" y1="19" x2="11.29" y2="14.71" class="path"/></svg></a>'; }else{ $output .= '<a href="#" tabindex="-1" data-id="'.$product->get_id().'" data-id="'.$product->get_id().'" class="mfn-quick-view"><svg viewBox="0 0 26 26"><defs><style>.path{fill:none;stroke:#333;stroke-miterlimit:10;stroke-width:1.5px;}</style></defs><line x1="7" y1="7" x2="11.29" y2="11.29" class="path"/><line x1="14.62" y1="14.62" x2="18.91" y2="18.91" class="path"/><polyline points="7 15.57 7 19 10.43 19" class="path"/><polyline points="15.57 19 19 19 19 15.57" class="path"/><polyline points="10.43 7 7 7 7 10.43" class="path"/><polyline points="19 10.43 19 7 15.57 7" class="path"/><line x1="14.71" y1="11.29" x2="19" y2="7" class="path"/><line x1="7" y1="19" x2="11.29" y2="14.71" class="path"/></svg></a>'; } } $output .= '</div>'; $output .= '</div>'; if( ! $product->is_in_stock() && $soldout = mfn_opts_get( 'shop-soldout' ) ){ $output .= '<span class="soldout"><h4>'. $soldout .'</h4></span>'; } $output .= '<a href="'. apply_filters( 'the_permalink', get_permalink($product->get_id()) ) .'" tabindex="-1"><span class="product-loading-icon added-cart"></span></a>'; $output .= '</div>'; } $output .= '</div>'; return $output; } public static function get_woo_product_price($product, $attr = false){ /*ob_start(); mfn_display_custom_attributes($product->get_id()); $output = ob_get_clean();*/ $output = ''; if( !empty($product->get_price_html()) ){ $output .= '<div class="mfn-li-product-row mfn-li-product-row-price">'; $output .= '<p class="price">'.$product->get_price_html().'</p>'; $output .= '</div>'; } return $output; } public static function get_woo_product_description($product, $attr = false){ $output = ''; if( get_the_excerpt($product->get_id()) && !empty($attr['description']) ){ $output .= '<div class="mfn-li-product-row mfn-li-product-row-description excerpt-'. ( !empty($attr['description']) ? $attr['description'] : 'unset') .'">'; $output .= '<p class="excerpt">'. do_shortcode( get_the_excerpt($product->get_id()) ) .'</p>'; $output .= '</div>'; } return $output; } public static function get_woo_product_button($product, $attr = false){ $classes = ''; if( $attr && (empty($attr['button']) || $attr['button'] == 0) ) return; $product->is_purchasable() ? $classes .= 'add_to_cart_button' : null; $product->supports( 'ajax_add_to_cart' ) ? $classes .= ' ajax_add_to_cart' : null; $output = '<div class="mfn-li-product-row mfn-li-product-row-button button-'. ( !empty($attr['button']) ? $attr['button'] : 'unset') .'">'; $output .= apply_filters( 'woocommerce_loop_add_to_cart_link', sprintf( '<a href="%s" rel="nofollow" data-product_id="%s" data-product_sku="%s" class="button %s product_type_%s">%s</a>', esc_url( $product->add_to_cart_url() ), esc_attr( $product->get_id() ), esc_attr( $product->get_sku() ), $classes, esc_attr( $product->get_type() ), esc_html( $product->add_to_cart_text() ) ), $product ); $wishlist = mfn_opts_get('shop-wishlist'); $wishlist_position = mfn_opts_get('shop-wishlist-position'); if( $wishlist && isset($wishlist_position[0]) && is_array($wishlist_position) && in_array(0, $wishlist_position)){ $output .= '<a href="#" data-id="'.$product->get_id().'" class="mfn-wish-button"><svg width="26" viewBox="0 0 26 26"><defs><style>.path{fill:none;stroke:#333;stroke-width:1.5px;}</style></defs><path class="path" d="M16.7,6a3.78,3.78,0,0,0-2.3.8A5.26,5.26,0,0,0,13,8.5a5,5,0,0,0-1.4-1.6A3.52,3.52,0,0,0,9.3,6a4.33,4.33,0,0,0-4.2,4.6c0,2.8,2.3,4.7,5.7,7.7.6.5,1.2,1.1,1.9,1.7H13a.37.37,0,0,0,.3-.1c.7-.6,1.3-1.2,1.9-1.7,3.4-2.9,5.7-4.8,5.7-7.7A4.3,4.3,0,0,0,16.7,6Z"></path></svg></a>'; } $output .= '</div>'; return $output; } public static function sample_products_loop($attr) { $sl_arr = array( 'post_type' => 'product', 'post_status' => 'publish', 'posts_per_page' => !empty($attr['products']) ? $attr['products'] : 8, ); if( get_option('woocommerce_hide_out_of_stock_items') && get_option('woocommerce_hide_out_of_stock_items') == 'yes' ) { $sl_arr['meta_query'] = array( array( 'key' => '_stock_status', 'value' => 'instock' ), ); } if( !empty($attr['ordering']) ){ switch ($attr['ordering']) { case 'price': $sl_arr['meta_key'] = '_price'; $sl_arr['orderby'] = 'meta_value_num'; $sl_arr['order'] = 'ASC'; break; case 'price-desc': $sl_arr['meta_key'] = '_price'; $sl_arr['orderby'] = 'meta_value_num'; $sl_arr['order'] = 'DESC'; break; case 'date': $sl_arr['orderby'] = 'post_date'; $sl_arr['order'] = 'DESC'; break; case 'popularity': $sl_arr['meta_key'] = 'total_sales'; $sl_arr['orderby'] = 'meta_value_num'; $sl_arr['order'] = 'DESC'; break; case 'rating': $sl_arr['meta_key'] = '_wc_average_rating'; $sl_arr['orderby'] = 'meta_value_num'; $sl_arr['order'] = 'DESC'; break; default: $sl_arr['orderby'] = 'menu_order'; $sl_arr['order'] = 'ASC'; break; } } $sample_loop = new WP_Query( $sl_arr ); return $sample_loop; } public static function productslist($product, $attr, $classes) { $order = str_replace(' ', '', $attr['order']); $order_arr = explode(',', $order); // if ( empty( $product ) || ! $product->is_visible() ) return; $output = '<li class="mfn-product-li-item '.implode(' ', wc_get_product_class( $classes, $product )).'">'; ob_start(); echo '<div class="mfn-before-shop-loop-item">'; do_action('woocommerce_before_shop_loop_item'); echo '</div>'; $output .= ob_get_clean(); if( isset($order_arr) && is_iterable($order_arr) ) { foreach( $order_arr as $el ) { if( ! isset( $attr[$el] ) || ( isset($attr[$el] ) && $attr[$el] ) ) { $fun_name = 'get_woo_product_'.$el; if( method_exists('Mfn_Builder_Woo_Helper', $fun_name) ){ $output .= self::$fun_name($product, $attr); } } } } ob_start(); echo '<div class="mfn-after-shop-loop-item">'; do_action('woocommerce_after_shop_loop_item'); echo '</div>'; $output .= ob_get_clean(); $output .= '</li>'; return $output; } public static function getDiscount($product) { $percent = 0; if( $product->is_type('variable') ){ $percentages = array(); $prices = $product->get_variation_prices(); foreach( $prices['price'] as $key => $price ){ if( $prices['regular_price'][$key] !== $price ){ $percentages[] = round(100 - ($prices['sale_price'][$key] / $prices['regular_price'][$key] * 100)); } } $percent = round(max($percentages)); }elseif($product->get_regular_price() && $product->get_sale_price()){ $percent = round( (1 - ($product->get_sale_price() / $product->get_regular_price()))*100); } return $percent.'%'; } }