Sid Gifari From Gifari Industries - BD Cyber Security Team
Home
/
home
/
millwino
/
777games.com.pk
/
wp-content
/
plugins
/
connect-polylang-elementor
/
includes
/
✏️
Editing: language-visibility.php
<?php namespace ConnectPolylangElementor; use Elementor\Controls_Manager; defined( 'ABSPATH' ) || exit; class LanguageVisibility { use \ConnectPolylangElementor\Util\Singleton; /** * __construct * * @return void */ private function __construct() { // Editor styles. add_action( 'elementor/preview/enqueue_styles', array( $this, 'preview_styles' ) ); // Editor add extras settings. $visibility_settings = array( $this, 'visibility_settings' ); add_action( 'elementor/element/section/section_advanced/after_section_end', $visibility_settings, 10, 2 ); add_action( 'elementor/element/column/section_advanced/after_section_end', $visibility_settings, 10, 2 ); add_action( 'elementor/element/container/section_layout/after_section_end', $visibility_settings, 10, 2 ); add_action( 'elementor/element/common/_section_style/after_section_end', $visibility_settings, 10, 2 ); // Front check visibility. $visibility_check = array( $this, 'visibility_check' ); add_filter( 'elementor/frontend/section/should_render', $visibility_check, 10, 2 ); add_filter( 'elementor/frontend/column/should_render', $visibility_check, 10, 2 ); add_filter( 'elementor/frontend/container/should_render', $visibility_check, 10, 2 ); add_filter( 'elementor/frontend/widget/should_render', $visibility_check, 10, 2 ); add_filter( 'elementor/element/is_dynamic_content', array( $this, 'filter_element_caching_is_dynamic_content' ), 10, 3 ); } /** * Add preview styles for elements with language visibility enabled * * @return void */ public function preview_styles() { wp_add_inline_style( 'editor-preview', '.cpel-lv--yes {outline:2px dashed #d5dadf;}' ); } /** * Add visibility settings * * @param mixed $element * @param mixed $section_id * @return void */ public function visibility_settings( $element, $section_id ) { $languages = pll_languages_list( array( 'fields' => '' ) ); $dropdown = wp_list_pluck( $languages, 'name', 'slug' ); $element->start_controls_section( 'cpel_lv_section', array( 'tab' => Controls_Manager::TAB_ADVANCED, 'label' => __( 'Language Visibility', 'connect-polylang-elementor' ), ) ); $element->add_control( 'cpel_lv_enabled', array( 'type' => Controls_Manager::SWITCHER, 'label' => __( 'Enable', 'elementor' ), // phpcs:ignore WordPress.WP.I18n 'render_type' => 'template', 'prefix_class' => 'cpel-lv--', 'style_transfer' => false, ) ); $element->add_control( 'cpel_lv_action', array( 'label' => __( 'Visibility', 'elementor' ), // phpcs:ignore WordPress.WP.I18n 'type' => Controls_Manager::CHOOSE, 'options' => array( 'show' => array( 'title' => __( 'Show', 'elementor' ), // phpcs:ignore WordPress.WP.I18n 'icon' => 'eicon-preview-medium', ), 'hide' => array( 'title' => __( 'Hide', 'elementor' ), // phpcs:ignore WordPress.WP.I18n 'icon' => 'eicon-ban', ), ), 'default' => 'show', 'condition' => array( 'cpel_lv_enabled' => 'yes', ), ) ); $element->add_control( 'cpel_lv_languages', array( 'label' => __( 'When language is:', 'connect-polylang-elementor' ), 'type' => Controls_Manager::SELECT2, 'label_block' => true, 'default' => array(), 'multiple' => true, 'options' => $dropdown, 'condition' => array( 'cpel_lv_enabled' => 'yes', ), ) ); $element->end_controls_section(); } /** * Check render language visibility * * @param bool $should_render * @param Element_Base $element * @return bool */ public function visibility_check( $should_render, $element ) { $settings = $element->get_settings(); $enabled = ! empty( $settings['cpel_lv_enabled'] ) ? $settings['cpel_lv_enabled'] : false; $enabled = filter_var( $enabled, FILTER_VALIDATE_BOOLEAN ); $languages = isset( $settings['cpel_lv_languages'] ) ? (array) $settings['cpel_lv_languages'] : array(); $show = isset( $settings['cpel_lv_action'] ) ? 'hide' !== $settings['cpel_lv_action'] : true; if ( ! $enabled || empty( $languages ) ) { return $should_render; } return in_array( pll_current_language(), $languages, true ) ? $show : ! $show; } /** * Mark element as dynamic content if language visibility is enabled * * @param bool $is_dynamic_content * @param array $element_rqw_data * @param Element_Base $element_instance * @return bool */ public function filter_element_caching_is_dynamic_content( $is_dynamic_content, $element_rqw_data, $element_instance ) { if ( isset( $element_rqw_data['settings']['cpel_lv_enabled'] ) && 'yes' === $element_rqw_data['settings']['cpel_lv_enabled'] ) { $is_dynamic_content = true; } return $is_dynamic_content; } }
💾 Save
❌ Cancel