File: /storage/v4513/tepnot/public_html/wp-content/plugins/dokan-pro/includes/Store.php
<?php
namespace WeDevs\DokanPro;
/**
* Dokan Notice Class
*
* @since 2.4.3
*
* @author weDevs <[email protected]>
*/
class Store {
/**
* Load automatically when class initiate
*
* @since 2.4.3
*
* @uses action hook
* @uses filter hook
*/
public function __construct() {
add_action( 'dokan_rewrite_rules_loaded', array( $this, 'load_rewrite_rules' ) );
add_action( 'dokan_store_profile_frame_after', array( $this, 'show_store_coupons' ), 10, 2 );
add_filter( 'dokan_query_var_filter', array( $this, 'load_store_review_query_var' ), 10, 2 );
add_filter( 'dokan_store_tabs', array( $this, 'add_review_tab_in_store' ), 10, 2 );
add_filter( 'template_include', array( $this, 'store_review_template' ), 99 );
// vendor biography
add_action( 'dokan_rewrite_rules_loaded', array( $this, 'load_biography_rewrite_rules' ) );
add_filter( 'dokan_query_var_filter', array( $this, 'load_biography_query_var' ), 10, 2 );
add_filter( 'dokan_store_tabs', array( $this, 'add_vendor_biography_tab' ), 10, 2 );
add_filter( 'template_include', array( $this, 'load_vendor_biography_template' ), 99 );
}
/**
* Load Store Review query vars for store page
*
* @since 2.4.3
*
* @param array $vars
*
* @return array
*/
public function load_store_review_query_var( $vars ) {
$vars[] = 'store_review';
$vars[] = 'support';
$vars[] = 'support-tickets';
$vars[] = 'booking';
return $vars;
}
/**
* Load Rewrite Rules for store page
*
* @since 2.4.3
*
* @param string $custom_store_url
*
* @return void
*/
public function load_rewrite_rules( $custom_store_url ) {
add_rewrite_rule( $custom_store_url . '/([^/]+)/reviews?$', 'index.php?' . $custom_store_url . '=$matches[1]&store_review=true', 'top' );
add_rewrite_rule( $custom_store_url . '/([^/]+)/reviews/page/?([0-9]{1,})/?$', 'index.php?' . $custom_store_url . '=$matches[1]&paged=$matches[2]&store_review=true', 'top' );
}
/**
* Add Review Tab in Store Page
*
* @since 2.4.3
*
* @param array $tabs
* @param integer $store_id
*
* @return array
*/
public function add_review_tab_in_store( $tabs, $store_id ) {
if ( 'yes' === get_option( 'woocommerce_enable_reviews' ) ) {
$tabs['reviews'] = array(
'title' => __( 'Reviews', 'dokan' ),
'url' => dokan_get_review_url( $store_id ),
);
}
return $tabs;
}
/**
* Returns the store review template
*
* @since 2.4.3
*
* @param string $template
*
* @return string
*/
public function store_review_template( $template ) {
if ( ! function_exists( 'WC' ) ) {
return $template;
}
if ( get_query_var( 'store_review' ) ) {
return dokan_locate_template( 'store-reviews.php', '', DOKAN_PRO_DIR . '/templates/', true );
}
return $template;
}
/**
* Get store coupons
*
* @since 3.4.0
*
* @param WP_User $store_user
* @param array $store_info
* @param bool $marketplace
*
* @return string
*/
public function get_store_coupons( $store_user, $store_info, $marketplace = false ) {
$coupons = array();
if ( $marketplace ) {
$seller_coupons = dokan_get_marketplace_seller_coupon( $store_user->ID, true );
} else {
$seller_coupons = dokan_get_seller_coupon( $store_user->ID, true );
}
if ( ! $seller_coupons ) {
return $coupons;
}
// WC 3.0 compatibility
if ( class_exists( 'WC_DateTime' ) ) {
$current_time = new \WC_DateTime();
$current_time = $current_time->getTimestamp();
} else {
$current_time = current_time( 'timestamp' );
}
foreach ( $seller_coupons as $coupon ) {
$wc_coupon = new \WC_Coupon( $coupon->ID );
$expiry_date = dokan_get_prop( $wc_coupon, 'expiry_date', 'get_date_expires' );
$coup_exists = dokan_get_prop( $wc_coupon, 'exists', 'is_valid' );
if ( class_exists( 'WC_DateTime' ) && $expiry_date ) {
$expiry_date = new \WC_DateTime( $expiry_date );
$expiry_date = $expiry_date->getTimestamp();
}
if ( $expiry_date && ( $current_time > $expiry_date ) ) {
continue;
}
$coupon_type = version_compare( WC_VERSION, '2.7', '>' ) ? 'percent' : 'percent_product';
if ( $coupon_type === dokan_get_prop( $wc_coupon, 'type', 'get_discount_type' ) ) {
$coupon_amount_formatted = dokan_get_prop( $wc_coupon, 'amount' ) . '%';
} else {
$coupon_amount_formatted = wc_price( dokan_get_prop( $wc_coupon, 'amount' ) );
}
$description = '';
if ( ! empty( $wc_coupon->get_description() ) ) {
$description = $wc_coupon->get_description();
} elseif ( ! empty( $coupon->post_content ) ) {
$description = $coupon->post_content;
}
$coupons[] = [
'coupon' => $coupon,
'coupon_amount_formatted' => $coupon_amount_formatted,
'coupon_description' => $description,
'expiry_date' => $expiry_date,
'current_time' => $current_time,
];
}
/**
* Store Coupons
*
* @since 2.9.7
*
* @var $array
*/
return apply_filters( 'dokan_pro_store_coupons', $coupons );
}
/**
* Show seller coupons in the store page
*
* @param WP_User $store_user
* @param array $store_info
*
* @since 2.4.12
*
* @return void
*/
public function show_store_coupons( $store_user, $store_info ) {
$vendor_coupons = $this->get_store_coupons( $store_user, $store_info );
$marketplace_coupons = $this->get_store_coupons( $store_user, $store_info, true );
$vendor_coupons = array_merge( $vendor_coupons, $marketplace_coupons );
if ( empty( $vendor_coupons ) ) {
return;
}
echo '<div class="store-coupon-wrap">';
foreach ( $vendor_coupons as $coupon ) {
dokan_get_template_part(
'coupon/store', '', array_merge(
[
'pro' => true,
], $coupon
)
);
}
echo '</div>';
}
/**
* Add vendor biography tab
*
* @param array $tabs
* @param int $store_id
*
* @since 2.9.10
*
* @return array
*/
public function add_vendor_biography_tab( $tabs, $store_id ) {
$store_info = dokan_get_store_info( $store_id );
if ( empty( $store_info['vendor_biography'] ) ) {
return $tabs;
}
$tabs['vendor_biography'] = [
'title' => apply_filters( 'dokan_vendor_biography_title', __( 'Vendor Biography', 'dokan' ) ),
'url' => dokan_get_store_url( $store_id, 'biography' ),
];
return $tabs;
}
/**
* Load biography rewrite rules
*
* @param string $store_url
*
* @since 2.9.10
*
* @return void
*/
public function load_biography_rewrite_rules( $store_url ) {
add_rewrite_rule( $store_url . '/([^/]+)/biography?$', 'index.php?' . $store_url . '=$matches[1]&biography=true', 'top' );
}
/**
* Load biography query var
*
* @param array $query_vars
*
* @since 2.9.10
*
* @return array
*/
public function load_biography_query_var( $query_vars ) {
$query_vars[] = 'biography';
return $query_vars;
}
/**
* Load vendor biography template
*
* @param string $template
*
* @since 2.9.10
*
* @return string
*/
public function load_vendor_biography_template( $template ) {
if ( ! get_query_var( 'biography' ) ) {
return $template;
}
return dokan_locate_template( 'vendor-biography.php', '', DOKAN_PRO_DIR . '/templates/', true );
}
}