HEX
Server: Apache
System: Linux beta.alfanet.ee 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: busines1 (1252)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /home-ssd1/busines1/public_html/wp-content/plugins/acfml/classes/Strings/Translator.php
<?php

namespace ACFML\Strings;

use ACFML\Helper\Fields;
use ACFML\Strings\Transformer\Transformer;

class Translator {

	/**
	 * @var Factory $factory
	 */
	private $factory;

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

	/**
	 * @param array $fieldGroup
	 *
	 * @return void
	 */
	public function registerGroupAndFieldsAndLayouts( $fieldGroup ) {
		$register = $this->factory->createRegister( $fieldGroup['ID'] );

		$register->start();

		$this->factory->createFieldGroup( $fieldGroup )->traverse( $register );

		Fields::iterate(
			acf_get_fields( $fieldGroup ),
			$this->getFieldTraverser( $register ),
			$this->getLayoutTraverser( $register )
		);

		$register->end();
	}

	/**
	 * @param array $fieldGroup
	 *
	 * @return array
	 */
	public function translateGroup( $fieldGroup ) {
		return $this->factory->createFieldGroup( $fieldGroup )->traverse( $this->factory->createTranslate( $fieldGroup['ID'] ) );
	}

	/**
	 * @param array $field
	 *
	 * @return array
	 */
	public function translateField( $field ) {
		$translate = $this->factory->createTranslate( $field['parent'] );

		$wrappedField = Fields::iterate(
			[ $field ],
			$this->getFieldTraverser( $translate ),
			$this->getLayoutTraverser( $translate )
		);

		return $wrappedField[0];
	}

	/**
	 * @param Transformer $transformer
	 *
	 * @return \Closure
	 */
	private function getFieldTraverser( $transformer ) {
		/**
		 * @param array $field
		 *
		 * @return array
		 */
		return function( $field ) use ( $transformer ) {
			return $this->factory->createField( $field )->traverse( $transformer );
		};
	}

	/**
	 * @param Transformer $transformer
	 *
	 * @return \Closure
	 */
	private function getLayoutTraverser( $transformer ) {
		/**
		 * @param array $layout
		 *
		 * @return array
		 */
		return function( $layout ) use ( $transformer ) {
			return $this->factory->createLayout( $layout )->traverse( $transformer );
		};
	}
}