This repository has been archived by the owner on Aug 10, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 7
/
valida.php
365 lines (330 loc) · 12.5 KB
/
valida.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
<?php
// vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker fileencoding=utf-8 :
/**
* Realiza validaciones a datos de base
*
* PHP version 5
*
* @category SIVeL
* @package SIVeL
* @author Vladimir Támara <[email protected]>
* @copyright 2010 Dominio público. Sin garantías.
* @license https://www.pasosdejesus.org/dominio_publico_colombia.html Dominio Público. Sin garantías
* @link http://sivel.sf.net
*/
/**
* Realiza validaciones a datos de base
*/
require_once "aut.php";
require_once $_SESSION['dirsitio'] . '/conf.php';
require_once $_SESSION['dirsitio'] . '/conf_int.php';
require_once "confv.php";
require_once "misc.php";
$aut_usuario = "";
$db = autentica_usuario($dsn, $aut_usuario, 64);
$t = _("Reporte de consistencia del") ." " . @date("Y-m-d H:m");
encabezado_envia($t);
echo '<table width="100%"><td style="white-space: ' .
' nowrap; background-color: #CCCCCC;" align="left" ' .
' valign="top" colspan="2"><b><div align=center>' . $t;
echo '</div></b></td></table>';
res_valida(
$db, _("Casos con memo vacio"),
"SELECT id, fecha FROM caso WHERE LENGTH(TRIM(memo)) < 30 ORDER BY fecha", true
);
res_valida(
$db, _("Casos con fecha de otras fuentes anterior a la del caso"),
"SELECT caso.id, caso.fecha, fotra.nombre
FROM caso_fotra, caso, fotra
WHERE caso_fotra.id_caso = caso.id
AND caso_fotra.id_fotra = fotra.id
AND caso_fotra.fecha < caso.fecha order by fecha",
true
);
res_valida(
$db, _("Casos con fecha de fuente frecuente anterior a la del caso"),
"SELECT caso.id, caso.fecha, ffrecuente.nombre
FROM caso_ffrecuente, ffrecuente, caso
WHERE caso_ffrecuente.id_caso = caso.id
AND caso_ffrecuente.id_ffrecuente = ffrecuente.id
AND caso_ffrecuente.fecha < caso.fecha
ORDER BY fecha",
true
);
hace_consulta($db, "DROP VIEW y", false, false);
hace_consulta(
$db, "CREATE VIEW y AS SELECT caso.id, " .
" min(caso_usuario.fechainicio) " .
" FROM caso_usuario, caso " .
" WHERE caso.id>'35000' AND caso.id=caso_usuario.id_caso " .
" GROUP BY caso.id order by caso.id"
);
res_valida(
$db, _("Casos con fecha inicial de usuario anterior a la del caso"),
"SELECT y.id, caso.fecha, y.min as fecha_usuario, usuario.nusuario
FROM y, caso, caso_usuario, usuario
WHERE y.id = caso.id AND y.min < caso.fecha
AND caso_usuario.id_caso = caso.id
AND caso_usuario.fechainicio = y.min
AND caso_usuario.id_usuario = usuario.id;"
);
res_valida(
$db, _("Casos sin usuario"),
"SELECT caso.id, caso.fecha FROM caso
WHERE NOT EXISTS (SELECT id_caso FROM caso_usuario WHERE id_caso=caso.id) ORDER BY 2;"
);
res_valida(
$db,
_("Casos que no tienen una sóla ubicación (mal en conteos)"),
"SELECT id, fecha, c from (SELECT caso.id, caso.fecha,
count(ubicacion.id) AS c
FROM caso, ubicacion WHERE caso.id = ubicacion.id_caso
GROUP BY caso.id order by 3 desc, 2) AS f WHERE c <> 1", true
);
res_valida(
$db, _("Víctimas con categorias que no son para víctimas individuales"),
"SELECT acto.id_caso AS id, caso.fecha, acto.id_categoria, acto.id_persona,
persona.nombres || ' ' || persona.apellidos
FROM acto, caso, persona
WHERE acto.id_caso=caso.id
AND persona.id = acto.id_persona
AND NOT EXISTS (SELECT id FROM categoria WHERE tipocat = 'I' AND id=id_categoria)
ORDER BY caso.fecha", true
);
res_valida(
$db,
_("Víctimas colectivas con categorias que no son para víctimas colectivas"),
"SELECT actocolectivo.id_caso AS id, caso.fecha, actocolectivo.id_categoria,
grupoper.nombre
FROM actocolectivo, grupoper, caso
WHERE grupoper.id = actocolectivo.id_grupoper
AND actocolectivo.id_caso=caso.id
AND NOT EXISTS (SELECT id FROM categoria WHERE tipocat = 'C' and id=id_categoria)
ORDER BY caso.fecha", true
);
res_valida(
$db, _("Registros en victima individual sin acto de violencia"),
"SELECT id_caso AS id, caso.fecha, id_persona,
persona.nombres || ' ' || persona.apellidos
FROM victima JOIN caso ON id_caso=caso.id
JOIN persona ON id_persona=persona.id
WHERE NOT EXISTS (SELECT id_persona FROM acto WHERE id_persona=persona.id)
ORDER BY caso.fecha", true
);
res_valida(
$db, _("Registros en victima colectiva pero que no tienen acto colectivo"),
"SELECT id_caso AS id, caso.fecha, id_grupoper, grupoper.nombre
FROM victimacolectiva JOIN caso ON id_caso=caso.id
JOIN grupoper ON id_grupoper=grupoper.id
WHERE NOT EXISTS (SELECT id_grupoper FROM actocolectivo
WHERE id_grupoper=grupoper.id)
ORDER BY caso.fecha", true
);
res_valida(
$db, _("Nombres muy cortos"),
"SELECT id_caso AS id, caso.fecha, nombres FROM victima
JOIN caso ON victima.id_caso=caso.id
JOIN persona ON victima.id_persona=persona.id
WHERE length(nombres) <= 2
AND nombres<>'N'
ORDER BY caso.fecha", true
);
res_valida(
$db, _("Apellidos muy cortos"),
"SELECT id_caso AS id, caso.fecha, apellidos FROM victima
JOIN caso ON victima.id_caso=caso.id
JOIN persona ON victima.id_persona=persona.id
WHERE length(apellidos) <= 2
AND apellidos<>''
AND apellidos<>'N'
ORDER BY caso.fecha", true
);
hace_consulta($db, "REFRESH MATERIALIZED VIEW nmujeres");
echo "Refrescados nombres de mujeres<br>";
hace_consulta($db, "REFRESH MATERIALIZED VIEW nhombres");
echo "Refrescados nombres de hombres<br>";
hace_consulta($db, "REFRESH MATERIALIZED VIEW napellidos");
echo "Refrescados apellidos<br>";
res_valida(
$db, _("Nombres de personas con sexo de nacimiento femenino
que parecen de hombre ingresados hace
${GLOBALS['anios_valida_sexo']} año(s)"),
"SELECT victima.id_caso AS id, caso.fecha,nombres, probmujer(nombres) AS pmujer,
probhombre(nombres) AS phombre
FROM victima
JOIN caso ON victima.id_caso=caso.id
JOIN persona ON victima.id_persona=persona.id
JOIN iniciador ON victima.id_caso=iniciador.id_caso
WHERE iniciador.fecha_inicio>=(current_date -
interval '${GLOBALS['anios_valida_sexo']} year')
AND sexo='F'
AND probhombre(nombres)>probmujer(nombres)
AND nombres<>'N'
ORDER BY caso.fecha", true
);
res_valida(
$db, _("Nombres de personas con sexo de nacimiento masculino
que parecen de mujer ingresados hace
${GLOBALS['anios_valida_sexo']} año(s)"),
"SELECT victima.id_caso AS id, caso.fecha, nombres,
probhombre(nombres) AS phombre,
probmujer(nombres) AS pmujer
FROM victima
JOIN caso ON victima.id_caso=caso.id
JOIN persona ON victima.id_persona=persona.id
JOIN iniciador ON victima.id_caso=iniciador.id_caso
WHERE iniciador.fecha_inicio>=(current_date -
interval '${GLOBALS['anios_valida_sexo']} year')
AND sexo='F'
AND sexo='M'
AND probhombre(nombres)<probmujer(nombres)
AND nombres<>'N'
ORDER BY caso.fecha", true
);
res_valida(
$db, _("Nombres de personas con sexo de nacimiento SIN INFORMACIÓN
que parecen de mujer ingresados hace
${GLOBALS['anios_valida_sexo']} año(s)"),
"SELECT victima.id_caso AS id, caso.fecha, nombres, persona.id AS persona_id,
probhombre(nombres) AS phombre,
probmujer(nombres) AS pmujer
FROM victima
JOIN caso ON victima.id_caso=caso.id
JOIN persona ON victima.id_persona=persona.id
JOIN iniciador ON victima.id_caso=iniciador.id_caso
WHERE iniciador.fecha_inicio>=(current_date -
interval '${GLOBALS['anios_valida_sexo']} year')
AND sexo='S'
AND probhombre(nombres)<probmujer(nombres)
AND nombres<>'N'
AND nombres<>'N.'
AND nombres<>'PERSONA SIN IDENTIFICAR'
ORDER BY caso.fecha", true
);
res_valida(
$db, _("Nombres de personas con sexo de nacimiento SIN INFORMACIÓN
que parecen de hombre ingresados hace
${GLOBALS['anios_valida_sexo']} año(s)"),
"SELECT victima.id_caso AS id, caso.fecha, nombres, persona.id AS persona_id,
probhombre(nombres) AS phombre,
probmujer(nombres) AS pmujer
FROM victima
JOIN caso ON victima.id_caso=caso.id
JOIN persona ON victima.id_persona=persona.id
JOIN iniciador ON victima.id_caso=iniciador.id_caso
WHERE iniciador.fecha_inicio>=(current_date -
interval '${GLOBALS['anios_valida_sexo']} year')
AND sexo='S'
AND probhombre(nombres)>probmujer(nombres)
AND nombres<>'N'
AND nombres<>'N.'
AND nombres<>'PERSONA SIN IDENTIFICAR'
ORDER BY caso.fecha", true
);
res_valida(
$db, _("Nombres con sexo SIN INFORMACIÓN que podría deducirse
hace ${GLOBALS['anios_valida_sexo']} año(s)"),
"SELECT victima.id_caso AS id, caso.fecha, nombres, persona.id AS persona_id,
probhombre(nombres) AS phombre,
probmujer(nombres) AS pmujer
FROM victima
JOIN caso ON victima.id_caso=caso.id
JOIN persona ON victima.id_persona=persona.id
JOIN iniciador ON victima.id_caso=iniciador.id_caso
WHERE iniciador.fecha_inicio>=(current_date -
interval '${GLOBALS['anios_valida_sexo']} year')
AND sexo='S'
AND probhombre(nombres)=probmujer(nombres)
AND nombres<>'N'
AND nombres<>'N.'
AND nombres<>'PERSONA SIN IDENTIFICAR'
ORDER BY caso.fecha", true
);
res_valida(
$db, _("Nombres de mujeres que parecen apellidos
hace ${GLOBALS['anios_valida_sexo']} año(s)"),
"SELECT victima.id_caso AS id, caso.fecha, nombres, persona.id AS persona_id,
probmujer(nombres) AS pmujer,
probapellido(nombres) AS papellidos
FROM victima
JOIN caso ON victima.id_caso=caso.id
JOIN persona ON victima.id_persona=persona.id
JOIN iniciador ON victima.id_caso=iniciador.id_caso
WHERE iniciador.fecha_inicio>=(current_date -
interval '${GLOBALS['anios_valida_sexo']} year')
AND sexo='F'
AND probapellido(nombres)>probmujer(nombres)
AND nombres<>'N'
ORDER BY caso.fecha", true
);
res_valida(
$db, _("Nombres de hombres que parecen apellidos
hace ${GLOBALS['anios_valida_sexo']} año(s)"),
"SELECT victima.id_caso AS id, caso.fecha, nombres, persona.id AS persona_id,
probhombre(nombres) AS phombre,
probapellido(nombres) AS papellidos
FROM victima
JOIN caso ON victima.id_caso=caso.id
JOIN persona ON victima.id_persona=persona.id
JOIN iniciador ON victima.id_caso=iniciador.id_caso
WHERE iniciador.fecha_inicio>=(current_date -
interval '${GLOBALS['anios_valida_sexo']} year')
AND sexo='M'
AND probapellido(nombres)>probhombre(nombres)
AND nombres<>'N'
ORDER BY caso.fecha", true
);
foreach ($GLOBALS['validaciones_tipicas'] as $desc => $sql) {
res_valida($db, _("Casos") . " " . $desc, $sql);
}
if (isset($GLOBALS['gancho_valida_base'])) {
foreach ($GLOBALS['gancho_valida_base'] as $k => $f) {
if (is_callable($f)) {
call_user_func_array(
$f,
array(&$db)
);
} else {
echo_esc(_("Falta") . " $k - $f");
}
}
}
res_valida(
$db, _("Apellidos que parecen nombre de hombre
hace ${GLOBALS['anios_valida_sexo']} año(s)"),
"SELECT victima.id_caso, caso.fecha, apellidos,
probhombre(apellidos) AS phombre,
probapellido(apellidos) AS papellidos
FROM victima
JOIN caso ON victima.id_caso=caso.id
JOIN persona ON victima.id_persona=persona.id
JOIN iniciador ON victima.id_caso=iniciador.id_caso
WHERE iniciador.fecha_inicio>=(current_date -
interval '${GLOBALS['anios_valida_sexo']} year')
AND probapellido(apellidos)<probhombre(apellidos)
AND apellidos<>'N'
ORDER BY caso.fecha"
);
res_valida(
$db, _("Apellidos que parecen nombre de mujer
hace ${GLOBALS['anios_valida_sexo']} año(s)"),
"SELECT victima.id_caso, caso.fecha, apellidos,
probhombre(apellidos) AS phombre,
probapellido(apellidos) AS papellidos
FROM victima
JOIN caso ON victima.id_caso=caso.id
JOIN persona ON victima.id_persona=persona.id
JOIN iniciador ON victima.id_caso=iniciador.id_caso
WHERE iniciador.fecha_inicio>=(current_date -
interval '${GLOBALS['anios_valida_sexo']} year')
AND probapellido(apellidos)<probmujer(apellidos)
AND apellidos<>'N'
ORDER BY caso.fecha"
);
echo '<table width="100%">
<td style = "white-space: nowrap; background-color: #CCCCCC;"
align = "left" valign="top" colspan="2"><b><div align=right>
<a href = "index.php">' . _('Menú Principal') .
'</a></div></b></td></table>';
pie_envia();
?>