$models) { $result[$group_name] = $models; } } // Add all_models if present (from API discovery) if (!empty($provider_data['all_models'])) { $result['*** ALL MODELS ***'] = []; foreach ($provider_data['all_models'] as $model) { $model_id = $model['id']; $model_name = isset($model['name']) && $model['name'] !== $model['id'] ? $model['name'] . ' (' . $model['id'] . ')' : $model['id']; $result['*** ALL MODELS ***'][$model_id] = $model_name; } } return $result; } /** * Get the default model for a provider * * @param string $provider The provider name * @return string The default model ID */ function botwriter_get_provider_default_model($provider) { $models_data = botwriter_get_models_data(); if (empty($models_data['providers'][$provider]['default'])) { return ''; } return $models_data['providers'][$provider]['default']; } /** * Update the all_models list for a provider * * @param string $provider The provider name * @param array $models Array of models with 'id' and 'name' keys * @return bool True on success */ function botwriter_update_provider_all_models($provider, $models) { $models_data = botwriter_get_models_data(); if (empty($models_data['providers'][$provider])) { return false; } // Update the all_models list $models_data['providers'][$provider]['all_models'] = $models; $models_data['updated'] = current_time('Y-m-d'); return update_option(BOTWRITER_MODELS_OPTION, $models_data); } /** * Reset models to default from JSON file * * @return bool True on success */ function botwriter_reset_models_to_default() { delete_option(BOTWRITER_MODELS_OPTION); return botwriter_get_models_data() !== false; } /** * Render a model select dropdown for a provider * * @param string $provider The provider name * @param string $field_name The form field name * @param string $current_value The currently selected value * @param array $extra_attrs Extra HTML attributes */ function botwriter_render_model_select($provider, $field_name, $current_value, $extra_attrs = []) { $models = botwriter_get_provider_models($provider); $default = botwriter_get_provider_default_model($provider); if (empty($current_value)) { $current_value = $default; } $attrs_str = ''; foreach ($extra_attrs as $key => $value) { $attrs_str .= ' ' . esc_attr($key) . '="' . esc_attr($value) . '"'; } echo ''; }