HEX
Server: Apache
System: Linux vps-cdc32557.vps.ovh.ca 5.15.0-156-generic #166-Ubuntu SMP Sat Aug 9 00:02:46 UTC 2025 x86_64
User: hanode (1017)
PHP: 7.4.33
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,pcntl_unshare,
Upload Files
File: /home/hanode/public_html/wp-content/plugins/sitepress-multilingual-cms/API/TranslationServices.php
<?php

namespace WPML\TM\API;

use WPML\FP\Either;
use WPML\TM\TranslationProxy\Services\AuthorizationFactory;

class TranslationServices {

	/**
	 * @var AuthorizationFactory
	 */
	private $authorizationFactory;

	/**
	 * @param AuthorizationFactory $authorizationFactory
	 */
	public function __construct( AuthorizationFactory $authorizationFactory ) {
		$this->authorizationFactory = $authorizationFactory;
	}

	/**
	 * @param string $suid
	 *
	 * @return Either
	 */
	public function selectBySUID( $suid ) {
		try {
			$service = \TranslationProxy_Service::get_service_by_suid( $suid );

			return $this->selectByServiceId( $service->id );
		} catch ( \Exception $e ) {
			return Either::left( sprintf( __( 'Service with SUID=%s cannot be found', ' sitepress-multilingual-cms' ), $suid ) );
		}
	}

	/**
	 * @param int $serviceId
	 *
	 * @return Either
	 */
	public function selectByServiceId( $serviceId ) {
		$result = \TranslationProxy::select_service( $serviceId );

		return \is_wp_error( $result ) ? Either::left( $result->get_error_message() ) : Either::of( $serviceId );
	}

	public function deselect() {
		if ( \TranslationProxy::get_current_service_id() ) {
			\TranslationProxy::clear_preferred_translation_service();
			\TranslationProxy::deselect_active_service();
		}
	}

	public function authorize( $apiToken ) {
		$authorization = $this->authorizationFactory->create();
		try {
			$authorization->authorize( (object) [ 'api_token' => $apiToken ] );

			return Either::of( true );
		} catch ( \Exception $e ) {
			$authorization->deauthorize();

			return Either::left( $e->getMessage() );
		}
	}

	/**
	 * @return null|\TranslationProxy_Service
	 */
	public function getCurrentService() {
		$service = \TranslationProxy::get_current_service();

		return ! is_wp_error( $service ) ? $service : null;
	}

	public function isAnyActive() {
		return $this->getCurrentService() !== null;
	}

	public function isAuthorized() {
		return \TranslationProxy::is_current_service_active_and_authenticated();
	}
}