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/automatewoo/includes/DataTypes/DataTypes.php
<?php

namespace AutomateWoo\DataTypes;

use AutomateWoo\Proxies\Bookings as BookingsProxy;
use AutomateWoo\Integrations;
use AutomateWoo\Registry;
use AutomateWoo\Wishlists;

defined( 'ABSPATH' ) || exit;

/**
 * Data types registry/service class.
 *
 * @since 2.4.6
 */
class DataTypes extends Registry {

	const BOOKING           = 'booking';
	const CARD              = 'card';
	const CART              = 'cart';
	const CATEGORY          = 'category';
	const COMMENT           = 'comment';
	const CUSTOMER          = 'customer';
	const GUEST             = 'guest';
	const MEMBERSHIP        = 'membership';
	const ORDER             = 'order';
	const ORDER_ITEM        = 'order_item';
	const ORDER_NOTE        = 'order_note';
	const POST              = 'post';
	const PRODUCT           = 'product';
	const REVIEW            = 'review';
	const SHOP              = 'shop';
	const SUBSCRIPTION      = 'subscription';
	const SUBSCRIPTION_ITEM = 'subscription_item';
	const TAG               = 'tag';
	const USER              = 'user';
	const WISHLIST          = 'wishlist';
	const WORKFLOW          = 'workflow';

	/** @var array */
	protected static $includes;

	/** @var array */
	protected static $loaded = [];

	/**
	 * @return array
	 */
	public static function load_includes() {
		$is_subscriptions_active = Integrations::is_subscriptions_active();

		return apply_filters(
			'automatewoo/data_types/includes',
			[
				self::BOOKING           => Integrations::is_bookings_active() ? Booking::class : null,
				self::CARD              => Card::class,
				self::CART              => Cart::class,
				self::CATEGORY          => ProductCategory::class,
				self::COMMENT           => Comment::class,
				self::CUSTOMER          => Customer::class,
				self::GUEST             => Guest::class,
				self::MEMBERSHIP        => Integrations::is_memberships_enabled() ? Membership::class : null,
				self::ORDER_ITEM        => OrderItem::class,
				self::ORDER_NOTE        => OrderNote::class,
				self::ORDER             => Order::class,
				self::POST              => Post::class,
				self::PRODUCT           => Product::class,
				self::REVIEW            => Review::class,
				self::SHOP              => Shop::class,
				self::SUBSCRIPTION_ITEM => $is_subscriptions_active ? SubscriptionItem::class : null,
				self::SUBSCRIPTION      => $is_subscriptions_active ? Subscription::class : null,
				self::TAG               => ProductTag::class,
				self::USER              => User::class,
				self::WISHLIST          => Wishlists::get_integration() ? Wishlist::class : null,
				self::WORKFLOW          => Workflow::class,
			]
		);
	}

	/**
	 * Get a data type object.
	 *
	 * @param string $data_type_id
	 *
	 * @return AbstractDataType|false
	 */
	public static function get( $data_type_id ) {
		return parent::get( $data_type_id );
	}

	/**
	 * Runs after a valid item is loaded.
	 *
	 * @param string           $data_type_id
	 * @param AbstractDataType $data_type
	 */
	public static function after_loaded( $data_type_id, $data_type ) {
		$data_type->set_id( $data_type_id );
	}

	/**
	 * Get data types that shouldn't be stored.
	 *
	 * @return array
	 */
	public static function get_non_stored_data_types() {
		return [ 'shop' ];
	}

	/**
	 * Check if a data type should be stored.
	 *
	 * @param string $data_type_id
	 *
	 * @return bool
	 * @since 5.1.0
	 */
	public static function is_non_stored_data_type( $data_type_id ) {
		return in_array( $data_type_id, self::get_non_stored_data_types(), true );
	}

	/**
	 * Checks that data type object is valid.
	 *
	 * @param mixed $item
	 *
	 * @return bool
	 * @since 4.9.0
	 */
	public static function is_item_valid( $item ) {
		return $item instanceof AbstractDataType;
	}

	/**
	 * Get the constructor args for an item.
	 *
	 * @param string $name
	 *
	 * @return array
	 */
	protected static function get_item_constructor_args( string $name ): array {
		switch ( $name ) {
			case self::BOOKING:
				return [ AW()->bookings_proxy() ];
		}

		return [];
	}

}