A. srv / sincroniza.php

1<?php
2
3require_once __DIR__ . "/../lib/php/ejecutaServicio.php";
4require_once __DIR__ . "/../lib/php/recuperaJson.php";
5require_once __DIR__ . "/../lib/php/devuelveJson.php";
6require_once __DIR__ . "/../lib/php/ProblemDetails.php";
7require_once __DIR__ . "/../lib/php/devuelveProblemDetails.php";
8require_once __DIR__ . "/../lib/php/devuelveErrorInterno.php";
9require_once __DIR__ . "/modelo/TABLA_PASATIEMPO.php";
10require_once __DIR__ . "/modelo/validaPasatiempo.php";
11require_once __DIR__ . "/bd/pasatiempoAgrega.php";
12require_once __DIR__ . "/bd/pasatiempoBusca.php";
13require_once __DIR__ . "/bd/pasatiempoConsultaNoEliminados.php";
14require_once __DIR__ . "/bd/pasatiempoModifica.php";
15
16ejecutaServicio(function () {
17
18 $lista = recuperaJson();
19
20 if (!is_array($lista)) {
21 $lista = [];
22 }
23
24 foreach ($lista as $modelo) {
25 $modeloEnElCliente = validaPasatiempo($modelo);
26 $modeloEnElServidor = pasatiempoBusca($modeloEnElCliente[PAS_ID]);
27
28 if ($modeloEnElServidor === false) {
29
30 /* CONFLICTO: El modelo no ha estado en el servidor.
31 * AGREGARLO solamente si no está eliminado. */
32 if ($modeloEnElCliente[PAS_ELIMINADO] === 0) {
33 pasatiempoAgrega($modeloEnElCliente);
34 }
35 } elseif (
36 $modeloEnElServidor[PAS_ELIMINADO] === 0
37 && $modeloEnElCliente[PAS_ELIMINADO] === 1
38 ) {
39
40 /* CONFLICTO: El registro está en el servidor, donde no se ha eliminado, pero
41 * ha sido eliminado en el cliente.
42 * Gana el cliente, porque optamos por no revivir lo eliminado. */
43 pasatiempoModifica($modeloEnElCliente);
44 } else if (
45 $modeloEnElCliente[PAS_ELIMINADO] === 0
46 && $modeloEnElServidor[PAS_ELIMINADO] === 0
47 ) {
48
49 /* CONFLICTO: Registros en el servidor y en el cliente. Pueden ser
50 * diferentes.
51 * GANA FECHA MÁS GRANDE. Cuando gana el servidor, no se hace nada. */
52 if (
53 $modeloEnElCliente[PAS_MODIFICACION] >
54 $modeloEnElServidor[PAS_MODIFICACION]
55 ) {
56 // La versión del cliente es más nueva y prevalece.
57 pasatiempoModifica($modeloEnElCliente);
58 }
59 }
60 }
61
62 $lista = pasatiempoConsultaNoEliminados();
63
64 devuelveJson($lista);
65});
66
skip_previous skip_next