source: trunk/admin/modules/Elezioni/aggiornamento.php@ 379

Last change on this file since 379 was 379, checked in by roby, 2 years ago

ADMIN seconda rev sperimentale per l'implementazione della funzione di aggiornamento.

  • Eliminate le voci di menu: Gestione tipi e Segnala l'installazione a Eleonline
  • Aggiunta la voce di menu: Aggiornamento
  • Modificata la funzione di aggiornamento
File size: 5.7 KB
Line 
1<?php
2/************************************************************************/
3/* Eleonline - Raccolta e diffusione dei dati elettorali */
4/* by Roberto Gigli & Luciano Apolito */
5/* http://www.eleonline.it */
6/* info@eleonline.it luciano@aniene.net rgigli@libero.it */
7/************************************************************************/
8/* Modulo Inserimento dati */
9/* Amministrazione */
10/************************************************************************/
11if (!defined('ADMIN_FILE')) {
12 die ("You can't access this file directly...");
13}
14
15
16global $dbi;
17$aid=$_SESSION['aid'];
18$prefix=$_SESSION['prefix'];
19$id_comune=$_SESSION['id_comune'];
20$param=strtolower($_SERVER['REQUEST_METHOD']) == 'get' ? $_GET : $_POST;
21$id_cons_gen=intval($param['id_cons_gen']);
22$perms=ChiSei(0);
23include("modules/Elezioni/ele.php");
24
25//if ($perms<128 or !$id_cons_gen) die("$perms Non hai i permessi per inserire dati, o non hai scelto la consultazione!");
26if (isset($param['errmex'])) $mex=addslashes($param['errmex']); else $mex='';
27if ($perms!=256) $mex = "Non hai i permessi per avviare un aggiornamento!";
28if($mex!='') { ele(); echo "<hr><br><h2 style=\"text-align:center;\">$mex</h2><br><hr>"; include("footer.php");die();}
29
30$newrev=$_SESSION['remoterev'];
31$myrev=$_SESSION['localrev'];
32if($newrev==$myrev) {
33 $errmex="Non sono disponibili nuovi aggiornamenti";
34 Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
35}
36$righe='';
37if(phpversion()<5.6) $host="http://80.211.143.127";
38else $host="https://trac.eleonline.it";
39 $file = '../admin';
40 $client = '../client';
41 $trunk='./files/trunk';
42 $trunkadm='./files/trunk/admin';
43 $trunkcli='./files/trunk/client';
44 $path = "./files/";
45 if(file_exists($path)) {
46 if (!is_dir($path)) {
47 $errmex="E' presente un file di nome $path nella cartella admin, va cancellato per poter aggiornare";
48 Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
49 }
50 else
51 $righe.= "<br>La cartella $path Ú già presente, procedo con l'aggiornamento";
52 }else{
53 $righe.= "<br>La cartella $path non Ú presente, procedo con la creazione";
54 mkdir($path, 0777, true);
55 }
56 # if(!file_exists($trunk)) if (false === mkdir($trunk)) { die("Impossibile creare la cartella trunk, il programma viene interrotto");}
57 # if(!copy($file,$trunkadm)){ $righe.= "<br>Errore durante la copia del pacchetto di aggiornamento<br>";}
58 // Nome del file zip : https://trac.eleonline.it/ele3/changeset?format=zip&new=377&new_path=%2F&old=360&old_path=%2F
59 # https://trac.eleonline.it/ele3/browser/trunk?format=zip&rev=377
60
61 $filename = "$host/ele3/changeset?format=zip&new=$newrev&new_path=%2F&old=$myrev&old_path=%2F";
62 $newfile="./files/aggiornamento".$newrev;
63 if(!copy($filename,$newfile)){
64 $errmex="Errore durante la copia del pacchetto - aggiornamento interrotto<br>";
65 Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
66 }
67 $zip = new ZipArchive;
68 $res = $zip->open($newfile);
69 $righe.= "<br>$newfile scaricato";
70 if ($res === TRUE) {
71 $zip->extractTo($path);
72 $zip->close();
73 $righe.= '<br>File zip estratto';
74 } else {
75# die( '<br>Errore nell\'estrazione del file zip! Aggiornamento interrotto');
76 $errmex= '<br>Errore nell\'estrazione del file zip! Aggiornamento interrotto';
77 Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
78 }
79
80#}
81$righe.= "<br><br><b>Copio i nuovi files nell'installazione di amministrazione locale</b>";
82recurse_copy($trunkadm,$file);
83$righe.= "<br>Files di aggiornamento copiati correttamente.";
84$righe.= "<br><br><b>Copio i nuovi files nell'installazione client locale</b>";
85recurse_copy($trunkcli,$client);
86$righe.= "<br>Files di aggiornamento copiati correttamente.";
87function recurse_copy($src,$dst) {
88 $dir = opendir($src);
89 if(!file_exists($dst))
90 if(@mkdir($dst)==false) {
91 $errmex= "<br>Errore durante la creazione della directory $dst (controllare i permessi), aggiornamento interrotto";
92 Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
93 }
94 while(false !== ( $file = readdir($dir)) ) {
95 if (( $file != '.' ) && ( $file != '..' )) {
96 if ( is_dir($src . '/' . $file) ) {
97 recurse_copy($src . '/' . $file,$dst . '/' . $file);
98 }
99 else {
100 if(!copy($src . '/' . $file,$dst . '/' . $file)) {
101 $errmex= "<br>Errore durante la copia del file".$dst . '/' . $file."(controllare i permessi), aggiornamento interrotto";
102 Header("Location: admin.php?op=aggiorna&id_cons_gen=$id_cons_gen&errmex=$errmex"); exit;
103 }
104 }
105 }
106 }
107 closedir($dir);
108}
109echo "<hr><br><h2 style=\"text-align:center;\">Aggiornamento completato</h2><br><hr>";
110#echo "<br><a href=\"admin.php\"> <------------- Torna al programma --------------> </a><br><br><br>";
111$righedb='';
112if(file_exists('./files/trunk/admin/modules/Elezioni/aggiornadb.php')) {
113 $righe.= "<br><br><b>Aggiornamento del database</b>";
114 ob_start();
115 include ('./aggiornadb.php');
116 $righedb=ob_get_contents();
117 ob_end_clean();
118}
119$righe.=$righedb;
120$righe.= "<br><br><b>Pulisco la cartella temporanea. Operazioni concluse.</b>";
121$dir = "./files/";
122if(file_exists($dir)){
123 $di = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
124 $ri = new RecursiveIteratorIterator($di, RecursiveIteratorIterator::CHILD_FIRST);
125 foreach ( $ri as $file ) {
126 $file->isDir() ? rmdir($file) : unlink($file);
127 }
128}
129ele();
130echo $righe;
131include("footer.php");
132die();
133
134?>
135
Note: See TracBrowser for help on using the repository browser.