WC_Shipping_Legacy_Flat_Rate::evaluate_cost()protectedWC 1.0

Evaluate a cost from a sum/string.

Method of the class: WC_Shipping_Legacy_Flat_Rate{}

No Hooks.

Return

String.

Usage

// protected - for code of main (parent) or child class
$result = $this->evaluate_cost( $sum, $args );
$sum(string) (required)
Sum to evaluate.
$args(array)
Arguments.
Default: array()

WC_Shipping_Legacy_Flat_Rate::evaluate_cost() code WC 8.6.1

protected function evaluate_cost( $sum, $args = array() ) {
	include_once WC()->plugin_path() . '/includes/libraries/class-wc-eval-math.php';

	$locale   = localeconv();
	$decimals = array( wc_get_price_decimal_separator(), $locale['decimal_point'], $locale['mon_decimal_point'] );

	$this->fee_cost = $args['cost'];

	// Expand shortcodes.
	add_shortcode( 'fee', array( $this, 'fee' ) );

	$sum = do_shortcode(
		str_replace(
			array(
				'[qty]',
				'[cost]',
			),
			array(
				$args['qty'],
				$args['cost'],
			),
			$sum
		)
	);

	remove_shortcode( 'fee', array( $this, 'fee' ) );

	// Remove whitespace from string.
	$sum = preg_replace( '/\s+/', '', $sum );

	// Remove locale from string.
	$sum = str_replace( $decimals, '.', $sum );

	// Trim invalid start/end characters.
	$sum = rtrim( ltrim( $sum, "\t\n\r\0\x0B+*/" ), "\t\n\r\0\x0B+-*/" );

	// Do the math.
	return $sum ? WC_Eval_Math::evaluate( $sum ) : 0;
}