F. php / sincroniza.php

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