Option d'activation ou de suppression des fichiers back.json qui deviennent backup.json

This commit is contained in:
fredtempez 2021-01-06 19:31:55 +01:00
parent 6d184fb0e4
commit 7be1dff6aa
5 changed files with 37 additions and 13 deletions

View File

@ -132,8 +132,8 @@ class JsonDb extends \Prowebcraft\Dot
touch($this->db); touch($this->db);
} }
// Backup file // Backup file
if ($this->config['backup']) { if ($this->config['backup'] === true) {
copy ($this->db, str_replace('json' , 'back.json', $this->db)); copy ($this->db, str_replace('json' , 'backup.json', $this->db));
} }
if ( is_writable($this->db) ) { if ( is_writable($this->db) ) {
// 3 essais // 3 essais

View File

@ -44,7 +44,7 @@ class common {
const ACCESS_TIMER = 1800; const ACCESS_TIMER = 1800;
// Numéro de version // Numéro de version
const ZWII_VERSION = '10.4.00.011'; const ZWII_VERSION = '10.4.00.012';
const ZWII_UPDATE_CHANNEL = "v10"; const ZWII_UPDATE_CHANNEL = "v10";
public static $actions = []; public static $actions = [];
@ -168,10 +168,10 @@ class common {
// Descripteur de données Entrées / Sorties // Descripteur de données Entrées / Sorties
// Liste ici tous les fichiers de données // Liste ici tous les fichiers de données
private $dataFiles = [ private $dataFiles = [
'config' => '',
'page' => '', 'page' => '',
'module' => '', 'module' => '',
'core' => '', 'core' => '',
'config' => '',
'page' => '', 'page' => '',
'user' => '', 'user' => '',
'theme' => '', 'theme' => '',
@ -198,13 +198,13 @@ class common {
} }
// Instanciation de la classe des entrées / sorties // Instanciation de la classe des entrées / sorties
// Récupére les descripteurs // Récupère les descripteurs
foreach ($this->dataFiles as $keys => $value) { foreach ($this->dataFiles as $keys => $value) {
// Constructeur JsonDB // Constructeur JsonDB
$this->dataFiles[$keys] = new \Prowebcraft\JsonDb([ $this->dataFiles[$keys] = new \Prowebcraft\JsonDb([
'name' => $keys . '.json', 'name' => $keys . '.json',
'dir' => $this->dataPath ($keys,self::$i18nCurrent), 'dir' => $this->dataPath ($keys,self::$i18nCurrent),
'backup' => true 'backup' => $keys === 'config' ? true : $this->getData(['config','fileBackup'])
]);; ]);;
} }
@ -1565,6 +1565,18 @@ class common {
$this->setData(['locale','metaDescription',$this->getData(['config','metaDescription'])]); $this->setData(['locale','metaDescription',$this->getData(['config','metaDescription'])]);
$this->setData(['locale','title',$this->getData(['config','title'])]); $this->setData(['locale','title',$this->getData(['config','title'])]);
// Renommer les fichier de backup
if ($this->getInput('configAdvancedFileBackup', helper::FILTER_BOOLEAN) === false) {
$path = realpath('site/data');
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename)
{
echo "$filename</br>";
if (strpos($filename,'back.json')) {
rename($filename, str_replace('back.json','backup.json',$filename));
}
}
}
$this->setData(['core', 'dataVersion', 10400]); $this->setData(['core', 'dataVersion', 10400]);
/** /**

View File

@ -485,6 +485,7 @@ class config extends common {
[ [
'analyticsId' => $this->getInput('configAdvancedAnalyticsId'), 'analyticsId' => $this->getInput('configAdvancedAnalyticsId'),
'autoBackup' => $this->getInput('configAdvancedAutoBackup', helper::FILTER_BOOLEAN), 'autoBackup' => $this->getInput('configAdvancedAutoBackup', helper::FILTER_BOOLEAN),
'fileBackup' => $this->getInput('configAdvancedFileBackup', helper::FILTER_BOOLEAN),
'maintenance' => $this->getInput('configAdvancedMaintenance', helper::FILTER_BOOLEAN), 'maintenance' => $this->getInput('configAdvancedMaintenance', helper::FILTER_BOOLEAN),
'cookieConsent' => $this->getInput('configAdvancedCookieConsent', helper::FILTER_BOOLEAN), 'cookieConsent' => $this->getInput('configAdvancedCookieConsent', helper::FILTER_BOOLEAN),
'favicon' => $this->getInput('configAdvancedFavicon'), 'favicon' => $this->getInput('configAdvancedFavicon'),
@ -525,7 +526,17 @@ class config extends common {
] ]
] ]
]); ]);
// Efface les fichiers de backup lorsque l'option est désactivée
if ($this->getInput('configAdvancedFileBackup', helper::FILTER_BOOLEAN) === false) {
$path = realpath('site/data');
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename)
{
if (strpos($filename,'backup.json')) {
unlink($filename);
}
}
}
// Notice
if(self::$inputNotices === []) { if(self::$inputNotices === []) {
// Active la réécriture d'URL // Active la réécriture d'URL
$rewrite = $this->getInput('rewrite', helper::FILTER_BOOLEAN); $rewrite = $this->getInput('rewrite', helper::FILTER_BOOLEAN);
@ -572,12 +583,6 @@ class config extends common {
'state' => $success 'state' => $success
]); ]);
} }
// Initialisation du screen - APPEL AUTO DESACTIVE POUR EVITER UN RALENTISSEMENT
/*
if (!file_exists(self::FILE_DIR.'source/screenshot.jpg')) {
$this->configMetaImage();
}
*/
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'title' => 'Configuration avancée', 'title' => 'Configuration avancée',

View File

@ -101,6 +101,12 @@
'help' => '<p>Une archive contenant le dossier /site/data est copiée dans le dossier \'site/backup\'. La sauvegarde est conservée pendant 30 jours.</p><p>Les fichiers du site ne sont pas sauvegardés automatiquement.</p>' 'help' => '<p>Une archive contenant le dossier /site/data est copiée dans le dossier \'site/backup\'. La sauvegarde est conservée pendant 30 jours.</p><p>Les fichiers du site ne sont pas sauvegardés automatiquement.</p>'
]); ?> ]); ?>
</div> </div>
<div class="col4">
<?php echo template::checkbox('configAdvancedFileBackup', true, 'Copie de sauvegarde', [
'checked' => $this->getData(['config', 'fileBackup']),
'help' => '<p>Un fichier .backup.json est généré à chaque édition ou effacement d\'une donnée. La désactivation entraîne la suppression de ces fichiers.</p>'
]); ?>
</div>
</div> </div>
<div class="row"> <div class="row">
<div class="col4"> <div class="col4">

View File

@ -4,6 +4,7 @@ class init extends common {
'config' => [ 'config' => [
'analyticsId' => '', 'analyticsId' => '',
'autoBackup' => true, 'autoBackup' => true,
'fileBackup' => true,
'autoUpdate' => true, 'autoUpdate' => true,
'autoUpdateHtaccess' => false, 'autoUpdateHtaccess' => false,
'cookieConsent' => true, 'cookieConsent' => true,