vérification de l'archive de thème importée
This commit is contained in:
parent
65a064ef92
commit
89ab970806
@ -6,7 +6,9 @@
|
|||||||
- Filtrage des pages affichées dans la configuration et initialisation après une mise à jour.
|
- Filtrage des pages affichées dans la configuration et initialisation après une mise à jour.
|
||||||
- Pages de recherche et des mentions vides, modification de la valeur en l'absence de choix.
|
- Pages de recherche et des mentions vides, modification de la valeur en l'absence de choix.
|
||||||
- Libellé des pages d'erreur non sélectionnées "Page par défaut"
|
- Libellé des pages d'erreur non sélectionnées "Page par défaut"
|
||||||
- Erreur de position du menu fixe en haut de page, recharge la classe après la perte de la session.
|
- Erreur de position du menu fixe en haut de page des membres simples et dans après une déconnexion automatique
|
||||||
|
- Modification :
|
||||||
|
- Extraction d'une archive : vérification du contenu avant import.
|
||||||
|
|
||||||
## version 10.3.00
|
## version 10.3.00
|
||||||
- Corrections :
|
- Corrections :
|
||||||
|
47
core/module/theme/theme.php
Normal file → Executable file
47
core/module/theme/theme.php
Normal file → Executable file
@ -610,32 +610,50 @@ class theme extends common {
|
|||||||
public function manage() {
|
public function manage() {
|
||||||
if($this->isPost() ) {
|
if($this->isPost() ) {
|
||||||
$zipFilename = $this->getInput('themeManageImport', helper::FILTER_STRING_SHORT, true);
|
$zipFilename = $this->getInput('themeManageImport', helper::FILTER_STRING_SHORT, true);
|
||||||
|
$tempFolder = uniqid();
|
||||||
$zip = new ZipArchive();
|
$zip = new ZipArchive();
|
||||||
if ($zip->open(self::FILE_DIR.'source/'.$zipFilename) === TRUE) {
|
if ($zip->open(self::FILE_DIR.'source/'.$zipFilename) === TRUE) {
|
||||||
$zip->extractTo('.');
|
mkdir (self::TEMP_DIR . $tempFolder);
|
||||||
|
$zip->extractTo(self::TEMP_DIR . $tempFolder );
|
||||||
|
// Archive de thème ?
|
||||||
|
if ( file_exists(self::TEMP_DIR . $tempFolder . '/site/data/custom.css')
|
||||||
|
AND file_exists(self::TEMP_DIR . $tempFolder . '/site/data/theme.css')
|
||||||
|
AND file_exists(self::TEMP_DIR . $tempFolder . '/site/data/theme.json') ) {
|
||||||
|
// traiter l'archive
|
||||||
|
$success = $zip->extractTo('.');
|
||||||
|
// traitement de l'erreur
|
||||||
|
$notification = $success ? 'Le thème a été importé' : 'Erreur lors de l\'extraction, vérifiez les permissions.';
|
||||||
|
// Supprimmer le dossier temporaire
|
||||||
|
$install = new install;
|
||||||
|
$install->removeAll(self::TEMP_DIR . $tempFolder);
|
||||||
|
} else {
|
||||||
|
// pas une archive de thème
|
||||||
|
$success = false;
|
||||||
|
$notification = 'Ce n\'est pas l\'archive d\'un thème !';
|
||||||
|
}
|
||||||
$zip->close();
|
$zip->close();
|
||||||
|
} else {
|
||||||
|
// erreur à l'ouverture
|
||||||
|
$success = false;
|
||||||
|
$notification = 'Impossible d\'ouvrir l\'archive';
|
||||||
|
}
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'redirect' => helper::baseUrl() . 'theme'
|
'notification' => $notification,
|
||||||
]);
|
'state' => $success,
|
||||||
} else {
|
'title' => 'Gestion des thèmes',
|
||||||
$this->addOutput([
|
'view' => 'manage'
|
||||||
'notification' => 'Erreur avec le thème <b>'.$zipFilename.'</b>',
|
]);;
|
||||||
'redirect' => helper::baseUrl() . 'theme/manage'
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => 'Gestion des thèmes',
|
'title' => 'Gestion des thèmes',
|
||||||
'view' => 'manage'
|
'view' => 'manage'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Export du thème
|
* Export du thème
|
||||||
*/
|
*/
|
||||||
@ -651,7 +669,7 @@ class theme extends common {
|
|||||||
readfile(self::TEMP_DIR . $zipFilename);
|
readfile(self::TEMP_DIR . $zipFilename);
|
||||||
// Nettoyage du dossier
|
// Nettoyage du dossier
|
||||||
unlink (self::TEMP_DIR . $zipFilename);
|
unlink (self::TEMP_DIR . $zipFilename);
|
||||||
die();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -679,7 +697,7 @@ class theme extends common {
|
|||||||
* construction du zip
|
* construction du zip
|
||||||
* @param string $modele theme ou admin
|
* @param string $modele theme ou admin
|
||||||
*/
|
*/
|
||||||
public function makezip($modele) {
|
private function makezip($modele) {
|
||||||
// Creation du dossier
|
// Creation du dossier
|
||||||
$zipFilename = $modele . ' ' .date('d m Y').' '.date('H i s ').'.zip';
|
$zipFilename = $modele . ' ' .date('d m Y').' '.date('H i s ').'.zip';
|
||||||
$zip = new ZipArchive();
|
$zip = new ZipArchive();
|
||||||
@ -709,4 +727,5 @@ class theme extends common {
|
|||||||
}
|
}
|
||||||
return ($zipFilename);
|
return ($zipFilename);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user