Store Fonction importModule pour le store et l'import de zip

This commit is contained in:
Fred Tempez 2021-03-25 17:56:31 +01:00
parent 8112e732d7
commit 39e6e38107
2 changed files with 87 additions and 58 deletions

View File

@ -25,7 +25,8 @@ class addon extends common {
'import' => self::GROUP_ADMIN, 'import' => self::GROUP_ADMIN,
'store' => self::GROUP_ADMIN, 'store' => self::GROUP_ADMIN,
'item' => self::GROUP_ADMIN, 'item' => self::GROUP_ADMIN,
'upload' => self::GROUP_ADMIN 'upload' => self::GROUP_ADMIN,
'storeDownload'=> self::GROUP_ADMIN
]; ];
// Gestion des modules // Gestion des modules
@ -235,15 +236,24 @@ class addon extends common {
mb_detect_encoding(strftime('%d %B %Y', $store[$key]['fileDate']), 'UTF-8', true) mb_detect_encoding(strftime('%d %B %Y', $store[$key]['fileDate']), 'UTF-8', true)
? strftime('%d %B %Y', $store[$key]['fileDate']) ? strftime('%d %B %Y', $store[$key]['fileDate'])
: utf8_encode(strftime('%d %B %Y', $store[$key]['fileDate'])), : utf8_encode(strftime('%d %B %Y', $store[$key]['fileDate'])),
implode(', ',array_keys($inPages,$key)) === '' template::button('moduleExport' . $key, [
? template::button('moduleExport' . $key, [
'class' => 'buttonBlue', 'class' => 'buttonBlue',
'href' => helper::baseUrl(). $this->getUrl(0) . '/installModule/' . $key.'/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre 'href' => helper::baseUrl(). $this->getUrl(0) . '/storeDownload/' . $key.'/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
'value' => template::ico('download') 'value' => template::ico('download')
]) ])
: ''
]; ];
/**
* implode(', ',array_keys($inPages,$key)) === ''
* ? template::button('moduleExport' . $key, [
* 'class' => 'buttonBlue',
* 'href' => helper::baseUrl(). $this->getUrl(0) . '/installModule/' . $key.'/' . $_SESSION['csrf'],// appel de fonction vaut exécution, utiliser un paramètre
* 'value' => template::ico('download')
* ])
* : ''
* ];
*/
} }
} }
@ -321,7 +331,7 @@ class addon extends common {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'title' => 'Gestion des modules', 'title' => 'Modules installés',
'view' => 'index' 'view' => 'index'
]); ]);
} }
@ -448,6 +458,45 @@ class addon extends common {
if($this->isPost()) { if($this->isPost()) {
// Récupérer le fichier et le décompacter // Récupérer le fichier et le décompacter
$zipFilename = $this->getInput('addonImportFile', helper::FILTER_STRING_SHORT, true); $zipFilename = $this->getInput('addonImportFile', helper::FILTER_STRING_SHORT, true);
$list = $this->importModule($zipFilename);
if( $list !== '' ){
$success = false;
strpos( $list, ',') === false ? $notification = 'Import impossible la page suivante doit être renommée :'.$list : $notification = 'Import impossible les pages suivantes doivent être renommées :'.$list;
}
else{
$success = true;
$notification = 'Import réussi';
}
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'addon',
'state' => $success,
'notification' => $notification
]);
}
// Valeurs en sortie
$this->addOutput([
'title' => 'Importer des données de module',
'view' => 'import'
]);
}
}
/**
* Téléchargement d'un module à partir du store
*/
public function storeDownload() {
}
/**
* Installation d'un module
* @param moduleName url du module à installer
*/
private function installModule($moduleName) {
$tempFolder = uniqid(); $tempFolder = uniqid();
mkdir (self::TEMP_DIR . $tempFolder); mkdir (self::TEMP_DIR . $tempFolder);
$zip = new ZipArchive(); $zip = new ZipArchive();
@ -494,26 +543,6 @@ class addon extends common {
// Supprimer le dossier temporaire // Supprimer le dossier temporaire
$this->removeDir(self::TEMP_DIR . $tempFolder); $this->removeDir(self::TEMP_DIR . $tempFolder);
$zip->close(); $zip->close();
if( $list !== '' ){ return($list);
$success = false;
strpos( $list, ',') === false ? $notification = 'Import impossible la page suivante doit être renommée :'.$list : $notification = 'Import impossible les pages suivantes doivent être renommées :'.$list;
}
else{
$success = true;
$notification = 'Import réussi';
}
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'addon',
'state' => $success,
'notification' => $notification
]);
}
// Valeurs en sortie
$this->addOutput([
'title' => 'Importer des données de module',
'view' => 'import'
]);
}
} }
} }

View File

@ -15,7 +15,7 @@
</div> </div>
</div> </div>
<?php if($module::$storeList): ?> <?php if($module::$storeList): ?>
<?php echo template::table([4, 3, 4, 1], $module::$storeList, ['Module', 'Version', 'Date', 'Installer']); ?> <?php echo template::table([4, 3, 4, 1], $module::$storeList, ['Module', 'Version', 'Date', 'Télécharger']); ?>
<?php else: ?> <?php else: ?>
<?php echo template::speech('Le catalogue est vide.'); ?> <?php echo template::speech('Le catalogue est vide.'); ?>
<?php endif; ?> <?php endif; ?>