[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.148.105.127: ~ $
<?php

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

if ( ! class_exists( 'ACF_WPML_Compatibility' ) ) :

	class ACF_WPML_Compatibility {

		/**
		 * __construct
		 *
		 * Sets up the class functionality.
		 *
		 * @date    23/06/12
		 * @since   3.1.8
		 *
		 * @param   void
		 * @return  void
		 */
		function __construct() {

			// global
			global $sitepress;

			// update settings
			acf_update_setting( 'default_language', $sitepress->get_default_language() );
			acf_update_setting( 'current_language', $sitepress->get_current_language() );

			// localize data
			acf_localize_data(
				array(
					'language' => $sitepress->get_current_language(),
				)
			);

			// switch lang during AJAX action
			add_action( 'acf/verify_ajax', array( $this, 'verify_ajax' ) );

			// prevent 'acf-field' from being translated
			add_filter( 'get_translatable_documents', array( $this, 'get_translatable_documents' ) );

			// check if 'acf-field-group' is translatable
			if ( $this->is_translatable() ) {

				// actions
				add_action( 'acf/upgrade_500_field_group', array( $this, 'upgrade_500_field_group' ), 10, 2 );
				add_action( 'icl_make_duplicate', array( $this, 'icl_make_duplicate' ), 10, 4 );

				// filters
				add_filter( 'acf/settings/save_json', array( $this, 'settings_save_json' ) );
				add_filter( 'acf/settings/load_json', array( $this, 'settings_load_json' ) );
			}
		}

		/**
		 * is_translatable
		 *
		 * Returns true if the acf-field-group post type is translatable.
		 * Also adds compatibility with ACF4 settings
		 *
		 * @date    10/04/2015
		 * @since   5.2.3
		 *
		 * @param   void
		 * @return  boolean
		 */
		function is_translatable() {

			// global
			global $sitepress;

			// vars
			$post_types = $sitepress->get_setting( 'custom_posts_sync_option' );

			// return false if no post types
			if ( ! acf_is_array( $post_types ) ) {
				return false;
			}

			// prevent 'acf-field' from being translated
			if ( ! empty( $post_types['acf-field'] ) ) {
				$post_types['acf-field'] = 0;
				$sitepress->set_setting( 'custom_posts_sync_option', $post_types );
			}

			// when upgrading to version 5, review 'acf' setting
			// update 'acf-field-group' if 'acf' is translatable, and 'acf-field-group' does not yet exist
			if ( ! empty( $post_types['acf'] ) && ! isset( $post_types['acf-field-group'] ) ) {
				$post_types['acf-field-group'] = 1;
				$sitepress->set_setting( 'custom_posts_sync_option', $post_types );
			}

			// return true if acf-field-group is translatable
			if ( ! empty( $post_types['acf-field-group'] ) ) {
				return true;
			}

			// return
			return false;
		}

		/**
		 * upgrade_500_field_group
		 *
		 * Update the icl_translations table data when creating the field groups.
		 *
		 * @date    10/04/2015
		 * @since   5.2.3
		 *
		 * @param   array  $field_group The new field group array.
		 * @param   object $ofg         The old field group WP_Post object.
		 * @return  void
		 */
		function upgrade_500_field_group( $field_group, $ofg ) {

			// global
			global $wpdb;

			// get translation rows (old acf4 and new acf5)
			$old_row = $wpdb->get_row(
				$wpdb->prepare(
					"SELECT * FROM {$wpdb->prefix}icl_translations WHERE element_type=%s AND element_id=%d",
					'post_acf',
					$ofg->ID
				),
				ARRAY_A
			);

			$new_row = $wpdb->get_row(
				$wpdb->prepare(
					"SELECT * FROM {$wpdb->prefix}icl_translations WHERE element_type=%s AND element_id=%d",
					'post_acf-field-group',
					$field_group['ID']
				),
				ARRAY_A
			);

			// bail early if no rows
			if ( ! $old_row || ! $new_row ) {
				return;
			}

			// create reference of old trid to new trid
			// trid is a simple int used to find associated objects
			if ( empty( $this->trid_ref ) ) {
				$this->trid_ref = array();
			}

			// update trid
			if ( isset( $this->trid_ref[ $old_row['trid'] ] ) ) {

				// this field group is a translation of another, update it's trid to match the previously inserted group
				$new_row['trid'] = $this->trid_ref[ $old_row['trid'] ];
			} else {

				// this field group is the first of it's translations, update the reference for future groups
				$this->trid_ref[ $old_row['trid'] ] = $new_row['trid'];
			}

			// update icl_translations
			// Row is created by WPML, and much easier to tweak it here due to the very complicated and nonsensical WPML logic
			$table        = "{$wpdb->prefix}icl_translations";
			$data         = array(
				'trid'          => $new_row['trid'],
				'language_code' => $old_row['language_code'],
			);
			$where        = array( 'translation_id' => $new_row['translation_id'] );
			$data_format  = array( '%d', '%s' );
			$where_format = array( '%d' );

			// allow source_language_code to equal NULL
			if ( $old_row['source_language_code'] ) {
				$data['source_language_code'] = $old_row['source_language_code'];
				$data_format[]                = '%s';
			}

			// update wpdb
			$result = $wpdb->update( $table, $data, $where, $data_format, $where_format );
		}

		/**
		 * settings_save_json
		 *
		 * Modifies the json path.
		 *
		 * @date    19/05/2014
		 * @since   5.0.0
		 *
		 * @param   string $path The json save path.
		 * @return  string
		 */
		function settings_save_json( $path ) {

			// bail early if dir does not exist
			if ( ! wp_is_writable( $path ) ) {
				return $path;
			}

			// ammend
			$path = untrailingslashit( $path ) . '/' . acf_get_setting( 'current_language' );

			// make dir if does not exist
			if ( ! file_exists( $path ) ) {
				mkdir( $path, 0777, true ); //phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_mkdir -- Allow legacy mkdir call as this may fire outside admin.
			}

			// return
			return $path;
		}

		/**
		 * settings_load_json
		 *
		 * Modifies the json path.
		 *
		 * @date    19/05/2014
		 * @since   5.0.0
		 *
		 * @param   string $path The json save path.
		 * @return  string
		 */
		function settings_load_json( $paths ) {

			// loop
			if ( $paths ) {
				foreach ( $paths as $i => $path ) {
					$paths[ $i ] = untrailingslashit( $path ) . '/' . acf_get_setting( 'current_language' );
				}
			}

			// return
			return $paths;
		}

		/**
		 * icl_make_duplicate
		 *
		 * description
		 *
		 * @date    26/02/2014
		 * @since   5.0.0
		 *
		 * @param   void
		 * @return  void
		 */
		function icl_make_duplicate( $master_post_id, $lang, $postarr, $id ) {

			// bail early if not acf-field-group
			if ( $postarr['post_type'] != 'acf-field-group' ) {
				return;
			}

			// update the lang
			acf_update_setting( 'current_language', $lang );

			// duplicate field group specifying the $post_id
			acf_duplicate_field_group( $master_post_id, $id );

			// always translate independately to avoid many many bugs!
			// - translation post gets a new key (post_name) when origional post is saved
			// - local json creates new files due to changed key
			global $iclTranslationManagement;
			$iclTranslationManagement->reset_duplicate_flag( $id );
		}


		/**
		 * verify_ajax
		 *
		 * Sets the correct language during AJAX requests.
		 *
		 * @type    function
		 * @date    7/08/2015
		 * @since   5.2.3
		 *
		 * @param   void
		 * @return  void
		 */
		function verify_ajax() {

			// phpcs:disable WordPress.Security.NonceVerification.Recommended -- Verified elsewhere.
			// set the language for this AJAX request
			// this will allow get_posts to work as expected (load posts from the correct language)
			if ( isset( $_REQUEST['lang'] ) ) {
				global $sitepress;
				$sitepress->switch_lang( sanitize_text_field( $_REQUEST['lang'] ) );
			}
			// phpcs:enable WordPress.Security.NonceVerification.Recommended
		}

		/**
		 * get_translatable_documents
		 *
		 * Removes 'acf-field' from the available post types for translation.
		 *
		 * @type    function
		 * @date    17/8/17
		 * @since   5.6.0
		 *
		 * @param   array $icl_post_types The array of post types.
		 * @return  array
		 */
		function get_translatable_documents( $icl_post_types ) {

			// unset
			unset( $icl_post_types['acf-field'] );

			// return
			return $icl_post_types;
		}
	}

	acf_new_instance( 'ACF_WPML_Compatibility' );
endif; // class_exists check

Filemanager

Name Type Size Permission Actions
Blocks Folder 0755
admin Folder 0755
ajax Folder 0755
api Folder 0755
fields Folder 0755
forms Folder 0755
legacy Folder 0755
locations Folder 0755
post-types Folder 0755
rest-api Folder 0755
walkers Folder 0755
acf-bidirectional-functions.php File 9.19 KB 0644
acf-field-functions.php File 38.86 KB 0644
acf-field-group-functions.php File 13.52 KB 0644
acf-form-functions.php File 3.78 KB 0644
acf-helper-functions.php File 16.14 KB 0644
acf-hook-functions.php File 5.37 KB 0644
acf-input-functions.php File 11.32 KB 0644
acf-internal-post-type-functions.php File 18.2 KB 0644
acf-meta-functions.php File 10.15 KB 0644
acf-post-functions.php File 889 B 0644
acf-post-type-functions.php File 7.25 KB 0644
acf-taxonomy-functions.php File 6.3 KB 0644
acf-user-functions.php File 2.32 KB 0644
acf-utility-functions.php File 3.07 KB 0644
acf-value-functions.php File 10.3 KB 0644
acf-wp-functions.php File 6.53 KB 0644
assets.php File 15.68 KB 0644
class-acf-data.php File 6.68 KB 0644
class-acf-internal-post-type.php File 22.65 KB 0644
class-acf-site-health.php File 20.13 KB 0644
compatibility.php File 12.32 KB 0644
deprecated.php File 3.97 KB 0644
fields.php File 12.29 KB 0644
index.php File 43 B 0644
l10n.php File 3.7 KB 0644
local-fields.php File 15.96 KB 0644
local-json.php File 14.3 KB 0644
local-meta.php File 6.09 KB 0644
locations.php File 8.19 KB 0644
loop.php File 5.01 KB 0644
media.php File 7.09 KB 0644
rest-api.php File 383 B 0644
revisions.php File 12.33 KB 0644
third-party.php File 4.25 KB 0644
upgrades.php File 11.13 KB 0644
validation.php File 7.4 KB 0644
wpml.php File 8 KB 0644