",$_GET['stato']));
unset($_GET['action']);
break;
case "creafsic":
menu(ap_NoIndexNoDirectLink(AP_BASE_DIR.get_option('opt_AP_FolderUpload')));
unset($_POST['action']);
break;
case "BackupData":
ap_BackupDatiFiles(date('Ymd_H_i_s'));
$filename=Albo_DIR."/BackupDatiAlbo/tmp/msg.txt";
$fpmsg = @fopen($filename, "rb");
$Stato=fread($fpmsg,filesize($filename));
fclose($fpmsg);
menu($Stato);
unset($_POST['action']);
break;
case "setData":
if ($_REQUEST['Data']> date("d/m/Y")){
$Stato="La Data dell'interruzione del serzio deve essere nel passato";
menu($Stato);
}else
menu("","1",$_REQUEST['Data']);
break;
case "verificaproc":
TestProcedura();
break;
case "creaTabella":
creaTabella($_REQUEST['Tabella']);
TestProcedura();
break;
default:
menu();
}
function menu($Stato="",$passo="",$Data=""){
echo '
Utility Albo ';
if ($Stato!="")
echo '
'.str_replace("%%br%%"," ",$Stato).'
';
echo '
Attenzione!!!!!
Operazione di ripubblicazione degli atti in corso di validità a causa di interruzione del servizio di pubblicazione
Questa operazione Annulla gli atti già pubblicati ed in corso di validità con motivazione Annullamento per interruzione del sevizio di pubblicazione Ripubblica gli atti in corso di validità annullati per un periodo di tempo (n. giorni) uguale a quello degli atti originali
Questa è una operazione che può modificare una grosa quantità di dati, si consiglia di eseguire un backup prima di procedere, per poter recuperare i dati originali in caso di errori.
';
switch ($passo){
case "":
echo '
';
break;
case "1":
$TotAtti=ap_get_all_atti(1,0,0,'',0,$Data,'',0,0,true,false);
echo'
'.$TotAtti.' Atti in pubblicazione in data '.$Data.'. Ripubblica gli atti a causa dell\' interruzione del servizio ?
';
}
echo '
';
echo '
Verifica procedura
Questa procedura esegue un test generale della procedura e riporta eventuali anomalie nei dati e nelle impostazioni. Operazioni eseguite:
Verifica permessi cartella di Upload degli allegati
Verifica dati del Data Base e viene riportata una breve statistica sui dati
Verifica
';
/*echo '
Diritto all\'Oblio
L\'albo pretorio implementa un sistema che permette di garantire la riservatezza degli allegati agli atti in modo cehe gli stessi possano essere visionati e scaricati solo dal sito che lo ospita ospita.
In particolare:
le pagine dell\'albo non vengono indicizzate ed archivate dai motori di ricerca attraverso l\'inserimento del meta tag <meta name=\'robots\' content=\'noindex, nofollow, noarchive\' />
Nella cartella di Upload degli allegati viene creato il file .htaccess per evitare accessi diretti ai file della cartella
Nella radice del sito viene inserito il file robots.txt con l\'esclusione della cartella di Upload degli allegati da parte dei crawler dei motori di ricerca
Crea/Aggiorna
';
*/
$elenco="
Nessuno ";
$elencoExpo="";
$Dir=str_replace("\\","/",Albo_DIR.'/BackupDatiAlbo');
if (is_dir($Dir)){
$files_bck = scandir($Dir, 1);
foreach($files_bck as $fileinfo) {
if (is_file($Dir."/".$fileinfo)) {
$elenco.="
".$fileinfo." ";
$elencoExpo.="
".$fileinfo." ";
}
}
}
echo '
Procedura di Backup dei dati dell\'Albo Pretorio
';
echo '
';
}
function TestCampiTabella($Tabella,$Ripara=false){
global $wpdb;
switch ($Tabella){
case $wpdb->table_name_Atti:
$Par=array("IdAtto" => array("Tipo" => "int(11)",
"Null" =>"NO",
"Key" => "PRI",
"Default" => "",
"Extra" =>"auto_increment"),
"Numero" => array("Tipo" => "int(4)",
"Null" =>"NO",
"Key" => "",
"Default" => "0",
"Extra" =>""),
"Anno" => array("Tipo" => "int(4)",
"Null" =>"NO",
"Key" => "",
"Default" => "0",
"Extra" =>""),
"Data" => array("Tipo" => "date",
"Null" =>"NO",
"Key" => "",
"Default" => "0000-00-00",
"Extra" =>""),
"Riferimento" => array("Tipo" => "varchar(100)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Oggetto" => array("Tipo" => "varchar(200)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"DataInizio" => array("Tipo" => "date",
"Null" =>"NO",
"Key" => "",
"Default" => "0000-00-00",
"Extra" =>""),
"DataFine" => array("Tipo" => "date",
"Null" =>"YES",
"Key" => "",
"Default" => "0000-00-00",
"Extra" =>""),
"Informazioni" => array("Tipo" => "varchar(255)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"IdCategoria" => array("Tipo" => "int(11)",
"Null" =>"NO",
"Key" => "",
"Default" => "0",
"Extra" =>""),
"RespProc" => array("Tipo" => "int(11)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"DataAnnullamento" => array("Tipo" => "date",
"Null" =>"YES",
"Key" => "",
"Default" => "0000-00-00",
"Extra" =>""),
"MotivoAnnullamento" => array("Tipo" => "varchar(200)",
"Null" =>"YES",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Ente" => array("Tipo" => "int(11)",
"Null" =>"NO",
"Key" => "",
"Default" => "0",
"Extra" =>""));
break;
case $wpdb->table_name_Allegati:
$Par=array("IdAllegato" => array("Tipo" => "int(11)",
"Null" =>"NO",
"Key" => "PRI",
"Default" => "",
"Extra" =>"auto_increment"),
"TitoloAllegato" => array("Tipo" => "varchar(255)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Allegato" => array("Tipo" => "varchar(255)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"IdAtto" => array("Tipo" => "int(11)",
"Null" =>"NO",
"Key" => "",
"Default" => "0",
"Extra" =>""));
break;
case $wpdb->table_name_Categorie:
$Par=array("IdCategoria" => array("Tipo" => "int(11)",
"Null" =>"NO",
"Key" => "PRI",
"Default" => "",
"Extra" =>"auto_increment"),
"Nome" => array("Tipo" => "varchar(255)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Descrizione" => array("Tipo" => "varchar(255)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Genitore" => array("Tipo" => "int(11)",
"Null" =>"NO",
"Key" => "",
"Default" => "0",
"Extra" =>""),
"Giorni" => array("Tipo" => "smallint(3)",
"Null" =>"NO",
"Key" => "",
"Default" => "0",
"Extra" =>""));
break;
case $wpdb->table_name_Log:
$Par=array("Data" => array("Tipo" => "timestamp",
"Null" =>"NO",
"Key" => "",
"Default" => "CURRENT_TIMESTAMP",
"Extra" =>""),
"Utente" => array("Tipo" => "varchar(60)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"IPAddress" => array("Tipo" => "varchar(16)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Oggetto" => array("Tipo" => "int(1)",
"Null" =>"NO",
"Key" => "",
"Default" => "1",
"Extra" =>""),
"IdOggetto" => array("Tipo" => "int(11)",
"Null" =>"NO",
"Key" => "",
"Default" => "1",
"Extra" =>""),
"IdOggetto" => array("Tipo" => "int(11)",
"Null" =>"NO",
"Key" => "",
"Default" => "1",
"Extra" =>""),
"IdAtto" => array("Tipo" => "int(11)",
"Null" =>"NO",
"Key" => "",
"Default" => "0",
"Extra" =>""),
"TipoOperazione" => array("Tipo" => "int(1)",
"Null" =>"NO",
"Key" => "",
"Default" => "1",
"Extra" =>""),
"Operazione" => array("Tipo" => "text",
"Null" =>"Yes",
"Key" => "",
"Default" => "",
"Extra" =>""));
break;
case $wpdb->table_name_RespProc:
$Par=array("IdResponsabile" => array("Tipo" => "int(11)",
"Null" =>"NO",
"Key" => "PRI",
"Default" => "",
"Extra" =>"auto_increment"),
"Cognome" => array("Tipo" => "varchar(20)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Nome" => array("Tipo" => "varchar(20)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Email" => array("Tipo" => "varchar(100)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Telefono" => array("Tipo" => "varchar(30)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Orario" => array("Tipo" => "varchar(60)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Note" => array("Tipo" => "text",
"Null" =>"YES",
"Key" => "",
"Default" => "",
"Extra" =>""));
break;
case $wpdb->table_name_Enti:
$Par=array("IdEnte" => array("Tipo" => "int(11)",
"Null" =>"NO",
"Key" => "PRI",
"Default" => "",
"Extra" =>"auto_increment"),
"Nome" => array("Tipo" => "varchar(100)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Indirizzo" => array("Tipo" => "varchar(150)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Url" => array("Tipo" => "varchar(100)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Email" => array("Tipo" => "varchar(100)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Pec" => array("Tipo" => "varchar(100)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Telefono" => array("Tipo" => "varchar(40)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Fax" => array("Tipo" => "varchar(40)",
"Null" =>"NO",
"Key" => "",
"Default" => "",
"Extra" =>""),
"Note" => array("Tipo" => "text",
"Null" =>"Yes",
"Key" => "",
"Default" => "",
"Extra" =>""));
break;
}
$wpdb->flush();
$result=$wpdb->get_results("Describe $Tabella");
$Verificato=true;
$Msg="";
foreach ( $result as $campo ){
if (strtolower($Par[$campo->Field]["Tipo"])!=strtolower($campo->Type)){
$Msg.= $campo->Field." Tipo DB ". $campo->Type . " Tipo Originale ".$Par[$campo->Field]["Tipo"]."
";
$Verificato=false;
}
if (strtolower($Par[$campo->Field]["Null"])!=strtolower($campo->Null)){
$Msg.= $campo->Field." Null DB ". $campo->Null . " Null Originale ".$Par[$campo->Field]["Null"]."
";
$Verificato=false;
}
if (strtolower($Par[$campo->Field]["Default"])!=strtolower($campo->Default)){
$Msg.= $campo->Field." Default DB ". $campo->Default . " Default Originale ".$Par[$campo->Field]["Default"]."
";
$Verificato=false;
}
if (strtolower($Par[$campo->Field]["Extra"])!=strtolower($campo->Extra)){
$Msg.= $campo->Field." Extra DB ". $campo->Extra . " Extra Originale ".$Par[$campo->Field]["Extra"]."
";
$Verificato=false;
}
if (strtolower($Par[$campo->Field]["Key"])!=strtolower($campo->Key)){
$Msg.= $campo->Field." Key DB ". $campo->Key . " Key Originale ".$Par[$campo->Field]["Key"]."
";
$Verificato=false;
}
}
if ($Verificato == True)
$Msg.= '
';
return $Msg;
}
function TestCongruitaDati($Tabella){
global $wpdb;
switch ($Tabella){
case $wpdb->table_name_Atti:
$n_atti = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->table_name_Atti;");
$n_atti_dapub = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->table_name_Atti Where Numero=0;");
$n_atti_attivi = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->table_name_Atti Where DataInizio <= now() And DataFine>= now() And Numero>0;");
$n_atti_storico=$n_atti-$n_atti_attivi-$n_atti_dapub;
$Analisi.='
Atti In corso di Validità: '.$n_atti_attivi.' ';
$Analisi.='
Atti Scaduti: '.$n_atti_storico.' ';
$Analisi.='
Atti da Pubblicare: '.$n_atti_dapub.' ';
// Verifica Atti con Categorie Orfane
$CategorieOrfane=ap_categorie_orfane();
if ($CategorieOrfane){
foreach ($CategorieOrfane as $CategoriaOrfana){
$Analisi.="
Atto N. ".$CategoriaOrfana->Numero."/".$CategoriaOrfana->Anno." riporta la Categoria con Codice ".$CategoriaOrfana->IdCategoria." NON TROVATA nella tabella Categorie ";
}
}
$EntiOrfani=ap_enti_orfani();
if ($EntiOrfani){
foreach ($EntiOrfani as $EnteOrfano){
$Analisi.="Atto N. ".$EnteOrfano->Numero."/".$EnteOrfano->Anno." riporta l'ente con Codice ".$EnteOrfano->Ente." NON TROVATO nella tabella Enti ";
}
}
$ResponsabiliOrfani=ap_responsabili_orfani();
if ($ResponsabiliOrfani){
foreach ($ResponsabiliOrfani as $ResponsabileOrfan0){
$Analisi.="Atto N. ".$ResponsabileOrfan0->Numero."/".$ResponsabileOrfan0->Anno." riporta il responsabile con Codice ".$ResponsabileOrfan0->RespProc." NON TROVATO nella tabella Responsabili ";
}
}
return $Analisi;
break;
case $wpdb->table_name_Allegati:
$NumAllegati=ap_num_allegati();
$AllegatiOrfani=ap_allegati_orfani();
$Analisi= "N. Allegati ".$NumAllegati." di cui orfani ".count($AllegatiOrfani)." ";
if (count($AllegatiOrfani)>0)
$Analisi.="Allegati Orfani ";
foreach ($AllegatiOrfani as $AllegatoOrfano){
$Analisi.="Allegato ".$AllegatoOrfano->TitoloAllegato." Associato all'Atto con id n. ".$AllegatoOrfano->IdAtto." ";
}
return $Analisi;
break;
case $wpdb->table_name_Categorie:
$NumCategorie=ap_num_categorie();
$NumCategorieInutilizzate=ap_num_categorie_inutilizzate();
$Categorie=ap_get_categorie();
$UsoCategorie="";
foreach ($Categorie as $Categoria){
$NCategorie=ap_num_categoria_atto($Categoria->IdCategoria);
$NCategorie=$NCategorie ? $NCategorie : 0;
$UsoCategorie.="".$Categoria->Nome." Presente in ".$NCategorie ." Atti ";
}
return "Categorie codificate ".$NumCategorie." di cui inutilizzate ".$NumCategorieInutilizzate." ".$UsoCategorie;
break;
case $wpdb->table_name_Log:
$LogPerOggetti=ap_get_Stat_Log("Oggetto");
$Statistiche="Numero record per Oggetto ";
foreach ($LogPerOggetti as $LogPerOggetto){
$Statistiche.="".$LogPerOggetto->NomeOggetto." => ".$LogPerOggetto->Numero ." ";
}
$LogPerTipoOperazioni=ap_get_Stat_Log("TipoOperazione");
$Statistiche.="Numero record per Tipo Operazione ";
foreach ($LogPerTipoOperazioni as $LogPerTipoOperazione){
$Statistiche.="".$LogPerTipoOperazione->NomeTipoOperazione." => ".$LogPerTipoOperazione->Numero ." ";
}
return $Statistiche;
break;
case $wpdb->table_name_RespProc:
$NumResp=ap_num_responsabili();
$NumResponsabiliInutilizzate=ap_num_responsabili_inutilizzati();
$Responsabili=ap_get_responsabili();
$UsoResponsabili="";
foreach ($Responsabili as $Responsabile){
$NResponsabile=ap_num_responsabili_atto($Responsabile->IdResponsabile);
$NResponsabile=$NResponsabile ? $NResponsabile : 0;
$UsoResponsabili.="".$Responsabile->Cognome." ".$Responsabile->Nome." Presente in ".$NResponsabile ." Atti ";
}
return "Responsabili codificati ".$NumResp." di cui inutilizzati ".$NumResponsabiliInutilizzate." ".$UsoResponsabili;
break;
case $wpdb->table_name_Enti:
$NumEnti=ap_num_enti();
$NumEntiInutilizzati=ap_num_enti_Inutilizzati();
$Enti=ap_get_enti();
$UsoEnti="";
foreach ($Enti as $Ente){
$NAtti=ap_num_enti_atto($Ente->IdEnte);
$NAtti=$Natti ? $Natti : 0;
$UsoEnti.="".$Ente->Nome." Presente in ".$NAtti ." Atti ";
}
return "Enti codificati ".$NumEnti." di cui inutilizzati ".$NumEntiInutilizzati." ".$UsoEnti;
break;
}
}
function TestProcedura(){
global $wpdb;
$Tabelle=array($wpdb->table_name_Atti,
$wpdb->table_name_Categorie,
$wpdb->table_name_Allegati,
$wpdb->table_name_Log,
$wpdb->table_name_RespProc,
$wpdb->table_name_Enti);
echo '