$post_type, 'posts_per_page' => $show, 'paged' => $page, 'post_status' => 'publish' ); return new WP_Query($args); } public static function get_all_post_id($post_type, $show = -1, $page = 1): array { return get_posts(array( 'fields' => 'ids', 'post_type' => $post_type, 'posts_per_page' => $show, 'paged' => $page, 'post_status' => 'publish' )); } public static function get_taxonomy($name) { return get_terms(array('taxonomy' => $name, 'hide_empty' => false)); } public static function get_post_info($post_id, $key, $default = '') { $data = get_post_meta($post_id, $key, true) ?: $default; return self::data_sanitize($data); } public static function get_submit_info($key, $default = '') { return self::data_sanitize($_POST[$key] ?? $default); } public static function data_sanitize($data) { $data = maybe_unserialize($data); if (is_string($data)) { $data = maybe_unserialize($data); if (is_array($data)) { $data = self::data_sanitize($data); } else { $data = sanitize_text_field(stripslashes(strip_tags($data))); } } elseif (is_array($data)) { foreach ($data as &$value) { if (is_array($value)) { $value = self::data_sanitize($value); } else { $value = sanitize_text_field(stripslashes(strip_tags($value))); } } } return $data; } //**************Date related*********************// public static function date_picker_format($option, $key = 'date_format'): string { $format = MP_Global_Function::get_settings($option, $key, 'D d M , yy'); $date_format = 'Y-m-d'; $date_format = $format == 'yy/mm/dd' ? 'Y/m/d' : $date_format; $date_format = $format == 'yy-dd-mm' ? 'Y-d-m' : $date_format; $date_format = $format == 'yy/dd/mm' ? 'Y/d/m' : $date_format; $date_format = $format == 'dd-mm-yy' ? 'd-m-Y' : $date_format; $date_format = $format == 'dd/mm/yy' ? 'd/m/Y' : $date_format; $date_format = $format == 'mm-dd-yy' ? 'm-d-Y' : $date_format; $date_format = $format == 'mm/dd/yy' ? 'm/d/Y' : $date_format; $date_format = $format == 'd M , yy' ? 'j M , Y' : $date_format; $date_format = $format == 'D d M , yy' ? 'D j M , Y' : $date_format; $date_format = $format == 'M d , yy' ? 'M j, Y' : $date_format; return $format == 'D M d , yy' ? 'D M j, Y' : $date_format; } public function date_picker_js($selector, $dates) { $start_date = $dates[0]; $start_year = date('Y', strtotime($start_date)); $start_month = (date('n', strtotime($start_date)) - 1); $start_day = date('j', strtotime($start_date)); $end_date = end($dates); $end_year = date('Y', strtotime($end_date)); $end_month = (date('n', strtotime($end_date)) - 1); $end_day = date('j', strtotime($end_date)); $all_date = []; foreach ($dates as $date) { $all_date[] = '"' . date('j-n-Y', strtotime($date)) . '"'; } ?> 0) || ($parse_date['minute'] && $parse_date['minute'] > 0) || ($parse_date['second'] && $parse_date['second'] > 0)) { return true; } } return false; } public static function sort_date($a, $b) { return strtotime($a) - strtotime($b); } //***********************************// public static function get_settings($section, $key, $default = '') { $options = get_option($section); if (isset($options[$key]) && $options[$key]) { $default = $options[$key]; } return $default; } public static function get_style_settings($key, $default = '') { return self::get_settings('mp_style_settings', $key, $default); } public static function get_slider_settings($key, $default = '') { return self::get_settings('mp_slider_settings', $key, $default); } //***********************************// public static function price_convert_raw($price) { $price = wp_strip_all_tags($price); $price = str_replace(get_woocommerce_currency_symbol(), '', $price); $price = str_replace(wc_get_price_thousand_separator(), 't_s', $price); $price = str_replace(wc_get_price_decimal_separator(), 'd_s', $price); $price = str_replace('t_s', '', $price); $price = str_replace('d_s', '.', $price); $price = str_replace(' ', '', $price); return max($price, 0); } public static function wc_price($post_id, $price, $args = array()): string { $num_of_decimal = get_option('woocommerce_price_num_decimals', 2); $args = wp_parse_args($args, array( 'qty' => '', 'price' => '', )); $_product = self::get_post_info($post_id, 'link_wc_product', $post_id); $product = wc_get_product($_product); $qty = '' !== $args['qty'] ? max(0.0, (float)$args['qty']) : 1; $tax_with_price = get_option('woocommerce_tax_display_shop'); if ('' === $price) { return ''; } elseif (empty($qty)) { return 0.0; } $line_price = (float)$price * (int)$qty; $return_price = $line_price; if ($product->is_taxable()) { if (!wc_prices_include_tax()) { $tax_rates = WC_Tax::get_rates($product->get_tax_class()); $taxes = WC_Tax::calc_tax($line_price, $tax_rates); if ('yes' === get_option('woocommerce_tax_round_at_subtotal')) { $taxes_total = array_sum($taxes); } else { $taxes_total = array_sum(array_map('wc_round_tax_total', $taxes)); } $return_price = $tax_with_price == 'excl' ? round($line_price, $num_of_decimal) : round($line_price + $taxes_total, $num_of_decimal); } else { $tax_rates = WC_Tax::get_rates($product->get_tax_class()); $base_tax_rates = WC_Tax::get_base_tax_rates($product->get_tax_class('unfiltered')); if (!empty(WC()->customer) && WC()->customer->get_is_vat_exempt()) { // @codingStandardsIgnoreLine. $remove_taxes = apply_filters('woocommerce_adjust_non_base_location_prices', true) ? WC_Tax::calc_tax($line_price, $base_tax_rates, true) : WC_Tax::calc_tax($line_price, $tax_rates, true); if ('yes' === get_option('woocommerce_tax_round_at_subtotal')) { $remove_taxes_total = array_sum($remove_taxes); } else { $remove_taxes_total = array_sum(array_map('wc_round_tax_total', $remove_taxes)); } // $return_price = round( $line_price, $num_of_decimal); $return_price = round($line_price - $remove_taxes_total, $num_of_decimal); } else { $base_taxes = WC_Tax::calc_tax($line_price, $base_tax_rates, true); $modded_taxes = WC_Tax::calc_tax($line_price - array_sum($base_taxes), $tax_rates); if ('yes' === get_option('woocommerce_tax_round_at_subtotal')) { $base_taxes_total = array_sum($base_taxes); $modded_taxes_total = array_sum($modded_taxes); } else { $base_taxes_total = array_sum(array_map('wc_round_tax_total', $base_taxes)); $modded_taxes_total = array_sum(array_map('wc_round_tax_total', $modded_taxes)); } $return_price = $tax_with_price == 'excl' ? round($line_price - $base_taxes_total, $num_of_decimal) : round($line_price - $base_taxes_total + $modded_taxes_total, $num_of_decimal); } } } $return_price = apply_filters('woocommerce_get_price_including_tax', $return_price, $qty, $product); $display_suffix = get_option('woocommerce_price_display_suffix') ? get_option('woocommerce_price_display_suffix') : ''; return wc_price($return_price) . ' ' . $display_suffix; } //***********************************// public static function get_image_url($post_id = '', $image_id = '', $size = 'full') { if ($post_id) { $image_id = get_post_thumbnail_id($post_id); $image_id = $image_id ?: self::get_post_info($post_id, 'mp_thumbnail'); } return wp_get_attachment_image_url($image_id, $size); } public static function get_page_by_slug($slug) { if ($pages = get_pages()) { foreach ($pages as $page) { if ($slug === $page->post_name) { return $page; } } } return false; } //***********************************// public static function check_woocommerce(): int { include_once(ABSPATH . 'wp-admin/includes/plugin.php'); $plugin_dir = ABSPATH . 'wp-content/plugins/woocommerce'; if (is_plugin_active('woocommerce/woocommerce.php')) { return 1; } elseif (is_dir($plugin_dir)) { return 2; } else { return 0; } } public static function get_order_item_meta($item_id, $key): string { global $wpdb; $table_name = $wpdb->prefix . "woocommerce_order_itemmeta"; $results = $wpdb->get_results($wpdb->prepare("SELECT meta_value FROM $table_name WHERE order_item_id = %d AND meta_key = %s", $item_id, $key)); foreach ($results as $result) { $value = $result->meta_value; } return $value ?? ''; } public static function check_product_in_cart($post_id) { $status = MP_Global_Function::check_woocommerce(); if ($status == 1) { $product_id = MP_Global_Function::get_post_info($post_id, 'link_wc_product'); foreach (WC()->cart->get_cart() as $cart_item) { if ($cart_item['product_id'] == $product_id) { return true; } } } return false; } public static function wc_product_sku($product_id) { if ($product_id) { return new WC_Product($product_id); } return null; } //***********************************// public static function all_tax_list(): array { global $wpdb; $table_name = $wpdb->prefix . 'wc_tax_rate_classes'; $result = $wpdb->get_results("SELECT * FROM $table_name"); $tax_list = []; foreach ($result as $tax) { $tax_list[$tax->slug] = $tax->name; } return $tax_list; } public static function week_day(): array { return [ 'monday' => esc_html__('Monday', 'mage-eventpress'), 'tuesday' => esc_html__('Tuesday', 'mage-eventpress'), 'wednesday' => esc_html__('Wednesday', 'mage-eventpress'), 'thursday' => esc_html__('Thursday', 'mage-eventpress'), 'friday' => esc_html__('Friday', 'mage-eventpress'), 'saturday' => esc_html__('Saturday', 'mage-eventpress'), 'sunday' => esc_html__('Sunday', 'mage-eventpress'), ]; } public static function get_plugin_data($data) { $plugin_data = get_plugin_data(__FILE__); return $plugin_data[$data]; } public static function array_to_string($array) { $ids = ''; if (sizeof($array) > 0) { foreach ($array as $data) { if ($data) { $ids = $ids ? $ids . ',' . $data : $data; } } } return $ids; } public static function esc_html($string): string { $allow_attr = array( 'input' => [ 'type' => [], 'class' => [], 'id' => [], 'name' => [], 'value' => [], 'size' => [], 'placeholder' => [], 'min' => [], 'max' => [], 'checked' => [], 'required' => [], 'disabled' => [], 'readonly' => [], 'step' => [], 'data-default-color' => [], 'data-price' => [], ], 'p' => ['class' => []], 'img' => ['class' => [], 'id' => [], 'src' => [], 'alt' => [],], 'fieldset' => [ 'class' => [] ], 'label' => [ 'for' => [], 'class' => [] ], 'select' => [ 'class' => [], 'name' => [], 'id' => [], 'data-price' => [], ], 'option' => [ 'class' => [], 'value' => [], 'id' => [], 'selected' => [], ], 'textarea' => [ 'class' => [], 'rows' => [], 'id' => [], 'cols' => [], 'name' => [], ], 'h1' => ['class' => [], 'id' => [],], 'h2' => ['class' => [], 'id' => [],], 'h3' => ['class' => [], 'id' => [],], 'h4' => ['class' => [], 'id' => [],], 'h5' => ['class' => [], 'id' => [],], 'h6' => ['class' => [], 'id' => [],], 'a' => ['class' => [], 'id' => [], 'href' => [],], 'div' => [ 'class' => [], 'id' => [], 'data-ticket-type-name' => [], ], 'span' => [ 'class' => [], 'id' => [], 'data' => [], 'data-input-change' => [], ], 'i' => [ 'class' => [], 'id' => [], 'data' => [], ], 'table' => [ 'class' => [], 'id' => [], 'data' => [], ], 'tr' => [ 'class' => [], 'id' => [], 'data' => [], ], 'td' => [ 'class' => [], 'id' => [], 'data' => [], ], 'thead' => [ 'class' => [], 'id' => [], 'data' => [], ], 'tbody' => [ 'class' => [], 'id' => [], 'data' => [], ], 'th' => [ 'class' => [], 'id' => [], 'data' => [], ], 'svg' => [ 'class' => [], 'id' => [], 'width' => [], 'height' => [], 'viewBox' => [], 'xmlns' => [], ], 'g' => [ 'fill' => [], ], 'path' => [ 'd' => [], ], 'br' => array(), 'em' => array(), 'strong' => array(), ); return wp_kses($string, $allow_attr); } //***********************************// } new MP_Global_Function(); }