2017-08-04 16:28:16 +02:00
< ? php
include_once __DIR__ . '/../../core.php' ;
if ( ! get_var ( 'Attiva aggiornamenti' )) {
2017-09-04 12:02:29 +02:00
die ( tr ( 'Accesso negato' ));
2017-08-04 16:28:16 +02:00
}
$tmp = $_FILES [ 'blob' ][ 'tmp_name' ];
$filename = $_FILES [ 'blob' ][ 'name' ];
$filetype = $_FILES [ 'blob' ][ 'type' ];
$size = $_FILES [ 'blob' ][ 'size' ];
$type = $_POST [ 'type' ];
if ( ! extension_loaded ( 'zip' )) {
2017-09-12 10:41:48 +02:00
$_SESSION [ 'errors' ][] = tr ( 'Estensione zip non supportata!' ) . '<br>' . tr ( 'Verifica e attivala sul tuo file _FILE_' , [
2017-09-18 16:55:19 +02:00
'_FILE_' => '<b>php.ini</b>' ,
2017-09-12 10:41:48 +02:00
]);
2017-08-08 14:04:46 +02:00
} elseif ( ! ends_with ( $filename , '.zip' )) {
2017-09-04 12:02:29 +02:00
$_SESSION [ 'errors' ][] = tr ( 'Il file non è un archivio zip!' );
2017-08-04 16:28:16 +02:00
} elseif ( ! empty ( $tmp ) && is_file ( $tmp )) {
$zip = new ZipArchive ();
if ( $zip -> open ( $tmp )) {
2017-09-12 10:41:48 +02:00
$tmp_dir = $docroot . '/tmp' ;
2017-09-11 17:49:03 +02:00
// Controllo sulla cartella
2017-09-12 10:41:48 +02:00
directory ( $tmp_dir );
2017-09-11 17:49:03 +02:00
2017-09-12 10:41:48 +02:00
$zip -> extractTo ( $tmp_dir );
2017-08-04 16:28:16 +02:00
// AGGIORNAMENTO
2017-09-18 16:55:19 +02:00
if ( 'update' == $type ) {
2017-08-04 16:28:16 +02:00
// Salvo i file di configurazione e versione attuale
$old_config = file_get_contents ( $docroot . '/config.inc.php' );
// Aggiornamento del CORE
2017-09-12 10:41:48 +02:00
if ( file_exists ( $tmp_dir . '/VERSION' )) {
2017-08-04 16:28:16 +02:00
//rename($docroot.'/VERSION', $docroot.'/VERSION.old');
// Copia i file dalla cartella temporanea alla root
2017-09-12 10:41:48 +02:00
copyr ( $tmp_dir , $docroot );
2017-08-04 16:28:16 +02:00
// Scollego l'utente per eventuali aggiornamenti del db
Auth :: logout ();
}
// Aggiornamento di un MODULO
2017-09-12 10:41:48 +02:00
elseif ( file_exists ( $tmp_dir . '/MODULE' )) {
$module_info = parse_ini_file ( $tmp_dir . '/MODULE' , true );
2017-08-04 16:28:16 +02:00
$module_name = $module_info [ 'module_name' ];
2017-08-09 08:11:04 +02:00
$module_dir = $module_info [ 'module_directory' ];
2017-08-04 16:28:16 +02:00
// Copio i file nella cartella "modules/<nomemodulo>/"
2017-09-12 10:41:48 +02:00
copyr ( $tmp_dir , $docroot . '/modules/' . $module_dir . '/' );
2017-08-04 16:28:16 +02:00
// Rinomino il file di versione per forzare l'aggiornamento
//rename($docroot.'/VERSION_'.$module, $docroot.'/VERSION_'.$module.'.old');
// Scollego l'utente per eventuali aggiornamenti del db
Auth :: logout ();
} else {
2017-09-04 12:02:29 +02:00
$_SESSION [ 'errors' ][] = tr ( 'File di aggiornamento non riconosciuto!' );
2017-08-04 16:28:16 +02:00
}
// Ripristino il file di configurazione dell'utente
file_put_contents ( $docroot . '/config.inc.php' , $old_config );
}
// NUOVO MODULO
2017-09-18 16:55:19 +02:00
elseif ( 'new' == $type ) {
2017-08-04 16:28:16 +02:00
// Se non c'è il file MODULE non é un modulo
2017-09-12 10:41:48 +02:00
if ( is_file ( $tmp_dir . '/MODULE' )) {
2017-08-04 16:28:16 +02:00
// Leggo le info dal file di configurazione del modulo
2017-09-12 10:41:48 +02:00
$module_info = parse_ini_file ( $tmp_dir . '/MODULE' , true );
2017-08-04 16:28:16 +02:00
$module_name = $module_info [ 'module_name' ];
$module_version = $module_info [ 'module_version' ];
2017-08-09 08:11:04 +02:00
$module_dir = $module_info [ 'module_directory' ];
2017-08-04 16:28:16 +02:00
// Copio i file nella cartella "modules/<nomemodulo>/"
2017-09-12 10:41:48 +02:00
copyr ( $tmp_dir , $docroot . '/modules/' . $module_dir . '/' );
2017-08-04 16:28:16 +02:00
// Scollego l'utente per eventuali aggiornamenti del db
Auth :: logout ();
// Sposto i file della cartella "files/" nella root
$files_dir = $docroot . '/modules/' . $module_dir . '/files/' ;
if ( is_dir ( $files_dir )) {
copyr ( $files_dir , $docroot . '/files' );
2017-09-11 17:49:03 +02:00
delete ( $files_dir );
2017-08-04 16:28:16 +02:00
}
// Inserimento delle voci del modulo nel db per ogni sezione [sezione]
// Verifico che il modulo non esista già
2017-09-18 16:55:19 +02:00
$n = $dbo -> fetchNum ( 'SELECT name FROM zz_modules WHERE name=' . prepare ( $module_name ));
if ( 0 == $n ) {
$module_info [ 'module_parent' ] = $dbo -> fetchNum ( 'SELECT name FROM zz_modules WHERE id=' . prepare ( $module_info [ 'module_parent' ])) ? prepare ( $module_info [ 'module_parent' ]) : 'NULL' ;
2017-08-04 16:28:16 +02:00
2017-09-18 16:55:19 +02:00
$query = 'INSERT INTO zz_modules(`name`, `title`, `directory`, `options`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`) VALUES(' . prepare ( $module_name ) . ', ' . prepare ( $module_name ) . ', ' . prepare ( $module_dir ) . ', ' . prepare ( $module_info [ 'module_options' ]) . ', ' . prepare ( $module_info [ 'module_icon' ]) . ', ' . prepare ( $module_version ) . ', ' . prepare ( $module_info [ 'module_compatibility' ]) . ', "100", ' . $module_info [ 'module_parent' ] . ', 0, 1)' ;
2017-08-04 16:28:16 +02:00
$dbo -> query ( $query );
}
}
// File zip non contiene il file MODULE
else {
2017-09-04 12:02:29 +02:00
$_SESSION [ 'errors' ][] = tr ( 'File di installazione non valido!' );
2017-08-04 16:28:16 +02:00
}
}
2017-09-12 10:41:48 +02:00
delete ( $tmp_dir );
redirect ( $rootdir );
2017-08-04 16:28:16 +02:00
} else {
$_SESSION [ 'errors' ][] = checkZip ( $tmp );
}
$zip -> close ();
}