12008 fix gestion des plugins quand aucun module est utilisé

This commit is contained in:
Fred Tempez 2022-12-19 08:46:45 +01:00
parent 0dca0487ec
commit 844ba88a1a
4 changed files with 39 additions and 38 deletions

View File

@ -1,6 +1,6 @@
# Changelog # Changelog
## Version 12.0.00 ## Version 12.0.08
### Nouveautés : ### Nouveautés :
- Compatiblité PHP 8.1 - Compatiblité PHP 8.1
- Module addon refondu et renommé plugin. - Module addon refondu et renommé plugin.

View File

@ -1,4 +1,4 @@
# ZwiiCMS 12.0.00 # ZwiiCMS 12.0.08
Zwii est un CMS sans base de données (flat-file) qui permet de créer et gérer facilement un site web sans aucune connaissance en programmation. Zwii est un CMS sans base de données (flat-file) qui permet de créer et gérer facilement un site web sans aucune connaissance en programmation.

View File

@ -49,7 +49,7 @@ class common
// Numéro de version // Numéro de version
const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/update/raw/branch/master/'; const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/update/raw/branch/master/';
const ZWII_VERSION = '12.0.00-beta07'; const ZWII_VERSION = '12.0.08';
const ZWII_UPDATE_CHANNEL = "test"; const ZWII_UPDATE_CHANNEL = "test";
public static $actions = []; public static $actions = [];

View File

@ -506,34 +506,35 @@ class plugin extends common
// Avec les commandes de sauvegarde et de restauration // Avec les commandes de sauvegarde et de restauration
self::$modulesData[] = []; self::$modulesData[] = [];
if ( if (
isset($pagesInfos) //&& isset($pagesInfos)
//array_key_exists(self::$i18nContent, $pagesInfos)
) { ) {
foreach ($i18nSites as $keyi18n => $valuei18n) { foreach ($i18nSites as $keyi18n => $valuei18n) {
foreach ($pagesInfos[$keyi18n] as $keyPage => $value) { if (isset($pagesInfos[$keyi18n])) {
if (isset($infoModules[$pagesInfos[$keyi18n][$keyPage]['moduleId']])) { foreach ($pagesInfos[$keyi18n] as $keyPage => $value) {
// Co[nstruire le tableau de sortie if (isset($infoModules[$pagesInfos[$keyi18n][$keyPage]['moduleId']])) {
self::$modulesData[] = [ // Construire le tableau de sortie
$infoModules[$pagesInfos[$keyi18n][$keyPage]['moduleId']]['realName'] . '&nbsp(' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . ')', self::$modulesData[] = [
$infoModules[$pagesInfos[$keyi18n][$keyPage]['moduleId']]['version'], $infoModules[$pagesInfos[$keyi18n][$keyPage]['moduleId']]['realName'] . '&nbsp(' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . ')',
template::flag($keyi18n, '20px') . '&nbsp<a href ="' . helper::baseUrl() . $keyPage . '" target="_blank">' . $pagesInfos[$keyi18n][$keyPage]['title'] . ' (' . $keyPage . ')</a>', $infoModules[$pagesInfos[$keyi18n][$keyPage]['moduleId']]['version'],
template::button('dataExport' . $keyPage, [ template::flag($keyi18n, '20px') . '&nbsp<a href ="' . helper::baseUrl() . $keyPage . '" target="_blank">' . $pagesInfos[$keyi18n][$keyPage]['title'] . ' (' . $keyPage . ')</a>',
'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/filemanager/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre template::button('dataExport' . $keyPage, [
'value' => template::ico('download-cloud'), 'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/filemanager/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre
'help' => 'Sauvegarder les données du module dans le gestionnaire de fichiers' 'value' => template::ico('download-cloud'),
]), 'help' => 'Sauvegarder les données du module dans le gestionnaire de fichiers'
template::button('dataExport' . $keyPage, [ ]),
'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/download/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre template::button('dataExport' . $keyPage, [
'value' => template::ico('download'), 'href' => helper::baseUrl() . $this->getUrl(0) . '/dataExport/download/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre
'help' => 'Sauvegarder et télécharger les données du module' 'value' => template::ico('download'),
]), 'help' => 'Sauvegarder et télécharger les données du module'
template::button('dataDelete' . $keyPage, [ ]),
'href' => helper::baseUrl() . $this->getUrl(0) . '/dataDelete/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre template::button('dataDelete' . $keyPage, [
'value' => template::ico('trash'), 'href' => helper::baseUrl() . $this->getUrl(0) . '/dataDelete/' . self::$i18nContent . '/' . $pagesInfos[$keyi18n][$keyPage]['moduleId'] . '/' . $keyPage . '/' . $_SESSION['csrf'], // appel de fonction vaut exécution, utiliser un paramètre
'class' => 'buttonRed dataDelete', 'value' => template::ico('trash'),
'help' => 'Détacher le module de la page', 'class' => 'buttonRed dataDelete',
]) 'help' => 'Détacher le module de la page',
]; ])
];
}
} }
} }
} }
@ -689,18 +690,18 @@ class plugin extends common
// Copier les données et le descripteur // Copier les données et le descripteur
$success = file_put_contents($tmpFolder . '/module.json', json_encode($moduleData)) === false ? false : true; $success = file_put_contents($tmpFolder . '/module.json', json_encode($moduleData)) === false ? false : true;
$success = $success && is_int(file_put_contents($tmpFolder . '/enum.json', json_encode( [$moduleId => $infoModule]))); $success = $success && is_int(file_put_contents($tmpFolder . '/enum.json', json_encode([$moduleId => $infoModule])));
// Le dossier du module s'il existe // Le dossier du module s'il existe
if (is_dir(self::DATA_DIR . $moduleId . '/' . $pageId )) { if (is_dir(self::DATA_DIR . $moduleId . '/' . $pageId)) {
// Copier le dossier des données // Copier le dossier des données
$success = $success && $this->copyDir(self::DATA_DIR . '/'. $moduleId . '/' . $pageId , $tmpFolder . '/dataDirectory' ); $success = $success && $this->copyDir(self::DATA_DIR . '/' . $moduleId . '/' . $pageId, $tmpFolder . '/dataDirectory');
} }
// Création du zip // Création du zip
$fileName = $lang . '-' . $moduleId . '-' . $pageId . '.zip'; $fileName = $lang . '-' . $moduleId . '-' . $pageId . '.zip';
$this->makeZip(self::TEMP_DIR . $fileName, $tmpFolder); $this->makeZip(self::TEMP_DIR . $fileName, $tmpFolder);
// Gestin de l'action // Gestin de l'action
if ($success) { if ($success) {
switch ($action) { switch ($action) {
@ -709,7 +710,7 @@ class plugin extends common
mkdir(self::FILE_DIR . 'source/modules'); mkdir(self::FILE_DIR . 'source/modules');
} }
if (file_exists(self::TEMP_DIR . $fileName)) { if (file_exists(self::TEMP_DIR . $fileName)) {
$success = $success && copy(self::TEMP_DIR . $fileName, self::FILE_DIR . 'source/modules/data' . $moduleId . '.zip'); $success = $success && copy(self::TEMP_DIR . $fileName, self::FILE_DIR . 'source/modules/data' . $moduleId . '.zip');
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . 'plugin', 'redirect' => helper::baseUrl() . 'plugin',
@ -782,9 +783,9 @@ class plugin extends common
// Copie des fichiers d'accompagnement // Copie des fichiers d'accompagnement
// Le dossier du module s'il existe // Le dossier du module s'il existe
if (is_dir($tmpFolder . '/dataDirectory' )) { if (is_dir($tmpFolder . '/dataDirectory')) {
// Copier le dossier des données // Copier le dossier des données
$this->copyDir($tmpFolder . '/dataDirectory' , self::DATA_DIR . '/' . $moduleId . '/'. $pageId ); $this->copyDir($tmpFolder . '/dataDirectory', self::DATA_DIR . '/' . $moduleId . '/' . $pageId);
} }
// Supprimer le dossier temporaire // Supprimer le dossier temporaire