gest366/modules/aggiornamenti/upload_modules.php

139 lines
4.1 KiB
PHP
Raw Permalink Normal View History

2021-02-24 20:40:04 +00:00
<?php
if( $docroot == '' || !get_var("Attiva aggiornamenti") ){
die( _("Accesso negato!") );
}
$tmp = $_FILES['blob']['tmp_name'];
$filename = $_FILES['blob']['name'];
$filetype = $_FILES['blob']['type'];
$size = $_FILES['blob']['size'];
$type = $_POST['type'];
deltree($docroot."/modules/modulo_agg");
deltree($docroot."/modules/mod_agg");
if( $tmp != '' ){
if( extension_loaded("zip") ){
$zip = new ZipArchive();
if( is_file($tmp) ){
if( strstr( $filename, ".zip" ) ){
if( $zip->open( $tmp ) ){
$tmpdir = "tmp_aggiorna/";
if( !file_exists($docroot."/".$tmpdir) )
mkdir( $docroot."/".$tmpdir, 0755, true );
$zip -> extractTo( $docroot."/".$tmpdir );
/*
AGGIORNAMENTO
*/
if( $type=="update" ){
//Salvo i file di configurazione e versione attuale
$old_config = file_get_contents( $docroot."/config.inc.php" );
//Aggiornamento del CORE
if( file_exists($docroot."/".$tmpdir."/VERSION") ){
rename( $docroot."/VERSION", $docroot."/VERSION.old" );
//Copia i file dalla cartella temporanea alla root
copyr( $docroot."/".$tmpdir, $docroot,'' );
//Scollego l'utente per eventuali aggiornamenti del db
unset( $_SESSION['idutente'] );
redirect( $rootdir, "php" );
}
//Ripristino il file di configurazione dell'utente
file_put_contents( $docroot."/config.inc.php", $old_config );
}
/*
NUOVO / Aggiorna MODULO
*/
else if( $type=="new" ){
//Se non c'è il file MODULE non é un modulo
if( is_file($docroot."/".$tmpdir."/MODULE") ){
//Leggo le info dal file di configurazione del modulo
$module_info = parse_ini_file( $docroot."/".$tmpdir."/MODULE", true );
$module_name = $module_info['module_name'];
$module_version = $module_info['module_version'];
$module_dir = $module_info['module_dir'];
//Copio i file nella cartella "modules/<nomemodulo>/"
copyr( $docroot."/".$tmpdir, $docroot."/modules/".$module_dir."/" ,'');
//Copio le cartelle modules
copyr( $docroot."/".$tmpdir."/modules", $docroot."/modules/" ,'');
copyr( $docroot."/".$tmpdir."/templates", $docroot."/templates/" ,'');
//Scollego l'utente per eventuali aggiornamenti del db
unset( $_SESSION['idutente'] );
unset( $_SESSION['username'] );
unset( $_SESSION['is_admin'] );
//Sposto il file di versione nella root per forzare l'aggiornamento del db
file_put_contents( $docroot."/VERSION_".$module_dir, $module_version );
//Sposto i file della cartella "share/" nella root
$share_dir = $docroot."/modules/".$module_dir."/share/";
if( is_dir($share_dir) ){
@copyr( $share_dir, $docroot."/share" ,'');
@deltree( $share_dir );
}
//Sposto i file della cartella "lib/" nella root
$lib_dir = $docroot."/modules/".$module_dir."/lib/";
if( is_dir($lib_dir) ){
@copyr( $lib_dir, $docroot."/lib" ,'');
@deltree( $lib_dir );
}
//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",'' );
@deltree( $files_dir );
}
redirect( $rootdir, "php" );
}
//File zip non contiene il file MODULE
else{
array_push( $_SESSION['errors'], "File di installazione non valido!" );
}
}
deltree($docroot."/".$tmpdir);
}
else{
array_push( $_SESSION['errors'], checkZip($tmp) );
}
$zip->close();
}
else{
array_push( $_SESSION['errors'], "Il file non &eacute; un archivio zip!" );
}
}
}
//Estensione php_zip non caricata
else{
array_push( $_SESSION['errors'], "Estensione php_zip non caricata!<br>Verifica e attivala sul tuo php.ini" );
}
}
?>