<?php
// Protection from direct access
if (!defined('ABSPATH')) {
    exit;
}

if (!function_exists('ai_content_wizard_save_image_locally')) {
    /**
     * Загружает изображение по заданному URL и сохраняет его в медиабиблиотеке.
     *
     * @param string $image_url URL сгенерированного изображения.
     * @param string $keyword   Ключевое слово (используется для формирования имени файла).
     * @param string $cleaned_content_for_prompt Дополнительный контент (не используется, но сохраняется для совместимости).
     *
     * @return array Массив с данными: URL, имя файла, alt-текст и стоимость (0).
     */
    function ai_content_wizard_save_image_locally($image_url, $keyword, $cleaned_content_for_prompt) {
        require_once(ABSPATH . 'wp-admin/includes/file.php');
        require_once(ABSPATH . 'wp-admin/includes/media.php');
        require_once(ABSPATH . 'wp-admin/includes/image.php');
    
        $tmp = download_url($image_url);
        if (is_wp_error($tmp)) {
            error_log('Error downloading image: ' . $tmp->get_error_message());
            return [];
        }
    
        $file_array = [
            'name'     => sanitize_title($keyword) . '.png',
            'tmp_name' => $tmp
        ];
    
        $attachment_id = media_handle_sideload($file_array, 0);
        if (is_wp_error($attachment_id)) {
            @unlink($file_array['tmp_name']);
            error_log('Error uploading image: ' . $attachment_id->get_error_message());
            return [];
        }
    
        $local_image_url = wp_get_attachment_url($attachment_id);
        return [
            'url'       => $local_image_url,
            'file_name' => $file_array['name'],
            'alt_text'  => 'Image for ' . $keyword,
            'cost'      => 0
        ];
    }
}

function ai_content_wizard_generate_image_openai($params) {
    // Если модель изображения не передана, извлекаем её из настроек
    if (empty($params['image_model'])) {
        $params['image_model'] = ai_content_wizard_get_setting('ai_content_wizard_image_model', 'dall-e-3');
    }

    $response = wp_remote_post('https://api.openai.com/v1/images/generations', [
        'headers' => [
            'Authorization' => 'Bearer ' . $params['api_key'],
            'Content-Type'  => 'application/json',
        ],
        'body'    => json_encode([
            'model'   => $params['image_model'],
            'prompt'  => $params['prompt'],
            'n'       => 1,
            'size'    => $params['size_options'],
            'quality' => $params['quality_options'] // параметр качества включён в запрос
        ]),
        'timeout' => 1000
    ]);

    if (is_wp_error($response)) {
        error_log('Error while requesting image generation: ' . $response->get_error_message());
        return [];
    } elseif (wp_remote_retrieve_response_code($response) != 200) {
        error_log('Unexpected API response during image generation: ' . wp_remote_retrieve_response_code($response));
        return [];
    } else {
        $response_body = json_decode(wp_remote_retrieve_body($response), true);
        if (isset($response_body['data'][0]['url'])) {
            $image_url = $response_body['data'][0]['url'];
            return ai_content_wizard_save_image_locally($image_url, $params['keyword'], $params['cleaned_content_for_prompt']);
        } else {
            error_log('No image URL found in the response.');
            return [];
        }
    }
}
