From 20d5c4d2210b4cab28869fb69e3c5b948d38c191 Mon Sep 17 00:00:00 2001 From: SylvainLelievre Date: Sat, 20 Feb 2021 09:25:22 +0100 Subject: [PATCH] Modifications helper.class.php, addon.php export import --- core/class/helper.class.php | 4 +- core/module/addon/addon.php | 73 +++++++++++++++++-------------------- 2 files changed, 35 insertions(+), 42 deletions(-) diff --git a/core/class/helper.class.php b/core/class/helper.class.php index 34332ccd..8701bfa6 100755 --- a/core/class/helper.class.php +++ b/core/class/helper.class.php @@ -170,13 +170,13 @@ class helper { $delete = true; } // Constante DATADIRECTORY - if ( array_key_exists('DATADIRECTORY', $class_constants) + if ( array_key_exists('DATADIRECTORY', $class_constants) && $class_constants['DATADIRECTORY'] !== [] && is_array($class_constants['DATADIRECTORY']) ) { $dataDirectory = $value::DATADIRECTORY; } else { - $dataDirectory = ['fr/module.json']; + $dataDirectory = []; } // Affection $modules [$value] = [ diff --git a/core/module/addon/addon.php b/core/module/addon/addon.php index 7aac8f98..548f1c9b 100644 --- a/core/module/addon/addon.php +++ b/core/module/addon/addon.php @@ -289,40 +289,33 @@ class addon extends common { $inPages = helper::arrayCollumn($this->getData(['page']),'moduleId', 'SORT_DESC'); // Parcourir les pages utilisant le module foreach (array_keys($inPages,$this->getUrl(2)) as $pageId) { + // Export des pages hébergeant le module + $pageContent[$pageId] = $this->getData(['page',$pageId]); + // Export de fr/module.json + $moduleId = 'fr/module.json'; + // Création de l'arborescence des langues + // Pas de nom dossier de langue - dossier par défaut + $t = explode ('/',$moduleId); + if ( is_array($t)) { + $lang = 'fr'; + } else { + $lang = $t[0]; + } + // Créer le dossier si inexistant + if (!is_dir($tmpFolder . '/' . $lang)) { + mkdir ($tmpFolder . '/' . $lang); + } + // Sauvegarde si données non vides + $tmpData [$pageId] = $this->getData(['module',$pageId ]); + if ($tmpData [$pageId] !== null) { + file_put_contents($tmpFolder . '/' . $moduleId, json_encode($tmpData)); + } + // Export des données localisées dans des dossiers foreach ($infoModules[$this->getUrl(2)]['dataDirectory'] as $moduleId) { - // Export des pages hébergeant le module - $pageContent[$pageId] = $this->getData(['page',$pageId]); - /** - * Données module.json ? - */ - if (strpos($moduleId,'module.json')) { - // Création de l'arborescence des langues - // Pas de nom dossier de langue - dossier par défaut - $t = explode ('/',$moduleId); - if ( is_array($t)) { - $lang = 'fr'; - } else { - $lang = $t[0]; - } - // Créer le dossier si inexistant - if (!is_dir($tmpFolder . '/' . $lang)) { - mkdir ($tmpFolder . '/' . $lang); - } - // Sauvegarde si données non vides - $tmpData [$pageId] = $this->getData(['module',$pageId ]); - if ($tmpData [$pageId] !== null) { - file_put_contents($tmpFolder . '/' . $moduleId, json_encode($tmpData)); - } - } else { - /** - * Données dans un json personnalisé, le sauvegarder - * Dossier non localisé - */ if ( file_exists(self::DATA_DIR . '/' . $moduleId) && !file_exists($tmpFolder . '/' . $moduleId ) ) { $this->custom_copy ( self::DATA_DIR . '/' . $moduleId, $tmpFolder . '/' . $moduleId ); } - } } } // Enregistrement des pages dans le dossier de langue identique à module @@ -376,17 +369,17 @@ class addon extends common { $dataSource = array(); foreach (self::$i18nList as $key=>$value) { // Les Pages et les modules - foreach (['page','module'] as $fileTarget) - if (file_exists(self::TEMP_DIR . $tempFolder . '/' .$key . '/' . $fileTarget . '.json')) { - // Le dossier de langue existe - // faire la fusion - $dataSource = json_decode(file_get_contents(self::TEMP_DIR . $tempFolder . '/' .$key . '/' . $fileTarget . '.json'), true); - $dataTarget = json_decode(file_get_contents(self::DATA_DIR . $key . '/' . $fileTarget . '.json'), true); - $data [$fileTarget] = array_merge($dataTarget[$fileTarget], $dataSource); - file_put_contents(self::DATA_DIR . '/' .$key . '/' . $fileTarget . '.json', json_encode( $data ,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|LOCK_EX) ); - // Supprimer les fichiers importés - unlink (self::TEMP_DIR . $tempFolder . '/' .$key . '/' . $fileTarget . '.json'); - rmdir (self::TEMP_DIR . $tempFolder . '/' .$key); + foreach (['page','module'] as $fileTarget){ + if (file_exists(self::TEMP_DIR . $tempFolder . '/' .$key . '/' . $fileTarget . '.json')) { + // Le dossier de langue existe + // faire la fusion + $dataSource = json_decode(file_get_contents(self::TEMP_DIR . $tempFolder . '/' .$key . '/' . $fileTarget . '.json'), true); + $dataTarget = json_decode(file_get_contents(self::DATA_DIR . $key . '/' . $fileTarget . '.json'), true); + $data [$fileTarget] = array_merge($dataTarget[$fileTarget], $dataSource); + file_put_contents(self::DATA_DIR . '/' .$key . '/' . $fileTarget . '.json', json_encode( $data ,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|LOCK_EX) ); + // Supprimer les fichiers importés + unlink (self::TEMP_DIR . $tempFolder . '/' .$key . '/' . $fileTarget . '.json'); + } } }