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 | |