-
Notifications
You must be signed in to change notification settings - Fork 0
/
Controle_Personnes.php
330 lines (279 loc) · 11.9 KB
/
Controle_Personnes.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
<?php
//=====================================================================
// Contrôle des personnes
// (c) JLS
// UTF-8
//=====================================================================
session_start();
include('fonctions.php');
$acces = 'L'; // Type d'accès de la page : (M)ise à jour, (L)ecture
$titre = $LG_Menu_Title['Check_Pers']; // Titre pour META
$tab_variables = array('annuler','Horigine','Ignore');
foreach ($tab_variables as $nom_variables) {
if (isset($_POST[$nom_variables])) $$nom_variables = $_POST[$nom_variables];
else $$nom_variables = '';
}
// Sécurisation des variables postées
$annuler = Secur_Variable_Post($annuler,strlen($lib_Retour),'S');
$Horigine = Secur_Variable_Post($Horigine,100,'S');
$Ignore = Secur_Variable_Post($Ignore,1,'S');
if ($Ignore == 'I') $Ignore = true;
else $Ignore = false;
// On retravaille le libellé du bouton pour effectuer le retour...
if ($annuler == $lib_Retour) $annuler = $lib_Annuler;
$x = Lit_Env();
$niv_requis = 'P'; // Page accessible à partir du niveau privilégié
include('Gestion_Pages.php');
// Verrouillage sur les gratuits non Premium
if (($SiteGratuit) and (!$Premium)) Retour_Ar();
// Retour sur demande d'annulation
if ($bt_An) Retour_Ar();
// Recup des variables passées dans l'URL :
$texte = Dem_Texte(); // texte ou non
$CT = Recup_Variable('CT','C','O'); // Demande de contrôle
$al = Recup_Variable('al','S'); // Niveau des alertes demandées pour le texte
$controle = false;
if ($CT === 'O') $controle = true;
$dem_alerte_0 = false;
$dem_alerte_1 = false;
$dem_alerte_2 = false;
if (isset($_POST['ch_alerte_0'])) $dem_alerte_0 = true;
if (isset($_POST['ch_alerte_1'])) $dem_alerte_1 = true;
if (isset($_POST['ch_alerte_2'])) $dem_alerte_2 = true;
if ($texte) {
$dem_alerte_0 = false;
$dem_alerte_1 = false;
$dem_alerte_2 = false;
if ($al[0] == 'O') $dem_alerte_0 = true;
if ($al[1] == 'O') $dem_alerte_1 = true;
if ($al[2] == 'O') $dem_alerte_2 = true;
}
$al_texte = '';
if ($dem_alerte_0) $al_texte .= 'O';
else $al_texte .= 'N';
if ($dem_alerte_1) $al_texte .= 'O';
else $al_texte .= 'N';
if ($dem_alerte_2) $al_texte .= 'O';
else $al_texte .= 'N';
$lien = 'href="'.my_self().'?texte=O'.
'&al='.$al_texte.
'&CT=O';
$compl = Ajoute_Page_Info(700,250).
Affiche_Icone_Lien($lien.'"','text',$LG_printable_format).' '
//.Affiche_Icone_Lien('href="'.my_self().'?idNom='.$idNom.'&Nom='.$NomL.'&Sortie=c"','exp_tab','Export CSV').' '
;
if (! $texte) {
Insere_Haut(my_html($titre),$compl,'Controle_Personnes','');
}
else {
Insere_Haut_texte (my_html($titre));
echo '<br />';
$deja = Recup_Variable('deja','S');
}
$n_personnes = nom_table('personnes');
$n_filiations = nom_table('filiations');
$n_unions = nom_table('unions');
$num_lig = 0;
/*
if (!$Sortie) $Sortie = 'e';
$CSV = ($Sortie == 'c') ? true : false;
*/
$niv_alerte_0 = 'OK';
$niv_alerte_1 = 'Alerte';
$niv_alerte_2 = 'Erreur';
$img_vert = '<img src="'.$chemin_images_icones.$Icones['drapeau_vert'].'" border="0" alt="'.$niv_alerte_0.'" title="'.$niv_alerte_0.'"/>';
$img_orange = '<img src="'.$chemin_images_icones.$Icones['drapeau_orange'].'" border="0" alt="'.$niv_alerte_1.'" title="'.$niv_alerte_1.'"/>';
$img_rouge = '<img src="'.$chemin_images_icones.$Icones['drapeau_rouge'].'" border="0" alt="'.$niv_alerte_2.'" title="'.$niv_alerte_2.'"/>';
$chk = ' checked="checked"';
if (!$controle) {
$dem_alerte_0 = true;
$dem_alerte_1 = true;
$dem_alerte_2 = true;
}
if (! $texte) {
echo '<form action="'.my_self().'?CT=O" method="post">'."\n";
echo '<input type="hidden" name="deja" value = "O"/>';
echo '<table border="0" width="60%" align="center">'."\n";
echo '<tr align="center" class="rupt_table">';
echo '<td>Afficher : '."\n";
echo '<input type="checkbox"';
if ($dem_alerte_0) echo $chk;
echo ' name="ch_alerte_0" value="1"/>'.my_html($niv_alerte_0).' '.$img_vert;
echo ' <input type="checkbox"';
if ($dem_alerte_1) echo $chk;
echo ' name="ch_alerte_1" value="1"/>'.my_html($niv_alerte_1).' '.$img_orange;
echo ' <input type="checkbox"';
if ($dem_alerte_2) echo $chk;
echo ' name="ch_alerte_2" value="1"/>'.my_html($niv_alerte_2).' '.$img_rouge;
//echo $img_vert.' : '.$niv_alerte_0.' ; '.$img_orange.' : '.$niv_alerte_1.' ; '.$img_rouge.' : '.$niv_alerte_2."\n";
echo '</td>'."\n";
echo '<td><input type="checkbox" name="Ignore" value="I"';
if ($Ignore) echo $chk;
echo '/> Ignorer les personnes validées</td>'."\n";
echo '<td><input type="submit" value="Afficher la liste"/></td>'."\n";
echo '</tr>'."\n";
echo '</table>'."\n";
echo '</form>'."\n";
}
else {
echo 'Affichage demandé :';
echo ' '.$niv_alerte_0;
O_N($dem_alerte_0);
echo ' ; '.$niv_alerte_1;
O_N($dem_alerte_1);
echo ' ; '.$niv_alerte_2;
O_N($dem_alerte_2);
echo '<br /><br />';
}
echo '<div id="liste">';
echo 'Liste des contrôles'.' : ';
echo '<ul class="puces">';
echo '<li>'.'Pour la personne';
echo '<ul class="puces">';
echo '<li>'.'que le sexe soit connu'.'</li>';
echo '<li>'.'que la fiche soit validée'.'</li>';
echo '<li>'.'que les dates de naissance et de décès (dans le cas des personnes non vivantes) soient présentes et qu\'elles correspondent à un jour précis (le ...)'.'</li>';
echo '<li>'.'que la date de naissance précède ou soit égale à la date de décès'.'</li>';
echo '</ul></li>';
echo '<li>'.'Avec ses parents';
echo '<ul class="puces">';
echo '<li>'.'que la personne soit née après que le père et la mère aient 15 ans'.'</li>';
echo '<li>'.'que la personne soit née au plus tard 9 mois après le décès du père'.'</li>';
echo '<li>'.'que la personne soit née après le décès de la mère'.'</li>';
echo '</ul></li></ul>';
echo '</div>';
if ($controle) {
// Constitution de la requête d'extraction
$crit_ignore = '';
if ($Ignore)
$crit_ignore = ' and p.Statut_Fiche != "O"';
$sql = 'SELECT '
.'p.Reference as Ref0, p.Nom as Nom0, p.Prenoms as Prenoms0, p.Ne_le as NeL0, p.Decede_Le as DecL0, p.Statut_Fiche, p.Sexe, '
.'p1.Reference as Ref1, p1.Nom as Nom1, p1.Prenoms as Prenoms1, p1.Ne_le as NeL1, p1.Decede_Le as DecL1, '
.'p2.Reference as Ref2, p2.Nom as Nom2, p2.Prenoms as Prenoms2, p2.Ne_le as NeL2, p2.Decede_Le as DecL2'
.' FROM '.$n_personnes.' p'
.' LEFT JOIN '.$n_filiations.' f ON p.Reference = f.Enfant'
.' LEFT JOIN '.$n_personnes.' p1 ON p1.Reference = f.Pere'
.' LEFT JOIN '.$n_personnes.' p2 ON p2.Reference = f.Mere'
.' WHERE p.Reference <> 0'
.$crit_ignore
.' order by p.Nom, p.Prenoms, p.Reference';
$res = lect_sql($sql);
// Balayage
if ($res->RowCount() > 0) {
// Optimisation : préparation echo des images
$echo_modif = Affiche_Icone('fiche_edition',$LG_modify).'</a>';
$echo_verif = Affiche_Icone('fiche_controle',$LG_LPers_Check_Pers).'</a> ';
while ($enr = $res->fetch(PDO::FETCH_ASSOC)) {
// Niveau 0 : OK
// Niveau 1 : alerte
// Niveau 2 : erreur
$alerte_controle = 0;
$msg_ctrl = '';
$sexe = $enr['Sexe'];
if (($sexe != 'm') and ($sexe != 'f')) al_controle(1,'le sexe de la personne n\'est pas connu');
// Fiche de la personne validée ?
if ($enr['Statut_Fiche'] != 0) al_controle(1,'statut non validé');
// Dates de naissance et de décès précises et présentes
$dateN = $enr['NeL0'];
$dateD = $enr['DecL0'];
$vivant = determine_etat_vivant($dateN,$dateD);
if ($vivant) $dateD = '99991231GL';
$lgDateN = strlen($dateN);
$lgDateD = strlen($dateD);
// Contrôle de précision de la date de naissance
if ($lgDateN == 10) {
if ($dateN[9] != 'L') al_controle(1,'date de naissance non précise');
}
else {
// date renseignée et longueur non attendue, aïe...
if ($lgDateN > 0) al_controle(2,'format date de naissance erroné');
else al_controle(1,'date de naissance non connue');
}
// Contrôle de précision de la date de décès
if (!$vivant) {
if ($lgDateD == 10) {
if ($dateD[9] != 'L') al_controle(1,'date de décès non précise');
}
else {
// date renseignée et longueur non attendue, aïe...
if ($lgDateD > 0) al_controle(2,'format date de décès erroné');
else al_controle(1,'date de décès non connue');
}
}
// Contrôle cohérence date naissance / date décès
if (($lgDateN == 10) and ($lgDateD == 10)) {
if (($dateN[9] == 'L') and ($dateD[9] == 'L')) {
if ($dateD < $dateN) al_controle(2,'date de décès inférieure à la date de naissance');
}
}
$dateNP = $enr['NeL1'];
$dateDP = $enr['DecL1'];
$dateNM = $enr['NeL2'];
$dateDM = $enr['DecL2'];
if (($lgDateN == 10) and ($dateN[9] == 'L')) {
// Contrôle que la personne soit née après que le père et la mère aient 15 ans
// Pour le père
if ((strlen($dateNP) == 10) and ($dateNP[9] == 'L')) {
$ageP = Age_Mois($dateNP,$dateN)/12;
if ($ageP < 15) al_controle(1,'père de moins de 15 ans');
}
else al_controle(1,'contrôle impossible par rapport à l\'âge du père');
// Pour la mère
if ((strlen($dateNM) == 10) and ($dateNM[9] == 'L')) {
$ageM = Age_Mois($dateNM,$dateN)/12;
if ($ageM < 15) al_controle(1,'mère de moins de 15 ans');
}
else al_controle(1,'contrôle impossible par rapport à l\'âge de la mère');
}
// Contrôle que la personne soit née au plus tard 9 mois après le décès du père
if (($lgDateN == 10) and ($dateN[9] == 'L')) {
if ((strlen($dateDP) == 10) and ($dateDP[9] == 'L')) {
$ageP = Age_Mois($dateN,$dateDP);
if ($ageP < 9) al_controle(1,'père décédé moins de 9 mois avant la naissance');
}
}
// Contrôle que la personne soit née avant (<=) le décès de la mère
if (($lgDateN == 10) and ($dateN[9] == 'L')) {
if ((strlen($dateDM) == 10) and ($dateDM[9] == 'L')) {
if ($dateN > $dateDM) al_controle(1,'mère décédée avant la naissance');
}
}
$Ref = $enr['Ref0'];
$ligne_P = '';
if (!$texte) {
$ligne_P = '<a '.Ins_Ref_Pers($Ref,true).'>'.my_html($enr['Nom0'].' '.$enr['Prenoms0']).'</a>'
. ' <a '.Ins_Edt_Pers($Ref, true).'>'.$echo_modif
. ' <a href="Verif_Personne.php?Refer='.$Ref.'" target="_blank">'.$echo_verif;
} else {
$ligne_P = my_html($enr['Nom0'].' '.$enr['Prenoms0']).' ';
}
//echo '$dem_alerte_0 : '.$dem_alerte_0.'/'.$alerte_controle.'<br />';
switch ($alerte_controle) {
case 0 : if ($dem_alerte_0) echo $img_vert.' '.$ligne_P.'<br />'; break;
case 1 : if ($dem_alerte_1) echo $img_orange.' '.$ligne_P.'<br /> '.$msg_ctrl.'<br />'; break;
case 2 : if ($dem_alerte_2) echo $img_rouge.' '.$ligne_P.'<br /> '.$msg_ctrl.'<br />'; break;
}
}
}
echo '<br />'.Affiche_Icone('tip','Information').' Légende : ';
echo $img_vert.' : '.$niv_alerte_0.' ; '.$img_orange.' : '.$niv_alerte_1.' ; '.$img_rouge.' : '.$niv_alerte_2."\n";
}
if (! $texte) {
// Formulaire pour le bouton retour
Bouton_Retour($lib_Retour,'?'.Query_Str());
Insere_Bas($compl);
}
function al_controle($niveau,$ctrl) {
global $alerte_controle, $msg_ctrl;
$alerte_controle = $niveau;
if ($msg_ctrl != '') $msg_ctrl .= ', ';
$msg_ctrl .= $ctrl;
}
function O_N($demande) {
if ($demande) echo ' : oui';
else echo ' : non';
}
?>
</body>
</html>