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/TranslationJobHooks.php
<?php

namespace ACFML\Strings;

class TranslationJobHooks implements \IWPML_Action {

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

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

	/**
	 * @return void
	 */
	public function add_hooks() {
		if ( self::isEnabled() ) {
			add_filter( 'wpml_translation_package_by_language', [ $this, 'addStringsToTranslationPackage' ], 10, 3 );
			add_action( 'wpml_translation_job_saved', [ $this, 'saveFieldGroupStringsTranslations' ], 10, 3 );
			add_filter( 'wpml_tm_adjust_translation_fields', [ $this, 'adjustFieldGroupStringTitles' ] );
		}
	}

	/**
	 * @return bool
	 */
	public static function isEnabled() {
		return ! ( defined( 'ACFML_EXCLUDE_FIELD_GROUP_STRINGS_IN_POST_JOBS' ) && ACFML_EXCLUDE_FIELD_GROUP_STRINGS_IN_POST_JOBS );
	}

	/**
	 * @param int       $translatedPostId
	 * @param array     $fields
	 * @param \stdClass $job
	 *
	 * @return void
	 */
	public function saveFieldGroupStringsTranslations( $translatedPostId, $fields, $job ) {
		$this->factory->createTranslationJobFilter()->saveTranslations( $fields, $job );
	}

	/**
	 * @param array          $package
	 * @param \WP_Post|mixed $post
	 * @param string         $targetLang
	 *
	 * @return array
	 */
	public function addStringsToTranslationPackage( $package, $post, $targetLang ) {
		if ( $post instanceof \WP_Post ) {
			return $this->factory->createTranslationJobFilter()->appendStrings( $package, $post, $targetLang ); // phpcs:ignore
		}

		return $package;
	}

	/**
	 * @param array[] $fields
	 *
	 * @return array[]
	 */
	public function adjustFieldGroupStringTitles( $fields ) {
		return $this->factory->createTranslationJobFilter()->adjustTitles( $fields );
	}
}