Introduzione del componente Filesystem
Introduzione del componente Filesystem di Symfony per gestire in modo omogeneo il filesystem.
This commit is contained in:
parent
f9346b3923
commit
a89ad1feee
|
@ -29,7 +29,7 @@ if (filter('op') == 'link_file' || filter('op') == 'unlink_file') {
|
|||
}
|
||||
|
||||
// Controllo sui permessi di scrittura per il file system
|
||||
elseif ((!is_dir($upload_dir) && !create_dir($upload_dir)) || (is_dir($upload_dir) && !is_writable($upload_dir))) {
|
||||
elseif (!directory($upload_dir)) {
|
||||
$_SESSION['errors'][] = tr('Non hai i permessi di scrittura nella cartella _DIR_!', [
|
||||
'_DIR_' => '"files"',
|
||||
]);
|
||||
|
@ -192,7 +192,7 @@ if (filter('op') == 'link_file' || filter('op') == 'unlink_file') {
|
|||
|
||||
$rs = $dbo->fetchArray('SELECT * FROM zz_files WHERE id_module='.prepare($id_module).' AND id='.prepare(filter('id')).' AND filename='.prepare($filename));
|
||||
|
||||
if (unlink($upload_dir.'/'.$filename)) {
|
||||
if (delete($upload_dir.'/'.$filename)) {
|
||||
$query = 'DELETE FROM zz_files WHERE id_module='.prepare($id_module).' AND id='.prepare(filter('id')).' AND filename='.prepare($filename);
|
||||
if ($dbo->query($query)) {
|
||||
$_SESSION['infos'][] = tr('File _FILE_ eliminato!', [
|
||||
|
@ -212,7 +212,7 @@ if (filter('op') == 'link_file' || filter('op') == 'unlink_file') {
|
|||
} elseif (filter('op') == 'download_file') {
|
||||
$rs = $dbo->fetchArray('SELECT * FROM zz_files WHERE id_module='.prepare($id_module).' AND id='.prepare(filter('id')).' AND filename='.prepare(filter('filename')));
|
||||
|
||||
force_download($rs[0]['original'], $upload_dir.'/'.$rs[0]['filename']);
|
||||
download($upload_dir.'/'.$rs[0]['filename'], $rs[0]['original']);
|
||||
}
|
||||
|
||||
if (Modules::getPermission($permesso) == 'rw') {
|
||||
|
|
|
@ -555,11 +555,14 @@ div.DTS tbody th {
|
|||
max-width: 500px;
|
||||
}
|
||||
|
||||
.table-responsive th>input,
|
||||
.table-responsive td>input {
|
||||
input.min-width {
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
input.small-width {
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
table.table:not(.dataTable) th,
|
||||
table.table:not(.dataTable) td {
|
||||
word-wrap: break-word;
|
||||
|
|
2
bug.php
2
bug.php
|
@ -103,7 +103,7 @@ if (filter('op') == 'send') {
|
|||
$mail->SmtpClose();
|
||||
|
||||
if (!empty($post['sql'])) {
|
||||
unlink($backup_file);
|
||||
delete($backup_file);
|
||||
}
|
||||
|
||||
redirect($rootdir.'/bug.php');
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
"paragonie/random_compat": "^2.0",
|
||||
"phpmailer/phpmailer": "^5.2",
|
||||
"spipu/html2pdf": "^5.0",
|
||||
"symfony/filesystem": "^3.3",
|
||||
"symfony/finder": "^3.3",
|
||||
"symfony/translation": "^3.3"
|
||||
},
|
||||
|
|
|
@ -32,7 +32,7 @@ switch ($op) {
|
|||
$_SESSION['infos'][] = tr('Backup saltato perché già esistente!');
|
||||
} elseif (empty($backup_dir)) {
|
||||
$_SESSION['errors'][] = tr('Non è possibile eseguire i backup poichè la cartella di backup non è stata impostata!!!');
|
||||
} elseif (file_exists($backup_dir) || create_dir($backup_dir)) {
|
||||
} elseif (directory($backup_dir)) {
|
||||
$_SESSION['infos'][] = tr('La cartella di backup è stata creata correttamente.');
|
||||
if (do_backup()) {
|
||||
$_SESSION['infos'][] = tr('Backup automatico eseguito correttamente!');
|
||||
|
|
|
@ -1023,3 +1023,34 @@ function filelist_and_upload($id_module, $id_record, $label = 'Nuovo allegato:',
|
|||
</div>';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Rimuove ricorsivamente una directory.
|
||||
*
|
||||
* @param unknown $path
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
function deltree($path)
|
||||
{
|
||||
trigger_error('Funzione deprecata!', E_USER_DEPRECATED);
|
||||
|
||||
$path = realpath($path);
|
||||
|
||||
if (is_dir($path)) {
|
||||
$files = scandir($path);
|
||||
if (empty($files)) {
|
||||
$files = [];
|
||||
}
|
||||
|
||||
foreach ($files as $file) {
|
||||
if ($file != '.' && $file != '..') {
|
||||
deltree($path.DIRECTORY_SEPARATOR.$file);
|
||||
}
|
||||
}
|
||||
|
||||
return rmdir($path);
|
||||
} elseif (file_exists($path)) {
|
||||
return unlink($path);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,33 +36,39 @@ function sanitizeFilename($filename)
|
|||
return $filename;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rimuove ricorsivamente una directory.
|
||||
*
|
||||
* @param unknown $path
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
function deltree($path)
|
||||
function delete($files)
|
||||
{
|
||||
$path = realpath($path);
|
||||
// Filesystem Symfony
|
||||
$fs = new Symfony\Component\Filesystem\Filesystem();
|
||||
|
||||
if (is_dir($path)) {
|
||||
$files = scandir($path);
|
||||
if (empty($files)) {
|
||||
$files = [];
|
||||
}
|
||||
|
||||
foreach ($files as $file) {
|
||||
if ($file != '.' && $file != '..') {
|
||||
deltree($path.DIRECTORY_SEPARATOR.$file);
|
||||
}
|
||||
}
|
||||
|
||||
return rmdir($path);
|
||||
} elseif (file_exists($path)) {
|
||||
return unlink($path);
|
||||
// Eliminazione
|
||||
try {
|
||||
$fs->remove($files);
|
||||
} catch (Symfony\Component\Filesystem\Exception\IOException $e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function directory($path)
|
||||
{
|
||||
if (is_dir($path) && is_writable($path)) {
|
||||
return true;
|
||||
} elseif (!is_dir($path)) {
|
||||
// Filesystem Symfony
|
||||
$fs = new Symfony\Component\Filesystem\Filesystem();
|
||||
|
||||
// Tentativo di creazione
|
||||
try {
|
||||
$fs->mkdir($path);
|
||||
|
||||
return true;
|
||||
} catch (Symfony\Component\Filesystem\Exception\IOException $e) {
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -99,21 +105,13 @@ function copyr($source, $destination, $ignores = [])
|
|||
foreach ($finder as $file) {
|
||||
$filename = rtrim($destination, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.$file->getRelativePathname();
|
||||
|
||||
// Creazione della cartella di base
|
||||
if (!file_exists(dirname($filename))) {
|
||||
create_dir(dirname($filename));
|
||||
}
|
||||
// Filesystem Symfony
|
||||
$fs = new Symfony\Component\Filesystem\Filesystem();
|
||||
|
||||
// Simple copy for a file
|
||||
if (is_file($file)) {
|
||||
copy($file, $filename);
|
||||
}
|
||||
|
||||
// If the source is a symlink
|
||||
if (is_link($file)) {
|
||||
$link_dest = readlink($file);
|
||||
|
||||
symlink($link_dest, $filename);
|
||||
// Copia
|
||||
try {
|
||||
$fs->copy($file, $filename);
|
||||
} catch (Symfony\Component\Filesystem\Exception\IOException $e) {
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -226,8 +224,8 @@ function do_backup($path = null)
|
|||
|
||||
$backup_name = 'OSM backup '.date('Y-m-d').' '.date('H_i_s');
|
||||
if (
|
||||
(extension_loaded('zip') && (file_exists($backup_dir.'tmp') || create_dir($backup_dir.'tmp'))) ||
|
||||
(!extension_loaded('zip') && (file_exists($backup_dir.$backup_name) || create_dir($backup_dir.$backup_name)))
|
||||
(extension_loaded('zip') && directory($backup_dir.'tmp')) ||
|
||||
(!extension_loaded('zip') && directory($backup_dir.$backup_name))
|
||||
) {
|
||||
// Backup del database
|
||||
$database_file = $backup_dir.(extension_loaded('zip') ? 'tmp' : $backup_name).'/database.sql';
|
||||
|
@ -255,7 +253,7 @@ function do_backup($path = null)
|
|||
}
|
||||
|
||||
// Rimozione cartella temporanea
|
||||
unlink($database_file);
|
||||
delete($database_file);
|
||||
}
|
||||
// Copia dei file di OSM
|
||||
else {
|
||||
|
@ -284,11 +282,7 @@ function do_backup($path = null)
|
|||
$cont = 1;
|
||||
foreach ($backups as $backup) {
|
||||
if ($cont > $max_backups) {
|
||||
if (preg_match('/^OSM backup ([0-9\-]{10}) ([0-9_]{8})$/', $backup, $m)) {
|
||||
deltree($backup_dir.'/'.$backup);
|
||||
} elseif (preg_match('/^OSM backup ([0-9\-]{10}) ([0-9_]{8})\.zip$/', $backup, $m)) {
|
||||
unlink($backup_dir.'/'.$backup);
|
||||
}
|
||||
delete($backup_dir.'/'.$backup);
|
||||
}
|
||||
++$cont;
|
||||
}
|
||||
|
@ -534,7 +528,7 @@ function create_thumbnails($tmp, $filename, $dir)
|
|||
$name = $infos['filename'];
|
||||
$extension = strtolower($infos['extension']);
|
||||
|
||||
if ((is_dir($dir) && !is_writable($dir)) || (!is_dir($dir) && !create_dir($dir))) {
|
||||
if (!directory($dir)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -828,8 +822,3 @@ function redirectOperation($id_module, $id_record)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
function create_dir($path)
|
||||
{
|
||||
return mkdir($path, 0777, true);
|
||||
}
|
||||
|
|
19
lib/util.php
19
lib/util.php
|
@ -174,7 +174,7 @@ if (!function_exists('secure_random_string')) {
|
|||
}
|
||||
}
|
||||
|
||||
if (!function_exists('force_download')) {
|
||||
if (!function_exists('download')) {
|
||||
/**
|
||||
* Transmit headers that force a browser to display the download file
|
||||
* dialog. Cross browser compatible. Only fires if headers have not
|
||||
|
@ -190,9 +190,12 @@ if (!function_exists('force_download')) {
|
|||
*
|
||||
* @return bool
|
||||
*/
|
||||
function force_download($filename, $content = false)
|
||||
function download($file, $filename = null)
|
||||
{
|
||||
if (!headers_sent()) {
|
||||
$filename = !empty($filename) ? $filename : basename($file);
|
||||
$content = !is_file($file) ? $file : file_get_contents($file);
|
||||
|
||||
// Required for some browsers
|
||||
if (ini_get('zlib.output_compression')) {
|
||||
@ini_set('zlib.output_compression', 'Off');
|
||||
|
@ -209,20 +212,10 @@ if (!function_exists('force_download')) {
|
|||
header('Content-Type: application/force-download');
|
||||
header('Content-Transfer-Encoding: binary');
|
||||
|
||||
if (empty($content) && is_file($filename)) {
|
||||
$content = $filename;
|
||||
}
|
||||
|
||||
if (is_file($content)) {
|
||||
$content = file_get_contents($content);
|
||||
}
|
||||
|
||||
ob_clean();
|
||||
flush();
|
||||
|
||||
if ($content) {
|
||||
echo $content;
|
||||
}
|
||||
echo $content;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -27,10 +27,11 @@ switch (post('op')) {
|
|||
include_once $uninstall_script;
|
||||
}
|
||||
|
||||
deltree($docroot.'/modules/'.$module_dir.'/');
|
||||
delete($docroot.'/modules/'.$module_dir.'/');
|
||||
|
||||
$_SESSION['infos'][] = tr('Modulo _MODULE_ disinstallato!', [
|
||||
'_MODULE_' => '"'.$modulo.'"',
|
||||
]);
|
||||
'_MODULE_' => '"'.$modulo.'"',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -21,9 +21,10 @@ if (!extension_loaded('zip')) {
|
|||
|
||||
if ($zip->open($tmp)) {
|
||||
$tmpdir = 'tmp/';
|
||||
if (!file_exists($docroot.'/'.$tmpdir)) {
|
||||
create_dir($docroot.'/'.$tmpdir, 0755, true);
|
||||
}
|
||||
|
||||
// Controllo sulla cartella
|
||||
directory($docroot.'/'.$tmpdir);
|
||||
|
||||
$zip->extractTo($docroot.'/'.$tmpdir);
|
||||
|
||||
// AGGIORNAMENTO
|
||||
|
@ -87,25 +88,18 @@ if (!extension_loaded('zip')) {
|
|||
// 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);
|
||||
delete($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);
|
||||
delete($files_dir);
|
||||
}
|
||||
|
||||
// Inserimento delle voci del modulo nel db per ogni sezione [sezione]
|
||||
|
@ -114,7 +108,7 @@ if (!extension_loaded('zip')) {
|
|||
$n = $dbo->fetchNum($query);
|
||||
|
||||
if ($n == 0) {
|
||||
$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", '.prepare($module_info['module_parent']).", 0, 1)";
|
||||
$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", '.prepare($module_info['module_parent']).', 0, 1)';
|
||||
$dbo->query($query);
|
||||
}
|
||||
|
||||
|
@ -127,7 +121,7 @@ if (!extension_loaded('zip')) {
|
|||
}
|
||||
}
|
||||
|
||||
deltree($docroot.'/'.$tmpdir);
|
||||
delete($docroot.'/'.$tmpdir);
|
||||
} else {
|
||||
$_SESSION['errors'][] = checkZip($tmp);
|
||||
}
|
||||
|
|
|
@ -90,9 +90,9 @@ switch (post('op')) {
|
|||
$filename = post('immagine01');
|
||||
$f = pathinfo($filename);
|
||||
|
||||
unlink($upload_dir.'/'.$f['filename'].'.'.$f['extension']);
|
||||
unlink($upload_dir.'/'.$f['filename'].'_thumb100.'.$f['extension']);
|
||||
unlink($upload_dir.'/'.$f['filename'].'_thumb250.'.$f['extension']);
|
||||
delete($upload_dir.'/'.$f['filename'].'.'.$f['extension']);
|
||||
delete($upload_dir.'/'.$f['filename'].'_thumb100.'.$f['extension']);
|
||||
delete($upload_dir.'/'.$f['filename'].'_thumb250.'.$f['extension']);
|
||||
|
||||
$dbo->query("UPDATE mg_articoli SET immagine01 = '' WHERE id=".prepare($id_record));
|
||||
}
|
||||
|
|
|
@ -6,13 +6,14 @@ switch (filter('op')) {
|
|||
case 'getfile':
|
||||
$file = filter('file');
|
||||
|
||||
force_download($file, file_get_contents($backup_dir.$file));
|
||||
download($backup_dir.$file, $file);
|
||||
|
||||
break;
|
||||
|
||||
case 'del':
|
||||
$file = filter('file');
|
||||
deltree($backup_dir.$file);
|
||||
|
||||
delete($backup_dir.$file);
|
||||
|
||||
if (!file_exists($backup_dir.$file)) {
|
||||
$_SESSION['infos'][] = tr('Backup _FILE_ eliminato!', [
|
||||
|
|
|
@ -2,46 +2,55 @@
|
|||
|
||||
include_once __DIR__.'/../../core.php';
|
||||
|
||||
echo '<p>'.tr('Il backup è molto importante perchè permette di creare una copia della propria installazione con relativi dati per poterla ripristinare in seguito a errori, cancellazione di dati accidentale o guasti hardware').'.</p>
|
||||
echo '<p>'.tr('Il backup è molto importante perchè permette di creare una copia della propria installazione con relativi dati per poterla ripristinare in seguito a errori, cancellazione di dati accidentale o guasti hardware').'.</p>';
|
||||
|
||||
if (!extension_loaded('zip')) {
|
||||
echo "
|
||||
<div class='alert alert-warning'>
|
||||
<i class='fa fa-times'></i> ".tr('Estensione zip non supportata!').'
|
||||
'.tr('Il backup verrà eseguito ma non in formato zip e quindi scaricabile solo tramite ftp o con copia-incolla').'.
|
||||
</div>';
|
||||
}
|
||||
|
||||
echo '
|
||||
<div class="callout callout-success">
|
||||
<p>';
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12 col-lg-6">
|
||||
<div class="callout callout-success">
|
||||
<p>';
|
||||
if (!empty($backup_dir)) {
|
||||
echo tr('Il percorso di backup è attualmente in').': <b>'.slashes($backup_dir).'</b>';
|
||||
} else {
|
||||
echo tr('Sembra che tu non abbia ancora specificato un percorso per il backup').'.';
|
||||
}
|
||||
|
||||
echo '
|
||||
</p>
|
||||
<p><small>'.tr('Puoi modificare il percorso di backup dal tuo file _FILE_', [
|
||||
'_FILE_' => '<b>config.inc.php</b>',
|
||||
]).'</small></p>';
|
||||
if (strstr($backup_dir, $docroot)) {
|
||||
</p>
|
||||
<p><small>'.tr('Puoi modificare il percorso di backup dal tuo file _FILE_', [
|
||||
'_FILE_' => '<b>config.inc.php</b>',
|
||||
]).'</small></p>';
|
||||
|
||||
if (starts_with($backup_dir, $docroot)) {
|
||||
echo '
|
||||
<div class="alert alert-warning">
|
||||
<i class="fa fa-warning"></i> '.tr('Per motivi di sicurezza si consiglia di modificare il percorso della cartella di backup al di fuori delle cartelle di OSM, possibilmente in una unità esterna').'.
|
||||
</div>';
|
||||
<div class="alert alert-warning">
|
||||
<i class="fa fa-warning"></i> '.tr('Per motivi di sicurezza si consiglia di modificare il percorso della cartella di backup al di fuori delle cartelle di OSM, possibilmente in una unità esterna').'.
|
||||
</div>';
|
||||
}
|
||||
|
||||
if (!is_writable($backup_dir)) {
|
||||
echo '
|
||||
<div class="alert alert-warning">
|
||||
<i class="fa fa-warning"></i> '.tr('La cartella di backup presente nella configurazione non è utilizzabile dal gestionale!').'. '.tr('Verificare che la cartella abbia i permessi di scrittura abilitati').'.
|
||||
</div>';
|
||||
<div class="alert alert-warning">
|
||||
<i class="fa fa-warning"></i> '.tr('La cartella di backup presente nella configurazione non è utilizzabile dal gestionale!').'.
|
||||
'.tr('Verificare che la cartella abbia i permessi di scrittura abilitati').'.
|
||||
</div>';
|
||||
}
|
||||
echo '
|
||||
</div>';
|
||||
</div>
|
||||
|
||||
echo '
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 col-lg-6">';
|
||||
|
||||
// Se la cartella di backup non esiste provo a crearla
|
||||
if (!file_exists($backup_dir)) {
|
||||
create_dir($backup_dir);
|
||||
}
|
||||
<!-- PULSANTI -->
|
||||
<div class="row">
|
||||
<div class="col-md-12 text-right">
|
||||
<button type="button" class="btn btn-primary pull-right" onclick="continue_backup()"><i class="fa fa-database"></i> '.tr('Crea backup').'...</button>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
//Lettura file di backup
|
||||
if (file_exists($backup_dir)) {
|
||||
|
@ -61,94 +70,113 @@ if (file_exists($backup_dir)) {
|
|||
|
||||
if (empty($backups_zip) && empty($backups_file)) {
|
||||
echo '
|
||||
<div class="alert alert-warning"><i class="fa fa-warning"></i> '.tr('Non è ancora stato trovato alcun backup!').' '.tr('Se hai già inserito dei dati su OSM crealo il prima possibile...')."</div>\n";
|
||||
<div class="alert alert-warning">
|
||||
<i class="fa fa-warning"></i> '.tr('Non è ancora stato trovato alcun backup!').'
|
||||
'.tr('Se hai già inserito dei dati su OSM crealo il prima possibile...').'
|
||||
</div>';
|
||||
} else {
|
||||
// Ordino i backup dal più recente al più vecchio
|
||||
arsort($backups_zip);
|
||||
arsort($backups_file);
|
||||
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<h3>'.tr('Backup compressi').'</h3>';
|
||||
|
||||
if (!empty($backups_zip)) {
|
||||
foreach ($backups_zip as $backup) {
|
||||
$name = basename($backup);
|
||||
preg_match('/^OSM backup ([0-9\-]{10}) ([0-9_]{8})\.zip$/', $name, $m);
|
||||
|
||||
echo '
|
||||
<div class="callout callout-info">
|
||||
<h4>'.tr('Backup del _DATE_ alle _TIME_', [
|
||||
'_DATE_' => Translator::dateToLocale($m[1]),
|
||||
'_TIME_' => Translator::timeToLocale(str_replace('_', ':', $m[2])),
|
||||
]).'</h4>
|
||||
<p><small>
|
||||
'.tr('Nome del file').': '.$name.'<br>
|
||||
'.tr('Dimensione').': '.Translator::numberToLocale(filesize($backup) / 1024 / 1024).'MB
|
||||
</small></p>
|
||||
<div class="callout callout-info">
|
||||
<h4>'.tr('Backup del _DATE_ alle _TIME_', [
|
||||
'_DATE_' => Translator::dateToLocale($m[1]),
|
||||
'_TIME_' => Translator::timeToLocale(str_replace('_', ':', $m[2])),
|
||||
]).'</h4>
|
||||
<p><small>
|
||||
'.tr('Nome del file').': '.$name.'<br>
|
||||
'.tr('Dimensione').': '.Translator::numberToLocale(filesize($backup) / 1024 / 1024).'MB
|
||||
</small></p>
|
||||
|
||||
<a class="btn btn-sm btn-primary" href="'.$rootdir.'/modules/backup/actions.php?op=getfile&file='.$name.'" target="_blank"><i class="fa fa-download"></i> '.tr('Scarica').'</a>
|
||||
<a class="btn btn-sm btn-primary" href="'.$rootdir.'/modules/backup/actions.php?op=getfile&file='.$name.'" target="_blank"><i class="fa fa-download"></i> '.tr('Scarica').'</a>
|
||||
|
||||
<a class="btn btn-danger ask pull-right" title="'.tr('Elimina backup').'" data-backto="record-list" data-op="del" data-file="'.$name.'">
|
||||
<i class="fa fa-trash"></i>
|
||||
</a>
|
||||
</div>';
|
||||
<a class="btn btn-danger ask pull-right" title="'.tr('Elimina backup').'" data-backto="record-list" data-op="del" data-file="'.$name.'">
|
||||
<i class="fa fa-trash"></i>
|
||||
</a>
|
||||
</div>';
|
||||
}
|
||||
} else {
|
||||
echo '
|
||||
<div class="alert alert-warning">
|
||||
<i class="fa fa-warning"></i> '.tr('Non è stato trovato alcun backup di questa tipologia!').'
|
||||
</div>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<h3>'.tr('Backup non compressi').'</h3>';
|
||||
|
||||
// Backup non compressi e quindi non scaricabili
|
||||
if (!empty($backups_file)) {
|
||||
echo '<hr><b>'.tr('Backup non compressi')."</b>\n";
|
||||
|
||||
foreach ($backups_file as $backup) {
|
||||
$name = basename($backup);
|
||||
preg_match('/^OSM backup ([0-9\-]{10}) ([0-9_]{8})$/', $name, $m);
|
||||
|
||||
echo '
|
||||
<div class="callout callout-warning">
|
||||
<h4>'.tr('Backup del _DATE_ alle _TIME_', [
|
||||
'_DATE_' => Translator::dateToLocale($m[1]),
|
||||
'_TIME_' => Translator::timeToLocale(str_replace('_', ':', $m[2])),
|
||||
]).'</h4>
|
||||
<p><small>
|
||||
'.tr('Nome del file').': '.$name.'<br>
|
||||
'.tr('Dimensione').': '.Translator::numberToLocale(filesize($backup) / 1024 / 1024).'MB
|
||||
</small></p>
|
||||
<div class="callout callout-warning">
|
||||
<h4>'.tr('Backup del _DATE_ alle _TIME_', [
|
||||
'_DATE_' => Translator::dateToLocale($m[1]),
|
||||
'_TIME_' => Translator::timeToLocale(str_replace('_', ':', $m[2])),
|
||||
]).'</h4>
|
||||
<p><small>
|
||||
'.tr('Nome del file').': '.$name.'<br>
|
||||
'.tr('Dimensione').': '.Translator::numberToLocale(filesize($backup) / 1024 / 1024).'MB
|
||||
</small></p>
|
||||
|
||||
<a class="btn btn-sm btn-warning disabled" href="javascript:;"><i class="fa fa-times"></i> '.tr('Non scaricabile').'</a>
|
||||
<a class="btn btn-sm btn-warning disabled" href="javascript:;"><i class="fa fa-times"></i> '.tr('Non scaricabile').'</a>
|
||||
|
||||
<a class="btn btn-danger ask pull-right" title="'.tr('Elimina backup').'" data-backto="record-list" data-op="del" data-file="'.$name.'">
|
||||
<i class="fa fa-trash"></i>
|
||||
</a>
|
||||
</div>';
|
||||
<a class="btn btn-danger ask pull-right" title="'.tr('Elimina backup').'" data-backto="record-list" data-op="del" data-file="'.$name.'">
|
||||
<i class="fa fa-trash"></i>
|
||||
</a>
|
||||
</div>';
|
||||
}
|
||||
} else {
|
||||
echo '
|
||||
<div class="alert alert-warning">
|
||||
<i class="fa fa-warning"></i> '.tr('Non è stato trovato alcun backup di questa tipologia!').'
|
||||
</div>';
|
||||
}
|
||||
|
||||
echo '
|
||||
</div>
|
||||
</div>';
|
||||
}
|
||||
} else {
|
||||
echo '
|
||||
<div class="alert alert-danger">'.tr('La cartella di backup non esiste!').' '.tr('Non è possibile eseguire i backup!').'</div>';
|
||||
}
|
||||
echo '
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
if (!extension_loaded('zip')) {
|
||||
echo "<div class='alert alert-warning'><i class='fa fa-times'></i> ".tr('Estensione zip non supportata!').' '.tr('Il backup verrà eseguito ma non in formato zip e quindi scaricabile solo tramite ftp o con copia-incolla').".</div>\n";
|
||||
<div class="alert alert-danger">'.tr('La cartella di backup non esiste!').' '.tr('Non è possibile eseguire i backup!').'</div>';
|
||||
}
|
||||
|
||||
if ($backup_dir != '') {
|
||||
if (!empty($backup_dir)) {
|
||||
echo '
|
||||
<button type="button" class="btn btn-primary" onclick="continue_backup()"><i class="fa fa-database"></i> '.tr('Crea backup').'...</button>
|
||||
<button type="button" class="btn btn-primary" onclick="continue_backup()"><i class="fa fa-database"></i> '.tr('Crea backup').'...</button>
|
||||
|
||||
<script>
|
||||
function continue_backup(){
|
||||
swal({
|
||||
title: "'.tr('Nuovo backup').'",
|
||||
text: "'.tr('Sei sicuro di voler creare un nuovo backup?').'",
|
||||
type: "warning",
|
||||
showCancelButton: true,
|
||||
confirmButtonClass: "btn btn-lg btn-success",
|
||||
confirmButtonText: "'.tr('Crea').'",
|
||||
}).then(
|
||||
function(){
|
||||
location.href = globals.rootdir + "/editor.php?id_module='.$id_module.'&op=backup";
|
||||
}, function(){});
|
||||
}
|
||||
</script>';
|
||||
<script>
|
||||
function continue_backup(){
|
||||
swal({
|
||||
title: "'.tr('Nuovo backup').'",
|
||||
text: "'.tr('Sei sicuro di voler creare un nuovo backup?').'",
|
||||
type: "warning",
|
||||
showCancelButton: true,
|
||||
confirmButtonClass: "btn btn-lg btn-success",
|
||||
confirmButtonText: "'.tr('Crea').'",
|
||||
}).then(
|
||||
function(){
|
||||
location.href = globals.rootdir + "/editor.php?id_module='.$id_module.'&op=backup";
|
||||
}, function(){});
|
||||
}
|
||||
</script>';
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ switch (post('op')) {
|
|||
// Rimozione dei contenuti precedenti
|
||||
$files = glob($dir.'/*.zip');
|
||||
foreach ($files as $file) {
|
||||
unlink($file);
|
||||
delete($file);
|
||||
}
|
||||
|
||||
// Selezione delle fatture da stampare
|
||||
|
@ -38,10 +38,10 @@ switch (post('op')) {
|
|||
create_zip($dir.'tmp/', $file);
|
||||
|
||||
// Invio al browser dello zip
|
||||
force_download($file);
|
||||
download($file);
|
||||
|
||||
// Rimozione dei contenuti
|
||||
deltree($dir.'tmp/');
|
||||
delete($dir.'tmp/');
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
|
@ -48,7 +48,8 @@ switch (post('op')) {
|
|||
$nomefile = post('nomefile');
|
||||
|
||||
if (!empty($nomefile)) {
|
||||
unlink($path.$nomefile);
|
||||
delete($path.$nomefile);
|
||||
|
||||
$_SESSION['infos'][] = tr('File _FILE_ rimosso correttamente!', [
|
||||
'_FILE_' => "'".$nomefile."'",
|
||||
]);
|
||||
|
|
|
@ -306,7 +306,7 @@ switch (post('op')) {
|
|||
$rs = $dbo->fetchArray('SELECT filename FROM zz_files WHERE id_module='.prepare($id_module).' AND id='.prepare($id_record));
|
||||
|
||||
for ($i = 0; $i < count($rs); ++$i) {
|
||||
@unlink($docroot.'/files/interventi/'.$rs[$i]['filename']);
|
||||
delete($docroot.'/files/interventi/'.$rs[$i]['filename']);
|
||||
}
|
||||
|
||||
$dbo->query('DELETE FROM zz_files WHERE id_module='.prepare($id_module).' AND id='.prepare($id_record));
|
||||
|
@ -535,9 +535,7 @@ switch (post('op')) {
|
|||
break;
|
||||
|
||||
case 'firma':
|
||||
$directory_exists = (file_exists($docroot.'/files/interventi') || create_dir($docroot.'/files/interventi'));
|
||||
|
||||
if ($directory_exists) {
|
||||
if (directory($docroot.'/files/interventi')) {
|
||||
if (post('firma_base64') != '') {
|
||||
// Salvataggio firma
|
||||
$firma_file = 'firma_'.time().'.png';
|
||||
|
|
|
@ -129,7 +129,7 @@ if (!empty($rs2)) {
|
|||
<input type="hidden" name="orario_inizio['.$id.']" value="'.$orario_inizio.'">';
|
||||
} else {
|
||||
echo '
|
||||
{[ "type": "timestamp", "name": "orario_inizio['.$id.']", "id": "inizio_'.$id.'", "value": "'.$orario_inizio.'", "class": "orari" ]}';
|
||||
{[ "type": "timestamp", "name": "orario_inizio['.$id.']", "id": "inizio_'.$id.'", "value": "'.$orario_inizio.'", "class": "orari min-width" ]}';
|
||||
}
|
||||
echo '
|
||||
</td>';
|
||||
|
@ -143,7 +143,7 @@ if (!empty($rs2)) {
|
|||
<input type="hidden" name="orario_fine['.$id.']" value="'.$orario_fine.'">';
|
||||
} else {
|
||||
echo '
|
||||
{[ "type": "timestamp", "name": "orario_fine['.$id.']", "id": "fine_'.$id.'", "value": "'.$orario_fine.'", "class": "orari", "min-date": "'.$orario_inizio.'" ]}';
|
||||
{[ "type": "timestamp", "name": "orario_fine['.$id.']", "id": "fine_'.$id.'", "value": "'.$orario_fine.'", "class": "orari min-width", "min-date": "'.$orario_inizio.'" ]}';
|
||||
}
|
||||
echo '
|
||||
</td>';
|
||||
|
@ -151,7 +151,7 @@ if (!empty($rs2)) {
|
|||
// ORE
|
||||
echo '
|
||||
<td style="border-right:1px solid #aaa;">
|
||||
{[ "type": "number", "name": "ore['.$id.']", "value": "'.$ore.'", "disabled": 1 ]}
|
||||
{[ "type": "number", "name": "ore['.$id.']", "value": "'.$ore.'", "disabled": 1, "class": "small-width" ]}
|
||||
|
||||
<div class="extra hide">
|
||||
<table class="table table-condensed table-bordered">
|
||||
|
@ -165,7 +165,7 @@ if (!empty($rs2)) {
|
|||
// KM
|
||||
echo '
|
||||
<td style="border-right:1px solid #aaa;">
|
||||
{[ "type": "number", "name": "km['.$id.']", "value": "'.$km.'" ]}
|
||||
{[ "type": "number", "name": "km['.$id.']", "value": "'.$km.'", "class": "small-width" ]}
|
||||
|
||||
<div class="extra hide">
|
||||
<table class="table table-condensed table-bordered">
|
||||
|
@ -200,7 +200,7 @@ if (!empty($rs2)) {
|
|||
<td style="border-right:1px solid #aaa;">';
|
||||
if ($user['idanagrafica'] == 0 || $show_costi) {
|
||||
echo '
|
||||
{[ "type": "number", "name": "sconto['.$id.']", "value": "'.$sconto_unitario.'", "icon-after": "choice|untprc|'.$tipo_sconto.'" ]}';
|
||||
{[ "type": "number", "name": "sconto['.$id.']", "value": "'.$sconto_unitario.'", "icon-after": "choice|untprc|'.$tipo_sconto.'", "class": "small-width" ]}';
|
||||
} else {
|
||||
echo '
|
||||
<input type="hidden" name="sconto['.$id.']" value="'.Translator::numberToLocale($sconto_unitario).'" />
|
||||
|
@ -215,7 +215,7 @@ if (!empty($rs2)) {
|
|||
<td style="border-right:1px solid #aaa;">';
|
||||
if ($user['idanagrafica'] == 0 || $show_costi) {
|
||||
echo '
|
||||
{[ "type": "number", "name": "scontokm['.$id.']", "value": "'.$scontokm_unitario.'", "icon-after": "choice|untprc|'.$tipo_scontokm.'" ]}';
|
||||
{[ "type": "number", "name": "scontokm['.$id.']", "value": "'.$scontokm_unitario.'", "icon-after": "choice|untprc|'.$tipo_scontokm.'", "class": "small-width" ]}';
|
||||
} else {
|
||||
echo '
|
||||
<input type="hidden" name="scontokm['.$id.']" value="'.Translator::numberToLocale($scontokm_unitario).'" />
|
||||
|
|
|
@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php';
|
|||
unset($_SESSION['superselect']['idanagrafica']);
|
||||
$_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
|
||||
|
||||
if ($records[0]['firma_file'] == '') {
|
||||
if (empty($records[0]['firma_file'])) {
|
||||
$frase = tr('Anteprima e firma');
|
||||
$info_firma = '';
|
||||
} else {
|
||||
|
@ -13,7 +13,7 @@ if ($records[0]['firma_file'] == '') {
|
|||
$info_firma = '<span class="label label-success"><i class="fa fa-edit"></i> '.tr('Firmato il _DATE_ alle _TIME_ da _PERSON_', [
|
||||
'_DATE_' => Translator::dateToLocale($records[0]['firma_data']),
|
||||
'_TIME_' => Translator::timeToLocale($records[0]['firma_data']),
|
||||
'_NUM_' => '<b>'.$records[0]['firma_nome'].'</b>',
|
||||
'_PERSON_' => '<b>'.$records[0]['firma_nome'].'</b>',
|
||||
]).'</span>';
|
||||
}
|
||||
|
||||
|
@ -259,7 +259,7 @@ if ($records[0]['firma_file'] == '') {
|
|||
<div class="alert alert-success"><i class="fa fa-check"></i> '.tr('Firmato il _DATE_ alle _TIME_ da _PERSON_', [
|
||||
'_DATE_' => Translator::dateToLocale($records[0]['firma_data']),
|
||||
'_TIME_' => Translator::timeToLocale($records[0]['firma_data']),
|
||||
'_NUM_' => '<b>'.$records[0]['firma_nome'].'</b>',
|
||||
'_PERSON_' => '<b>'.$records[0]['firma_nome'].'</b>',
|
||||
]).'</div>';
|
||||
}
|
||||
?>
|
||||
|
|
|
@ -66,7 +66,7 @@ switch ($op) {
|
|||
// Eliminazione file
|
||||
if (post('delete_immagine') !== null) {
|
||||
$filename = basename(post('immagine'));
|
||||
unlink($upload_dir.'/'.$filename);
|
||||
delete($upload_dir.'/'.$filename);
|
||||
|
||||
$dbo->query("UPDATE my_impianti SET immagine='' WHERE id=".prepare($id_record));
|
||||
}
|
||||
|
|
|
@ -123,7 +123,7 @@ include $docroot.'/templates/replace.php';
|
|||
|
||||
// Individuazione dellla configurazione
|
||||
$directory = dirname($filename);
|
||||
if (!empty($filename) && ((is_dir($directory) && !is_writable($directory)) || (!is_dir($directory) && !create_dir($directory)))) {
|
||||
if (!empty($filename) && !directory($directory)) {
|
||||
$error = tr('Non hai i permessi per creare directory e files in _DIRECTORY_', [
|
||||
'_DIRECTORY_' => $directory,
|
||||
]);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
if (file_exists($docroot.'/lib/jscripts/fullcalendar.min.js')) {
|
||||
@unlink($docroot.'/lib/jscripts/fullcalendar.min.js');
|
||||
delete($docroot.'/lib/jscripts/fullcalendar.min.js');
|
||||
}
|
||||
|
||||
// Riporto su ogni riga della fattura la relativa rivalsa inps e ritenuta d'acconto se impostate
|
||||
|
|
|
@ -87,8 +87,11 @@ for ($i = 0; $i < sizeof($rs); ++$i) {
|
|||
}
|
||||
|
||||
// Eliminazione vecchi file
|
||||
@unlink($docroot.'/share/themes/default/css/font-awesome.css');
|
||||
@deltree($docroot.'/modules/preventivi/js/');
|
||||
$files = [
|
||||
$docroot.'/share/themes/default/css/font-awesome.css',
|
||||
$docroot.'/modules/preventivi/js/'
|
||||
];
|
||||
delete($files);
|
||||
|
||||
/*
|
||||
* Spostamento agente di riferimento su nuova tabella an_anagrafiche_agenti
|
||||
|
|
|
@ -59,23 +59,12 @@ $database->query('ALTER TABLE `zz_files` DROP `data`');
|
|||
* Rimozione file e cartelle deprecati
|
||||
*/
|
||||
|
||||
// Cartelle deprecate
|
||||
$dirs = [
|
||||
// File e cartelle deprecate
|
||||
$files = [
|
||||
'lib/jscripts',
|
||||
'lib/html2pdf',
|
||||
'widgets',
|
||||
'share',
|
||||
];
|
||||
|
||||
foreach ($dirs as $dir) {
|
||||
$dir = realpath($docroot.'/'.$dir);
|
||||
if (is_dir($dir)) {
|
||||
deltree($dir);
|
||||
}
|
||||
}
|
||||
|
||||
// File deprecati
|
||||
$files = [
|
||||
'lib/class.phpmailer.php',
|
||||
'lib/class.pop3.php',
|
||||
'lib/class.smtp.php',
|
||||
|
@ -99,13 +88,12 @@ $files = [
|
|||
'README',
|
||||
];
|
||||
|
||||
foreach ($files as $file) {
|
||||
$file = realpath($docroot.'/'.$file);
|
||||
if (file_exists($file)) {
|
||||
unlink($file);
|
||||
}
|
||||
foreach ($files as $key => $value) {
|
||||
$files[$key] = realpath($docroot.'/'.$value);
|
||||
}
|
||||
|
||||
delete($files);
|
||||
|
||||
// File .html dei moduli di default
|
||||
// Per un problema sulla lunghezza massima del path su glob è necessario dividere le cartelle dei moduli di default da pulire
|
||||
$dirs = [
|
||||
|
@ -149,7 +137,5 @@ $pieces = array_chunk($dirs, 5);
|
|||
|
||||
foreach ($pieces as $piece) {
|
||||
$files = glob($docroot.'/modules/{'.implode(',', $piece).'}/*.html', GLOB_BRACE);
|
||||
foreach ($files as $file) {
|
||||
unlink($file);
|
||||
}
|
||||
delete($files);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue