yazrkisvs3vvvsv33svrhetrjsvyvsvvyjsvsvs
tavsuysvssvvjvvyjyjkvsvqd
qfogsvvsvsegjdgdfgdskhgdksvqsvshdqsd
<?php
// api/refresh.php — Limpia caché y devuelve datos frescos de todos los servicios del cliente
header('Content-Type: application/json');
require_once __DIR__ . '/../auth.php';
dm_require_login();
dm_csrf_verify();

$input     = json_decode(file_get_contents('php://input'), true) ?? [];
$client_id = (int)($input['client_id'] ?? $_GET['client_id'] ?? 0);
$period    = $input['period'] ?? '30d';

dm_require_client_access($client_id);

// 1. Limpiar caché de este cliente
try {
    $pdo->prepare("DELETE FROM dm_cache WHERE cache_key LIKE ?")->execute(["%_{$client_id}_%"]);
    $pdo->prepare("DELETE FROM dm_cache WHERE cache_key LIKE ?")->execute(["%_{$client_id}"]);
} catch(Exception $e){}

// 2. Detectar qué servicios tiene configurados
function has_service(int $client_id, string $service): bool {
    global $pdo;
    try {
        $stmt = $pdo->prepare('SELECT COUNT(*) FROM dm_client_credentials WHERE client_id=? AND service=?');
        $stmt->execute([$client_id, $service]);
        return $stmt->fetchColumn() > 0;
    } catch(Exception $e){ return false; }
}

$services_available = [];
foreach (['wordpress','shopify','meta','google','gsc'] as $svc) {
    if (has_service($client_id, $svc)) $services_available[] = $svc;
}

// 3. Llamar a cada endpoint disponible
$base_url = (isset($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'];
$api_base = $base_url . '/supercerebro/api';

// Pasar cookies de sesión para autenticación — escapar para evitar header injection
$cookies = [];
foreach ($_COOKIE as $k => $v) $cookies[] = rawurlencode($k) . '=' . rawurlencode($v);
$cookie_str = implode('; ', $cookies);

function fetch_service(string $url, string $cookies): array {
    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT        => 25,
        CURLOPT_HTTPHEADER     => ['Cookie: ' . $cookies],
        CURLOPT_SSL_VERIFYPEER => true, CURLOPT_SSL_VERIFYHOST => 2,
    ]);
    $raw   = curl_exec($ch);
    $errno = curl_errno($ch);
    $code  = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if ($errno || $raw === false) return ['ok'=>false,'error'=>'curl_error','_http_code'=>0];
    $data = json_decode($raw, true);
    if (!is_array($data)) return ['ok'=>false,'error'=>'invalid_json','_http_code'=>$code];
    $data['_http_code'] = $code;
    return $data;
}

$results  = [];
$errors   = [];
$refreshed = [];

foreach ($services_available as $svc) {
    $url = '';
    switch($svc) {
        case 'wordpress': $url = "{$api_base}/wp-data.php?client_id={$client_id}&action=summary"; break;
        case 'shopify':   $url = "{$api_base}/shopify-data.php?client_id={$client_id}&action=summary"; break;
        case 'meta':      $url = "{$api_base}/meta-data.php?client_id={$client_id}&period={$period}"; break;
        case 'google':    $url = "{$api_base}/google-data.php?client_id={$client_id}&period={$period}"; break;
        case 'gsc':       $url = "{$api_base}/gsc-data.php?client_id={$client_id}&period={$period}"; break;
    }
    if (!$url) continue;

    $res = fetch_service($url, $cookie_str);
    if ($res['ok'] ?? false) {
        $results[$svc] = $res['data'] ?? [];
        $refreshed[]   = $svc;
    } else {
        $errors[$svc] = $res['error'] ?? 'Error desconocido';
    }
}

// Log
dm_log(dm_user()['id'], $client_id, 'refresh_data', 'Datos actualizados: ' . implode(', ', $refreshed));

echo json_encode([
    'ok'        => true,
    'refreshed' => $refreshed,
    'errors'    => $errors,
    'data'      => $results,
    'timestamp' => date('d/m/Y H:i:s'),
]);
