Settings -> Sanitize * */ if ( ! defined( 'ABSPATH' ) ) exit; /** * Saving and sanitization of the options array */ function tbkkt_settings_sanitize( $value ): array { $defaults = tbkkt_settings_get_defaults(); $old = tbkkt_storage_option_get( TBKKT_OPTION_NAME, array() ); if ( ! is_array( $old ) ) : $old = array(); endif; $breakpoints_option_key = tbkkt_responsive_breakpoints_css_get_option_key(); $breakpoints_defaults = tbkkt_responsive_breakpoints_css_get_settings_defaults(); $prev_breakpoints = isset( $old[ $breakpoints_option_key ] ) && is_array( $old[ $breakpoints_option_key ] ) ? $old[ $breakpoints_option_key ] : array(); $editor_toolbar_defaults = tbkkt_settings_get_editor_toolbar_defaults(); $prev_editor_toolbar = isset( $old['editor_toolbar'] ) && is_array( $old['editor_toolbar'] ) ? $old['editor_toolbar'] : array(); $out = array( 'features' => array(), 'blocks' => array(), ); $out['editor_toolbar'] = array( 'enabled' => isset( $prev_editor_toolbar['enabled'] ) ? (bool) $prev_editor_toolbar['enabled'] : (bool) $editor_toolbar_defaults['enabled'], ); $out[ $breakpoints_option_key ] = array( 'enabled' => isset( $prev_breakpoints['enabled'] ) ? (bool) $prev_breakpoints['enabled'] : (bool) $breakpoints_defaults['enabled'], 'mobile_px' => isset( $prev_breakpoints['mobile_px'] ) ? tbkkt_settings_normalize_breakpoint_px( $prev_breakpoints['mobile_px'], $breakpoints_defaults['mobile_px'] ) : (int) $breakpoints_defaults['mobile_px'], 'tablet_px' => isset( $prev_breakpoints['tablet_px'] ) ? tbkkt_settings_normalize_breakpoint_px( $prev_breakpoints['tablet_px'], $breakpoints_defaults['tablet_px'] ) : (int) $breakpoints_defaults['tablet_px'], ); foreach ( tbkkt_settings_get_feature_keys() as $key ) : $prev = isset( $old['features'][ $key ] ) ? (bool) $old['features'][ $key ] : $defaults['features'][ $key ]; $out['features'][ $key ] = $prev; endforeach; $catalog = tbkkt_settings_get_blocks_catalog(); if ( isset( $old['blocks'] ) && is_array( $old['blocks'] ) ) : foreach ( $old['blocks'] as $block_key => $enabled ) : if ( is_string( $block_key ) && $block_key !== '' ) : $normalized = tbkkt_settings_normalize_block_name( $block_key ); if ( $normalized !== '' ) : $out['blocks'][ $normalized ] = (bool) $enabled; endif; endif; endforeach; endif; if ( is_array( $value ) && isset( $value['features'] ) && is_array( $value['features'] ) ) : foreach ( tbkkt_settings_get_feature_keys() as $key ) : if ( array_key_exists( $key, $value['features'] ) ) : $out['features'][ $key ] = (bool) (int) $value['features'][ $key ]; endif; endforeach; endif; if ( ! empty( $out['features']['floating_overlays'] ) && empty( $out['features']['position'] ) ) : $out['features']['position'] = true; if ( tbkkt_settings_get_submit_tab_from_request() === 'extensions' ) : add_settings_error( TBKKT_SETTINGS_GROUP, 'tbkkt_position_required_for_overlays', __( 'Position was enabled automatically because Floating overlays requires it.', 'tms-block-kit' ), 'info' ); endif; endif; if ( is_array( $value ) && isset( $value['blocks'] ) && is_array( $value['blocks'] ) ) : $out['blocks'] = array(); foreach ( $value['blocks'] as $block_key => $enabled ) : if ( is_string( $block_key ) && $block_key !== '' ) : $normalized = tbkkt_settings_normalize_block_name( $block_key ); if ( $normalized !== '' && isset( $catalog[ $normalized ] ) ) : $out['blocks'][ $normalized ] = (bool) $enabled; endif; endif; endforeach; endif; if ( is_array( $value ) && isset( $value['editor_toolbar'] ) && is_array( $value['editor_toolbar'] ) ) : $submitted_editor_toolbar = $value['editor_toolbar']; if ( array_key_exists( 'enabled', $submitted_editor_toolbar ) ) : $out['editor_toolbar']['enabled'] = (bool) (int) $submitted_editor_toolbar['enabled']; endif; endif; if ( is_array( $value ) && isset( $value[ $breakpoints_option_key ] ) && is_array( $value[ $breakpoints_option_key ] ) ) : $submitted_breakpoints = $value[ $breakpoints_option_key ]; if ( array_key_exists( 'enabled', $submitted_breakpoints ) ) : $out[ $breakpoints_option_key ]['enabled'] = (bool) (int) $submitted_breakpoints['enabled']; endif; if ( array_key_exists( 'mobile_px', $submitted_breakpoints ) ) : $out[ $breakpoints_option_key ]['mobile_px'] = tbkkt_settings_normalize_breakpoint_px( $submitted_breakpoints['mobile_px'], tbkkt_responsive_breakpoints_css_get_default_mobile_px() ); endif; if ( array_key_exists( 'tablet_px', $submitted_breakpoints ) ) : $out[ $breakpoints_option_key ]['tablet_px'] = tbkkt_settings_normalize_breakpoint_px( $submitted_breakpoints['tablet_px'], tbkkt_responsive_breakpoints_css_get_default_tablet_px() ); endif; endif; return $out; }