<?php
header('Content-Type: application/json');
require_once dirname(__DIR__) . '/auth.php';
dm_require_login();
dm_csrf_verify();

$user  = dm_user();
$input = json_decode(file_get_contents('php://input'), true);
$action    = $input['action']    ?? '';
$client_id = (int)($input['client_id'] ?? 0);
$section   = $input['section']   ?? ''; // meta | google | seo | web

// Mapa explícito de secciones a columnas — evita SQL injection por concatenación
$col_map = ['meta'=>'context_meta','google'=>'context_google','seo'=>'context_seo','web'=>'context_web','videos'=>'context_videos','imagenes'=>'context_imagenes'];
if (!array_key_exists($section, $col_map)) {
    echo json_encode(['ok'=>false,'error'=>'Sección inválida']); exit;
}
$col = $col_map[$section];

if (!$pdo) { echo json_encode(['ok'=>false,'error'=>'Sin conexión a BD']); exit; }
dm_require_client_access($client_id);

// ——— GUARDAR ———
if ($action === 'save') {
    $ctx = trim($input['context'] ?? '');
    if (!$client_id) { echo json_encode(['ok'=>false,'error'=>'Cliente inválido']); exit; }
    $pdo->prepare("UPDATE dm_clients SET {$col}=? WHERE id=?")->execute([$ctx, $client_id]);
    dm_log($user['id'], $client_id, 'save_context', "Contexto {$section} actualizado");
    echo json_encode(['ok'=>true]);
    exit;
}

// ——— CARGAR (todos los contextos de un cliente) ———
if ($action === 'load') {
    if (!$client_id) { echo json_encode(['ok'=>false,'error'=>'Cliente inválido']); exit; }
    $row = $pdo->prepare('SELECT context_meta, context_google, context_seo, context_web, context_videos, context_imagenes FROM dm_clients WHERE id=? LIMIT 1');
    $row->execute([$client_id]);
    $data = $row->fetch();
    if (!$data) { echo json_encode(['ok'=>false,'error'=>'Cliente no encontrado']); exit; }
    echo json_encode([
        'ok'     => true,
        'meta'   => $data['context_meta']   ?? '',
        'google' => $data['context_google'] ?? '',
        'seo'    => $data['context_seo']    ?? '',
        'web'    => $data['context_web']    ?? '',
        'videos'   => $data['context_videos']   ?? '',
        'imagenes' => $data['context_imagenes'] ?? '',
    ]);
    exit;
}

echo json_encode(['ok'=>false,'error'=>'Acción inválida']);
