'default', 'slug' => 'default', 'origin' => '', 'configSource' => 'local', ]; $normalized = array_merge( $defaults, $tenant ); foreach ( [ 'id', 'slug', 'origin', 'configSource' ] as $key ) { $normalized[ $key ] = isset( $normalized[ $key ] ) ? (string) $normalized[ $key ] : ''; } if ( '' === $normalized['id'] ) { $normalized['id'] = 'default'; } if ( '' === $normalized['slug'] ) { $normalized['slug'] = 'default'; } return $normalized; } public static function build_storage_namespace( $tenant ) { $tenant = self::normalize_tenant_context( $tenant ); return 'adecksibility:' . $tenant['slug']; } public static function apply_config_overrides( ADECK_Config $config, $overrides = [] ) { if ( ! is_array( $overrides ) || empty( $overrides ) ) { return $config; } $allowed_keys = ADECK_Config_Schema::get_remote_overridable_option_keys(); $safe_values = array_intersect_key( $overrides, array_flip( $allowed_keys ) ); if ( empty( $safe_values ) ) { return $config; } return $config->merge( $safe_values ); } public static function apply_widget_overrides( array $widget_config, $overrides = [] ) { if ( ! is_array( $overrides ) || empty( $overrides ) ) { return $widget_config; } if ( isset( $overrides['tenant'] ) ) { $widget_config['tenant'] = self::normalize_tenant_context( array_merge( isset( $widget_config['tenant'] ) && is_array( $widget_config['tenant'] ) ? $widget_config['tenant'] : [], is_array( $overrides['tenant'] ) ? $overrides['tenant'] : [] ) ); unset( $overrides['tenant'] ); } $widget_config = array_replace_recursive( $widget_config, $overrides ); if ( isset( $widget_config['tenant'] ) ) { $widget_config['tenant'] = self::normalize_tenant_context( $widget_config['tenant'] ); } if ( empty( $widget_config['storageNamespace'] ) && ! empty( $widget_config['tenant'] ) ) { $widget_config['storageNamespace'] = self::build_storage_namespace( $widget_config['tenant'] ); } return $widget_config; } }