<?php
if ( ! defined( 'ABSPATH' ) ) exit;
function alertaprecio_get_currency() {
    return get_woocommerce_currency();
}

function alertaprecio_can_monitor($user_id) {
    $used = get_user_meta($user_id, 'alertaprecio_used_slots', true) ?: 0;
    $max = 5;
    return $used < $max;
}

function alertaprecio_increment_monitor_slot($user_id) {
    $used = get_user_meta($user_id, 'alertaprecio_used_slots', true) ?: 0;
    update_user_meta($user_id, 'alertaprecio_used_slots', $used + 1);
}

function alertaprecio_attach_external_image($image_url, $post_id) {
    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_file = alertaprecio_download_image_with_curl($image_url); // mantenemos el nombre original

    if (!$tmp_file || is_wp_error($tmp_file)) {
        return false;
    }

    $file_info = wp_check_filetype(basename(wp_parse_url($image_url, PHP_URL_PATH))); // wp_parse_url = versión segura

    $ext = $file_info['ext'] ?: 'jpg';
    $name = 'wscraper-image.' . $ext;

    $file_array = [
        'name'     => $name,
        'tmp_name' => $tmp_file,
    ];

    if (!file_exists($tmp_file) || filesize($tmp_file) < 100) {
        @wp_delete_file($tmp_file); // versión segura
        return false;
    }

    $id = media_handle_sideload($file_array, $post_id);

    if (is_wp_error($id)) {
        @wp_delete_file($tmp_file); // versión segura
        return false;
    }

    return $id;
}

function alertaprecio_download_image_with_curl($url) {
    $response = wp_remote_get($url, [
        'timeout' => 20,
        'headers' => [
            'User-Agent' => 'Mozilla/5.0',
            'Referer'    => 'https://www.falabella.com/',
        ],
    ]);

    if (is_wp_error($response)) {
        return new WP_Error('http_request_failed', $response->get_error_message());
    }

    $body = wp_remote_retrieve_body($response);
    if (empty($body)) {
        return new WP_Error('empty_body', 'La imagen está vacía.');
    }

    $tmp = wp_tempnam($url);
    if (!$tmp) {
        return new WP_Error('temp_file', 'No se pudo crear archivo temporal');
    }

    global $wp_filesystem;
    if (empty($wp_filesystem)) {
        require_once ABSPATH . '/wp-admin/includes/file.php';
        WP_Filesystem();
    }

    $written = $wp_filesystem->put_contents($tmp, $body, FS_CHMOD_FILE);
    if (!$written) {
        return new WP_Error('write_failed', 'No se pudo escribir el archivo temporal.');
    }

    return $tmp;
}
