12009 fix plugin install from store
This commit is contained in:
parent
f6600201fe
commit
cacc9e50eb
@ -263,6 +263,7 @@ class helper
|
|||||||
}
|
}
|
||||||
// Affection
|
// Affection
|
||||||
$modules[$value] = [
|
$modules[$value] = [
|
||||||
|
'name' => $value,
|
||||||
'realName' => $realName,
|
'realName' => $realName,
|
||||||
'version' => $version,
|
'version' => $version,
|
||||||
'update' => $update,
|
'update' => $update,
|
||||||
|
@ -32,7 +32,7 @@ class plugin extends common
|
|||||||
|
|
||||||
// URL des modules
|
// URL des modules
|
||||||
const BASEURL_STORE = 'https://store.zwiicms.fr/';
|
const BASEURL_STORE = 'https://store.zwiicms.fr/';
|
||||||
const MODULE_STORE = 'modules-pour-zwii-v115/';
|
const MODULE_STORE = 'modules/';
|
||||||
|
|
||||||
// Gestion des modules
|
// Gestion des modules
|
||||||
public static $modulesData = [];
|
public static $modulesData = [];
|
||||||
@ -103,14 +103,12 @@ class plugin extends common
|
|||||||
|
|
||||||
// Dossier temporaire
|
// Dossier temporaire
|
||||||
$tempFolder = uniqid() . '/';
|
$tempFolder = uniqid() . '/';
|
||||||
//$tempFolder = 'truc/';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Désarchivage
|
* Désarchivage
|
||||||
*/
|
*/
|
||||||
$zip = new ZipArchive();
|
$zip = new ZipArchive();
|
||||||
if ($zip->open($moduleFileName) === TRUE) {
|
if ($zip->open($moduleFileName) === true) {
|
||||||
|
|
||||||
|
|
||||||
//Création du dossier temporaire et extraction
|
//Création du dossier temporaire et extraction
|
||||||
if (!is_dir(self::TEMP_DIR . $tempFolder)) {
|
if (!is_dir(self::TEMP_DIR . $tempFolder)) {
|
||||||
@ -128,8 +126,8 @@ class plugin extends common
|
|||||||
* 'download" => 'module/download'
|
* 'download" => 'module/download'
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (file_exists(self::TEMP_DIR . $tempFolder . 'desc.json')) {
|
if (file_exists(self::TEMP_DIR . $tempFolder . 'enum.json')) {
|
||||||
$module = json_decode(file_get_contents(self::TEMP_DIR . $tempFolder . 'desc.json'), true);
|
$module = json_decode(file_get_contents(self::TEMP_DIR . $tempFolder . 'enum.json'), true);
|
||||||
} else {
|
} else {
|
||||||
// Message de retour
|
// Message de retour
|
||||||
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
||||||
@ -139,10 +137,10 @@ class plugin extends common
|
|||||||
'notification' => helper::translate('Archive invalide, le descripteur est absent')
|
'notification' => helper::translate('Archive invalide, le descripteur est absent')
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validation des informations du descripteur
|
* Validation des informations du descripteur
|
||||||
*/
|
*/
|
||||||
|
if (isset($module['dirs'])) {
|
||||||
foreach ($module['dirs'] as $src => $dest) {
|
foreach ($module['dirs'] as $src => $dest) {
|
||||||
// Vérification de la présence des dossier décrits
|
// Vérification de la présence des dossier décrits
|
||||||
if (!is_dir(self::TEMP_DIR . $tempFolder . $src)) {
|
if (!is_dir(self::TEMP_DIR . $tempFolder . $src)) {
|
||||||
@ -165,11 +163,12 @@ class plugin extends common
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validation de la présence du fichier de base du module
|
* Validation de la présence du fichier de base du module
|
||||||
*/
|
*/
|
||||||
if (!file_exists(self::TEMP_DIR . $tempFolder . $module['name'] . '/' . $module['name'] . '.php')) {
|
if (!file_exists(self::TEMP_DIR . $tempFolder . $module['name'] . '.php')) {
|
||||||
// Message de retour
|
// Message de retour
|
||||||
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
||||||
$zip->close();
|
$zip->close();
|
||||||
@ -216,12 +215,14 @@ class plugin extends common
|
|||||||
|
|
||||||
// Installation ou mise à jour du module valides
|
// Installation ou mise à jour du module valides
|
||||||
if ($installOk) {
|
if ($installOk) {
|
||||||
// Copie récursive des dossiers
|
// Copie du module
|
||||||
|
$success = $this->copyDir(self::TEMP_DIR . $tempFolder, self::MODULE_DIR . $module['name']);
|
||||||
|
// Copie récursive des dossiers externes
|
||||||
foreach ($module['dirs'] as $src => $dest) {
|
foreach ($module['dirs'] as $src => $dest) {
|
||||||
if (!is_dir(self::TEMP_DIR . $tempFolder . $src)) {
|
if (!is_dir(self::TEMP_DIR . $tempFolder . $src)) {
|
||||||
mkdir(self::TEMP_DIR . $tempFolder . $src);
|
mkdir(self::TEMP_DIR . $tempFolder . $src);
|
||||||
}
|
}
|
||||||
$success = $this->copyDir(self::TEMP_DIR . $tempFolder . $src, $dest);
|
$success = $success && $this->copyDir(self::TEMP_DIR . $tempFolder . $src, $dest);
|
||||||
}
|
}
|
||||||
// Message de retour
|
// Message de retour
|
||||||
$t = isset($versionInstalled) ? helper::translate('actualisé') : helper::translate('installé');
|
$t = isset($versionInstalled) ? helper::translate('actualisé') : helper::translate('installé');
|
||||||
@ -261,10 +262,6 @@ class plugin extends common
|
|||||||
$checkValidMaj = $this->getInput('configModulesCheck', helper::FILTER_BOOLEAN);
|
$checkValidMaj = $this->getInput('configModulesCheck', helper::FILTER_BOOLEAN);
|
||||||
$zipFilename = $this->getInput('configModulesInstallation', helper::FILTER_STRING_SHORT);
|
$zipFilename = $this->getInput('configModulesInstallation', helper::FILTER_STRING_SHORT);
|
||||||
if ($zipFilename !== '') {
|
if ($zipFilename !== '') {
|
||||||
$success = [
|
|
||||||
'success' => false,
|
|
||||||
'notification' => ''
|
|
||||||
];
|
|
||||||
$state = $this->install(self::FILE_DIR . 'source/' . $zipFilename, $checkValidMaj);
|
$state = $this->install(self::FILE_DIR . 'source/' . $zipFilename, $checkValidMaj);
|
||||||
}
|
}
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -574,14 +571,11 @@ class plugin extends common
|
|||||||
|
|
||||||
// Descripteur de l'archive
|
// Descripteur de l'archive
|
||||||
$infoModule = helper::getModules();
|
$infoModule = helper::getModules();
|
||||||
|
|
||||||
//Nom de l'archive
|
//Nom de l'archive
|
||||||
$fileName = $moduleId . $infoModule[$moduleId]['version'] . '.zip';
|
$fileName = $moduleId . $infoModule[$moduleId]['version'] . '.zip';
|
||||||
|
|
||||||
// Création du descripteur si absent
|
// Régénération du module
|
||||||
if (!file_exists(self::MODULE_DIR . $moduleId . '/enum.json')) {
|
$success = file_put_contents(self::MODULE_DIR . $moduleId . '/enum.json', json_encode($infoModule[$moduleId]));
|
||||||
$success = file_put_contents(self::MODULE_DIR . $moduleId . '/enum.json', json_encode([$moduleId => $infoModule[$moduleId]]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Construire l'archive
|
// Construire l'archive
|
||||||
$this->makeZip(self::TEMP_DIR . $fileName, self::MODULE_DIR . $moduleId);
|
$this->makeZip(self::TEMP_DIR . $fileName, self::MODULE_DIR . $moduleId);
|
||||||
|
Loading…
Reference in New Issue
Block a user