Index: trunk/admin/admin.php
===================================================================
--- trunk/admin/admin.php	(revision 378)
+++ trunk/admin/admin.php	(revision 379)
@@ -207,26 +207,5 @@
 	$multicomune=$row['multicomune'];
 }
-if(!isset($_SESSION['aggiornamento']) and isset($_SESSION['aid']) and ChiSei(0)==256)
-{
-	$sql="SELECT COLUMN_NAME
-	FROM INFORMATION_SCHEMA.COLUMNS
-	WHERE TABLE_SCHEMA = '$dbname'
-	AND TABLE_NAME = '".$prefix."_config'
-	AND COLUMN_NAME = 'aggiornamento'";
-	$sth = $dbi->prepare($sql);
-	$sth->execute();
-	if($sth->rowCount()) 
-	{
-		$sth = $dbi->prepare("select aggiornamento from ".$prefix."_config");
-		$sth->execute();
-		list($agg)=$sth->fetch(PDO::FETCH_NUM);
-		$_SESSION['aggiornamento']=$agg;
-		if($agg) include('aggiornamento.php');
-	}else{
-		$sql="ALTER TABLE `soraldo_config` ADD `aggiornamento` ENUM('0','1','2') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '2' AFTER `ed_user`;";
-		$sth = $dbi->prepare($sql);
-		$sth->execute();
-	}
-}
+
 //fine
 	if (isset($param['tema'])) $_SESSION['tema']=$param['tema'];
@@ -295,4 +274,52 @@
 
 } 
+# si settano le variabili per il controllo degli aggiornamenti
+if(!isset($_SESSION['localrev']) and isset($_SESSION['aid']) and ChiSei(0)==256)
+{
+	$sql="SELECT COLUMN_NAME
+	FROM INFORMATION_SCHEMA.COLUMNS
+	WHERE TABLE_SCHEMA = '$dbname'
+	AND TABLE_NAME = '".$prefix."_config'
+	AND COLUMN_NAME = 'aggiornamento'";
+	$sth = $dbi->prepare($sql);
+	$sth->execute();
+	if(!$sth->rowCount()) 
+	{		
+		$sql="ALTER TABLE `soraldo_config` ADD `aggiornamento` ENUM('0','1','2') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '1' AFTER `ed_user`;";
+		$sth = $dbi->prepare($sql);
+		$sth->execute();
+	}
+	$sth = $dbi->prepare("select aggiornamento from ".$prefix."_config");
+	$sth->execute();
+	list($agg)=$sth->fetch(PDO::FETCH_NUM);
+	$_SESSION['aggiornamento']=$agg;
+###########
+	$righe='';
+	if(phpversion()<5.6) $host="http://80.211.143.127";
+	else $host="https://trac.eleonline.it";
+	if(false === $file = file("$host/ele3/changeset/")) {
+		$newrev=0;
+	}else{
+		$cntFile = count($file);
+		$fine=0;
+		$currentLine=0;
+
+		foreach ($file as $line_num => $line) {
+			if(strpos($line,'<title>') ) {$fine=1; continue;}
+			if ($fine){
+				$newrev=(int) filter_var($line, FILTER_SANITIZE_NUMBER_INT);
+				break;
+			}
+		}
+	}
+	include('versione.php');
+	$myrev=intval(substr($versione,-4,4));
+	$_SESSION['aggiornamento']=$agg;
+	$_SESSION['localrev']=$myrev;
+	$_SESSION['remoterev']=$newrev;		
+	unset($file);		
+#		if($agg) include('aggiornamento.php');
+#die("local: ".$_SESSION['localrev'].$_SESSION['remoterev']);	
+}
 if(!isset($_SESSION['BASE'])) $_SESSION['BASE']=substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['REQUEST_URI'], "/")-16);
 if(!isset($language)) $language=$_SESSION['lang'];
@@ -534,9 +561,9 @@
     include("modules/Elezioni/ele_tipi.php");
 	break;
+    case "aggiorna":
+    include("modules/Elezioni/aggiornamento.php");
+	break;
     case "constipi":
     include("modules/Elezioni/ele_consultazionitipi.php");
-	break;
-    case "aggiorna":
-    include("modules/Elezioni/aggiorna.php");
 	break;
     case "parziali":
Index: trunk/admin/aggiornadb.php
===================================================================
--- trunk/admin/aggiornadb.php	(revision 378)
+++ 	(revision )
@@ -1,513 +1,0 @@
-<?php
-
-#imposta il charset su utf8, qualsiasi altro valore per cambiarlo in latin1;
-$newcs='utf8'; 
-
-@require_once("config.php"); 
-	try{
-		$dbi = new PDO("mysql:host=$dbhost", $dbuname, $dbpass, array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); 
-    	$sql = "use $dbname";
-    	$dbi->exec($sql);	
-    }
-	catch(PDOException $e)
-	{
-	    die( $sql . "<br>" . $e->getMessage());
-	} 
-
-
-###############
-function aggiorna($sql,$dbi,$sql2,$num){
-	$ret=0;
-	try{
-		$res = $dbi->prepare("$sql");
-		$res->execute();
-		$ret= 1;
-    }
-	catch(PDOException $e)
-	{
-		$ret=0;
-		echo "<br><span style=\"color: red;\">- Aggiornamento Fallito: $sql</span>";
-		return $ret;
-	}
-
-	if("$sql2"!=""){
-		try{
-		  $res = $dbi->prepare("$sql2");
-		  $res->execute();		
-		  $ret=2;
-		}	
-		catch(PDOException $e)
-		{
-		  $ret=0;
-		  echo "<br><span style=\"color: red;\">- Aggiornamento Fallito: $sql2</span>";
-		  return $ret;
-		}
-	} 
-	echo "<br><span style=\"color: green;\">- Aggiornamento eseguito correttamente</span>";
-	return $ret;
-}
-function aggiorna_index($tab,$ind,$dbi,$sql2,$num){
-	$ret=0;
-#	$conn->getAttribute( constant( "PDO::ATTR_$val" ) )
-	$sqltest="SHOW INDEX FROM `$tab` WHERE KEY_NAME = '$ind'";
-	$res = $dbi->prepare("$sqltest");
-	$res->execute();
-		
-	if($res->rowCount()) {
-		if($ind=='PRIMARY')
-			$sql="ALTER TABLE `$tab`  DROP PRIMARY KEY , $sql2 ";
-		else
-			$sql="ALTER TABLE `$tab` DROP INDEX `$ind`";
-		try{
-			$res = $dbi->prepare("$sql");
-			$res->execute();
-			$ret= 1;
-			}
-		catch(PDOException $e)
-		{
-			$ret=0;
-			echo "<br><span style=\"color: red;\">- Tabella: $tab - Indice: $ind - Aggiornamento Fallito: $sql</span>";
-			return $ret;
-		}
-	}
-	if("$sql2"!="" and $ind!='PRIMARY'){
-		try{
-		  $res = $dbi->prepare("$sql2");
-		  $res->execute();		
-		  $ret=2;
-		}	
-		catch(PDOException $e)
-		{
-		  $ret=0;
-		  echo "<br><span style=\"color: red;\">- Tabella: $tab - Indice: $ind - Aggiornamento Fallito: $sql2</span>";
-		  return $ret;
-		}
-	} 
-	echo "<br><span style=\"color: green;\">- Tabella: $tab - Indice: $ind - Index aggiornato</span>";
-	return $ret;
-}
-
-
-
-
-function controllo($tabella,$campo,$num)
-{
-	global $dbi, $dbname;
-	$sql="SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$dbname' AND TABLE_NAME = '$tabella'";
-	$res = $dbi->prepare("$sql");
-	$res->execute();
-	if($res->rowCount() and $campo=='') return 1;
-	while(list($nome)=$res->fetch(PDO::FETCH_NUM)) {if($nome==$campo) { echo "<br>".$num.") Il campo: $campo Ãš presente nella tabella: $tabella"; return 1;}}
-	if($campo) echo "<br>$num) Il campo: $campo non Ãš presente nella tabella: $tabella"; 
-	return 0;
-}
-
-$num=0;		
-
-if(controllo($prefix.'_authors','admincomune',++$num))
-{
-	$sql="UPDATE `soraldo_authors` SET `adminop` = '1', `adminsuper` = '0',`admincomune` = '0' WHERE `soraldo_authors`.`aid` != 'admin' AND `soraldo_authors`.`adminsuper` != '1'";
-	$ret=aggiorna($sql,$dbi,'',$num);
-	$sql="UPDATE `soraldo_authors` SET `adminop` = '0', `adminsuper` = '0',`admincomune` = '1' WHERE `soraldo_authors`.`aid` = 'admin'";
-	$ret=aggiorna($sql,$dbi,'',$num);
-	$sql="UPDATE `soraldo_authors` SET `adminop` = '0', `adminsuper` = '1',`admincomune` = '0' WHERE `soraldo_authors`.`aid` = 'suser' or `soraldo_authors`.`adminsuper` = '1'";
-	$ret=aggiorna($sql,$dbi,'',$num);
-	echo "<br> La tabella dei permessi Ãš stata aggiornata<br>";
-}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_authors non richiede questo aggiornamento</span><br>";	
-
-if(!controllo($prefix.'_config','versione',++$num))
-{
-	$sql="alter table `".$prefix."_config` change column `Versione` `versione` int(3)";
-	$ret=aggiorna($sql,$dbi,'',$num);
-}	else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_config non richiede questo aggiornamento</span><br>";	
-
-
-if(controllo($prefix.'_config','secret',++$num))
-{
-	$sql="alter table `".$prefix."_config` DROP `secret`";
-	$ret=aggiorna($sql,$dbi,'',$num);
-}	else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_config non richiede questo aggiornamento</span><br>";
-
-if(controllo($prefix.'_ele_voti_parziale','data',++$num))
-{
-	$sql="ALTER TABLE `".$prefix."_ele_voti_parziale` CHANGE `data` `data` DATE NOT NULL DEFAULT '1900-01-01'";
-	$ret=aggiorna($sql,$dbi,'',$num);
-	echo "<br>";
-}	
-++$num;
-$sql="ALTER TABLE `".$prefix."_ele_come` CHANGE `title` `title` VARCHAR(150) NOT NULL DEFAULT ' ', CHANGE `preamble` `preamble` TEXT, CHANGE `content` `content` TEXT, CHANGE `editimage` `editimage` VARCHAR(100) NOT NULL DEFAULT ' '"; 
-$ret=aggiorna($sql,$dbi,'',$num);
-echo "<br>";
-if(!$ret) echo "Il tuo sistema non necessita di questo aggiornamento, questo avviso di errore va ignorato<br>";
-++$num;
-$sql="ALTER TABLE `".$prefix."_ele_link` CHANGE `title` `title` VARCHAR(150) NOT NULL DEFAULT ' ', CHANGE `preamble` `preamble` TEXT, CHANGE `content` `content` TEXT, CHANGE `editimage` `editimage` VARCHAR(100) NOT NULL DEFAULT ' '"; 
-$ret=aggiorna($sql,$dbi,'',$num);
-echo "<br>";
-if(!$ret) echo "Il tuo sistema non necessita di questo aggiornamento, questo avviso di errore va ignorato<br>";
-++$num;
-$sql="ALTER TABLE `".$prefix."_ele_servizi` CHANGE `title` `title` VARCHAR(150) NOT NULL DEFAULT ' ', CHANGE `preamble` `preamble` TEXT, CHANGE `content` `content` TEXT, CHANGE `editimage` `editimage` VARCHAR(100) NOT NULL DEFAULT ' '"; 
-$ret=aggiorna($sql,$dbi,'',$num);
-echo "<br>";
-if(!$ret) echo "Il tuo sistema non necessita di questo aggiornamento, questo avviso di errore va ignorato<br>";
-
-if(controllo($prefix.'_ele_rilaff','data',++$num))
-{
-	$sql="ALTER TABLE `".$prefix."_ele_rilaff` CHANGE `data` `data` DATE NOT NULL DEFAULT '1900-01-01'";
-	$ret=aggiorna($sql,$dbi,'',$num);
-	echo "<br>";
-}	
-
-if(!controllo($prefix.'_ele_gruppo','num_circ',++$num))
-{	
-	$sql="ALTER TABLE `".$prefix."_ele_gruppo` ADD `num_circ` INT(2) UNSIGNED NOT NULL AFTER `id_circ`";
-	$ret=aggiorna($sql,$dbi,'',$num);
-}	else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_gruppo non richiede questo aggiornamento</span><br>";
-
-if(!controllo($prefix.'_ele_voti_gruppo','num_gruppo',++$num))
-{	
-	$sql="ALTER TABLE `".$prefix."_ele_voti_gruppo` ADD `num_gruppo` INT(2) UNSIGNED NOT NULL AFTER `id_sez`";
-	$ret=aggiorna($sql,$dbi,'',$num);
-}	else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_gruppo non richiede questo aggiornamento</span><br>";
-
-if(!controllo($prefix.'_ele_lista','num_gruppo',++$num))
-{
-	$sql="ALTER TABLE `".$prefix."_ele_lista` ADD `num_gruppo` INT(2) UNSIGNED NOT NULL AFTER `id_gruppo`";
-	$ret=aggiorna($sql,$dbi,'',$num);
-}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_lista non richiede questo aggiornamento</span><br>";
-
-if(!controllo($prefix.'_ele_lista','num_circ',++$num))
-{
-	$sql="ALTER TABLE `".$prefix."_ele_lista` ADD `num_circ` INT(2) UNSIGNED NOT NULL AFTER `id_circ`";
-	$ret=aggiorna($sql,$dbi,'',$num);
-}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_lista non richiede questo aggiornamento</span><br>";
-
-if(!controllo($prefix.'_ele_operatori','id_circ',++$num))
-{
-	$sql="ALTER TABLE `".$prefix."_ele_operatori` ADD `id_circ` INT(11) NOT NULL  DEFAULT 0 AFTER `aid`";
-	$ret=aggiorna($sql,$dbi,'',$num);
-}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_operatori non richiede questo aggiornamento</span><br>";
-
-if(!controllo($prefix.'_ele_operatori','id_sez',++$num))
-{
-	$sql="ALTER TABLE `".$prefix."_ele_operatori` ADD `id_sez` INT(11) NOT NULL  DEFAULT 0 AFTER `id_circ`";
-	$ret=aggiorna($sql,$dbi,'',$num);
-}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_operatori non richiede questo aggiornamento</span><br>";
-
-if(!controllo($prefix.'_ele_voti_lista','num_lista',++$num))
-{
-	$sql="ALTER TABLE `".$prefix."_ele_voti_lista` ADD `num_lista` INT(2) UNSIGNED NOT NULL AFTER `id_sez`";
-	$ret=aggiorna($sql,$dbi,'',$num);
-}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_voti_lista non richiede questo aggiornamento</span><br>";
-
-if(!controllo($prefix.'_ele_voti_ref','num_gruppo',++$num))
-{
-	$sql="ALTER TABLE `".$prefix."_ele_voti_ref` ADD `num_gruppo` INT(2) UNSIGNED NOT NULL AFTER `id_sez`";
-	$ret=aggiorna($sql,$dbi,'',$num);
-}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_voti_ref non richiede questo aggiornamento</span><br>";
-
-if(!controllo($prefix.'_ele_voti_candidati','num_cand',++$num))
-{
-	$sql="ALTER TABLE `".$prefix."_ele_voti_candidati` ADD `num_cand` INT(2) UNSIGNED NOT NULL AFTER `id_sez`";
-	$ret=aggiorna($sql,$dbi,'',$num);
-}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_voti_candidati non richiede questo aggiornamento</span><br>";
-
-if(!controllo($prefix.'_ele_candidati','num_lista',++$num))
-{
-	$sql="ALTER TABLE `".$prefix."_ele_candidati` ADD `num_lista` INT(2) UNSIGNED NOT NULL AFTER `id_lista`";
-	$ret=aggiorna($sql,$dbi,'',$num);
-}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_candidati non richiede questo aggiornamento</span><br>";
-
-if(!controllo($prefix.'_ele_sezioni','colore',++$num))
-{
-	$sql="ALTER TABLE `".$prefix."_ele_sezioni` ADD `colore` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '#FAFAD2' AFTER `solo_lista`";
-	$ret=aggiorna($sql,$dbi,'',$num);
-}else{
-	$sql="ALTER TABLE `".$prefix."_ele_sezioni` CHANGE `colore` `colore` VARCHAR(50) DEFAULT '#FAFAD2'";
-	$ret=aggiorna($sql,$dbi,'',$num);
-}	echo "<br>";
-
-echo "<br>Aggiornamento per nuovo sistema dei controlli di congruitÃ ";
-
-if(!controllo($prefix.'_ele_controlli','id_cons',++$num))
-{
-	$sql="CREATE TABLE if not exists`".$prefix."_ele_controlli` ( `id_cons` INT(11) NOT NULL , `id_sez` INT(11) NOT NULL , `tipo` VARCHAR(10) NOT NULL , `id` INT(11) NOT NULL , INDEX `sezione` (`id_sez`)) ENGINE = MyISAM";
-	echo "<br>".$num.") Creazione tabella dei controlli: ";
-	$ret=aggiorna($sql,$dbi,'',$num);
-}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_controlli non richiede questo aggiornamento</span><br>";
-
-echo "<br>".++$num.") Eliminazione della vecchia tabella dei controlli: ";
-if(controllo($prefix.'_ele_controllisez','',$num))
-{
-$sql="DROP TABLE if exists `".$prefix."_ele_controllisez`";
-$ret=aggiorna($sql,$dbi,'',$num);
-} else echo "<br><span style=\"color: green;\">- Tabella non presente</span><br>";
-
-echo "<br>".++$num.") Aggiornamento tabella ".$prefix."_ele_voti_gruppo";
-$sql="update `".$prefix."_ele_voti_gruppo` as t1 left join `".$prefix."_ele_gruppo` as t2 on t1.id_gruppo=t2.id_gruppo set t1.num_gruppo=t2.num_gruppo;";
-$ret=aggiorna($sql,$dbi,'',$num);
-
-echo "<br><br>".++$num.") Aggiornamento dei valori di default: ".$prefix."_ele_voti_lista";
-$sql="ALTER TABLE `".$prefix."_ele_voti_lista` CHANGE `num_lista` `num_lista` INT(2) UNSIGNED NULL DEFAULT '0';";
-$ret=aggiorna($sql,$dbi,'',$num);
-
-echo "<br><br>".++$num.") Aggiornamento tabella ".$prefix."_ele_voti_lista";
-$sql="update `".$prefix."_ele_voti_lista` as t1 left join `".$prefix."_ele_lista` as t2 on t1.id_lista=t2.id_lista set t1.num_lista=t2.num_lista;";
-$ret=aggiorna($sql,$dbi,'',$num);
-##############################################
-
-echo "<br><br>".++$num.") Aggiornamento dei valori di default: ".$prefix."_ele_gruppo";
-$sql="ALTER TABLE `".$prefix."_ele_gruppo` CHANGE `num_circ` `num_circ` INT(2) UNSIGNED NOT NULL DEFAULT '1';";
-$ret=aggiorna($sql,$dbi,'',$num);
-
-$sql="ALTER TABLE `soraldo_authors` CHANGE `adminsuper` `adminsuper` TINYINT(2) NOT NULL DEFAULT '0';";
-$ret=aggiorna($sql,$dbi,'',$num);
-
-$sql="ALTER TABLE `".$prefix."_ele_lista` CHANGE `num_gruppo` `num_gruppo` INT(2) UNSIGNED NOT NULL DEFAULT '0';";
-$ret=aggiorna($sql,$dbi,'',$num);
-
-$sql="ALTER TABLE `".$prefix."_ele_lista` CHANGE `num_circ` `num_circ` INT(2) UNSIGNED NOT NULL DEFAULT '1';";
-$ret=aggiorna($sql,$dbi,'',$num);
-
-echo "<br><br>".++$num.") Ricostruzione della tabella ".$prefix."_ele_fasce`";
-$sql="DROP TABLE `".$prefix."_ele_fasce`";
-$ret=aggiorna($sql,$dbi,'',$num);
-
-$sql="CREATE TABLE `".$prefix."_ele_fasce` (
-  `id_fascia` int(2) NOT NULL,
-  `abitanti` int(11) NOT NULL,
-  `seggi` int(4) NOT NULL,
-  `id_conf` int(11) DEFAULT 1
-) ENGINE=MyISAM DEFAULT CHARSET 'utf8';";
-
-
-$sql2="INSERT INTO `".$prefix."_ele_fasce` (`id_fascia`, `abitanti`, `seggi`, `id_conf`) VALUES
-(1, 3000, 12, 1),
-(2, 10000, 16, 1),
-(3, 15000, 20, 1),
-(4, 30000, 20, 1),
-(5, 100000, 30, 1),
-(6, 250000, 40, 1),
-(7, 500000, 46, 1),
-(8, 1000000, 50, 1),
-(9, 100000000, 60, 1),
-(1, 3000, 12, 2),
-(2, 10000, 16, 2),
-(3, 15000, 20, 2),
-(4, 30000, 20, 2),
-(5, 100000, 30, 2),
-(6, 250000, 40, 2),
-(7, 500000, 46, 2),
-(8, 1000000, 50, 2),
-(9, 100000000, 60, 2),
-(1, 3000, 9, 3),
-(2, 5000, 9, 3),
-(4, 15000, 16, 3),
-(3, 10000, 12, 3),
-(5, 30000, 16, 3),
-(6, 100000, 24, 3),
-(7, 250000, 32, 3),
-(8, 500000, 36, 3),
-(9, 1000000, 40, 3),
-(10, 100000000, 48, 3),
-(1, 3000, 6, 4),
-(2, 5000, 7, 4),
-(3, 10000, 12, 4),
-(4, 15000, 16, 4),
-(5, 30000, 16, 4),
-(6, 100000, 24, 4),
-(7, 250000, 32, 4),
-(8, 500000, 36, 4),
-(9, 1000000, 40, 4),
-(10, 100000000, 48, 4),
-(1, 3000, 9, 5),
-(2, 5000, 9, 5),
-(3, 10000, 12, 5),
-(4, 15000, 16, 5),
-(5, 30000, 16, 5),
-(6, 100000, 24, 5),
-(7, 250000, 32, 5),
-(8, 500000, 36, 5),
-(9, 1000000, 40, 5),
-(10, 100000000, 48, 5),
-(1, 3000, 6, 6),
-(2, 5000, 7, 6),
-(3, 10000, 10, 6),
-(4, 15000, 16, 6),
-(5, 30000, 16, 6),
-(6, 100000, 24, 6),
-(7, 250000, 32, 6),
-(8, 500000, 36, 6),
-(9, 1000000, 40, 6),
-(10, 100000000, 48, 6),
-(1, 3000, 10, 7),
-(2, 10000, 12, 7),
-(3, 15000, 16, 7),
-(4, 30000, 16, 7),
-(5, 100000, 24, 7),
-(6, 250000, 32, 7),
-(7, 500000, 36, 7),
-(8, 1000000, 40, 7),
-(9, 100000000, 48, 7);";
-$ret=aggiorna($sql,$dbi,$sql2,$num);
-#if(!$ret) echo "<br>".$num++.") Fallito: $sql"; else echo "<br>".$num++.") Aggiornato<br>";
-
-$sql="ALTER TABLE `".$prefix."_ele_fasce`
-  ADD KEY `id_fascia` (`id_fascia`);";
-$ret=aggiorna($sql,$dbi,'',$num);
-#if(!$ret) echo "<br>".$num++.") Fallito: $sql"; else echo "<br>".$num++.") Aggiornato<br>";
-
-
-
-#if(!$ret) 
-#	echo "<br>".$num++.") Fallito: $sql"; 
-#elseif ($ret==1) 
-#	echo "<br>".$num++.") Index eliminato"; 
-#else
-#	echo "<br>".$num++.") Index aggiunto";
-#$sql="ALTER TABLE `".$prefix."_ele_voti_lista` DROP INDEX if exists `id_cons`";
-echo "<br><br>".++$num.") Ricostruzione e aggioramento indici";
-$tab=$prefix."_ele_voti_ref";
-$ind="id_cons";
-#	$sql="ALTER TABLE `".$prefix."_ele_voti_ref` DROP INDEX `id_cons`; ";
-$sql2="ALTER TABLE `".$prefix."_ele_voti_ref` ADD INDEX `id_cons` (`id_cons`, `id_gruppo`) USING BTREE";
-$ret=aggiorna_index($tab, $ind,$dbi,$sql2,$num);
-
-$tab=$prefix."_ele_sezioni";
-$ind="id_cons";
-$sql2="ALTER TABLE `".$prefix."_ele_sezioni` ADD UNIQUE `id_cons` (`id_cons`, `num_sez`) USING BTREE"; 
-$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
-
-$tab=$prefix."_ele_voti_lista";
-$ind="id_cons";
-$sql2="ALTER TABLE `".$prefix."_ele_voti_lista` ADD INDEX `id_cons` (`id_cons`, `id_sez`, `id_lista`) USING BTREE";
-$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
-
-$tab=$prefix."_ele_voti_gruppo";
-$ind="id_cons";
-#$sql="ALTER TABLE `".$prefix."_ele_voti_gruppo` DROP INDEX if exists `id_cons`";
-$sql2="ALTER TABLE `".$prefix."_ele_voti_gruppo` ADD INDEX `id_cons` (`id_cons`, `id_sez`, `id_gruppo`) USING BTREE";
-$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
-
-$tab=$prefix."_ele_voti_candidati";
-$ind="id_cons";
-#$sql="ALTER TABLE `".$prefix."_ele_voti_candidati` DROP INDEX if exists `id_cons`";
-$sql2="ALTER TABLE `".$prefix."_ele_voti_candidati` ADD INDEX `id_cons` (`id_cons`, `id_sez`, `id_cand`) USING BTREE";
-$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
-
-$tab=$prefix."_ele_lista";
-$ind="id_cons";
-#$sql="ALTER TABLE `".$prefix."_ele_lista` DROP INDEX if exists `id_cons`";
-$sql2="ALTER TABLE `".$prefix."_ele_lista` ADD INDEX `id_cons` (`id_cons`, `id_gruppo`) USING BTREE";
-$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
-
-$tab=$prefix."_ele_lista";
-$ind="PRIMARY";
-#$sql="ALTER TABLE `".$prefix."_ele_lista` DROP INDEX if exists `PRIMARY`";
-$sql2="ADD PRIMARY KEY (`id_lista`) USING BTREE";
-$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
-
-$tab=$prefix."_ele_gruppo";
-$ind="id_cons";
-#$sql="ALTER TABLE `".$prefix."_ele_gruppo` DROP INDEX if exists `id_cons`";
-$sql2="ALTER TABLE `".$prefix."_ele_gruppo` ADD INDEX `id_cons` (`id_cons`, `id_circ`) USING BTREE";
-$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
-
-$tab=$prefix."_ele_gruppo";
-$ind="PRIMARY";
-#$sql="ALTER TABLE `".$prefix."_ele_gruppo` DROP INDEX if exists `PRIMARY`";
-$sql2="ADD PRIMARY KEY (`id_gruppo`) USING BTREE";
-$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
-
-$tab=$prefix."_ele_candidati";
-$ind="id_cons";
-#$sql="ALTER TABLE `".$prefix."_ele_candidati` DROP INDEX if exists `id_cons`";
-$sql2="ALTER TABLE `".$prefix."_ele_candidati` ADD INDEX `id_cons` (`id_cons`, `id_lista`) USING BTREE";
-$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
-
-$tab=$prefix."_ele_candidati";
-$ind="PRIMARY";
-#$sql="ALTER TABLE `".$prefix."_ele_candidati` DROP INDEX if exists `PRIMARY`";
-$sql2="ADD PRIMARY KEY (`id_cand`) USING BTREE";
-$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
-
-$tab=$prefix."_ele_consultazione";
-$ind="descrizione";
-#$sql="ALTER TABLE `".$prefix."_ele_consultazione` DROP INDEX if exists `descrizione`";
-$sql2="ALTER TABLE `".$prefix."_ele_consultazione` ADD UNIQUE `descrizione` (`descrizione`(100))";
-$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
-
-echo "<br><br>".++$num.") Modifica Charset del database";
-if($newcs=='utf8') {
-	$cset='utf8';
-	$ccollate='utf8_general_ci';
-	$preset='latin1';
-}else{
-	$cset='latin1';
-	$ccollate='latin1_swedish_ci';
-	$preset='utf8';
-}
-#$sql="ALTER DATABASE $dbname CHARACTER SET '$cset' COLLATE '$ccollate'";
-#$res = $dbi->prepare("$sql");
-#$res->execute();
-
-$sql="SELECT table_name,column_name,column_default,column_type,is_nullable FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$dbname' and (character_set_name='$preset' or collation_name like '$preset%')";
-$res = $dbi->prepare("$sql");
-$res->execute();
-$tab='';
-$agg=$res->rowCount();
-
-while(list($nometab,$campo,$def,$tipo,$nul)=$res->fetch(PDO::FETCH_NUM)) {
-	if($tab!=$nometab){
-		$sql="alter table $nometab DEFAULT CHARSET=$cset COLLATE $ccollate";
-		try{
-			$res2 = $dbi->prepare("$sql");
-			$res2->execute();
-        }
-		catch(PDOException $e)
-		{
-			die( $sql . "<br>" . $e->getMessage());
-		} 
-		$tab=$nometab; echo "<br><span style=\"color: green;\">- Tabella: $nometab</span>";
-	}
-	if($def!='') $default="DEFAULT '$def'"; else $default='';
-	if($nul=='NO') $nullable='NOT NULL'; else $nullable='NULL';
-	$sql="ALTER TABLE $nometab CHANGE $campo $campo $tipo CHARACTER SET '$cset' COLLATE '$ccollate' $nullable $default;"; 	
-	try{
-		$res2 = $dbi->prepare("$sql");
-		$res2->execute();
-	}
-	catch(PDOException $e)
-	{
-		$default="DEFAULT $def";
-		$sql="ALTER TABLE $nometab CHANGE $campo $campo $tipo CHARACTER SET '$cset' COLLATE '$ccollate' $nullable $default;"; 	
-		try{
-				$res2 = $dbi->prepare("$sql");
-				$res2->execute();
-			}
-			catch(PDOException $e)
-			{
-				die( $sql . "<br>" . $e->getMessage());
-			} 
-	}
-	echo "<br><span style=\"color: green;\">-- $campo</span>";
-}
- $sql="SELECT table_name FROM INFORMATION_SCHEMA.tables WHERE TABLE_SCHEMA = '$dbname' and table_collation like '$preset%'";
- $res = $dbi->prepare("$sql");
- $res->execute();
-$tab='';
-if(!$agg) $agg=$res->rowCount();
-while(list($nometab)=$res->fetch(PDO::FETCH_NUM)) {
-		$sql="alter table $nometab DEFAULT CHARSET=$cset COLLATE $ccollate";
-		try{
-			$res2 = $dbi->prepare("$sql");
-			$res2->execute();
-        }
-		catch(PDOException $e)
-		{
-			die( $sql . "<br>" . $e->getMessage());
-		} 
-		echo "<br><span style=\"color: green;\">- Tabella: $nometab</span>";
-}
-if(!$agg) echo "<br><span style=\"color: green;\">- Nessuna tabella da aggiornare</span>";
-echo "<br><br>";
-?>
Index: trunk/admin/aggiornamento.php
===================================================================
--- trunk/admin/aggiornamento.php	(revision 378)
+++ 	(revision )
@@ -1,115 +1,0 @@
-<?php
-/************************************************************************/
-/* Eleonline - Raccolta e diffusione dei dati elettorali                */
-/* by Roberto Gigli & Luciano Apolito                                   */
-/* http://www.eleonline.it                                              */
-/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
-/************************************************************************/
-/* Modulo Inserimento dati                                              */
-/* Amministrazione                                                      */
-/************************************************************************/
-
-if(!file_exists('../admin')) {die("Non trovo la cartella admin, aggiornamento interrotto");}
-$righe='';
-if(phpversion()<5.6) $host="http://80.211.143.127";
-else $host="https://trac.eleonline.it";
-if(false === $file = file("$host/ele3/changeset/")) die("Impossibile collegarsi al server - Aggiornamento interrotto");
-$cntFile = count($file);
-$fine=0;
-$currentLine=0;
-
-foreach ($file as $line_num => $line) {
-	if(strpos($line,'<title>') ) {$fine=1; continue;}
-	if ($fine){
-		$newrev=(int) filter_var($line, FILTER_SANITIZE_NUMBER_INT);
-		$righe.= "<b>Ultima revisione:</b> " .$newrev." \n"; break;
-	}
-}
-unset($file);
-
-include('./versione.php');
-$myrev=intval(substr($versione,-4,4));
-$righe.= "<br><b>Revisione installata:</b> ".$myrev;
-if($newrev==$myrev) die( "<br><br>---------- Non sono disponibili nuovi aggiornamenti ---------");
-#else{  
-
-	#	define('_PATH', dirname(__FILE__));
-	$file =  '../admin';
-	$client = '../client';
-#	$dest_path = './admin-bak';
-	$trunk='./files/trunk';
-	$trunkadm='./files/trunk/admin';
-	$trunkcli='./files/trunk/client';
-	$path = "./files/";
-	if(file_exists($path)) 
-		if (!is_dir($path)) { die("<br>E' presente un file di nome $path nella cartella admin, va cancellato per poter aggiornare");}
-		else $righe.= "<br>La cartella $path Ãš giÃ  presente, procedo con l'aggiornamento";
-	else{
-		$righe.= "<br>La cartella $path non Ãš presente, procedo con la creazione";
-		mkdir($path, 0777, true);
-	}
-	#	if(!file_exists($trunk)) if (false === mkdir($trunk)) { die("Impossibile creare la cartella trunk, il programma viene interrotto");}
-	#	if(!copy($file,$trunkadm)){ $righe.= "<br>Errore durante la copia del pacchetto di aggiornamento<br>";}    	 
-	// Nome del file zip : https://trac.eleonline.it/ele3/changeset?format=zip&new=377&new_path=%2F&old=360&old_path=%2F
-	# https://trac.eleonline.it/ele3/browser/trunk?format=zip&rev=377
-	
-	$filename = "$host/ele3/changeset?format=zip&new=$newrev&new_path=%2F&old=$myrev&old_path=%2F";
-	$newfile="./files/aggiornamento".$newrev;
-	if(!copy($filename,$newfile)){ die( "<br><br>Errore durante la copia del pacchetto - aggiornamento interrotto<br>");}
-	$zip = new ZipArchive;
-	$res = $zip->open($newfile);
-	$righe.= "<br>$newfile scaricato";
-	if ($res === TRUE) {
-		$zip->extractTo($path);
-		$zip->close();	 
-		$righe.= '<br>File zip estratto';
-	} else {
-		die( '<br>Errore nell\'estrazione del file zip! Aggiornamento interrotto');
-	}
-	
-#}
-$righe.= "<br><br><b>Copio i nuovi files nell'installazione di amministrazione locale</b>";
-recurse_copy($trunkadm,$file);
-$righe.= "<br>Files di aggiornamento copiati correttamente.";
-$righe.= "<br><br><b>Copio i nuovi files nell'installazione client locale</b>";
-recurse_copy($trunkcli,$client);
-$righe.= "<br>Files di aggiornamento copiati correttamente.";
-function recurse_copy($src,$dst) {
-    $dir = opendir($src);
-    if(!file_exists($dst)) @mkdir($dst);
-    while(false !== ( $file = readdir($dir)) ) {
-        if (( $file != '.' ) && ( $file != '..' )) {
-            if ( is_dir($src . '/' . $file) ) {
-                recurse_copy($src . '/' . $file,$dst . '/' . $file);
-            }
-            else {
-                if(!copy($src . '/' . $file,$dst . '/' . $file)) die("<br>Errore durante la copia del file".$dst . '/' . $file.", aggiornamento interrotto");
-            }
-        }
-    }
-    closedir($dir);
-}
-echo "<br><b>------------------Aggiornamento completato controllare il log e poi tornare al programma-----------------------</b><br>";
-echo "<br><a href=\"admin.php\"> <-------------   Torna al programma   --------------> </a><br><br><br>";
-$righedb='';
-if(file_exists('./files/trunk/admin/aggiornadb.php')) {
-	$righe.= "<br><br><b>Aggiornamento del database</b>";
-	ob_start();
-	include ('./aggiornadb.php');
-	$righedb=ob_get_contents();
-	ob_end_clean();
-}
-$righe.=$righedb;
-$righe.= "<br><br><b>Pulisco la cartella temporanea. Operazioni concluse.</b>";
-$dir = "./files/";
-if(file_exists($dir)){
-    $di = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
-    $ri = new RecursiveIteratorIterator($di, RecursiveIteratorIterator::CHILD_FIRST);
-    foreach ( $ri as $file ) {
-        $file->isDir() ?  rmdir($file) : unlink($file);
-    }
-}
-echo $righe;die();
-
-?>
-
Index: trunk/admin/modules/Elezioni/aggiornadb.php
===================================================================
--- trunk/admin/modules/Elezioni/aggiornadb.php	(revision 379)
+++ trunk/admin/modules/Elezioni/aggiornadb.php	(revision 379)
@@ -0,0 +1,513 @@
+<?php
+
+#imposta il charset su utf8, qualsiasi altro valore per cambiarlo in latin1;
+$newcs='utf8'; 
+
+@require_once("config.php"); 
+	try{
+		$dbi = new PDO("mysql:host=$dbhost", $dbuname, $dbpass, array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); 
+    	$sql = "use $dbname";
+    	$dbi->exec($sql);	
+    }
+	catch(PDOException $e)
+	{
+	    die( $sql . "<br>" . $e->getMessage());
+	} 
+
+
+###############
+function aggiorna($sql,$dbi,$sql2,$num){
+	$ret=0;
+	try{
+		$res = $dbi->prepare("$sql");
+		$res->execute();
+		$ret= 1;
+    }
+	catch(PDOException $e)
+	{
+		$ret=0;
+		echo "<br><span style=\"color: red;\">- Aggiornamento Fallito: $sql</span>";
+		return $ret;
+	}
+
+	if("$sql2"!=""){
+		try{
+		  $res = $dbi->prepare("$sql2");
+		  $res->execute();		
+		  $ret=2;
+		}	
+		catch(PDOException $e)
+		{
+		  $ret=0;
+		  echo "<br><span style=\"color: red;\">- Aggiornamento Fallito: $sql2</span>";
+		  return $ret;
+		}
+	} 
+	echo "<br><span style=\"color: green;\">- Aggiornamento eseguito correttamente</span>";
+	return $ret;
+}
+function aggiorna_index($tab,$ind,$dbi,$sql2,$num){
+	$ret=0;
+#	$conn->getAttribute( constant( "PDO::ATTR_$val" ) )
+	$sqltest="SHOW INDEX FROM `$tab` WHERE KEY_NAME = '$ind'";
+	$res = $dbi->prepare("$sqltest");
+	$res->execute();
+		
+	if($res->rowCount()) {
+		if($ind=='PRIMARY')
+			$sql="ALTER TABLE `$tab`  DROP PRIMARY KEY , $sql2 ";
+		else
+			$sql="ALTER TABLE `$tab` DROP INDEX `$ind`";
+		try{
+			$res = $dbi->prepare("$sql");
+			$res->execute();
+			$ret= 1;
+			}
+		catch(PDOException $e)
+		{
+			$ret=0;
+			echo "<br><span style=\"color: red;\">- Tabella: $tab - Indice: $ind - Aggiornamento Fallito: $sql</span>";
+			return $ret;
+		}
+	}
+	if("$sql2"!="" and $ind!='PRIMARY'){
+		try{
+		  $res = $dbi->prepare("$sql2");
+		  $res->execute();		
+		  $ret=2;
+		}	
+		catch(PDOException $e)
+		{
+		  $ret=0;
+		  echo "<br><span style=\"color: red;\">- Tabella: $tab - Indice: $ind - Aggiornamento Fallito: $sql2</span>";
+		  return $ret;
+		}
+	} 
+	echo "<br><span style=\"color: green;\">- Tabella: $tab - Indice: $ind - Index aggiornato</span>";
+	return $ret;
+}
+
+
+
+
+function controllo($tabella,$campo,$num)
+{
+	global $dbi, $dbname;
+	$sql="SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$dbname' AND TABLE_NAME = '$tabella'";
+	$res = $dbi->prepare("$sql");
+	$res->execute();
+	if($res->rowCount() and $campo=='') return 1;
+	while(list($nome)=$res->fetch(PDO::FETCH_NUM)) {if($nome==$campo) { echo "<br>".$num.") Il campo: $campo Ãš presente nella tabella: $tabella"; return 1;}}
+	if($campo) echo "<br>$num) Il campo: $campo non Ãš presente nella tabella: $tabella"; 
+	return 0;
+}
+
+$num=0;		
+
+if(controllo($prefix.'_authors','admincomune',++$num))
+{
+	$sql="UPDATE `soraldo_authors` SET `adminop` = '1', `adminsuper` = '0',`admincomune` = '0' WHERE `soraldo_authors`.`aid` != 'admin' AND `soraldo_authors`.`adminsuper` != '1'";
+	$ret=aggiorna($sql,$dbi,'',$num);
+	$sql="UPDATE `soraldo_authors` SET `adminop` = '0', `adminsuper` = '0',`admincomune` = '1' WHERE `soraldo_authors`.`aid` = 'admin'";
+	$ret=aggiorna($sql,$dbi,'',$num);
+	$sql="UPDATE `soraldo_authors` SET `adminop` = '0', `adminsuper` = '1',`admincomune` = '0' WHERE `soraldo_authors`.`aid` = 'suser' or `soraldo_authors`.`adminsuper` = '1'";
+	$ret=aggiorna($sql,$dbi,'',$num);
+	echo "<br> La tabella dei permessi Ãš stata aggiornata<br>";
+}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_authors non richiede questo aggiornamento</span><br>";	
+
+if(!controllo($prefix.'_config','versione',++$num))
+{
+	$sql="alter table `".$prefix."_config` change column `Versione` `versione` int(3)";
+	$ret=aggiorna($sql,$dbi,'',$num);
+}	else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_config non richiede questo aggiornamento</span><br>";	
+
+
+if(controllo($prefix.'_config','secret',++$num))
+{
+	$sql="alter table `".$prefix."_config` DROP `secret`";
+	$ret=aggiorna($sql,$dbi,'',$num);
+}	else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_config non richiede questo aggiornamento</span><br>";
+
+if(controllo($prefix.'_ele_voti_parziale','data',++$num))
+{
+	$sql="ALTER TABLE `".$prefix."_ele_voti_parziale` CHANGE `data` `data` DATE NOT NULL DEFAULT '1900-01-01'";
+	$ret=aggiorna($sql,$dbi,'',$num);
+	echo "<br>";
+}	
+++$num;
+$sql="ALTER TABLE `".$prefix."_ele_come` CHANGE `title` `title` VARCHAR(150) NOT NULL DEFAULT ' ', CHANGE `preamble` `preamble` TEXT, CHANGE `content` `content` TEXT, CHANGE `editimage` `editimage` VARCHAR(100) NOT NULL DEFAULT ' '"; 
+$ret=aggiorna($sql,$dbi,'',$num);
+echo "<br>";
+if(!$ret) echo "Il tuo sistema non necessita di questo aggiornamento, questo avviso di errore va ignorato<br>";
+++$num;
+$sql="ALTER TABLE `".$prefix."_ele_link` CHANGE `title` `title` VARCHAR(150) NOT NULL DEFAULT ' ', CHANGE `preamble` `preamble` TEXT, CHANGE `content` `content` TEXT, CHANGE `editimage` `editimage` VARCHAR(100) NOT NULL DEFAULT ' '"; 
+$ret=aggiorna($sql,$dbi,'',$num);
+echo "<br>";
+if(!$ret) echo "Il tuo sistema non necessita di questo aggiornamento, questo avviso di errore va ignorato<br>";
+++$num;
+$sql="ALTER TABLE `".$prefix."_ele_servizi` CHANGE `title` `title` VARCHAR(150) NOT NULL DEFAULT ' ', CHANGE `preamble` `preamble` TEXT, CHANGE `content` `content` TEXT, CHANGE `editimage` `editimage` VARCHAR(100) NOT NULL DEFAULT ' '"; 
+$ret=aggiorna($sql,$dbi,'',$num);
+echo "<br>";
+if(!$ret) echo "Il tuo sistema non necessita di questo aggiornamento, questo avviso di errore va ignorato<br>";
+
+if(controllo($prefix.'_ele_rilaff','data',++$num))
+{
+	$sql="ALTER TABLE `".$prefix."_ele_rilaff` CHANGE `data` `data` DATE NOT NULL DEFAULT '1900-01-01'";
+	$ret=aggiorna($sql,$dbi,'',$num);
+	echo "<br>";
+}	
+
+if(!controllo($prefix.'_ele_gruppo','num_circ',++$num))
+{	
+	$sql="ALTER TABLE `".$prefix."_ele_gruppo` ADD `num_circ` INT(2) UNSIGNED NOT NULL AFTER `id_circ`";
+	$ret=aggiorna($sql,$dbi,'',$num);
+}	else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_gruppo non richiede questo aggiornamento</span><br>";
+
+if(!controllo($prefix.'_ele_voti_gruppo','num_gruppo',++$num))
+{	
+	$sql="ALTER TABLE `".$prefix."_ele_voti_gruppo` ADD `num_gruppo` INT(2) UNSIGNED NOT NULL AFTER `id_sez`";
+	$ret=aggiorna($sql,$dbi,'',$num);
+}	else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_gruppo non richiede questo aggiornamento</span><br>";
+
+if(!controllo($prefix.'_ele_lista','num_gruppo',++$num))
+{
+	$sql="ALTER TABLE `".$prefix."_ele_lista` ADD `num_gruppo` INT(2) UNSIGNED NOT NULL AFTER `id_gruppo`";
+	$ret=aggiorna($sql,$dbi,'',$num);
+}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_lista non richiede questo aggiornamento</span><br>";
+
+if(!controllo($prefix.'_ele_lista','num_circ',++$num))
+{
+	$sql="ALTER TABLE `".$prefix."_ele_lista` ADD `num_circ` INT(2) UNSIGNED NOT NULL AFTER `id_circ`";
+	$ret=aggiorna($sql,$dbi,'',$num);
+}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_lista non richiede questo aggiornamento</span><br>";
+
+if(!controllo($prefix.'_ele_operatori','id_circ',++$num))
+{
+	$sql="ALTER TABLE `".$prefix."_ele_operatori` ADD `id_circ` INT(11) NOT NULL  DEFAULT 0 AFTER `aid`";
+	$ret=aggiorna($sql,$dbi,'',$num);
+}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_operatori non richiede questo aggiornamento</span><br>";
+
+if(!controllo($prefix.'_ele_operatori','id_sez',++$num))
+{
+	$sql="ALTER TABLE `".$prefix."_ele_operatori` ADD `id_sez` INT(11) NOT NULL  DEFAULT 0 AFTER `id_circ`";
+	$ret=aggiorna($sql,$dbi,'',$num);
+}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_operatori non richiede questo aggiornamento</span><br>";
+
+if(!controllo($prefix.'_ele_voti_lista','num_lista',++$num))
+{
+	$sql="ALTER TABLE `".$prefix."_ele_voti_lista` ADD `num_lista` INT(2) UNSIGNED NOT NULL AFTER `id_sez`";
+	$ret=aggiorna($sql,$dbi,'',$num);
+}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_voti_lista non richiede questo aggiornamento</span><br>";
+
+if(!controllo($prefix.'_ele_voti_ref','num_gruppo',++$num))
+{
+	$sql="ALTER TABLE `".$prefix."_ele_voti_ref` ADD `num_gruppo` INT(2) UNSIGNED NOT NULL AFTER `id_sez`";
+	$ret=aggiorna($sql,$dbi,'',$num);
+}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_voti_ref non richiede questo aggiornamento</span><br>";
+
+if(!controllo($prefix.'_ele_voti_candidati','num_cand',++$num))
+{
+	$sql="ALTER TABLE `".$prefix."_ele_voti_candidati` ADD `num_cand` INT(2) UNSIGNED NOT NULL AFTER `id_sez`";
+	$ret=aggiorna($sql,$dbi,'',$num);
+}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_voti_candidati non richiede questo aggiornamento</span><br>";
+
+if(!controllo($prefix.'_ele_candidati','num_lista',++$num))
+{
+	$sql="ALTER TABLE `".$prefix."_ele_candidati` ADD `num_lista` INT(2) UNSIGNED NOT NULL AFTER `id_lista`";
+	$ret=aggiorna($sql,$dbi,'',$num);
+}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_candidati non richiede questo aggiornamento</span><br>";
+
+if(!controllo($prefix.'_ele_sezioni','colore',++$num))
+{
+	$sql="ALTER TABLE `".$prefix."_ele_sezioni` ADD `colore` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '#FAFAD2' AFTER `solo_lista`";
+	$ret=aggiorna($sql,$dbi,'',$num);
+}else{
+	$sql="ALTER TABLE `".$prefix."_ele_sezioni` CHANGE `colore` `colore` VARCHAR(50) DEFAULT '#FAFAD2'";
+	$ret=aggiorna($sql,$dbi,'',$num);
+}	echo "<br>";
+
+echo "<br>Aggiornamento per nuovo sistema dei controlli di congruitÃ ";
+
+if(!controllo($prefix.'_ele_controlli','id_cons',++$num))
+{
+	$sql="CREATE TABLE if not exists`".$prefix."_ele_controlli` ( `id_cons` INT(11) NOT NULL , `id_sez` INT(11) NOT NULL , `tipo` VARCHAR(10) NOT NULL , `id` INT(11) NOT NULL , INDEX `sezione` (`id_sez`)) ENGINE = MyISAM";
+	echo "<br>".$num.") Creazione tabella dei controlli: ";
+	$ret=aggiorna($sql,$dbi,'',$num);
+}else echo "<br><span style=\"color: green;\">- La tabella ".$prefix."_ele_controlli non richiede questo aggiornamento</span><br>";
+
+echo "<br>".++$num.") Eliminazione della vecchia tabella dei controlli: ";
+if(controllo($prefix.'_ele_controllisez','',$num))
+{
+$sql="DROP TABLE if exists `".$prefix."_ele_controllisez`";
+$ret=aggiorna($sql,$dbi,'',$num);
+} else echo "<br><span style=\"color: green;\">- Tabella non presente</span><br>";
+
+echo "<br>".++$num.") Aggiornamento tabella ".$prefix."_ele_voti_gruppo";
+$sql="update `".$prefix."_ele_voti_gruppo` as t1 left join `".$prefix."_ele_gruppo` as t2 on t1.id_gruppo=t2.id_gruppo set t1.num_gruppo=t2.num_gruppo;";
+$ret=aggiorna($sql,$dbi,'',$num);
+
+echo "<br><br>".++$num.") Aggiornamento dei valori di default: ".$prefix."_ele_voti_lista";
+$sql="ALTER TABLE `".$prefix."_ele_voti_lista` CHANGE `num_lista` `num_lista` INT(2) UNSIGNED NULL DEFAULT '0';";
+$ret=aggiorna($sql,$dbi,'',$num);
+
+echo "<br><br>".++$num.") Aggiornamento tabella ".$prefix."_ele_voti_lista";
+$sql="update `".$prefix."_ele_voti_lista` as t1 left join `".$prefix."_ele_lista` as t2 on t1.id_lista=t2.id_lista set t1.num_lista=t2.num_lista;";
+$ret=aggiorna($sql,$dbi,'',$num);
+##############################################
+
+echo "<br><br>".++$num.") Aggiornamento dei valori di default: ".$prefix."_ele_gruppo";
+$sql="ALTER TABLE `".$prefix."_ele_gruppo` CHANGE `num_circ` `num_circ` INT(2) UNSIGNED NOT NULL DEFAULT '1';";
+$ret=aggiorna($sql,$dbi,'',$num);
+
+$sql="ALTER TABLE `soraldo_authors` CHANGE `adminsuper` `adminsuper` TINYINT(2) NOT NULL DEFAULT '0';";
+$ret=aggiorna($sql,$dbi,'',$num);
+
+$sql="ALTER TABLE `".$prefix."_ele_lista` CHANGE `num_gruppo` `num_gruppo` INT(2) UNSIGNED NOT NULL DEFAULT '0';";
+$ret=aggiorna($sql,$dbi,'',$num);
+
+$sql="ALTER TABLE `".$prefix."_ele_lista` CHANGE `num_circ` `num_circ` INT(2) UNSIGNED NOT NULL DEFAULT '1';";
+$ret=aggiorna($sql,$dbi,'',$num);
+
+echo "<br><br>".++$num.") Ricostruzione della tabella ".$prefix."_ele_fasce`";
+$sql="DROP TABLE `".$prefix."_ele_fasce`";
+$ret=aggiorna($sql,$dbi,'',$num);
+
+$sql="CREATE TABLE `".$prefix."_ele_fasce` (
+  `id_fascia` int(2) NOT NULL,
+  `abitanti` int(11) NOT NULL,
+  `seggi` int(4) NOT NULL,
+  `id_conf` int(11) DEFAULT 1
+) ENGINE=MyISAM DEFAULT CHARSET 'utf8';";
+
+
+$sql2="INSERT INTO `".$prefix."_ele_fasce` (`id_fascia`, `abitanti`, `seggi`, `id_conf`) VALUES
+(1, 3000, 12, 1),
+(2, 10000, 16, 1),
+(3, 15000, 20, 1),
+(4, 30000, 20, 1),
+(5, 100000, 30, 1),
+(6, 250000, 40, 1),
+(7, 500000, 46, 1),
+(8, 1000000, 50, 1),
+(9, 100000000, 60, 1),
+(1, 3000, 12, 2),
+(2, 10000, 16, 2),
+(3, 15000, 20, 2),
+(4, 30000, 20, 2),
+(5, 100000, 30, 2),
+(6, 250000, 40, 2),
+(7, 500000, 46, 2),
+(8, 1000000, 50, 2),
+(9, 100000000, 60, 2),
+(1, 3000, 9, 3),
+(2, 5000, 9, 3),
+(4, 15000, 16, 3),
+(3, 10000, 12, 3),
+(5, 30000, 16, 3),
+(6, 100000, 24, 3),
+(7, 250000, 32, 3),
+(8, 500000, 36, 3),
+(9, 1000000, 40, 3),
+(10, 100000000, 48, 3),
+(1, 3000, 6, 4),
+(2, 5000, 7, 4),
+(3, 10000, 12, 4),
+(4, 15000, 16, 4),
+(5, 30000, 16, 4),
+(6, 100000, 24, 4),
+(7, 250000, 32, 4),
+(8, 500000, 36, 4),
+(9, 1000000, 40, 4),
+(10, 100000000, 48, 4),
+(1, 3000, 9, 5),
+(2, 5000, 9, 5),
+(3, 10000, 12, 5),
+(4, 15000, 16, 5),
+(5, 30000, 16, 5),
+(6, 100000, 24, 5),
+(7, 250000, 32, 5),
+(8, 500000, 36, 5),
+(9, 1000000, 40, 5),
+(10, 100000000, 48, 5),
+(1, 3000, 6, 6),
+(2, 5000, 7, 6),
+(3, 10000, 10, 6),
+(4, 15000, 16, 6),
+(5, 30000, 16, 6),
+(6, 100000, 24, 6),
+(7, 250000, 32, 6),
+(8, 500000, 36, 6),
+(9, 1000000, 40, 6),
+(10, 100000000, 48, 6),
+(1, 3000, 10, 7),
+(2, 10000, 12, 7),
+(3, 15000, 16, 7),
+(4, 30000, 16, 7),
+(5, 100000, 24, 7),
+(6, 250000, 32, 7),
+(7, 500000, 36, 7),
+(8, 1000000, 40, 7),
+(9, 100000000, 48, 7);";
+$ret=aggiorna($sql,$dbi,$sql2,$num);
+#if(!$ret) echo "<br>".$num++.") Fallito: $sql"; else echo "<br>".$num++.") Aggiornato<br>";
+
+$sql="ALTER TABLE `".$prefix."_ele_fasce`
+  ADD KEY `id_fascia` (`id_fascia`);";
+$ret=aggiorna($sql,$dbi,'',$num);
+#if(!$ret) echo "<br>".$num++.") Fallito: $sql"; else echo "<br>".$num++.") Aggiornato<br>";
+
+
+
+#if(!$ret) 
+#	echo "<br>".$num++.") Fallito: $sql"; 
+#elseif ($ret==1) 
+#	echo "<br>".$num++.") Index eliminato"; 
+#else
+#	echo "<br>".$num++.") Index aggiunto";
+#$sql="ALTER TABLE `".$prefix."_ele_voti_lista` DROP INDEX if exists `id_cons`";
+echo "<br><br>".++$num.") Ricostruzione e aggioramento indici";
+$tab=$prefix."_ele_voti_ref";
+$ind="id_cons";
+#	$sql="ALTER TABLE `".$prefix."_ele_voti_ref` DROP INDEX `id_cons`; ";
+$sql2="ALTER TABLE `".$prefix."_ele_voti_ref` ADD INDEX `id_cons` (`id_cons`, `id_gruppo`) USING BTREE";
+$ret=aggiorna_index($tab, $ind,$dbi,$sql2,$num);
+
+$tab=$prefix."_ele_sezioni";
+$ind="id_cons";
+$sql2="ALTER TABLE `".$prefix."_ele_sezioni` ADD UNIQUE `id_cons` (`id_cons`, `num_sez`) USING BTREE"; 
+$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
+
+$tab=$prefix."_ele_voti_lista";
+$ind="id_cons";
+$sql2="ALTER TABLE `".$prefix."_ele_voti_lista` ADD INDEX `id_cons` (`id_cons`, `id_sez`, `id_lista`) USING BTREE";
+$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
+
+$tab=$prefix."_ele_voti_gruppo";
+$ind="id_cons";
+#$sql="ALTER TABLE `".$prefix."_ele_voti_gruppo` DROP INDEX if exists `id_cons`";
+$sql2="ALTER TABLE `".$prefix."_ele_voti_gruppo` ADD INDEX `id_cons` (`id_cons`, `id_sez`, `id_gruppo`) USING BTREE";
+$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
+
+$tab=$prefix."_ele_voti_candidati";
+$ind="id_cons";
+#$sql="ALTER TABLE `".$prefix."_ele_voti_candidati` DROP INDEX if exists `id_cons`";
+$sql2="ALTER TABLE `".$prefix."_ele_voti_candidati` ADD INDEX `id_cons` (`id_cons`, `id_sez`, `id_cand`) USING BTREE";
+$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
+
+$tab=$prefix."_ele_lista";
+$ind="id_cons";
+#$sql="ALTER TABLE `".$prefix."_ele_lista` DROP INDEX if exists `id_cons`";
+$sql2="ALTER TABLE `".$prefix."_ele_lista` ADD INDEX `id_cons` (`id_cons`, `id_gruppo`) USING BTREE";
+$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
+
+$tab=$prefix."_ele_lista";
+$ind="PRIMARY";
+#$sql="ALTER TABLE `".$prefix."_ele_lista` DROP INDEX if exists `PRIMARY`";
+$sql2="ADD PRIMARY KEY (`id_lista`) USING BTREE";
+$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
+
+$tab=$prefix."_ele_gruppo";
+$ind="id_cons";
+#$sql="ALTER TABLE `".$prefix."_ele_gruppo` DROP INDEX if exists `id_cons`";
+$sql2="ALTER TABLE `".$prefix."_ele_gruppo` ADD INDEX `id_cons` (`id_cons`, `id_circ`) USING BTREE";
+$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
+
+$tab=$prefix."_ele_gruppo";
+$ind="PRIMARY";
+#$sql="ALTER TABLE `".$prefix."_ele_gruppo` DROP INDEX if exists `PRIMARY`";
+$sql2="ADD PRIMARY KEY (`id_gruppo`) USING BTREE";
+$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
+
+$tab=$prefix."_ele_candidati";
+$ind="id_cons";
+#$sql="ALTER TABLE `".$prefix."_ele_candidati` DROP INDEX if exists `id_cons`";
+$sql2="ALTER TABLE `".$prefix."_ele_candidati` ADD INDEX `id_cons` (`id_cons`, `id_lista`) USING BTREE";
+$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
+
+$tab=$prefix."_ele_candidati";
+$ind="PRIMARY";
+#$sql="ALTER TABLE `".$prefix."_ele_candidati` DROP INDEX if exists `PRIMARY`";
+$sql2="ADD PRIMARY KEY (`id_cand`) USING BTREE";
+$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
+
+$tab=$prefix."_ele_consultazione";
+$ind="descrizione";
+#$sql="ALTER TABLE `".$prefix."_ele_consultazione` DROP INDEX if exists `descrizione`";
+$sql2="ALTER TABLE `".$prefix."_ele_consultazione` ADD UNIQUE `descrizione` (`descrizione`(100))";
+$ret=aggiorna_index($tab,$ind,$dbi,$sql2,$num);
+
+echo "<br><br>".++$num.") Modifica Charset del database";
+if($newcs=='utf8') {
+	$cset='utf8';
+	$ccollate='utf8_general_ci';
+	$preset='latin1';
+}else{
+	$cset='latin1';
+	$ccollate='latin1_swedish_ci';
+	$preset='utf8';
+}
+#$sql="ALTER DATABASE $dbname CHARACTER SET '$cset' COLLATE '$ccollate'";
+#$res = $dbi->prepare("$sql");
+#$res->execute();
+
+$sql="SELECT table_name,column_name,column_default,column_type,is_nullable FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '$dbname' and (character_set_name='$preset' or collation_name like '$preset%')";
+$res = $dbi->prepare("$sql");
+$res->execute();
+$tab='';
+$agg=$res->rowCount();
+
+while(list($nometab,$campo,$def,$tipo,$nul)=$res->fetch(PDO::FETCH_NUM)) {
+	if($tab!=$nometab){
+		$sql="alter table $nometab DEFAULT CHARSET=$cset COLLATE $ccollate";
+		try{
+			$res2 = $dbi->prepare("$sql");
+			$res2->execute();
+        }
+		catch(PDOException $e)
+		{
+			die( $sql . "<br>" . $e->getMessage());
+		} 
+		$tab=$nometab; echo "<br><span style=\"color: green;\">- Tabella: $nometab</span>";
+	}
+	if($def!='') $default="DEFAULT '$def'"; else $default='';
+	if($nul=='NO') $nullable='NOT NULL'; else $nullable='NULL';
+	$sql="ALTER TABLE $nometab CHANGE $campo $campo $tipo CHARACTER SET '$cset' COLLATE '$ccollate' $nullable $default;"; 	
+	try{
+		$res2 = $dbi->prepare("$sql");
+		$res2->execute();
+	}
+	catch(PDOException $e)
+	{
+		$default="DEFAULT $def";
+		$sql="ALTER TABLE $nometab CHANGE $campo $campo $tipo CHARACTER SET '$cset' COLLATE '$ccollate' $nullable $default;"; 	
+		try{
+				$res2 = $dbi->prepare("$sql");
+				$res2->execute();
+			}
+			catch(PDOException $e)
+			{
+				die( $sql . "<br>" . $e->getMessage());
+			} 
+	}
+	echo "<br><span style=\"color: green;\">-- $campo</span>";
+}
+ $sql="SELECT table_name FROM INFORMATION_SCHEMA.tables WHERE TABLE_SCHEMA = '$dbname' and table_collation like '$preset%'";
+ $res = $dbi->prepare("$sql");
+ $res->execute();
+$tab='';
+if(!$agg) $agg=$res->rowCount();
+while(list($nometab)=$res->fetch(PDO::FETCH_NUM)) {
+		$sql="alter table $nometab DEFAULT CHARSET=$cset COLLATE $ccollate";
+		try{
+			$res2 = $dbi->prepare("$sql");
+			$res2->execute();
+        }
+		catch(PDOException $e)
+		{
+			die( $sql . "<br>" . $e->getMessage());
+		} 
+		echo "<br><span style=\"color: green;\">- Tabella: $nometab</span>";
+}
+if(!$agg) echo "<br><span style=\"color: green;\">- Nessuna tabella da aggiornare</span>";
+echo "<br><br>";
+?>
Index: trunk/admin/modules/Elezioni/aggiornamento.php
===================================================================
--- trunk/admin/modules/Elezioni/aggiornamento.php	(revision 379)
+++ trunk/admin/modules/Elezioni/aggiornamento.php	(revision 379)
@@ -0,0 +1,135 @@
+<?php
+/************************************************************************/
+/* Eleonline - Raccolta e diffusione dei dati elettorali                */
+/* by Roberto Gigli & Luciano Apolito                                   */
+/* http://www.eleonline.it                                              */
+/* info@eleonline.it  luciano@aniene.net rgigli@libero.it               */
+/************************************************************************/
+/* Modulo Inserimento dati                                              */
+/* Amministrazione                                                      */
+/************************************************************************/
+if (!defined('ADMIN_FILE')) {
+    die ("You can't access this file directly...");
+}
+
+
+global $dbi;
+$aid=$_SESSION['aid'];
+$prefix=$_SESSION['prefix'];
+$id_comune=$_SESSION['id_comune'];
+$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
+$id_cons_gen=intval($param['id_cons_gen']);	
+$perms=ChiSei(0);
+include("modules/Elezioni/ele.php");
+
+//if ($perms<128 or !$id_cons_gen) die("$perms Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
+if (isset($param['errmex'])) $mex=addslashes($param['errmex']); else $mex='';
+if ($perms!=256) $mex = "Non hai i permessi per avviare un aggiornamento!";
+if($mex!='') { ele(); echo "<hr><br><h2 style=\"text-align:center;\">$mex</h2><br><hr>"; include("footer.php");die();}
+
+$newrev=$_SESSION['remoterev'];
+$myrev=$_SESSION['localrev'];
+if($newrev==$myrev) {
+	$errmex="Non sono disponibili nuovi aggiornamenti";
+	Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
+}
+$righe='';
+if(phpversion()<5.6) $host="http://80.211.143.127";
+else $host="https://trac.eleonline.it";
+	$file =  '../admin';
+	$client = '../client';
+	$trunk='./files/trunk';
+	$trunkadm='./files/trunk/admin';
+	$trunkcli='./files/trunk/client';
+	$path = "./files/";
+	if(file_exists($path)) {
+		if (!is_dir($path)) { 
+			$errmex="E' presente un file di nome $path nella cartella admin, va cancellato per poter aggiornare";
+			Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
+			}
+		else 
+			$righe.= "<br>La cartella $path Ãš giÃ  presente, procedo con l'aggiornamento";
+	}else{
+		$righe.= "<br>La cartella $path non Ãš presente, procedo con la creazione";
+		mkdir($path, 0777, true);
+	}
+	#	if(!file_exists($trunk)) if (false === mkdir($trunk)) { die("Impossibile creare la cartella trunk, il programma viene interrotto");}
+	#	if(!copy($file,$trunkadm)){ $righe.= "<br>Errore durante la copia del pacchetto di aggiornamento<br>";}    	 
+	// Nome del file zip : https://trac.eleonline.it/ele3/changeset?format=zip&new=377&new_path=%2F&old=360&old_path=%2F
+	# https://trac.eleonline.it/ele3/browser/trunk?format=zip&rev=377
+	
+	$filename = "$host/ele3/changeset?format=zip&new=$newrev&new_path=%2F&old=$myrev&old_path=%2F";
+	$newfile="./files/aggiornamento".$newrev;
+	if(!copy($filename,$newfile)){ 
+		$errmex="Errore durante la copia del pacchetto - aggiornamento interrotto<br>";
+		Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
+	}
+	$zip = new ZipArchive;
+	$res = $zip->open($newfile);
+	$righe.= "<br>$newfile scaricato";
+	if ($res === TRUE) {
+		$zip->extractTo($path);
+		$zip->close();	 
+		$righe.= '<br>File zip estratto';
+	} else {
+#		die( '<br>Errore nell\'estrazione del file zip! Aggiornamento interrotto');
+		$errmex= '<br>Errore nell\'estrazione del file zip! Aggiornamento interrotto';
+		Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
+	}
+	
+#}
+$righe.= "<br><br><b>Copio i nuovi files nell'installazione di amministrazione locale</b>";
+recurse_copy($trunkadm,$file);
+$righe.= "<br>Files di aggiornamento copiati correttamente.";
+$righe.= "<br><br><b>Copio i nuovi files nell'installazione client locale</b>";
+recurse_copy($trunkcli,$client);
+$righe.= "<br>Files di aggiornamento copiati correttamente.";
+function recurse_copy($src,$dst) {
+    $dir = opendir($src);
+    if(!file_exists($dst)) 
+		if(@mkdir($dst)==false) {
+			$errmex= "<br>Errore durante la creazione della directory $dst (controllare i permessi), aggiornamento interrotto";
+			Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
+		}
+    while(false !== ( $file = readdir($dir)) ) {
+        if (( $file != '.' ) && ( $file != '..' )) {
+            if ( is_dir($src . '/' . $file) ) {
+                recurse_copy($src . '/' . $file,$dst . '/' . $file);
+            }
+            else {
+                if(!copy($src . '/' . $file,$dst . '/' . $file)) {
+					$errmex= "<br>Errore durante la copia del file".$dst . '/' . $file."(controllare i permessi), aggiornamento interrotto";
+					Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
+				}
+            }
+        }
+    }
+    closedir($dir);
+}
+echo "<hr><br><h2 style=\"text-align:center;\">Aggiornamento completato</h2><br><hr>";
+#echo "<br><a href=\"admin.php\"> <-------------   Torna al programma   --------------> </a><br><br><br>";
+$righedb='';
+if(file_exists('./files/trunk/admin/modules/Elezioni/aggiornadb.php')) {
+	$righe.= "<br><br><b>Aggiornamento del database</b>";
+	ob_start();
+	include ('./aggiornadb.php');
+	$righedb=ob_get_contents();
+	ob_end_clean();
+}
+$righe.=$righedb;
+$righe.= "<br><br><b>Pulisco la cartella temporanea. Operazioni concluse.</b>";
+$dir = "./files/";
+if(file_exists($dir)){
+    $di = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
+    $ri = new RecursiveIteratorIterator($di, RecursiveIteratorIterator::CHILD_FIRST);
+    foreach ( $ri as $file ) {
+        $file->isDir() ?  rmdir($file) : unlink($file);
+    }
+}
+ele();
+echo $righe;
+include("footer.php");
+die();
+
+?>
+
Index: trunk/admin/modules/Elezioni/ele.php
===================================================================
--- trunk/admin/modules/Elezioni/ele.php	(revision 378)
+++ trunk/admin/modules/Elezioni/ele.php	(revision 379)
@@ -181,17 +181,19 @@
 		    echo "<hr>";
 		}
-		echo "
-		<a href=\"admin.php?op=constipi&amp;id_cons_gen=$id_cons_gen\">$bullet"._TIPO_ADM."</a><br>
-		<a href=\"admin.php?op=confconsiglio&amp;id_cons_gen=$id_cons_gen\">$bullet"._CONFCONS."</a>
+		$newrev=$_SESSION['remoterev'];
+		$myrev=$_SESSION['localrev'];
+		if($newrev==$myrev) echo "<a href=\"admin.php?op=aggiorna&amp;id_cons_gen=$id_cons_gen\">$bullet"._AGGIORNA."</a><br>";
+		else	echo "<a href=\"admin.php?op=aggiorna&amp;id_cons_gen=$id_cons_gen\">$bullet_red<b>"._AGGIORNA."</b></a><br>";
+		echo "<a href=\"admin.php?op=confconsiglio&amp;id_cons_gen=$id_cons_gen\">$bullet"._CONFCONS."</a>
 		</td></tr><tr align=\"left\" bgcolor=\"$bgcolor1\"><td>
 		<a href=\"admin.php?op=inscomuni&amp;id_cons_gen=$id_cons_gen\">$bullet"._DEFCOMUNE."</a><br>
 		<a href=\"admin.php?op=oper_admin&amp;id_cons_gen=$id_cons_gen\">$bullet"._AMMINISTRATORI."</a>
 		</td></tr><tr align=\"left\" bgcolor=\"$bgcolor1\"><td>
-		<a href=\"admin.php?op=consultazione&amp;id_cons_gen=$id_cons_gen\">$bullet"._CONSULTAZIONE_ADM."</a><br>
-
-		<a href=\"admin.php?op=rec_add_aff&amp;id_cons_gen=$id_cons_gen\">$bullet"._AFFLUENZE."</a><br>
-		<a href=\"admin.php?op=associazioni&amp;id_cons_gen=$id_cons_gen\">$bullet"._INSCOMUNE."</a><br>
-		<a href=\"http://www.eleonline.it/portal/segnala.php?tmp=test123\" target=\"_blank\">$bullet_red <b>"._SEGNALA."</b></a>
+		<a href=\"admin.php?op=consultazione&amp;id_cons_gen=$id_cons_gen\">$bullet"._CONSULTAZIONE_ADM."</a><br>";
+echo "<a href=\"admin.php?op=rec_add_aff&amp;id_cons_gen=$id_cons_gen\">$bullet"._AFFLUENZE."</a><br>
+		<a href=\"admin.php?op=associazioni&amp;id_cons_gen=$id_cons_gen\">$bullet"._INSCOMUNE."</a>
 		</td></tr>";
+#		<br><a href=\"http://www.eleonline.it/portal/segnala.php?tmp=test123\" target=\"_blank\">$bullet_red <b>"._SEGNALA."</b></a>
+
 #		<a href=\"admin.php?op=backup&amp;id_cons_gen=$id_cons_gen\">$bullet"._BACKUP."</a><br>
 #		<a href=\"admin.php?op=restore&amp;id_cons_gen=$id_cons_gen\">$bullet"._RESTORE."</a>
Index: trunk/admin/modules/Elezioni/language/lang-it.php
===================================================================
--- trunk/admin/modules/Elezioni/language/lang-it.php	(revision 378)
+++ trunk/admin/modules/Elezioni/language/lang-it.php	(revision 379)
@@ -204,4 +204,5 @@
 define("_CIRCS","Circoscrizioni");
 }
+define("_AGGIORNA","Aggiornamento");
 define("_VISAFFMF","Affluenze per genere");
 define("_DISGIUNTO","Unica scheda con voti indipendenti?");
Index: trunk/admin/versione.php
===================================================================
--- trunk/admin/versione.php	(revision 378)
+++ trunk/admin/versione.php	(revision 379)
@@ -1,7 +1,7 @@
 <?php
 
-$versione = "3.0 rev 378";
+$versione = "3.0 rev 379";
 $version_number = $versione;
-$datarel = "03 ottobre 2022";
+$datarel = "16 ottobre 2022";
 $version = "Eleonline $version_number (<i>Data Release: $datarel</i>)";
 
