Settings -> Option * */ if ( ! defined( 'ABSPATH' ) ) exit; /** * Database option */ function tbkkt_settings_get_feature_keys(): array { return array( 'responsive_spacing', 'responsive_font_size', 'responsive_visibility', 'scroll_animation', 'position', 'floating_overlays', ); } function tbkkt_settings_get_editor_toolbar_defaults(): array { return array( 'enabled' => false, ); } function tbkkt_settings_get_defaults(): array { $features = array(); foreach ( tbkkt_settings_get_feature_keys() as $key ) : $features[ $key ] = true; endforeach; $breakpoints_option_key = tbkkt_responsive_breakpoints_css_get_option_key(); return array( 'features' => $features, 'blocks' => array(), 'editor_toolbar' => tbkkt_settings_get_editor_toolbar_defaults(), $breakpoints_option_key => tbkkt_responsive_breakpoints_css_get_settings_defaults(), ); } function tbkkt_settings_get() : array { $defaults = tbkkt_settings_get_defaults(); $stored = tbkkt_storage_option_get( TBKKT_OPTION_NAME, array() ); if ( ! is_array( $stored ) ) : $stored = array(); endif; $breakpoints_option_key = tbkkt_responsive_breakpoints_css_get_option_key(); $breakpoints_defaults = tbkkt_responsive_breakpoints_css_get_settings_defaults(); $editor_toolbar_defaults = tbkkt_settings_get_editor_toolbar_defaults(); $out = array( 'features' => $defaults['features'], 'blocks' => array(), 'editor_toolbar' => $editor_toolbar_defaults, $breakpoints_option_key => $breakpoints_defaults, ); if ( isset( $stored['features'] ) && is_array( $stored['features'] ) ) : foreach ( tbkkt_settings_get_feature_keys() as $key ) : if ( array_key_exists( $key, $stored['features'] ) ) : $out['features'][ $key ] = (bool) $stored['features'][ $key ]; endif; endforeach; endif; if ( isset( $stored['blocks'] ) && is_array( $stored['blocks'] ) ) : foreach ( $stored['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 ( isset( $stored['editor_toolbar'] ) && is_array( $stored['editor_toolbar'] ) ) : $stored_editor_toolbar = $stored['editor_toolbar']; if ( array_key_exists( 'enabled', $stored_editor_toolbar ) ) : $out['editor_toolbar']['enabled'] = (bool) $stored_editor_toolbar['enabled']; endif; endif; if ( isset( $stored[ $breakpoints_option_key ] ) && is_array( $stored[ $breakpoints_option_key ] ) ) : $stored_breakpoints = $stored[ $breakpoints_option_key ]; if ( array_key_exists( 'enabled', $stored_breakpoints ) ) : $out[ $breakpoints_option_key ]['enabled'] = (bool) $stored_breakpoints['enabled']; endif; if ( array_key_exists( 'mobile_px', $stored_breakpoints ) ) : $out[ $breakpoints_option_key ]['mobile_px'] = tbkkt_settings_normalize_breakpoint_px( $stored_breakpoints['mobile_px'], $breakpoints_defaults['mobile_px'] ); endif; if ( array_key_exists( 'tablet_px', $stored_breakpoints ) ) : $out[ $breakpoints_option_key ]['tablet_px'] = tbkkt_settings_normalize_breakpoint_px( $stored_breakpoints['tablet_px'], $breakpoints_defaults['tablet_px'] ); endif; endif; return $out; } /** * Normalize a breakpoint pixel value from user input */ function tbkkt_settings_normalize_breakpoint_px( $raw, int $fallback ): int { if ( null === $raw || $raw === '' ) : return $fallback; endif; $n = absint( $raw ); if ( $n < 200 || $n > 4096 ) : return $fallback; endif; return $n; } /** * Helpers for the rest of the plugin */ function tbkkt_settings_feature_is_enabled( string $key ): bool { $all = tbkkt_settings_get(); return ! empty( $all['features'][ $key ] ); } function tbkkt_settings_editor_toolbar_is_enabled(): bool { $all = tbkkt_settings_get(); return ! empty( $all['editor_toolbar']['enabled'] ); } function tbkkt_settings_is_any_core_feature_enabled(): bool { foreach ( tbkkt_settings_get_feature_keys() as $key ) : if ( tbkkt_settings_feature_is_enabled( $key ) ) return true; endforeach; return false; }