Files
doitinpoland.com/wp-content/plugins/sitepress-multilingual-cms/addons/wpml-page-builders/classes/Integrations/Divi/DisplayConditions.php
2023-09-12 21:41:04 +02:00

45 lines
1.3 KiB
PHP

<?php
namespace WPML\Compatibility\Divi;
use WPML\LIB\WP\Hooks;
use function WPML\FP\spreadArgs;
use WPML\FP\Obj;
class DisplayConditions implements \IWPML_Frontend_Action {
const BASE64_EMPTY_ARRAY = 'W10=';
public function add_hooks() {
Hooks::onFilter( 'et_pb_module_shortcode_attributes' )
->then( spreadArgs( [ $this, 'translateAttributes' ] ) );
}
/**
* @param array $atts
* @return array
*/
public function translateAttributes( $atts ) {
$displayConditions = Obj::prop( 'display_conditions', $atts );
if ( $displayConditions && self::BASE64_EMPTY_ARRAY !== $displayConditions ) {
/* phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode */
$conditions = json_decode( base64_decode( $atts['display_conditions'] ), true );
foreach ( $conditions as &$condition ) {
if ( 'categoryPage' === $condition['condition'] ) {
foreach ( $condition['conditionSettings']['categories'] as &$category ) {
$category['value'] = (string) apply_filters( 'wpml_object_id', $category['value'], $category['groupSlug'] );
}
}
}
/* phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode */
$atts['display_conditions'] = base64_encode( wp_json_encode( $conditions ) );
}
return $atts;
}
}