2 bugs de thème : import admin et nettoyage tmp

This commit is contained in:
fredtempez 2020-10-25 22:49:28 +01:00
parent 8a66c3d1ae
commit ec59a0c77c
4 changed files with 23 additions and 19 deletions

View File

@ -1,8 +1,10 @@
# Changelog # Changelog
## version 10.3.04 ## version 10.3.04
- Correction : - Corrections :
- Position des entrées de menu sur les écrans de smartphone. - Position des entrées de menu sur les écrans de smartphone.
- Thème : import d'un thème, d'administration impossible.
- Thème : import d'un thème, nettoyage du dossier tmp.
## version 10.3.03 ## version 10.3.03
- Correction : - Correction :

View File

@ -1022,6 +1022,17 @@ class common {
$db->save; $db->save;
} }
/**
* Effacer un dossier non vide.
* @param string URL du dossier à supprimer
*/
public function removeDir ( $path ) {
foreach ( new DirectoryIterator($path) as $item ):
if ( $item->isFile() ) unlink($item->getRealPath());
if ( !$item->isDot() && $item->isDir() ) $this->removeDir($item->getRealPath());
endforeach;
rmdir($path);
}
/** /**
* Mises à jour * Mises à jour

View File

@ -18,8 +18,7 @@ class install extends common {
public static $actions = [ public static $actions = [
'index' => self::GROUP_VISITOR, 'index' => self::GROUP_VISITOR,
'steps' => self::GROUP_ADMIN, 'steps' => self::GROUP_ADMIN,
'update' => self::GROUP_ADMIN, 'update' => self::GROUP_ADMIN
'removeAll' => self::GROUP_ADMIN
]; ];
@ -253,16 +252,5 @@ class install extends common {
]); ]);
} }
/**
* Effacer un dossier non vide.
*/
private function removeAll ( $path ) {
foreach ( new DirectoryIterator($path) as $item ):
if ( $item->isFile() ) unlink($item->getRealPath());
if ( !$item->isDot() && $item->isDir() ) $this->removeAll($item->getRealPath());
endforeach;
rmdir($path);
}
} }

View File

@ -616,16 +616,19 @@ class theme extends common {
mkdir (self::TEMP_DIR . $tempFolder); mkdir (self::TEMP_DIR . $tempFolder);
$zip->extractTo(self::TEMP_DIR . $tempFolder ); $zip->extractTo(self::TEMP_DIR . $tempFolder );
// Archive de thème ? // Archive de thème ?
if ( file_exists(self::TEMP_DIR . $tempFolder . '/site/data/custom.css') 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.css')
AND file_exists(self::TEMP_DIR . $tempFolder . '/site/data/theme.json') ) { AND file_exists(self::TEMP_DIR . $tempFolder . '/site/data/theme.json')
) OR (
file_exists(self::TEMP_DIR . $tempFolder . '/site/data/admin.json')
)
) {
// traiter l'archive // traiter l'archive
$success = $zip->extractTo('.'); $success = $zip->extractTo('.');
// traitement de l'erreur // traitement de l'erreur
$notification = $success ? 'Le thème a été importé' : 'Erreur lors de l\'extraction, vérifiez les permissions.'; $notification = $success ? 'Le thème a été importé' : 'Erreur lors de l\'extraction, vérifiez les permissions.';
// Supprimmer le dossier temporaire // Supprimmer le dossier temporaire
$install = new install; $this->removeDir(self::TEMP_DIR . $tempFolder);
$install->removeAll(self::TEMP_DIR . $tempFolder);
} else { } else {
// pas une archive de thème // pas une archive de thème
$success = false; $success = false;