| 1 | <?php | 
  | 2 |  | 
  | 3 | require_once __DIR__ . "/../lib/php/BAD_REQUEST.php"; | 
  | 4 | require_once __DIR__ . "/../lib/php/ejecutaServicio.php"; | 
  | 5 | require_once __DIR__ . "/../lib/php/recuperaBytes.php"; | 
  | 6 | require_once __DIR__ . "/../lib/php/recuperaTexto.php"; | 
  | 7 | require_once __DIR__ . "/../lib/php/validaNombre.php"; | 
  | 8 | require_once __DIR__ . "/../lib/php/ProblemDetails.php"; | 
  | 9 | require_once __DIR__ . "/../lib/php/insert.php"; | 
  | 10 | require_once __DIR__ . "/../lib/php/devuelveCreated.php"; | 
  | 11 | require_once __DIR__ . "/Bd.php"; | 
  | 12 | require_once __DIR__ . "/TABLA_PRODUCTO.php"; | 
  | 13 | require_once __DIR__ . "/TABLA_ARCHIVO.php"; | 
  | 14 | require_once __DIR__ . "/validaImagen.php"; | 
  | 15 |  | 
  | 16 | ejecutaServicio(function () { | 
  | 17 |  | 
  | 18 |  $nombre = recuperaTexto("nombre"); | 
  | 19 |  $bytes = recuperaBytes("imagen"); | 
  | 20 |  | 
  | 21 |  $nombre = validaNombre($nombre); | 
  | 22 |  $bytes = validaImagen($bytes); | 
  | 23 |  | 
  | 24 |  if ($bytes === "") { | 
  | 25 |   throw new ProblemDetails( | 
  | 26 |    status: BAD_REQUEST, | 
  | 27 |    title: "Imagen vacía.", | 
  | 28 |    type: "/error/imagenvacia.html", | 
  | 29 |    detail: "Selecciona un archivo que no esté vacío." | 
  | 30 |   ); | 
  | 31 |  } | 
  | 32 |  | 
  | 33 |  $pdo = Bd::pdo(); | 
  | 34 |  $pdo->beginTransaction(); | 
  | 35 |  | 
  | 36 |  insert(pdo: $pdo,  into: ARCHIVO,  values: [ARCH_BYTES => $bytes]); | 
  | 37 |  $archId = $pdo->lastInsertId(); | 
  | 38 |  | 
  | 39 |  insert( | 
  | 40 |   pdo: $pdo, | 
  | 41 |   into: PRODUCTO, | 
  | 42 |   values: [PROD_NOMBRE => $nombre, ARCH_ID => $archId] | 
  | 43 |  ); | 
  | 44 |  $id = $pdo->lastInsertId(); | 
  | 45 |  | 
  | 46 |  $pdo->commit(); | 
  | 47 |  | 
  | 48 |  $encodeId = urlencode($id); | 
  | 49 |  $encodeArchId = urlencode($archId); | 
  | 50 |  $htmlEncodeArchId = htmlentities($encodeArchId); | 
  | 51 |   | 
  | 52 |  devuelveCreated("/srv/producto.php?id=$encodeId", [ | 
  | 53 |   "id" => ["value" => $id], | 
  | 54 |   "nombre" => ["value" => $nombre], | 
  | 55 |   "imagen" => ["data-file" => "srv/archivo.php?id=$htmlEncodeArchId"] | 
  | 56 |  ]); | 
  | 57 | }); | 
  | 58 |  |