source: trunk/admin/modules/Elezioni/ele_controlli.php@ 337

Last change on this file since 337 was 337, checked in by roby, 4 years ago

admin: sistemazione colori di stato delle sezioni e di alcuni controlli di congruenza
admin e client: verifica compatibilità con php7.4

File size: 15.5 KB
Line 
1<?php
2/************************************************************************/
3/* Eleonline - Raccolta e diffusione dei dati elettorali */
4/************************************************************************/
5/* Modulo controlla affluenze */
6/* Amministrazione */
7/************************************************************************/
8
9function controllo_aff($id_cons,$id_sez,$id_parz){
10 global $prefix,$dbi,$id_sede,$id_con_gen,$genere;
11
12 $err=0;
13 $sql="select maschi,femmine from ".$prefix."_ele_sezioni where id_sez='$id_sez'";
14 $res = $dbi->prepare("$sql");
15 $res->execute();
16 list($maschi,$femmine)=$res->fetch(PDO::FETCH_NUM);
17
18 $sql="select voti_uomini,voti_donne,voti_complessivi from ".$prefix."_ele_voti_parziale where id_sez='$id_sez' and id_parz='$id_parz'";
19 $res = $dbi->prepare("$sql");
20 $res->execute();
21 while(list($voti_u,$voti_d,$voti_t)=$res->fetch(PDO::FETCH_NUM))
22 if((($voti_u+$voti_d!=$voti_t && $voti_u+$voti_d>0) || $voti_u>$maschi || $voti_d>$femmine || $voti_t>$maschi+$femmine) ) {$err=1; break;}
23
24 $tipo='affluenze';
25 $sql="select id from ".$prefix."_ele_controlli where tipo='$tipo' and id_sez='$id_sez' ";
26 $res = $dbi->prepare("$sql");
27 $res->execute();
28 $righe=$res->rowCount();
29 if($righe){
30 while(list($id)=$res->fetch(PDO::FETCH_NUM)){
31 if($id==$id_parz){
32 if(!$err){
33 $sql="delete from ".$prefix."_ele_controlli where tipo='$tipo' and id='$id_parz' ";
34 $res = $dbi->prepare("$sql");
35 $res->execute();
36
37 }
38 $err=0;
39 break;
40 }
41 }
42 }
43 if($err){
44 $sql="insert into ".$prefix."_ele_controlli value('$id_cons','$id_sez','$tipo','$id_parz')";
45 $res = $dbi->prepare("$sql");
46 $res->execute();
47 }
48
49 $sql="SELECT validi,nulli,bianchi,contestati,voti_nulli FROM ".$prefix."_ele_sezioni as t1 where t1.id_sez='$id_sez'";
50 $res = $dbi->prepare("$sql");
51 $res->execute();
52 list($validi, $nulli, $bianchi,$contestati,$votinulli)=$res->fetch(PDO::FETCH_NUM);
53 if (($validi+$nulli+$bianchi+$contestati+$votinulli)>0)
54 if($genere==0) controllo_votir($id_cons,$id_sez,'aff');
55 else controllo_voti($id_cons,$id_sez);
56
57}
58
59
60
61function controllo_voti($id_cons,$id_sez){
62 global $prefix,$dbi,$id_sede,$id_con_gen,$genere;
63 ##############################
64 $err=0;
65 $sql="SELECT id_gruppo FROM ".$prefix."_ele_gruppo where id_cons='$id_cons'";
66 $resref = $dbi->prepare("$sql");
67 $resref->execute();
68 if($genere==0){
69 $numscru=$resref->rowCount(); $rifscru=0;
70 while(list($idrefgruppo)=$resref->fetch(PDO::FETCH_NUM)) {
71 $sql="SELECT si,no,validi,nulli,bianchi,contestati FROM ".$prefix."_ele_voti_ref where id_sez='$id_sez' and id_gruppo='$idrefgruppo'";
72 $res2 = $dbi->prepare("$sql");
73 $res2->execute();
74 $refscru=$res2->rowCount();
75 $sql="SELECT max(voti_complessivi) FROM ".$prefix."_ele_voti_parziale where id_sez='$id_sez' and id_gruppo='$idrefgruppo'";
76 $res3 = $dbi->prepare("$sql");
77 $res3->execute();
78 list($voti)=$res3->fetch(PDO::FETCH_NUM);
79 $rifscru++;
80 list($si,$no,$validi,$nulli,$bianchi,$contestati)=$res2->fetch(PDO::FETCH_NUM);
81 if($validi and ($si+$no==$validi) and ($validi+$nulli+$bianchi+$contestati==$voti))
82 continue;
83 else {$err=1; break;}
84 }
85 }else{
86 #per le altre consultazione
87 $sql="SELECT max(voti_complessivi) FROM ".$prefix."_ele_voti_parziale where id_sez='$id_sez'";
88 $res3 = $dbi->prepare("$sql");
89 $res3->execute();
90 list($voti)=$res3->fetch(PDO::FETCH_NUM);
91 $sql="SELECT validi FROM ".$prefix."_ele_sezioni where id_sez='$id_sez' and id_cons='$id_cons' ";
92 $res2 = $dbi->prepare("$sql");
93 $res2->execute();
94 list($validi) = $res2->fetch(PDO::FETCH_NUM);
95 if($validi) {
96 $status=0;
97 $query="SELECT validi,nulli,bianchi,contestati,voti_nulli,solo_gruppo,validi_lista,contestati_lista,voti_nulli_lista,solo_lista FROM ".$prefix."_ele_sezioni as t1 where t1.id_sez='$id_sez'";
98 $sql="$query";
99 $res4 = $dbi->prepare("$sql");
100 $res4->execute();
101 list($validi, $nulli, $bianchi,$contestati,$votinulli)=$res4->fetch(PDO::FETCH_NUM);
102 if (($validi+$nulli+$bianchi+$contestati+$votinulli)!=$voti)
103 {$err=1;}
104 }
105 }
106 $tipo='votanti';
107 $sql="select id from ".$prefix."_ele_controlli where tipo='$tipo' and id_sez='$id_sez' ";
108 $res = $dbi->prepare("$sql");
109 $res->execute();
110 $righe=$res->rowCount();
111 if($righe){
112 if(!$err){
113 $sql="delete from ".$prefix."_ele_controlli where tipo='$tipo' and id='$id_sez' ";
114 $res = $dbi->prepare("$sql");
115 $res->execute();
116 }
117 $err=0;
118 }
119 if($err){
120 $sql="insert into ".$prefix."_ele_controlli value('$id_cons','$id_sez','$tipo','$id_sez')";
121 $res = $dbi->prepare("$sql");
122 $res->execute();
123 }
124 if ($genere==4){
125 $sql="select id_lista from ".$prefix."_ele_voti_lista where id_cons='$id_cons' and id_sez='$id_sez'";
126 $res = $dbi->prepare("$sql");
127 $res->execute();
128 if($res->rowCount()) controllo_votil($id_cons,$id_sez,'0');
129 }else{
130 $sql="select id_gruppo from ".$prefix."_ele_voti_gruppo where id_cons='$id_cons' and id_sez='$id_sez'";
131 $res = $dbi->prepare("$sql");
132 $res->execute();
133 if($res->rowCount()) controllo_votig($id_cons,$id_sez,$genere);
134 }
135
136}
137
138
139function controllo_votig($id_cons,$id_sez){
140 global $prefix,$dbi,$id_sede,$id_cons_gen,$genere;
141 ##############################
142 $err=0; $err2=0;
143 $sql="SELECT id_gruppo FROM ".$prefix."_ele_gruppo where id_cons='$id_cons'";
144 $resref = $dbi->prepare("$sql");
145 $resref->execute();
146 $sql="SELECT sum(voti) FROM ".$prefix."_ele_voti_gruppo where id_sez='$id_sez'";
147 $resref = $dbi->prepare("$sql");
148 $resref->execute();
149 list($votig)=$resref->fetch(PDO::FETCH_NUM);
150 $sql="SELECT max(voti_complessivi) FROM ".$prefix."_ele_voti_parziale where id_sez='$id_sez'";
151 $res3 = $dbi->prepare("$sql");
152 $res3->execute();
153 list($voti)=$res3->fetch(PDO::FETCH_NUM);
154 $sql="SELECT validi FROM ".$prefix."_ele_sezioni where id_sez='$id_sez' and id_cons='$id_cons' ";
155 $res2 = $dbi->prepare("$sql");
156 $res2->execute();
157 list($validi) = $res2->fetch(PDO::FETCH_NUM);
158 if($validi) {
159 $status=0;
160 $query="SELECT validi,nulli,bianchi,contestati,voti_nulli,solo_gruppo,validi_lista,contestati_lista,voti_nulli_lista,solo_lista FROM ".$prefix."_ele_sezioni as t1 where t1.id_sez='$id_sez'";
161 $sql="$query";
162 $res4 = $dbi->prepare("$sql");
163 $res4->execute();
164 list($validi, $nulli, $bianchi,$contestati,$votinulli)=$res4->fetch(PDO::FETCH_NUM);
165 if (($validi+$nulli+$bianchi+$contestati+$votinulli)!=$voti or $validi!=$votig)
166 {$err=1;}
167 }
168 $tipo='gruppo';
169 $sql="select id from ".$prefix."_ele_controlli where tipo='$tipo' and id_sez='$id_sez'";
170 $res = $dbi->prepare("$sql");
171 $res->execute();
172 $righe=$res->rowCount();
173 if($righe){
174 if(!$err){
175 $sql="delete from ".$prefix."_ele_controlli where tipo='$tipo' and id='$id_sez' ";
176 $res = $dbi->prepare("$sql");
177 $res->execute();
178 }
179 $err=0;
180 }
181 if($err){
182 $sql="insert into ".$prefix."_ele_controlli value('$id_cons','$id_sez','$tipo','$id_sez')";
183 $res = $dbi->prepare("$sql");
184 $res->execute();
185 }
186 $sql="select id_lista from ".$prefix."_ele_voti_lista where id_cons='$id_cons' and id_sez='$id_sez'";
187 $res = $dbi->prepare("$sql");
188 $res->execute();
189 if($res->rowCount()) controllo_votil($id_cons,$id_sez,'0');
190
191}
192
193
194function controllo_votir($id_cons,$id_sez){
195 global $prefix,$dbi,$id_sede,$id_cons_gen,$genere;
196 ##############################
197 $err=0; $err2=0; $idrg=0;
198 $sql="SELECT id_gruppo FROM ".$prefix."_ele_gruppo where id_cons='$id_cons'";
199 $resref = $dbi->prepare("$sql");
200 $resref->execute();
201 $numscru=$resref->rowCount(); $rifscru=0;
202 while(list($idrefgruppo)=$resref->fetch(PDO::FETCH_NUM)) {
203 $sql="SELECT si,no,validi,nulli,bianchi,contestati FROM ".$prefix."_ele_voti_ref where id_sez='$id_sez' and id_gruppo='$idrefgruppo'";
204 $res2 = $dbi->prepare("$sql");
205 $res2->execute();
206 $refscru=$res2->rowCount();
207 $sql="SELECT max(voti_complessivi) FROM ".$prefix."_ele_voti_parziale where id_sez='$id_sez' and id_gruppo='$idrefgruppo'";
208 $res3 = $dbi->prepare("$sql");
209 $res3->execute();
210 list($voti)=$res3->fetch(PDO::FETCH_NUM);
211 $rifscru++;
212 list($si,$no,$validi,$nulli,$bianchi,$contestati)=$res2->fetch(PDO::FETCH_NUM);
213 if(!$validi or (($si+$no==$validi) and ($validi+$nulli+$bianchi+$contestati==$voti)))
214 continue;
215 else {$err=1; $idrg=$idrefgruppo; break;}
216
217 }
218
219#############
220 $tipo='referendum';
221 $sql="select id from ".$prefix."_ele_controlli where tipo='$tipo' and id_sez='$id_sez'";
222 $res = $dbi->prepare("$sql");
223 $res->execute();
224 $righe=$res->rowCount();
225 if($righe){
226 if(!$err){
227 $sql="delete from ".$prefix."_ele_controlli where tipo='$tipo' and id_sez='$id_sez' ";
228 $res = $dbi->prepare("$sql");
229 $res->execute();
230 }
231 $err=0;
232 }
233 if($err){
234 $sql="insert into ".$prefix."_ele_controlli value('$id_cons','$id_sez','$tipo','$idrg')";
235 $res = $dbi->prepare("$sql");
236 $res->execute();
237 }
238#############
239
240}
241
242function controllo_votic($id_cons,$id_sez,$id_lista){
243 global $prefix,$dbi,$id_sede,$id_cons_gen,$validi;
244 ##############################
245 $err=0;
246 $sql="SELECT preferenze,disgiunto,solo_gruppo,id_conf,id_fascia FROM ".$prefix."_ele_cons_comune where id_cons='$id_cons'";
247 $res = $dbi->prepare("$sql");
248 $res->execute();
249 list($prefs,$disg,$solog,$legge,$fascia)=$res->fetch(PDO::FETCH_NUM);
250 $sql="SELECT limite FROM ".$prefix."_ele_conf where id_conf='$legge'";
251 $res = $dbi->prepare("$sql");
252 $res->execute();
253 if($res->rowCount())
254 list($limite)=$res->fetch(PDO::FETCH_NUM);
255 else
256 $limite=-1;
257 if($fascia<=$limite){
258 $sql="select id_gruppo from ".$prefix."_ele_lista where id_lista='$id_lista'";
259 $res = $dbi->prepare("$sql");
260 $res->execute();
261 list($id_gruppo)=$res->fetch(PDO::FETCH_NUM);
262 $sql="select voti from ".$prefix."_ele_voti_gruppo where id_gruppo='$id_gruppo' and id_sez='$id_sez'";
263 } else $sql="select voti from ".$prefix."_ele_voti_lista where id_lista='$id_lista' and id_sez='$id_sez'";
264 $res = $dbi->prepare("$sql");
265 $res->execute();
266 list($votil)=$res->fetch(PDO::FETCH_NUM);
267 $sql="SELECT sum(voti),max(voti) FROM ".$prefix."_ele_voti_candidati where id_sez='$id_sez' and id_cand in (select id_cand from ".$prefix."_ele_candidati where id_lista='$id_lista')";
268 $res = $dbi->prepare("$sql");
269 $res->execute();
270 list($votic,$mvc)=$res->fetch(PDO::FETCH_NUM);
271 if(($votic)>($votil*$prefs) || $mvc>$votil)
272 {$err=1;}
273
274 return $err;
275}
276
277
278
279function controllo_votil($id_cons,$id_sez,$id_lista){
280 global $prefix,$dbi,$id_sede,$id_cons_gen,$validi;
281 ##############################
282 $controllo=0;
283 $err=0;
284 $tipo='lista';
285 $sql="SELECT t1.genere,t1.voto_g FROM ".$prefix."_ele_tipo as t1 left join ".$prefix."_ele_consultazione as t2 on t1.tipo_cons=t2.tipo_cons where id_cons_gen='$id_cons_gen'";
286 $res = $dbi->prepare("$sql");
287 $res->execute();
288 list($genere,$votog)=$res->fetch(PDO::FETCH_NUM);
289 $sql="SELECT preferenze,disgiunto,solo_gruppo,id_fascia FROM ".$prefix."_ele_cons_comune where id_cons='$id_cons'";
290 $res = $dbi->prepare("$sql");
291 $res->execute();
292 list($prefs,$disg,$solog,$fascia)=$res->fetch(PDO::FETCH_NUM);
293 if($id_lista){
294 $err=controllo_votic($id_cons,$id_sez,$id_lista);
295 $tipo='lista';
296 }else{
297
298 if($genere==4 or $votog)
299 $sql="SELECT id_lista, voti, '0' FROM ".$prefix."_ele_voti_lista where id_sez='$id_sez'";
300 else
301 $sql="SELECT id_gruppo, voti, solo_gruppo FROM ".$prefix."_ele_voti_gruppo where id_sez='$id_sez'";
302 $resref = $dbi->prepare("$sql");
303 $resref->execute();
304 $totlis=0;
305 $totgru=0;
306 $totsg=0;
307 $totsl=0;
308 $tnl=0;
309 if($genere==4 or $votog){
310 $sql="SELECT validi,contestati,nulli,bianchi,voti_nulli FROM ".$prefix."_ele_sezioni where id_cons='$id_cons' and id_sez='$id_sez'";
311 $res = $dbi->prepare("$sql");
312 $res->execute();
313 list($validil,$contestatil,$nullil,$bianchi,$vnulli) = $res->fetch(PDO::FETCH_NUM);
314 $sql="SELECT max(voti_complessivi) FROM ".$prefix."_ele_voti_parziale where id_cons='$id_cons' and id_sez='$id_sez'";
315 $res = $dbi->prepare("$sql");
316 $res->execute();
317 list($votit) = $res->fetch(PDO::FETCH_NUM);
318 while (list($idg,$votig,$svg)=$resref->fetch(PDO::FETCH_NUM)) {
319 $err=controllo_votic($id_cons,$id_sez,$idg);
320 if($err){ $tipo='lista'; $id_lista=$idg; $controllo=1; break; }
321 $sql="SELECT voti, nulli_lista, solo_lista FROM ".$prefix."_ele_voti_lista where id_sez='$id_sez' and id_lista='$idg'";
322 $res2 = $dbi->prepare("$sql");
323 $res2->execute();
324 $totgru+=$votig;
325 $totsg+=$svg;
326 if($res2->rowCount()){
327 list($votil,$nl,$svl)=$res2->fetch(PDO::FETCH_NUM);
328 $totlis+=$votil;
329 $totsl+=$svl;
330 $tnl+=$nl;
331 if(($votig+$svl)<($votil+$svg+$nl))
332 { $err=1; $tipo='lista';$id_lista=$idg; $controllo=2; break; }
333 }
334 }
335 if (($validil+$contestatil+$nullil+$bianchi+$vnulli!=$votit and $validil+$contestatil+$nullil+$bianchi+$vnulli>0) or ($totlis!=$validil and $totlis>0)) {$err=1;$tipo='lista';}
336 }else{
337 $sql="SELECT validi,validi_lista,contestati_lista,voti_nulli_lista,solo_gruppo,solo_lista FROM ".$prefix."_ele_sezioni where id_cons='$id_cons' and id_sez='$id_sez'";
338 $res = $dbi->prepare("$sql");
339 $res->execute();
340 list($votiv,$validil,$contestatil,$nullil,$solog,$solol) = $res->fetch(PDO::FETCH_NUM);
341 $vl=0;
342 $tvl=0;
343 if($resref->rowCount()){
344 while (list($idg,$votig,$svg)=$resref->fetch(PDO::FETCH_NUM)) {
345 $sql="SELECT id_lista FROM ".$prefix."_ele_lista where id_gruppo='$idg'";
346 $res2 = $dbi->prepare("$sql");
347 $res2->execute();
348 while(list($id_lista)=$res2->fetch(PDO::FETCH_NUM)){
349 $err=controllo_votic($id_cons,$id_sez,$id_lista);
350 if($err){ $tipo='lista'; $controllo=3; break; }
351 $sql="SELECT voti FROM ".$prefix."_ele_voti_lista where id_lista='$id_lista' and id_sez='$id_sez'";
352 $res3 = $dbi->prepare("$sql");
353 $res3->execute();
354 list($vl)=$res3->fetch(PDO::FETCH_NUM);
355 $tvl+=$vl;
356 }
357 if($err) break;
358 $sql="SELECT sum(voti), sum(nulli_lista),sum(solo_lista) FROM ".$prefix."_ele_voti_lista where id_sez='$id_sez' and id_lista in (select id_lista from ".$prefix."_ele_lista where id_gruppo='$idg')";
359 $res2 = $dbi->prepare("$sql");
360 $res2->execute();
361 $totgru+=$votig;
362 $totsg+=$svg;
363 if($res2->rowCount()){
364 list($votil,$nl,$svl)=$res2->fetch(PDO::FETCH_NUM);
365 $totlis+=$votil;
366 $totsl+=$svl;
367 $tnl+=$nl;
368 if(($votig+$svl)<($votil+$svg+$nl) and $disg)
369 { $err=1; $tipo='lista'; $controllo=4; break; }
370 }
371
372 }
373 }else{
374 #inserire controllo per consultazioni con voto alle liste ma senza voto di gruppo
375 }
376 if (!$totsg) $totsg=$solog;
377 if (($totlis!=$validil or $validil+$contestatil+$nullil+$totsg!=$votiv) and ($validil+$contestatil+$nullil+$solol>0 or $tvl>0)) {$err=1;$tipo='lista';$controllo=5;} include("--- $votog --- $sql --- if (($totlis!=$votiv or $validil+$contestatil+$nullil+$totsg!=$votiv) and ($validil+$contestatil+$nullil+$solol>0 or $tvl>0))");
378 if(($solog && !$disg && ($tnl!=$nullil && $disg)) || $totsl!=$solol) {$err=1;$tipo='lista';$controllo=6;}
379 }
380
381 }
382
383 if(!$err){
384 $sql="delete from ".$prefix."_ele_controlli where tipo='lista' and id_sez='$id_sez' ";
385 $res = $dbi->prepare("$sql");
386 $res->execute();
387 }
388
389 if($err){
390 if(!$id_lista) $id_lista=0; //$controllo;
391 $sql="insert into ".$prefix."_ele_controlli value('$id_cons','$id_sez','$tipo','$id_lista')";
392 $res = $dbi->prepare("$sql");
393 $res->execute();
394 }
395
396}
397?>
Note: See TracBrowser for help on using the repository browser.