HEX
Server: LiteSpeed
System: Linux mail.aatilis.ir 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: www (1000)
PHP: 8.3.30
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/soqatland.com/wp-content/plugins/persian-woocommerce/include/tools/class-price.php
<?php

defined( 'ABSPATH' ) || exit;

if ( ! class_exists( 'PW_Tools_Price' ) ) :

	class PW_Tools_Price {

		public function __construct() {

			if ( PW()->get_options( 'enable_call_for_price', 'no' ) == 'yes' ) {
				add_filter( 'woocommerce_empty_price_html', [ $this, 'on_empty_price' ], PHP_INT_MAX - 1 );
				add_filter( 'woocommerce_sale_flash', [ $this, 'hide_sales_flash' ], PHP_INT_MAX, 3 );
			}

			if ( PW()->get_options( 'persian_price', 'no' ) == 'yes' ) {
				add_filter( 'wc_price', [ $this, 'persian_number' ] );
				add_filter( 'woocommerce_get_price_html', [ $this, 'persian_number' ] );

				add_filter( 'woocommerce_cart_item_price', [ $this, 'persian_number' ] );
				add_filter( 'woocommerce_cart_item_subtotal', [ $this, 'persian_number' ] );
				add_filter( 'woocommerce_cart_subtotal', [ $this, 'persian_number' ] );
				add_filter( 'woocommerce_cart_shipping_method_full_label', [ $this, 'persian_number' ] );
				add_filter( 'woocommerce_cart_total', [ $this, 'persian_number' ] );
			}

			if ( PW()->get_options( 'minimum_order_amount', 0 ) != 0 ) {
				add_action( 'woocommerce_checkout_process', [ $this, 'wc_minimum_order_amount' ] );
				add_action( 'woocommerce_before_cart', [ $this, 'wc_minimum_order_amount' ] );
			}

			if ( PW()->get_options( 'variable_price', 'range' ) == 'min' ) {
				add_action( 'woocommerce_variable_price_html', [ $this, 'get_variation_price_format' ], 10, 2 );
				add_action( 'woocommerce_dropdown_variation_attribute_options_args', [
					$this,
					'remove_dropdown_variation_options',
				] );
			}
		}

		public function hide_sales_flash( $onsale_html, $post, $product ) {
			return ( 'yes' == PW()->get_options( 'call_for_price_hide_sale_sign', 'no' ) && '' == $product->get_price() ) ? "" : $onsale_html;
		}

		public function is_related() {
			global $post;

			$ID = isset( $post->ID ) ? $post->ID : '';

			return is_singular() !== is_single( $ID );
		}

		public function on_empty_price( $price ) {
			if ( is_archive() ) {
				return PW()->get_options( 'call_for_price_text_on_archive' );
			} elseif ( $this->is_related() ) {
				return PW()->get_options( 'call_for_price_text_on_related' );
			} elseif ( is_single() ) {
				return PW()->get_options( 'call_for_price_text' );
			} elseif ( is_home() ) {
				return PW()->get_options( 'call_for_price_text_on_home' );
			}

			return $price;
		}

		public function persian_number( $price ) {
			return str_replace( range( 0, 9 ), [ '۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹' ], $price );
		}

		public function wc_minimum_order_amount() {

			$minimum = PW()->get_options( 'minimum_order_amount', 0 );

			if ( WC()->cart->get_total( null ) < $minimum ) {

				$message = sprintf( 'مبلغ سفارش شما %s می باشد، حداقل مبلغ جهت ثبت سفارش %s است.', wc_price( WC()->cart->get_total( null ) ), wc_price( $minimum ) );

				if ( is_cart() ) {

					wc_print_notice( $message, 'error' );

				} else {
					wc_add_notice( $message, 'error' );

				}
			}
		}

		public function get_variation_price_format( string $price, WC_Product $product ): string {

			$prices = $product->get_variation_prices();

			$min_sale_price    = current( $prices['sale_price'] );
			$variation_id      = key( $prices['sale_price'] );
			$min_regular_price = $prices['regular_price'][ $variation_id ];

			if ( $min_sale_price == $min_regular_price ) {
				return wc_price( $min_sale_price );
			}

			return wc_format_sale_price( $min_regular_price, $min_sale_price );
		}

		public function remove_dropdown_variation_options( array $args ): array {
			$args['show_option_none'] = false;

			return $args;
		}
	}

endif;

PW()->tools->price = new PW_Tools_Price();