includes(); // Set vars for i18n handling. $option_name = Fusion_Settings::get_option_name(); $is_language_all = ( 'all' === Fusion_Multilingual::get_active_language() ); $default_language = Fusion_Multilingual::get_default_language(); if ( $is_language_all && 'fusion_options' === $option_name ) { $option_name = $option_name . '_' . $default_language; } $this->args = [ 'sections' => Fusion_Builder_Options::get_instance(), 'is_language_all' => $is_language_all, 'default_language' => $default_language, 'option_name' => $option_name, 'original_option_name' => Fusion_Settings::get_original_option_name(), 'version' => FUSION_BUILDER_VERSION, 'textdomain' => 'fusion-builder', 'disable_dependencies' => false, 'display_name' => 'Avada Builder', 'menu_title' => esc_attr__( 'Element Options', 'fusion-builder' ), 'page_title' => esc_attr__( 'Element Options', 'fusion-builder' ), 'global_variable' => 'fusion_fusionredux_options', 'page_parent' => 'fusion-builder-options', 'page_slug' => 'fusion-element-options', 'menu_type' => 'submenu', 'page_permissions' => 'manage_options', ]; if ( ! is_customize_preview() ) { require_once FUSION_BUILDER_PLUGIN_DIR . 'inc/class-fusion-builder-redux.php'; // If the current theme doesn't have an integration with fusion-builder-options // Instantiate our admin options. if ( ! current_theme_supports( 'fusion-builder-options' ) ) { $this->init_redux(); } } add_filter( 'fusion_admin_options_injection', [ $this, 'fusion_options_integration' ] ); } /** * Instantiates the options panel. * * @access public * @since 1.1.0 */ public function init_redux() { $this->fusion_builder_redux = new Fusion_Builder_Redux( $this->args ); } /** * Include any needed files. * * @access protected * @since 1.1.0 */ protected function includes() { if ( ! class_exists( 'Fusion_Builder_Options' ) ) { include_once FUSION_BUILDER_PLUGIN_DIR . 'inc/class-fusion-builder-options.php'; } } /** * Allows adding our options to another options panel. * * @access public * @since 1.1.0 * @param object $sections The sections object. * @return object */ public function fusion_options_integration( $sections ) { $fb_options = Fusion_Builder_Options::get_instance(); $element_options = $fb_options->sections; $fields_array = fusion_get_fields_array( $sections ); $has_addons_class = ''; // Options tweaks. $option_panels = [ 'shortcode_styling', 'fusion_builder_addons', ]; if ( ! isset( $element_options['fusion_builder_addons'] ) ) { $has_addons_class = 'fusion-builder-no-addon-elements'; } foreach ( $option_panels as $option_panel ) { if ( isset( $element_options[ $option_panel ] ) ) { ksort( $element_options[ $option_panel ]['fields'] ); if ( current_theme_supports( 'fusion-builder-options' ) ) { foreach ( $element_options[ $option_panel ]['fields'] as $key => $value ) { $element_options[ $option_panel ]['fields'][ $key ]['type'] = 'accordion'; if ( isset( $element_options[ $option_panel ]['fields'][ $key ]['fields'] ) && is_array( $element_options[ $option_panel ]['fields'][ $key ]['fields'] ) ) { foreach ( $element_options[ $option_panel ]['fields'][ $key ]['fields'] as $field_key => $field_value ) { if ( is_array( $fields_array ) && in_array( $field_key, $fields_array ) ) { // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict // If the field already exist somewhere in $sections, then don't add twice. $element_options[ $option_panel ]['fields'][ $key ]; unset( $element_options[ $option_panel ]['fields'][ $key ]['fields'][ $field_key ] ); // @phpstan-ignore-line if ( empty( $element_options[ $option_panel ]['fields'][ $key ]['fields'] ) ) { // If the accordian is now empty, remove it. unset( $element_options[ $option_panel ]['fields'][ $key ] ); } } } } } } } } $new_options['shortcode_styling'] = [ 'label' => esc_html__( 'Avada Builder Elements', 'fusion-builder' ), 'id' => 'shortcode_styling', 'is_panel' => 'true', 'class' => $has_addons_class, 'priority' => 14, 'icon' => 'el-icon-check', 'fields' => [], ]; $new_options['shortcode_styling']['fields']['fusion_builder_elements'] = [ 'label' => esc_html__( 'Avada Builder Elements', 'fusion-builder' ), 'id' => 'fusion_builder_elements', 'type' => 'sub-section', 'priority' => 14, 'fields' => $element_options['shortcode_styling']['fields'], ]; if ( isset( $element_options['fusion_builder_addons'] ) ) { $new_options['shortcode_styling']['fields']['fusion_builder_addons'] = [ 'label' => esc_html__( 'Add-on Elements', 'fusion-builder' ), 'id' => 'fusion_builder_addons', 'type' => 'sub-section', 'priority' => 14, 'fields' => array_merge( [ 'fusion_builder_addons_important_note_info' => [ 'label' => '', 'description' => '