HEX
Server: Apache/2.4.65 (Ubuntu)
System: Linux ielts-store-v2 6.8.0-1036-gcp #38~22.04.1-Ubuntu SMP Thu Aug 14 01:19:18 UTC 2025 x86_64
User: root (0)
PHP: 7.2.34-54+ubuntu20.04.1+deb.sury.org+1
Disabled: 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_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Upload Files
File: //proc/self/cwd/wp-content/plugins/facebook-for-woocommerce/includes/Integrations/Bookings.php
<?php
/**
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved
 *
 * This source code is licensed under the license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @package FacebookCommerce
 */

namespace SkyVerge\WooCommerce\Facebook\Integrations;

defined( 'ABSPATH' ) or exit;

/**
 * Integration with WooCommerce Bookings.
 *
 * @since 2.0.0-dev.1
 */
class Bookings {


	/**
	 * Integration constructor.
	 *
	 * @since 2.0.0-dev.3
	 */
	public function __construct() {

		add_action( 'init', [ $this, 'add_hooks' ] );
	}


	/**
	 * Adds integration hooks.
	 *
	 * @since 2.0.0-dev.3
	 */
	public function add_hooks() {

		if ( facebook_for_woocommerce()->is_plugin_active( 'woocommerce-bookings.php') ) {
			add_filter( 'wc_facebook_product_price', [ $this, 'get_product_price' ], 10, 3 );
		}
	}


	/**
	 * Filters the product price user for Facebook sync for Bookable products.
	 *
	 * @internal
	 *
	 * @since 2.0.0-dev.3
	 *
	 * @param int $price product price in cents
	 * @param float $facebook_price user defined facebook price
	 * @param \WC_Product $product product object
	 * @return int
	 */
	public function get_product_price( $price, $facebook_price, $product ) {

		if ( ! $facebook_price && $product instanceof \WC_Product && $this->is_bookable_product( $product ) ) {

			$product      = new \WC_Product_Booking( $product );
			$display_cost = is_callable( [ $product, 'get_display_cost' ] ) ? $product->get_display_cost() : 0;

			$price = (int) round( wc_get_price_to_display( $product, [ 'price' => $display_cost ] ) * 100 );
		}

		return $price;
	}


	/**
	 * Determines whether the current product is a WooCommerce Bookings product.
	 *
	 * @since 2.0.0-dev.3
	 *
	 * @param \WC_Product $product product object
	 * @return bool
	 */
	private function is_bookable_product( \WC_Product $product ) {

		return class_exists( 'WC_Product_Booking' ) && is_callable( 'is_wc_booking_product' ) && is_wc_booking_product( $product );
	}


}