[9.3.00] écriture sélective

This commit is contained in:
fredtempez 2019-08-10 12:10:17 +02:00
parent 093d8cf651
commit 6bce09f1e2
1 changed files with 73 additions and 32 deletions

View File

@ -484,45 +484,87 @@ class common {
/** /**
* Enregistre les données dans deux fichiers séparés * Enregistre les données dans deux fichiers séparés
* @keys array vide ou avec le tableau complet -> sauvegarde la totalité des données
* nombre de clés supérieur à 1 : écriture clé à clé.
*/ */
public function saveData() { public function saveData($keys = []) {
// Langue du frontend en cours d'édition // Langue du frontend en cours d'édition
// $lang = $this->readI18nData('frontend'); // $lang = $this->readI18nData('frontend');
$lang = 'fr'; $lang = 'fr';
// Sauvegarde par niveau // Fonction appelée sans paramètre ou avec la totalité du tableau
foreach (self::$dataStage as $stageId) { switch(count($keys)) {
// Stockage dans un sous-dossier localisé case 0:
// Le dossier de langue existe t-il ? case 1:
if (!file_exists(self::DATA_DIR . '/' . $lang)) { foreach (self::$dataStage as $stageId) {
mkdir (self::DATA_DIR . '/' . $lang); // Stockage dans un sous-dossier localisé
} // Le dossier de langue existe t-il ?
// Sous-dossier localisé if (!file_exists(self::DATA_DIR . '/' . $lang)) {
if ($stageId === 'page' || mkdir (self::DATA_DIR . '/' . $lang);
$stageId === 'module') { }
$folder = self::DATA_DIR . $lang . '/'; // Sous-dossier localisé
} else { if ($stageId === 'page' ||
$folder = self::DATA_DIR; $stageId === 'module') {
} $folder = self::DATA_DIR . $lang . '/';
//$store[$stageId] = new Flintstone\Flintstone($stageId, [ } else {
// 'dir' => $folder, $folder = self::DATA_DIR;
// 'ext' => 'json', }
// 'formatter' => new Flintstone\Formatter\JsonFormatter() $db[$stageId] = new \Prowebcraft\JsonDb([
// ]); 'name' => $stageId . '.json',
'dir' => $folder,
//$store[$stageId]->set($stageId,$this->getData([$stageId])); 'template' => self::TEMP_DIR . 'data.template.json'
]);
$db[$stageId] = new \Prowebcraft\JsonDb([ $db[$stageId]->set($stageId,$this->getData([$stageId]));
'name' => $stageId . '.json', $db[$stageId]->save;
'dir' => $folder }
]); break;
$db[$stageId]->set($stageId,$this->getData([$stageId])); // Appel avec des paramètres, initialisation de la classe
$db[$stageId]->save; case 2: case 3: case 4: case 5: case 6: case 7:
// Sous-dossier localisé
if ($keys[0] === 'page' ||
$keys[0] === 'module') {
$folder = self::DATA_DIR . $lang . '/';
} else {
$folder = self::DATA_DIR;
}
$db = new \Prowebcraft\JsonDb([
'name' => $keys[0] . '.json',
'dir' => $folder,
'template' => self::TEMP_DIR . 'data.template.json'
]);
// Appel avec paramètres, écriture des valeurs individuelles
case 2:
$db->set($keys[0],$keys[1]);
$db->save;
break;
case 3:
$db->set($keys[0] . '.' . $keys[1],$keys[2]);
$db->save;
break;
case 4:
$db->set($keys[0] . '.' . $keys[1] . '.' . $keys[2],$keys[3]);
$db->save;
break;
case 5:
$db->set($keys[0] . '.' . $keys[1] . '.' . $keys[2] . '.' . $keys[3] , $keys[4]);
$db->save;
break;
case 6:
$db->set($keys[0] . '.' . $keys[1] . '.' . $keys[2] . '.' . $keys[3] . '.' . $keys[4], $keys[5]);
$db->save;
break;
case 7:
$db->set($keys[0] . '.' . $keys[1] . '.' . $keys[2] . '.' . $keys[3] . '.' . $keys[4] . '.' . $keys[5], $keys[6]);
$db->save;
break;
} }
} }
/** /**
*
* Lecture des fichiers de données * Lecture des fichiers de données
* *
*/ */
@ -588,8 +630,7 @@ class common {
* Import des données de la version 9 * Import des données de la version 9
* Converti un fichier de données data.json puis le renomme * Converti un fichier de données data.json puis le renomme
*/ */
public function importDataV9() { public function importDataV9() {
// Détecter les fichiers d'une V9 // Détecter les fichiers d'une V9
if (file_exists(self::DATA_DIR . 'core.json') && if (file_exists(self::DATA_DIR . 'core.json') &&
file_exists(self::DATA_DIR . 'theme.json') && file_exists(self::DATA_DIR . 'theme.json') &&
@ -1387,7 +1428,7 @@ class core extends common {
// Enregistrement des données // Enregistrement des données
if($output['state'] !== false) { if($output['state'] !== false) {
$this->setData([$module->getData()]); $this->setData([$module->getData()]);
$this->saveData(); $this->saveData([$module->getData()]);
} }
// Notification // Notification
if($output['notification']) { if($output['notification']) {