Index: trunk/admin/admin.php
===================================================================
--- trunk/admin/admin.php	(revision 377)
+++ trunk/admin/admin.php	(revision 378)
@@ -206,5 +206,27 @@
 	$_SESSION['ed_user']=$row['ed_user'];
 	$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'];
Index: trunk/admin/aggiornamento.php
===================================================================
--- trunk/admin/aggiornamento.php	(revision 378)
+++ trunk/admin/aggiornamento.php	(revision 378)
@@ -0,0 +1,115 @@
+<?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/versione.php
===================================================================
--- trunk/admin/versione.php	(revision 377)
+++ trunk/admin/versione.php	(revision 378)
@@ -1,7 +1,7 @@
 <?php
 
-$versione = "3.0 rev 377";
+$versione = "3.0 rev 378";
 $version_number = $versione;
-$datarel = "28 settembre 2022";
+$datarel = "03 ottobre 2022";
 $version = "Eleonline $version_number (<i>Data Release: $datarel</i>)";
 
Index: trunk/client/versione.php
===================================================================
--- trunk/client/versione.php	(revision 377)
+++ trunk/client/versione.php	(revision 378)
@@ -1,7 +1,7 @@
 <?php
 
-$versione = "3.0 rev 377";
+$versione = "3.0 rev 378";
 $version_number = $versione;
-$datarel = "28 settembre 2022";
+$datarel = "03 ottobre 2022";
 $version = "Eleonline $version_number (<i>Data Release: $datarel</i>)";
 
