From 13b5adffac83f430afa6d502b5748937da44c812 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Sat, 3 Feb 2024 18:42:00 +0100 Subject: [PATCH] 1.4.20 auto update avec messages d'erreurs --- README.md | 2 +- core/core.php | 2 +- core/module/install/install.php | 30 +++++++++++++------ core/module/install/view/update/update.js.php | 18 +++++------ core/module/install/view/update/update.php | 2 +- 5 files changed, 32 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 86693a8..5fe3d43 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ZwiiCampus 1.4.16 +# ZwiiCampus 1.4.20 ZwiiCampus (Learning Management System) est logiciel auteur destiné à mettre en ligne des tutoriels. Il dispose de plusieurs modalités d'ouverture et d'accès des contenus. Basé sur la version 13 du CMS Zwii, la structure logicielle est solide, le framework de Zwii est éprouvé. diff --git a/core/core.php b/core/core.php index 8b387a0..5099da7 100644 --- a/core/core.php +++ b/core/core.php @@ -51,7 +51,7 @@ class common const ACCESS_TIMER = 1800; // Numéro de version - const ZWII_VERSION = '1.4.19'; + const ZWII_VERSION = '1.4.20'; // URL autoupdate const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/campus-update/raw/branch/master/'; diff --git a/core/module/install/install.php b/core/module/install/install.php index 7b5af8c..19a93d3 100644 --- a/core/module/install/install.php +++ b/core/module/install/install.php @@ -248,11 +248,11 @@ class install extends common $message = $success ? '' : 'Erreur de copie du fichier htaccess'; } // Nettoyage des fichiers d'installation précédents - if (file_exists(self::TEMP_DIR . 'update.tar.gz') && $success) { + if ($success && file_exists(self::TEMP_DIR . 'update.tar.gz')) { $success = unlink(self::TEMP_DIR . 'update.tar.gz'); $message = $success ? '' : 'Impossible d\'effacer la mise à jour précédente'; } - if (file_exists(self::TEMP_DIR . 'update.tar') && $success) { + if ($success && file_exists(self::TEMP_DIR . 'update.tar')) { $success = unlink(self::TEMP_DIR . 'update.tar'); $message = $success ? '' : 'Impossible d\'effacer la mise à jour précédente'; } @@ -267,6 +267,8 @@ class install extends common break; // Téléchargement case 2: + $success = true; + $message = ''; file_put_contents(self::TEMP_DIR . 'update.tar.gz', helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/update.tar.gz')); $md5origin = helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/update.md5'); $md5origin = explode(' ', $md5origin); @@ -277,7 +279,7 @@ class install extends common $message = ""; } else { $success = false; - $message = json_encode('Erreur de téléchargement ou de somme de contrôle', JSON_UNESCAPED_UNICODE); + $message = 'Erreur de téléchargement ou de somme de contrôle'; if (file_exists(self::TEMP_DIR . 'update.tar.gz')) { unlink(self::TEMP_DIR . 'update.tar.gz'); http_response_code(500); @@ -289,15 +291,20 @@ class install extends common 'display' => self::DISPLAY_JSON, 'content' => [ 'success' => $success, - 'data' => $message + 'data' => json_encode($message, JSON_UNESCAPED_UNICODE) ] ]); break; // Installation case 3: $success = true; + $message = ''; + // Check la réécriture d'URL avant d'écraser les fichiers - $rewrite = helper::checkRewrite(); + if (helper::checkRewrite()) { + touch(self::DATA_DIR . '.rewrite'); + } + // Décompression et installation try { // Décompression dans le dossier de fichier temporaires @@ -306,9 +313,11 @@ class install extends common // Installation $pharData->extractTo(__DIR__ . '/../../../', null, true); } catch (Exception $e) { + $message = $e->getMessage(); $success = false; http_response_code(500); } + // Nettoyage du dossier if (file_exists(self::TEMP_DIR . 'update.tar.gz')) { unlink(self::TEMP_DIR . 'update.tar.gz'); @@ -316,12 +325,13 @@ class install extends common if (file_exists(self::TEMP_DIR . 'update.tar')) { unlink(self::TEMP_DIR . 'update.tar'); } + // Valeurs en sortie $this->addOutput([ 'display' => self::DISPLAY_JSON, 'content' => [ 'success' => $success, - 'data' => $rewrite + 'data' => json_encode($message, JSON_UNESCAPED_UNICODE) ] ]); break; @@ -329,7 +339,6 @@ class install extends common case 4: $success = true; $message = ''; - $rewrite = $this->getInput('data'); /** * Restaure le fichier htaccess @@ -350,7 +359,7 @@ class install extends common /** * Restaure la réécriture d'URL */ - if ($rewrite === 'true') { // Ajout des lignes dans le .htaccess + if (file_exists(self::DATA_DIR . '.rewrite')) { // Ajout des lignes dans le .htaccess $fileContent = file_get_contents('.htaccess'); $rewriteData = PHP_EOL . '# URL rewriting' . PHP_EOL . @@ -367,6 +376,7 @@ class install extends common '.htaccess', $fileContent ); + unlink(self::DATA_DIR . '.rewrite'); } } @@ -378,7 +388,6 @@ class install extends common $defaultLanguages = init::$defaultData['language']; foreach ($installedLanguages as $key => $value) { - //var_dump( $defaultLanguages[$key]['date'] > $value['date'] ); if ( isset($defaultLanguages[$key]['date']) && $defaultLanguages[$key]['date'] > $value['date'] && @@ -419,10 +428,13 @@ class install extends common } else { // Nouvelle version self::$newVersion = helper::getUrlContents(common::ZWII_UPDATE_URL . common::ZWII_UPDATE_CHANNEL . '/version'); + // Variable de version if (helper::checkNewVersion(common::ZWII_UPDATE_CHANNEL)) { self::$updateButtonText = helper::translate('Mise à jour'); } + + // Valeurs en sortie $this->addOutput([ 'display' => self::DISPLAY_LAYOUT_LIGHT, diff --git a/core/module/install/view/update/update.js.php b/core/module/install/view/update/update.js.php index 5297f34..f15f9d3 100644 --- a/core/module/install/view/update/update.js.php +++ b/core/module/install/view/update/update.js.php @@ -1,7 +1,7 @@ function step(i, data) { var errors = ["", "", "", ""]; $(".installUpdateProgressText").hide(), $(".installUpdateProgressText[data-id=" + i + "]").show(); - + $("body").css("cursor", "wait"); $.ajax({ @@ -12,11 +12,6 @@ function step(i, data) { data: data }, success: function (result) { - // if (result.success != "1") { // Vérification de la propriété "success" - // Appel de la fonction de gestion d'erreur - // showError(i, result, errors); - // return; - //} setTimeout((function () { if (4 === i) { $("#installUpdateSuccess").show(); @@ -60,10 +55,13 @@ function showError(step, message, errors) { const jsonData = JSON.parse(jsonString); // Afficher les résultats - $("#installUpdateErrorMessage").html("Détails de l'erreur :
" + - jsonData.data.replace(/^"(.*)"$/, '$1') + - "
" + - warningMessage.replace(/<[^p].*?>/g, "")); + if (jsonData) { + $("#installUpdateErrorMessage").html("Détails de l'erreur :
" + + jsonData.data.replace(/^"(.*)"$/, '$1') + + "
" + + warningMessage.replace(/<[^p].*?>/g, "")); + } + } else { // Vous pouvez également faire quelque chose d'autre ici, par exemple, afficher un message à l'utilisateur, etc. $("#installUpdateErrorMessage").html(message); diff --git a/core/module/install/view/update/update.php b/core/module/install/view/update/update.php index f4cf3b2..9e951e5 100644 --- a/core/module/install/view/update/update.php +++ b/core/module/install/view/update/update.php @@ -5,7 +5,7 @@   - . +