HEX
Server: Apache
System: Linux webd006.cluster128.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User: zwafgyp (177615)
PHP: 7.4.33
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/zwafgyp/lacalita/wp-content/plugins/rey-core/inc/compatibility/polylang/base.php
<?php
namespace ReyCore\Compatibility\Polylang;

if ( ! defined( 'ABSPATH' ) ) exit;

class Base extends \ReyCore\Compatibility\CompatibilityBase
{

	public function __construct()
	{
		add_action( 'rey/header/row', [$this, 'header'], 60);
		add_action( 'reycore/elementor/header_language/render', [$this, 'header'], 10);
		add_action( 'rey/mobile_nav/footer', [$this, 'mobile'], 10);
		add_action( 'reycore/ajax/register_actions', [$this, 'ajax_compatibility'], 0);
		add_filter( 'reycore/woocommerce/variations/terms_transients', [$this, 'variation_transients'] );
		add_filter( 'reycore/elementor/gs_id', [$this, 'maybe_translate_id'] );
		add_filter( 'reycore/theme_mod/translate_ids', [$this, 'maybe_translate_id'] );
		add_filter( 'reycore/translate_ids', [$this, 'maybe_translate_id'] );
		add_filter( 'reycore/is_multilanguage', [$this, 'is_multilanguage'] );
		add_filter( 'rey/main_script_params', [$this, 'script_params'] );
	}

	/**
	 * Get PolyLang data
	 *
	 * @since 1.0.0
	 **/
	function data(){

		if( function_exists('pll_current_language') && function_exists('pll_the_languages') ):
			$languages = [];
			$translations = pll_the_languages([
				'raw' => 1,
				'hide_if_empty' => 0
			]);

			$flag = false;

			if( !empty($translations) ){

				foreach ($translations as $key => $language) {
					$languages[$key] = [
						'code' => $key,
						'flag' => $language['flag'],
						'name' => $language['name'],
						'active' => $language['current_lang'],
						'url' => $language['url']
					];

					if( $language['current_lang'] ){
						$flag = $language['flag'];
					}
				}

				return [
					'current' => pll_current_language(),
					'current_flag' => $flag,
					'languages' => $languages,
					'type' => 'polylang'
				];
			}
		endif;

		return false;
	}

	/**
	 * Add language switcher for PolyLang into Header
	 *
	 * @since 1.0.0
	 **/
	function header($options = []){
		if($data = $this->data()) {
			echo reycore__language_switcher_markup($data, $options);
		}
	}

	/**
	 * Add language switcher for PolyLang into Mobile menu panel
	 *
	 * @since 1.0.0
	 **/
	function mobile(){
		if($data = $this->data()) {
			echo reycore__language_switcher_markup_mobile($data);
		}
	}

	function variation_transients( $transients ){

		if( function_exists('pll_current_language') ){
			foreach ($transients as $name => $transient) {
				$transients[$name] = sprintf('%s_%s', $transient, pll_current_language());
			}
		}

		return $transients;
	}

	public function maybe_translate_id( $data ){

		if( ! function_exists('pll_get_post') ){
			return $data;
		}

		if( ! apply_filters('reycore/multilanguage/translate_ids', true) ){
			return $data;
		}

		$current_lang = pll_current_language();

		if( isset($_REQUEST['lang']) ){
			$current_lang = reycore__clean($_REQUEST['lang']);
		}

		if ( is_array( $data ) ) {
			$translated_ids = [];
			foreach ($data as $post_id) {
				if( $tid = pll_get_post($post_id, $current_lang) ){
					$translated_ids[] = $tid;
				}
			}
			if( !empty($translated_ids) ){
				return $translated_ids;
			}
		} else {
			if( $translated_id = pll_get_post($data, $current_lang) ){
				return $translated_id;
			}
		}

		return $data;
	}

	public function is_multilanguage() {
		return (function_exists('pll_current_language') && ($curr = pll_current_language('slug'))) ? $curr : false;
	}

	public function script_params( $params ){
		$params['lang'] = pll_current_language();
		return $params;
	}

	public function ajax_compatibility(){

		global $polylang;

    	if ( isset( $polylang ) && $polylang && isset( $_REQUEST['lang'] ) && ($lang = reycore__clean( $_REQUEST['lang'] )) ) {
			$polylang->curlang = $polylang->model->get_language( $lang );
		}

	}

}