1<?php
2/**
3 * Sono presenti in questo file le procedure per inizializzare, inserire e eliminare le informazioni
4 * sulle tabelle nel registro di VFront per tenerlo allineato con l'information_schema del database.
5 * Questo file � la versione per MySQL
6 *
7 * @desc Procedure di manutenzione del registro per MySQL
8 * @package VFront
9 * @subpackage Administration
10 * @author M.Marcello Verona
11 * @copyright 2007-2009 M.Marcello Verona
12 * @version 0.95 $Id: sync_reg_tab.mysql.php 307 2009-04-27 14:52:24Z marciuz $
13 * @license http://www.gnu.org/licenses/gpl.html GNU Public License
14 * @see sync_reg_tab.postgres.php
15 */
16
17
18require_once("../inc/conn.php");
19require_once("../inc/layouts.php");
20require_once("../inc/func.comuni.php");
21require_once("../inc/func.frontend.php");
22
23 proteggi(3);
24
25##############################################
26#
27#	PROCEDURA AGGIORNAMENTO DEI CAMPI DELLE TABELLE
28#
29#
30
31if(isset($_POST['aggiorna'])){
32
33
34	$ar_campi=$_POST['campo_aggiorna'];
35
36
37	require_once("./gestione_registro.inc.php");
38
39	for($i=0;$i<count($ar_campi);$i++){
40
41		list($tabella,$campo,$operazione) = explode(";",$ar_campi[$i]);
42
43		$feed[] = aggiorna_campo($tabella,$campo,$operazione);
44
45	}
46
47
48	header("Location: ".$_SERVER['PHP_SELF']."?diff=".$tabella);
49	exit;
50
51}
52
53##############################################
54#
55#	PROCEDURA ELIMINAZIONE TABELLE OBSOLETE
56#
57#
58
59if(isset($_POST['elimina_obsolete'])){
60
61	$tabelle=explode(",",$_POST['obsolete']);
62
63	if(is_array($tabelle)){
64
65		// inizia la transazione
66		vmsql_begin($link);
67
68		$ok_del=0;
69		$c=0;
70
71		for($d=0;$d<count($tabelle);$d++){
72
73			$sql_del="DELETE FROM {$db1['frontend']}.registro_tab WHERE table_name='".$tabelle[$d]."'";
74
75			$q_del=vmsql_query($sql_del,$link,true);
76
77			if(vmsql_affected_rows($link,$q_del)>0){
78				$ok_del++;
79			}
80
81			$c++;
82		}
83
84//		echo $c."<br/>$ok_del";
85
86		// FEEDBACK
87		if($ok_del==$c){
88			vmsql_commit($link);
89			header("Location: ".$_SERVER['PHP_SELF']."?feed=ok_del");
90		}
91		else{
92			vmsql_rollback($link);
93			header("Location: ".$_SERVER['PHP_SELF']."?feed=ko_del");
94		}
95
96
97	}
98	else{
99
100		header("Location: ".$_SERVER['PHP_SELF']."?feed=ko_del");
101	}
102
103
104	exit;
105}
106
107#
108#	--fine tabelle obsolete
109#
110################################################################################�
111
112
113
114##############################################
115#
116#	PROCEDURA INSERIMENTO TABELLE NUOVE
117#
118if(isset($_POST['sincronizza_nuove'])){
119
120
121	$tabelle=explode(",",$_POST['nuove']);
122
123	if(is_array($tabelle)){
124
125		require_once("./gestione_registro.inc.php");
126
127
128		// PRENDI GRUPPI
129		$qg=vmsql_query("SELECT gid FROM {$db1['frontend']}.gruppo",$link);
130
131		list($gruppi)=vmsql_fetch_row_all($qg,true);
132
133
134
135
136		/*
137			Anche se ho a disposizione il nome delle tabelle le prendo di nuovo,
138			perch� mi servono anche i commenti
139		*/
140
141		// PRENDI nomi tabelle e commenti
142		$sql_info="SELECT table_name, table_type, SUBSTRING_INDEX(table_comment,'; InnoDB',1) as comment
143							FROM information_schema.tables
144							WHERE table_name IN ('".implode("','",$tabelle)."')
145							AND table_schema='{$db1['dbname']}'";
146
147		$q_info=vmsql_query($sql_info,$link);
148
149		vmsql_begin($link);
150
151		// PER OGNI TABELLA...
152		while($info_tab=vmsql_fetch_assoc($q_info)){
153
154			// PER OGNI GRUPPO
155			for($g=0;$g<count($gruppi);$g++){
156
157				inserisci_registro($info_tab,$gruppi[$g]);
158			}
159
160		}
161
162
163
164		vmsql_commit($link);
165
166		header("Location: ".$_SERVER['PHP_SELF']."?feed=ok_nuove");
167
168	}
169	else{
170
171
172		header("Location: ".$_SERVER['PHP_SELF']."?feed=ko_nuove");
173	}
174
175
176
177
178	exit;
179
180}
181
182
183#
184#	--fine nuove tabelle
185#
186################################################################################�
187
188
189
190
191
192##############################################
193#
194#	PROCEDURA RIPRISTIONO TABELLA
195#
196if(isset($_GET['azzera'])){
197
198	$tabella=trim($_GET['azzera']);
199
200	if(is_tabella($tabella)){
201
202
203		// ELIMINA LE IMPOSTAZIONI DI TABELLA NEL FRONTEND
204		$sql_del="DELETE FROM {$db1['frontend']}.registro_tab WHERE table_name='".$tabella."'";
205
206		vmsql_begin($link);
207
208		$q_del=vmsql_query($sql_del,$link,true);
209
210		if(vmsql_affected_rows($link,$sql_del)>0){
211
212			vmsql_commit($link);
213		}
214		else{
215			vmsql_rollback($link);
216			header("Location: ".$_SERVER['PHP_SELF']."?feed=ko_azzera1");
217			exit;
218		}
219
220
221		require_once("./gestione_registro.inc.php");
222
223
224
225		// PRENDI GRUPPI
226		$qg=vmsql_query("SELECT gid FROM {$db1['frontend']}.gruppo",$link);
227
228		list($gruppi)=vmsql_fetch_row_all($qg,true);
229
230		/*
231			Anche se ho a disposizione il nome delle tabelle le prendo di nuovo,
232			perch� mi servono anche i commenti
233		*/
234
235		// PRENDI nomi tabelle e commenti
236		$sql_info="SELECT table_name, table_type, SUBSTRING_INDEX(table_comment,'; InnoDB',1) as comment
237							FROM information_schema.tables
238							WHERE table_name='$tabella'
239							AND table_schema='{$db1['dbname']}' LIMIT 1";
240
241		$q_info=vmsql_query($sql_info,$link);
242
243		vmsql_begin($link);
244
245		// PER OGNI TABELLA...
246		$info_tab=vmsql_fetch_assoc($q_info);
247
248			// PER OGNI GRUPPO
249			for($g=0;$g<count($gruppi);$g++){
250
251				inserisci_registro($info_tab,$gruppi[$g]);
252			}
253
254
255
256		vmsql_commit($link);
257
258		header("Location: ".$_SERVER['PHP_SELF']."?feed=ok_azzera");
259
260	}
261	else{
262
263
264		header("Location: ".$_SERVER['PHP_SELF']."?feed=ko_azzera2");
265	}
266
267
268
269
270	exit;
271
272}
273
274
275#
276#	--fine procedura ripristino tabella
277#
278################################################################################
279
280
281
282
283
284
285##############################################
286#
287#	PROCEDURA VISUALIZZAZIONE DIFFERENZE
288#
289if(isset($_GET['diff'])){
290
291	$tabella=trim($_GET['diff']);
292
293	if(is_tabella($tabella)){
294
295
296		$colonne1=array();
297		$colonne2=array();
298
299
300		// INFO COLONNE DALL' information_schema
301			$SQL_confronto_colonne1 = "
302		SELECT column_name,column_type,data_type,is_nullable
303		FROM information_schema.columns
304		WHERE TABLE_NAME='$tabella'
305		AND TABLE_SCHEMA='{$db1['dbname']}'
306		ORDER BY ORDINAL_POSITION,COLUMN_NAME";
307
308			$q_conf1=vmsql_query($SQL_confronto_colonne1,$link);
309
310			while($RSc1=vmsql_fetch_assoc($q_conf1)){
311
312				$colonne1[$RSc1['column_name']]=$RSc1;
313
314				$colonne[$RSc1['column_name']]=1;
315			}
316
317
318		// INFO COLONNE DAL frontend
319			$SQL_confronto_colonne2="
320		SELECT column_name,column_type,data_type,is_nullable
321		FROM {$db1['frontend']}.registro_col c, {$db1['frontend']}.`registro_tab` t
322		WHERE t.id_table=c.id_table
323		AND c.gid=0
324		AND t.table_name='$tabella'
325		ORDER BY ordinal_position,column_name
326			";
327
328		$q_conf2=vmsql_query($SQL_confronto_colonne2,$link);
329
330		while($RSc2=vmsql_fetch_assoc($q_conf2)){
331
332			$colonne2[$RSc2['column_name']]=$RSc2;
333
334			$colonne[$RSc2['column_name']]=1;
335		}
336
337
338
339
340
341		if($colonne1!=$colonne2){
342
343			$TESTO= "<table id=\"diff-tab\" summary=\""._("differenze tra le tabelle")."\" border=\"1\">";
344
345
346			$TESTO.= "
347				<tr >
348					  <th>"._("column_name A")."</th><th>"._("column_type A")."</th><th>"._("data_type A")."</th><th>"._("is_nullable A")."</th>
349					  <th style=\"background-color:#444;\" rowspan=\"".(count($colonne)+1) ."\">&nbsp;</th>
350					  <th>"._("column_name B")."</th><th>"._("column_type B")."</th><th>"._("data_type B")."</th><th>"._("is_nullable B")."</th>
351
352				</tr>\n";
353
354
355			foreach($colonne as $campo=>$val){
356
357
358				if($colonne1[$campo]!=$colonne2[$campo]){
359
360					$class="evidenza";
361
362
363
364					// tipo di differenza:
365					if($colonne1[$campo]['column_name']==''){
366
367						$campi_diversi[]=array($campo,"DELETE") ;
368
369						$TESTO.= "
370						<tr class=\"$class\">
371							  ".str_repeat("<td>&nbsp;</td>",4)."
372
373							  <td>".implode("</td>\t\n<td>", (array) $colonne2[$campo])."</td>
374						</tr>\n";
375
376					}
377					elseif($colonne2[$campo]['column_name']==''){
378
379						$campi_diversi[]=array($campo,"INSERT") ;
380
381						$TESTO.= "
382						<tr class=\"$class\">
383							  <td>".implode("</td>\t\n<td>",(array) $colonne1[$campo])."</td>
384
385							  ".str_repeat("<td>&nbsp;</td>",4)."
386						</tr>\n";
387
388
389					}
390					else{
391
392						$campi_diversi[]=array($campo,"UPDATE") ;
393
394						$TESTO.= "
395						<tr class=\"$class\">
396							  <td>".implode("</td>\t\n<td>",(array) $colonne1[$campo])."</td>
397
398							  <td>".implode("</td>\t\n<td>", (array) $colonne2[$campo])."</td>
399						</tr>\n";
400
401					}
402
403
404				}
405				else{
406
407					$class="null";
408
409					$TESTO.= "
410						<tr class=\"$class\">
411							  <td>".implode("</td>\t\n<td>",(array) $colonne1[$campo])."</td>
412
413							  <td>".implode("</td>\t\n<td>", (array) $colonne2[$campo])."</td>
414						</tr>\n";
415				}
416
417
418
419			}
420
421
422
423			$TESTO.= "</table>";
424
425			$TESTO.="<p><strong>A</strong>: information_schema<br /><strong>B</strong>: db vfront</p>\n";
426
427
428			$differenza=true;
429
430
431
432		}
433
434		else{
435
436			$TESTO=_("Non sembra ci siano incongruenze in questa tabella");
437
438			$differenza=false;
439
440		}
441
442
443	}else{
444
445		header("Location: ".$_SERVER['PHP_SELF']);
446	}
447
448
449	$files=array("sty/admin.css","sty/log.css","sty/tabelle.css");
450
451	echo openLayout1(_("Sincronizzazione database/frontend"),$files);
452
453 	echo "<div id=\"briciole\"><a href=\"index.php\">"._("home amministrazione")."</a> &raquo; "
454 	     ."<a href=\"".basename($_SERVER['PHP_SELF'])."\">"._("sincronizzazione db/frontend")."</a> &raquo; "._("differenze per la tabella")." $tabella</div>";
455
456	echo "<h1>"._("Differenze di impostazione per la tabella")." <span class=\"var\">$tabella</span></h1>\n";
457
458	echo $TESTO;
459
460	if($differenza){
461
462		echo "<form action=\"".$_SERVER['PHP_SELF']."?aggiorna_campi\" method=\"post\">\n";
463
464		foreach($campi_diversi as $k=>$v){
465
466			echo "<input type=\"hidden\" name=\"campo_aggiorna[]\" value=\"$tabella;{$v[0]};{$v[1]}\" />\n";
467
468		}
469
470		echo "<input type=\"submit\" name=\"aggiorna\" value=\" "._("Sincronizza campi")." \" />\n";
471
472		echo "</form>\n";
473	}
474
475	echo closeLayout1();
476
477	exit;
478
479}
480
481
482#
483#	--fine procedura visualizzazione differneze
484#
485################################################################################�
486
487
488
489
490
491$files=array("sty/admin.css","sty/tabelle.css","sty/linguette.css");
492
493echo openLayout1(_("Sincronizzazione database"),$files);
494
495
496	echo "
497	<script type=\"text/javascript\">
498
499		var divs = new Array('integrita','manuale');
500
501
502		function eti(ido){
503
504			for (var i in divs){
505				document.getElementById('cont-eti-'+divs[i]).style.display='none';
506				document.getElementById('li-'+divs[i]).className='disattiva';
507			}
508
509			// attiva il selezionato
510			document.getElementById('cont-eti-'+ido).style.display='';
511			document.getElementById('li-'+ido).className='attiva';
512
513		}
514
515
516	</script>
517	";
518
519
520	$OUT="<div id=\"briciole\"><a href=\"index.php\">"._("home amministrazione")."</a> &raquo; "._("sincronizzazione db/frontend")."</div>";
521
522	$OUT.="<h1>"._("Sincronizzazione database/frontend")."</h1>\n";
523
524	$OUT.="<img src=\"../img/registri.gif\" class=\"img-float\" alt=\""._("impostazioni registri")."\" />\n";
525
526	echo $OUT;
527
528
529	// FEEDBACK
530		if(isset($_GET['feed'])){
531
532			if($_GET['feed']=='ok_nuove')
533				echo "<div class=\"feed-mod-ok\">"._("Nuove tabelle impostate correttamente")."</div><br />";
534
535			elseif($_GET['feed']=='ko_nuove')
536				echo "<div class=\"feed-mod-ko\">"._("Nessuna nuova tabella impostata: eccezione della procedura")."</div><br />";
537
538			elseif($_GET['feed']=='ok_del')
539				echo "<div class=\"feed-mod-ok\">"._("Impostazioni tabelle eliminate correttamente")."</div><br />";
540
541			elseif($_GET['feed']=='ko_del')
542					echo "<div class=\"feed-mod-ko\">"._("Nessuna impostazione tabella eliminata: eccezione della procedura")."</div><br />";
543
544			elseif($_GET['feed']=='ko_azzera1')
545				echo "<div class=\"feed-mod-ko\">"._("Nessuna modifica effettuata sul registro della tabella: eccezione della procedura")."</div><br />";
546
547			elseif($_GET['feed']=='ko_azzera2')
548					echo "<div class=\"feed-mod-ko\">"._("Nessuna modifica effettuata sul registro della tabella: eccezione della procedura")."</div><br />";
549
550			elseif($_GET['feed']=='ok_azzera')
551					echo "<div class=\"feed-mod-ok\">"._("Impostazioni della tabella riconfigurate correttamente")."</div><br />";
552
553		}
554
555
556	echo "<p>"._("In questa pagina sono presenti funzioni per la manutenzione del frontend e la sincronizzazione con il database")."<br /><br />
557			<strong>"._("Nota bene!")."</strong> "._("Nessuna delle operazioni sotto elencate modifica la struttura del database!")."<br />
558			"._("Ogni operazione sar&agrave; solo sul contenuto del frontend.")."
559			</p><br />\n";
560
561	echo "
562<div id=\"contenitore-variabili\">
563	<div id=\"box-etichette\">
564
565		<ul class=\"eti-var-gr\">
566
567
568			<li onclick=\"eti('integrita');\" id=\"li-integrita\" class=\"attiva\">"._("Integrit&agrave; frontend")."</li>
569			<li onclick=\"eti('manuale');\" id=\"li-manuale\" class=\"disattiva\">"._("Ripristino manuale")."</li>
570
571		</ul>
572
573	</div>";
574
575
576
577	// TEST 1 DB->FRONTEND
578
579	$sql1="SELECT t.table_name , SUBSTRING_INDEX(t.table_comment,'; InnoDB',1) as table_comment
580					FROM information_schema.tables t
581					LEFT OUTER JOIN  {$db1['frontend']}.registro_tab r ON t.table_name=r.table_name
582					WHERE t.table_schema='{$db1['dbname']}'
583					AND (t.table_type='BASE TABLE' OR t.table_type='VIEW')
584					AND t.table_name NOT IN (SELECT r.table_name FROM {$db1['frontend']}.registro_tab r)";
585
586	$q1=vmsql_query($sql1,$link);
587
588
589	$n_row_t1=vmsql_num_rows($q1);
590
591	if($n_row_t1>0){
592
593		$test1=false;
594		$matrice_t1 = vmsql_fetch_assoc_all($q1);
595	}
596	else{
597
598		$test1=true;
599	}
600
601
602
603
604	// TEST 2 FRONTEND->DB
605	$sql2="SELECT r.id_table, r.table_name, r.commento
606					FROM {$db1['frontend']}.registro_tab r
607					WHERE r.table_name NOT IN (
608						SELECT t.table_name FROM information_schema.tables t
609						WHERE t.table_schema='{$db1['dbname']}' AND (t.table_type='BASE TABLE' OR t.table_type='VIEW'))
610					AND gid=0";
611
612	$q2=vmsql_query($sql2,$link);
613
614
615	$n_row_t2=vmsql_num_rows($q2);
616
617	if($n_row_t2>0){
618
619		$test2=false;
620		$matrice_t2 = vmsql_fetch_assoc_all($q2);
621	}
622	else{
623
624		$test2=true;
625	}
626
627
628###########################################################################
629#
630#	CONTROLLO CAMPI TABELLE
631#
632#
633	// prendi le tabelle dal frontend
634
635
636	$q_tabelle=vmsql_query("SELECT table_name FROM {$db1['frontend']}.registro_tab WHERE gid=0 ORDER BY table_name",$link);
637
638	list($tabelle_presenti) = vmsql_fetch_row_all($q_tabelle,true);
639
640
641	$uguali = true;
642
643	for($i=0;$i<count($tabelle_presenti);$i++){
644
645		$colonne1=array();
646		$colonne2=array();
647
648
649		// INFO COLONNE DALL' information_schema
650			$SQL_confronto_colonne1 = "
651		SELECT column_name,data_type,is_nullable
652		FROM information_schema.columns
653		WHERE TABLE_NAME='{$tabelle_presenti[$i]}'
654		AND TABLE_SCHEMA='{$db1['dbname']}'
655		ORDER BY ORDINAL_POSITION,COLUMN_NAME";
656
657			$q_conf1=vmsql_query($SQL_confronto_colonne1,$link);
658
659			while($RSc1=vmsql_fetch_assoc($q_conf1)){
660
661				$colonne1[$RSc1['column_name']]=$RSc1;
662			}
663
664
665		// INFO COLONNE DAL frontend
666			$SQL_confronto_colonne2="
667		SELECT column_name,data_type,is_nullable
668		FROM {$db1['frontend']}.registro_col c, {$db1['frontend']}.`registro_tab` t
669		WHERE t.id_table=c.id_table
670		AND c.gid=0
671		AND t.table_name='{$tabelle_presenti[$i]}'
672		ORDER BY ordinal_position,column_name
673			";
674
675		$q_conf2=vmsql_query($SQL_confronto_colonne2,$link);
676
677		while($RSc2=vmsql_fetch_assoc($q_conf2)){
678
679			$colonne2[$RSc2['column_name']]=$RSc2;
680		}
681
682/*		echo $tabelle_presenti[$i];
683		echo ($colonne1==$colonne2) ? " Uguali\n":" Diverse\n";*/
684
685
686		if($colonne1!=$colonne2){
687
688			$diversi[$tabelle_presenti[$i]]=array($colonne1,$colonne2);
689			$tab_diverse[]=$tabelle_presenti[$i];
690			$uguali=false;
691
692
693
694		}
695
696
697
698	}
699
700#
701#
702################################################
703
704	if($test1 && $test2 && $uguali){
705
706		$OUT_TEST="<p class=\"verde\"><strong>"._("Tutto bene!")."</strong><br />"._("Il database &egrave; sincronizzato con il frontend")."</p>\n";
707		$TAB_SYNC1="";
708		$TAB_SYNC2="";
709	}
710	elseif(!$test1 && $test2){
711		$OUT_TEST="<p><strong class=\"var\">"._("Attenzione!")."</strong><br />
712		"._("Ci sono <strong>nuove tabelle</strong> nel database da sincronizzare con il frontend")."</p>\n";
713	}
714	elseif($test1 && !$test2){
715		$OUT_TEST="<p><strong class=\"var\">"._("Attenzione!")."</strong><br />
716		"._("Ci sono <strong>tabelle obsolete</strong> nel frontend da eliminare (non pi&ugrave; presenti in database)")."</p>\n";
717	}
718	elseif(!$test1 && !$test2){
719		$OUT_TEST="<p><strong class=\"var\">"._("Attenzione!")."</strong><br />
720		"._("Ci sono <strong>nuove tabelle</strong> nel database da sincronizzare")." <br />
721		"._("e <strong>tabelle obsolete</strong> nel frontend da eliminare (non pi&ugrave; presenti in database)")."</p>\n";
722	}
723
724
725
726
727
728
729
730	$new_t=array();
731	$old_t=array();
732
733
734// TABELLE NUOVE DA SINCRONIZZARE
735	if(!$test1){
736
737		$TAB_SYNC1="<table class=\"tab-color\" summary=\""._("Tabelle da sincronizzare")."\">\n\t<tbody>\n";
738
739		$TAB_SYNC1.="
740
741			<tr>
742				<th>"._("nuova tabella")."</th>
743				<th>"._("commento")."</th>
744			</tr>
745		";
746
747		$VAL1="";
748
749		for($i=0;$i<count($matrice_t1);$i++){
750
751			$VAL1.=$matrice_t1[$i]['table_name'].",";
752			$new_t[]=$matrice_t1[$i]['table_name'];
753
754			$TAB_SYNC1.="
755			<tr>
756				<td>".$matrice_t1[$i]['table_name']."</td>
757				<td>".$matrice_t1[$i]['table_comment']."</td>
758			</tr>
759			";
760		}
761
762		$TAB_SYNC1.="\t</tbody>\n</table>
763
764		<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">
765			<input type=\"hidden\" name=\"nuove\" value=\"".substr($VAL1,0,-1)."\" />
766
767			<input type=\"submit\" name=\"sincronizza_nuove\" value=\""._("Inserisci tabelle nel frontend")."\" />
768			<br /><br /><br />
769		</form>\n";
770
771	}
772
773
774// TABELLE OBSOLETE DA ELIMINARE
775	if(!$test2){
776
777		$TAB_SYNC2="<table class=\"tab-color\" summary=\""._("Tabelle da sincronizzare")."\">\n\t<tbody>\n";
778
779		$TAB_SYNC2.="
780
781			<tr>
782				<th class=\"arancio\">"._("tabella obsoleta")."</th>
783				<th class=\"arancio\">"._("commento")."</th>
784			</tr>
785		";
786
787		$VAL2="";
788
789		for($i=0;$i<count($matrice_t2);$i++){
790
791			$VAL2.=$matrice_t2[$i]['table_name'].",";
792			$old_t[]=$matrice_t2[$i]['table_name'];
793
794			$TAB_SYNC2.="
795			<tr>
796				<td>".$matrice_t2[$i]['table_name']."</td>
797				<td>".$matrice_t2[$i]['commento']."</td>
798			</tr>
799			";
800		}
801
802		$TAB_SYNC2.="\t</tbody>\n</table>
803
804		<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">
805			<input type=\"hidden\" name=\"obsolete\" value=\"".substr($VAL2,0,-1)."\" />
806
807			<input type=\"submit\" name=\"elimina_obsolete\" value=\""._("Elimina tabelle obsolete")."\" />
808			<br /><br /><br />
809		</form>\n";
810	}
811
812
813
814
815	// differenze campi
816	if(!$uguali){
817
818		$mostra_diff_campi=false;
819
820
821
822		$tab_string="";
823
824		for($k=0;$k<count($tab_diverse);$k++){
825
826				if(!in_array($tab_diverse[$k],$new_t) && !in_array($tab_diverse[$k],$old_t)){
827
828					$tab_string.="<a class=\"rosso\" href=\"".$_SERVER['PHP_SELF']."?diff=".$tab_diverse[$k]."\">".$tab_diverse[$k]."</a>, <br />\n";
829
830					$mostra_diff_campi=true;
831				}
832		}
833
834		if($mostra_diff_campi){
835
836			$OUT_TEST_TAB="<p><strong class=\"var\">"._("Attenzione!")."</strong><br />
837			"._("Ci sono <strong>campi impostati diversamente</strong> nel database e nel frontend")."</p>\n";
838
839			if(count($tab_diverse)>1){
840
841				$OUT_TEST_TAB.="<p>"._("Le tabelle da sincronizzare sono")." <br /> $tab_string \n<br />
842							"._("Si consiglia sincronizzare le tabelle cliccando sui nomi delle stesse (in rosso) o di operare il <em>ripristino manuale</em> per queste tabelle")."</p>";
843			}
844			else{
845				$OUT_TEST_TAB.="<p>"._("La tabella da sincronizzare &egrave;")." $tab_string \n<br />
846							"._("Si consiglia sincronizzare la tabella cliccando sul suo nome (in rosso) o di operare il <em>ripristino manuale</em> per questa tabella")."</p>";
847			}
848		}
849	}
850
851
852
853
854
855
856
857
858	// CONTENITORE TEST INTEGRITA'
859	echo "
860	<div class=\"cont-eti\" id=\"cont-eti-integrita\">
861
862		$OUT_TEST
863		$TAB_SYNC1
864		$TAB_SYNC2
865		$OUT_TEST_TAB
866	</div>
867	";
868
869
870	// PRENDI TUTTE LE TABELLE DAL FRONTEND
871
872	$q_front=vmsql_query("SELECT table_name,data_modifica,commento FROM {$db1['frontend']}.registro_tab
873						 GROUP BY table_name
874						 ORDER BY table_name",$link);
875
876	$matrice_front=vmsql_fetch_assoc_all($q_front);
877
878
879	$TAB_FRONT="<table class=\"tab-color\" summary=\""._("Tabelle del frontend")."\">\n\t<tbody>\n";
880
881
882	$TAB_FRONT.="
883
884			<tr>
885				<th class=\"arancio\">"._("tabella")."</th>
886				<th class=\"arancio\">"._("commento")."</th>
887				<th class=\"arancio\">"._("data configurazione")."</th>
888				<th class=\"arancio\">"._("ripristina configurazione")."</th>
889			</tr>
890		";
891
892
893		for($i=0;$i<count($matrice_front);$i++){
894
895			$data_config = (intval($matrice_front[$i]['data_modifica'])>0) ? date("d/m/Y H:i",$matrice_front[$i]['data_modifica']) : "-";
896
897			$TAB_FRONT.="
898			<tr>
899				<td>".$matrice_front[$i]['table_name']."</td>
900				<td>".$matrice_front[$i]['commento']."</td>
901				<td>".$data_config."</td>
902				<td><a href=\"".$_SERVER['PHP_SELF']."?azzera=".$matrice_front[$i]['table_name']."\">"._("ripristina")."</a></td>
903			</tr>
904			";
905		}
906
907
908
909		$TAB_FRONT.="\t</tbody>\n</table>";
910
911
912
913
914	echo "
915	<div class=\"cont-eti\" id=\"cont-eti-manuale\" style=\"display:none;\">
916
917			<p><strong>"._("Attenzione!")."</strong><br />
918			"._("Se si ripristina la configurazione di una tabella si annulleranno tutte le impostazioni finora definite per quella tabella per tutti i gruppi,")."<br />
919			"._("comprese le impostazioni per le sottomaschere. Usare questa funzione con cautela").".</p>
920
921	$TAB_FRONT
922
923	</div>
924</div>
925
926	";
927
928
929
930echo closeLayout1();
931?>