HEX
Server: LiteSpeed
System: Linux s166.bitcommand.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User: h340499 (1922)
PHP: 8.2.16
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/h340499/public_html/wp-content/plugins/sitepress-multilingual-cms/API/ATE/Account.php
<?php

namespace WPML\TM\API\ATE;

use WPML\FP\Either;
use WPML\FP\Fns;
use WPML\FP\Obj;
use WPML\LIB\WP\WordPress;
use WPML\WP\OptionManager;
use function WPML\Container\make;

class Account {
	/**
	 * @return Either<array>
	 */
	public static function getCredits() {
		return WordPress::handleError( make( \WPML_TM_AMS_API::class )->getCredits() )
		                ->filter( Fns::identity() )
						/** @phpstan-ignore-next-line */
		                ->map( Fns::tap( OptionManager::update( 'TM', 'Account::credits' ) ) )
		                ->bimap( Fns::always( [ 'error' => 'communication error' ] ), Fns::identity() );
	}

	/**
	 * @return Either<array>
	 */
	public static function getAccountBalances() {
		return WordPress::handleError( make( \WPML_TM_AMS_API::class )->getAccountBalances() )
		                ->filter( Fns::identity() )
						->bimap(
							function( $response ) {
								if ( is_wp_error( $response ) ) {
									return [
										'error' => $response->get_error_message(),
									];
								}
								return $response;
							},
							Fns::identity()
						);
	}

	/**
	 * @param array $creditInfo
	 *
	 * @return bool
	 */
	public static function hasActiveSubscription( array $creditInfo ) {
		return (bool) Obj::propOr( false, 'active_subscription', $creditInfo );
	}

	/**
	 * @param array $creditInfo
	 *
	 * @return int
	 */
	public static function getAvailableBalance( array $creditInfo ) {
		return (int) Obj::propOr( 0, 'available_balance', $creditInfo );
	}

	/**
	 * @return bool
	 */
	public static function isAbleToTranslateAutomatically() {
		$creditInfo = OptionManager::getOr( [], 'TM', 'Account::credits' );

		if ( ! array_key_exists( 'active_subscription', $creditInfo ) ) {
			$creditInfo = self::getCredits()->getOrElse( [] );
		}

		return self::hasActiveSubscription( $creditInfo ) || self::getAvailableBalance( $creditInfo ) > 0;
	}
}