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 @@
- .
+