1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-02 17:07:01 +01:00

Aggiunta possibilità di creazione backup escludendo la cartella files

This commit is contained in:
Luca 2024-03-02 23:04:03 +01:00
parent 20a4c9dc2e
commit cc834940d2
6 changed files with 64 additions and 38 deletions

View File

@ -79,5 +79,5 @@ if (in_array($id_cliente, $tipi_anagrafica) or in_array($id_fornitore, $tipi_ana
if (in_array($id_agente, $tipi_anagrafica)) { if (in_array($id_agente, $tipi_anagrafica)) {
// Aggiunta liquidazione provvigioni per agente // Aggiunta liquidazione provvigioni per agente
echo ' echo '
<button type="button" class="btn btn-primary" data-title="'.tr('Liquida Provvigioni').'" data-href="'.base_path().'/modules/anagrafiche/liquida_provvigioni.php?nome_stampa=Provvigioni&id_record='.$id_record.'" ><i class="fa fa-print"></i>'.tr(' Liquida Provvigioni').'</button>'; <button type="button" class="btn btn-primary" data-title="'.tr('Liquida Provvigioni').'" data-href="'.base_path().'/modules/anagrafiche/liquida_provvigioni.php?nome_stampa=Provvigioni&id_record='.$id_record.'" ><i class="fa fa-print"></i> '.tr('Liquida Provvigioni').'</button>';
} }

View File

@ -55,8 +55,14 @@ switch (filter('op')) {
break; break;
case 'backup': case 'backup':
$ignore_dirs = [];
if (!empty(filter('ignore_dirs'))){
$ignore_dirs = explode(',', filter('ignore_dirs'));
}
try { try {
$result = Backup::create(); $result = Backup::create($ignore_dirs);
if ($result) { if ($result) {
flash()->info(tr('Nuovo backup creato correttamente!')); flash()->info(tr('Nuovo backup creato correttamente!'));

View File

@ -82,7 +82,7 @@ function restore() {
} }
// Creazione backup // Creazione backup
function creaBackup(button){ function creaBackup(button, ignore_dirs = \'\'){
swal({ swal({
title: "'.tr('Nuovo backup').'", title: "'.tr('Nuovo backup').'",
text: "'.tr('Sei sicuro di voler creare un nuovo backup?').'", text: "'.tr('Sei sicuro di voler creare un nuovo backup?').'",
@ -99,6 +99,7 @@ function creaBackup(button){
type: "GET", type: "GET",
data: { data: {
id_module: globals.id_module, id_module: globals.id_module,
ignore_dirs: JSON.parse(JSON.stringify(ignore_dirs)),
op: "backup", op: "backup",
}, },
success: function(data) { success: function(data) {
@ -315,9 +316,22 @@ if (file_exists($backup_dir)) {
// Creazione backup // Creazione backup
if (!empty($backup_dir)) { if (!empty($backup_dir)) {
echo ' echo '
<button type="button" class="btn btn-primary pull-right" onclick="creaBackup(this)"> <div class="btn-group pull-right">
<i class="fa fa-database"></i> '.tr('Crea backup').'... <a class="btn btn-primary" aria-haspopup="true" aria-expanded="false" onclick="creaBackup(this)">
</button> <i class="fa fa-database"></i> '.tr('Crea backup').'
</a>
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu dropdown-menu-right">
<li>
<a class="clickable" data-toggle="modal" data-title="'.tr('Crea backup senza files').'" onclick="creaBackup(this, \'files\')">
<i class="fa fa-database"></i>'.tr('Crea backup senza files').'
</a>
</li>
</ul>
</div>
<div class="clearfix"></div>'; <div class="clearfix"></div>';
} }

View File

@ -45,40 +45,38 @@ if (isset($id_record)) {
//Pulsante Precedente e Successivo all'interno della scheda attività //Pulsante Precedente e Successivo all'interno della scheda attività
//Ricavo la query del modulo // RISULTATI VISIBILI
$module_query = Util\Query::getQuery(Models\Module::getCurrent()); $structure = Modules::get($id_module);
$where = [];
//Aggiunto eventuali filtri applicati alla vista
if (!empty(getSearchValues($id_module))) {
$having = [];
$search_values = getSearchValues($id_module);
foreach($search_values as $key => $value) {
$having[] = '`'.$key.'` LIKE "%'.$value.'%"';
}
foreach($having as $condition) {
$module_query = str_replace('2=2', '2=2 AND '.$condition, $module_query);
}
//Controllo se questo id_record è presente all'interno dei risultati, altrimenti non considero i filtri applicati alla vista //Ricavo la posizione per questo id_record
/*$query_test = str_replace('1=1', '1=1 AND `in_interventi`.`id` ='.prepare($id_record), $module_query); $where['id'] = $id_record;
if (count($database->FetchArray($query_test))>0) $posizione_query = Util\Query::getQuery($structure, $where, $order);
$module_query = $module_query;
else
$module_query = Util\Query::getQuery(Models\Module::getCurrent());*/
}
//Mi ricavo la posizione di questo id_record
$database->FetchArray('SET @posizione = 0;'); $database->FetchArray('SET @posizione = 0;');
$posizioni = $database->FetchArray($module_query); $posizione_attuale = $database->FetchOne($posizione_query)['posizione'];
foreach($posizioni as $posizione) {
if ($posizione['id'] == $id_record)
$posizione_attuale = $posizione['posizione']; unset($where['id']);
//Aggiungo eventuali filtri applicati alla vista
if (count(getSearchValues($id_module))>0) {
foreach(getSearchValues($id_module) as $key => $value) {
$where[$key] = $value;
}
} }
//Query del modulo
$module_query = Util\Query::getQuery($structure, $where, $order);
//Precedente
$prev_query = str_replace('2=2', '2=2 AND `posizione` ='.$posizione_attuale-1, $module_query); $prev_query = str_replace('2=2', '2=2 AND `posizione` ='.$posizione_attuale-1, $module_query);
$database->FetchArray('SET @posizione = 0;'); $database->FetchArray('SET @posizione = 0;');
$prev = $database->FetchOne($prev_query)['id']; $prev = $database->FetchOne($prev_query)['id'];
//Successivo
$next_query = str_replace('2=2', '2=2 AND `posizione` ='.$posizione_attuale+1, $module_query); $next_query = str_replace('2=2', '2=2 AND `posizione` ='.$posizione_attuale+1, $module_query);
$database->FetchArray('SET @posizione = 0;'); $database->FetchArray('SET @posizione = 0;');
$next = $database->FetchOne($next_query)['id']; $next = $database->FetchOne($next_query)['id'];

View File

@ -145,9 +145,11 @@ class Backup
/** /**
* Esegue il backup del progetto. * Esegue il backup del progetto.
* *
* @param array $ignore_dirs Eventuali dirs da ignorare
*
* @return bool * @return bool
*/ */
public static function create() public static function create($ignore_dirs)
{ {
self::checkSpace(); self::checkSpace();
@ -173,9 +175,17 @@ class Backup
'tests', 'tests',
'tmp', 'tmp',
'.git', '.git',
'.github',
], ],
]; ];
// Altri percorsi da ignorare
if ($ignore_dirs){
foreach ((array) $ignore_dirs as $value) {
$ignores['dirs'][] = basename($value);
}
}
if (string_starts_with($backup_dir, slashes(base_dir()))) { if (string_starts_with($backup_dir, slashes(base_dir()))) {
$ignores['dirs'][] = basename($backup_dir); $ignores['dirs'][] = basename($backup_dir);
} }

View File

@ -27,10 +27,8 @@ $id_module = Modules::get('Articoli')['id'];
// Valori di ricerca // Valori di ricerca
$where['servizio'] = '0'; $where['servizio'] = '0';
foreach ($_SESSION['module_'.$id_module] as $name => $value) { foreach(getSearchValues($id_module) as $key => $value) {
if (preg_match('/^search_(.+?)$/', $name, $m)) { $where[$key] = $value;
$where[$m[1]] = $value;
}
} }
$period_end = $_SESSION['period_end']; $period_end = $_SESSION['period_end'];