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) ."\"> </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> </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> </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> » " 454 ."<a href=\"".basename($_SERVER['PHP_SELF'])."\">"._("sincronizzazione db/frontend")."</a> » "._("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> » "._("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à 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à 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 è 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ù 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ù 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 è")." $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?>