HEX
Server: Apache
System: Linux sxb1plmcpnl510113.prod.sxb1.secureserver.net 4.18.0-553.58.1.lve.el8.x86_64 #1 SMP Fri Jul 4 12:07:06 UTC 2025 x86_64
User: acnbijigo78q (10488831)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: /home/acnbijigo78q/public_html/jetk.sa/wp-content/plugins/acfml/classes/class-wpml-acf-post-ids.php
<?php

class WPML_ACF_Post_Ids implements WPML_ACF_Convertable {

	/**
	 * @param WPML_ACF_Field $acf_field
	 *
	 * @return string[]|string - should always be string[], string only when:
	 *  - meta_value is "serialized"
	 *  - exception Field Type - Page Object - Select Single (input is single string number)
	 */
	public function convert( WPML_ACF_Field $acf_field ) {
		return $this->convertSerializationLayer( $acf_field );
	}

	/**
	 * @param WPML_ACF_Field $acf_field
	 *
	 * @return string[]|string|null|null[]
	 */
	private function convertSerializationLayer( WPML_ACF_Field $acf_field ) {
		$came_serialized = is_serialized( $acf_field->meta_value );

		$mixedIds = $came_serialized
			? maybe_unserialize( $acf_field->meta_value )
			: $acf_field->meta_value;

		$mixedTranslatedIds = $this->convertStringOrArrayOfStringsLayer( $mixedIds, $acf_field );

		return $came_serialized
			? serialize( $mixedTranslatedIds )
			: $mixedTranslatedIds;
	}

	/**
	 * @param array|string|int|null|numeric-string $mixedIds
	 * @param WPML_ACF_Field $acf_field
	 *
	 * @return string[]|string|null|numeric-string
	 */
	private function convertStringOrArrayOfStringsLayer( $mixedIds, WPML_ACF_Field $acf_field ) {

		if ( is_array( $mixedIds ) ) {
			return array_map( function ( $originalId ) use ( $acf_field ) {
				return $this->convertOriginalIdToTranslationId( $originalId, $acf_field );
			}, $mixedIds );
		}

		return $this->convertOriginalIdToTranslationId( $mixedIds, $acf_field );
	}

	/**
	 * @param string|null|numeric-string $originalId
	 * @param WPML_ACF_Field $acf_field
	 *
	 * @return string|null|numeric-string
	 */
	private function convertOriginalIdToTranslationId( $originalId, WPML_ACF_Field $acf_field ) {
		if( is_null( $originalId ) ) {
			return null;
		}

		if ( ! is_numeric( $originalId ) ) {
			return $originalId;
		}

		return (string) ( new WPML_ACF_Post_Id( $originalId, $acf_field ) )
			->convert()->id;
	}
}