<?php

/*
  form_texto_fotonoticias.php
  Compatible PHP 8.2
  Guarda título, texto, nota y etiqueta en notas_tapa
*/

if (session_status() !== PHP_SESSION_ACTIVE) {
  session_start();
}

/*
  IMPORTANTE:
  No incluimos ../url_amigable.php porque este archivo solo guarda datos.
  Si url_amigable.php tiene curl_init() y el servidor no tiene cURL,
  puede romper esta pantalla aunque no sea necesario.
*/

/* ===== Includes seguros ===== */
if (file_exists(__DIR__ . '/sesion.php')) {
  include_once __DIR__ . '/sesion.php';
} elseif (file_exists(__DIR__ . '/panel/sesion.php')) {
  include_once __DIR__ . '/panel/sesion.php';
} elseif (file_exists(__DIR__ . '/../sesion.php')) {
  include_once __DIR__ . '/../sesion.php';
}

if (file_exists(__DIR__ . '/concha.php')) {
  include_once __DIR__ . '/concha.php';
} elseif (file_exists(__DIR__ . '/panel/concha.php')) {
  include_once __DIR__ . '/panel/concha.php';
} elseif (file_exists(__DIR__ . '/../concha.php')) {
  include_once __DIR__ . '/../concha.php';
}

/* ===== Variables base ===== */
$nombresitio = isset($nombresitio) ? $nombresitio : 'Panel de Administración';

$mensaje = '';
$error = '';

/* ===== Validar conexión ===== */
if (!isset($conn) || !($conn instanceof mysqli)) {
  $error = 'No se encontró conexión MySQL válida en $conn. Revisá concha.php.';
} else {

  mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

  try {

    /* ===== Recibir POST sin romper PHP 8.2 ===== */
    $texto    = isset($_POST['texto']) ? trim((string)$_POST['texto']) : '';
    $titulo   = isset($_POST['titulo']) ? trim((string)$_POST['titulo']) : '';
    $nota     = isset($_POST['nota']) ? trim((string)$_POST['nota']) : '';
    $keyy     = isset($_POST['keyy']) ? trim((string)$_POST['keyy']) : '';
    $etiqueta = isset($_POST['etiqueta']) ? trim((string)$_POST['etiqueta']) : '';

    if ($keyy === '') {
      throw new Exception('No llegó el identificador de la imagen: keyy.');
    }

    /*
      Si $basedatos viene desde concha.php, usamos `base`.`tabla`.
      Si no viene, usamos notas_tapa directo.
    */
    if (isset($basedatos) && $basedatos !== '' && preg_match('/^[a-zA-Z0-9_]+$/', (string)$basedatos)) {
      $tablaNotasTapa = "`" . $basedatos . "`.`notas_tapa`";
    } else {
      $tablaNotasTapa = "`notas_tapa`";
    }

    /* ===== Verificar si existe columna etiqueta ===== */
    $tieneEtiqueta = false;

    $resCol = $conn->query("SHOW COLUMNS FROM " . $tablaNotasTapa . " LIKE 'etiqueta'");
    if ($resCol && $resCol->num_rows > 0) {
      $tieneEtiqueta = true;
    }
    if ($resCol) {
      $resCol->free_result();
    }

    /* ===== Verificar que exista la foto en notas_tapa ===== */
    $existe = 0;

    $stmtExiste = $conn->prepare("SELECT COUNT(*) AS c FROM " . $tablaNotasTapa . " WHERE foto = ?");
    $stmtExiste->bind_param("s", $keyy);
    $stmtExiste->execute();

    $resExiste = $stmtExiste->get_result();
    if ($resExiste && ($rowExiste = $resExiste->fetch_assoc())) {
      $existe = (int)$rowExiste['c'];
    }

    if ($resExiste) {
      $resExiste->free_result();
    }

    $stmtExiste->close();

    if ($existe <= 0) {
      throw new Exception('No existe una fotonoticia pendiente con foto/keyy: ' . htmlspecialchars($keyy, ENT_QUOTES, 'UTF-8'));
    }

    /*
      UPDATE compatible:
      - Si existe etiqueta, actualiza etiqueta.
      - Si no existe etiqueta, actualiza igual sin esa columna.
    */
    if ($tieneEtiqueta) {

      $stmt = $conn->prepare(
        "UPDATE " . $tablaNotasTapa . "
         SET titulo = ?, nota = ?, texto = ?, etiqueta = ?
         WHERE foto = ?"
      );

      $stmt->bind_param("sssss", $titulo, $nota, $texto, $etiqueta, $keyy);

    } else {

      $stmt = $conn->prepare(
        "UPDATE " . $tablaNotasTapa . "
         SET titulo = ?, nota = ?, texto = ?
         WHERE foto = ?"
      );

      $stmt->bind_param("ssss", $titulo, $nota, $texto, $keyy);
    }

    $stmt->execute();

    if ($stmt->affected_rows >= 0) {
      $mensaje = 'LA FOTONOTICIA FUE CARGADA';
    } else {
      $mensaje = 'La consulta se ejecutó, pero no se modificaron datos.';
    }

    $stmt->close();

  } catch (Throwable $e) {
    $error = $e->getMessage();
  }
}

?>
<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="utf-8">
  <meta name="description" content="Panel de Administracion">
  <meta name="author" content="<?php echo htmlspecialchars($nombresitio, ENT_QUOTES, 'UTF-8'); ?>">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

  <title><?php echo htmlspecialchars($nombresitio, ENT_QUOTES, 'UTF-8'); ?> - Panel de Administracion</title>

  <link href="https://fonts.googleapis.com/css?family=Montserrat:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900&display=swap" rel="stylesheet">

  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">

  <style>
    * {
      border-radius: 0 !important;
    }

    body {
      background-image: url(../fondeux.jpg);
      background-position: top center;
      background-repeat: repeat-x;
      background-color: #EBEBEB;
      min-height: 100vh;
      font-family: 'Montserrat', sans-serif;
    }

    .btn,
    a,
    h1,
    h2,
    h3,
    h4,
    h5,
    h6,
    b {
      font-family: 'Montserrat', sans-serif;
    }

    .btn,
    h1,
    h2,
    h3,
    h4,
    h5,
    h6 {
      font-weight: 600;
    }

    .btn-primary {
      color: #fff !important;
      background-color: #0066FF;
      border-color: #0066FF;
    }

    .page-header {
      margin: 0;
      padding: 1em;
      background-color: #0066FF;
      border: 0;
      text-align: center;
    }

    .page-header h2 {
      color: #ffffff;
      font-weight: bold;
    }

    .box-result {
      max-width: 720px;
      margin: 70px auto;
      background: #fff;
      border: 1px solid #ddd;
      padding: 35px 25px;
      text-align: center;
      box-shadow: 0 10px 30px rgba(0,0,0,.08);
    }

    .box-result h1 {
      font-size: 26px;
      margin-bottom: 20px;
      color: #0066FF;
    }

    .box-result p {
      font-size: 17px;
      color: #333;
    }

    .error-box h1 {
      color: #dc3545;
    }
  </style>

  <script>
    function ventanaSecundaria(URL) {
      window.open(URL, "ventana1", "width=550,height=450,scrollbars=NO");
    }
  </script>
</head>

<body>

  <div class="page-header">
    <h2><?php echo htmlspecialchars($nombresitio, ENT_QUOTES, 'UTF-8'); ?> - Panel de Administración</h2>
  </div>

  <div class="container">

    <?php if ($error !== '') { ?>

      <div class="box-result error-box">
        <h1>Error al guardar</h1>
        <p><?php echo htmlspecialchars($error, ENT_QUOTES, 'UTF-8'); ?></p>

        <p class="mt-4">
          <a href="javascript:history.back();" class="btn btn-secondary">Volver atrás</a>
          <a href="panel/fotonoticias.php" class="btn btn-primary">Volver a Fotonoticias</a>
        </p>
      </div>

    <?php } else { ?>

      <div class="box-result">
        <h1><?php echo htmlspecialchars($mensaje, ENT_QUOTES, 'UTF-8'); ?></h1>

        <p>Los datos fueron guardados correctamente.</p>

        <p class="mt-4">
          <a href="panel/fotonoticias.php" class="btn btn-primary">VOLVER</a>
        </p>
      </div>

    <?php } ?>

  </div>

  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>
  <script defer src="https://use.fontawesome.com/releases/v5.8.1/js/all.js"></script>

</body>
</html>