check la validité d'une thème importé

This commit is contained in:
Fred Tempez 2020-11-03 15:34:57 +01:00
parent 96b0a1a9b9
commit e7424dc9dd
2 changed files with 70 additions and 14 deletions

View File

@ -29,7 +29,8 @@ class theme extends common {
'admin' => self::GROUP_ADMIN,
'manage' => self::GROUP_ADMIN,
'export' => self::GROUP_ADMIN,
'save' => self::GROUP_ADMIN
'save' => self::GROUP_ADMIN,
'checkImport' => self::GROUP_ADMIN
];
public static $aligns = [
'left' => 'À gauche',
@ -619,13 +620,22 @@ class theme extends common {
if ($zip->open(self::FILE_DIR.'source/'.$zipFilename) === TRUE) {
mkdir (self::TEMP_DIR . $tempFolder);
$zip->extractTo(self::TEMP_DIR . $tempFolder );
$modele = '';
// 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.json')
) OR (
) {
$modele = 'theme';
}
if(
file_exists(self::TEMP_DIR . $tempFolder . '/site/data/admin.json')
)
AND file_exists(self::TEMP_DIR . $tempFolder . '/site/data/admin.css')
) {
$mode = 'admin';
}
if (!empty($modele)
) {
// traiter l'archive
$success = $zip->extractTo('.');
@ -633,6 +643,8 @@ class theme extends common {
$notification = $success ? 'Le thème a été importé' : 'Erreur lors de l\'extraction, vérifiez les permissions.';
// Supprimmer le dossier temporaire
$this->removeDir(self::TEMP_DIR . $tempFolder);
// Check le thème
$this->checkImport($modele);
} else {
// pas une archive de thème
$success = false;
@ -700,6 +712,50 @@ class theme extends common {
]);
}
/**
* Contrôle du thème
* Vérifie la présence de toutes les clés par rapport au thème par défaut
* les créer si elles n'existent pas.
*/
private function checkImport ($modele = 'theme') {
require_once('core/module/install/ressource/defaultdata.php');
switch ($modele) {
case 'theme':
$default['theme'] = init::$defaultData['theme'];
// Check le thème
$dataKeys = ['body','footer','header','menu','site','block','text','title','button'];
// Parcourir les clés principales et stocker les contenus
foreach($dataKeys as $key1) {
$itemKeys = $default['theme'][$key1];
// Parcourir les clés secondaires
foreach ($itemKeys as $key2 => $value) {
// Données nulles ou vides instaurer la donnée par défaut
if ($this->getData(['theme',$key1,$key2]) === NULL
OR empty($this->getData(['theme',$key1,$key2]) )
) {
$this->setData(['theme',$key1,$key2,$value]);
}
}
}
break;
case 'admin':
// Check Admin
$default['admin'] = init::$defaultData['admin'];
// Pas de clé secondaire
$itemKeys = $default['admin'];
foreach ($itemKeys as $key1 => $value) {
// Données nulles ou vides instaurer la donnée par défaut
if ($this->getData(['admin',$key1]) === NULL
OR empty($this->getData(['admin',$key1]) )
) {
$this->setData(['admin',$key1,$value]);
}
}
break;
}
}
/**
* construction du zip
* @param string $modele theme ou admin

View File

@ -23,19 +23,19 @@
</div>
<div class="row">
<div class="col3 offset3">
<?php echo template::button('themeAdvanced', [
'ico' => 'code',
'href' => helper::baseUrl() . $this->getUrl(0) . '/advanced',
'value' => 'Éditeur CSS'
]); ?>
</div>
<div class="col3">
<?php echo template::button('themeManage', [
'ico' => 'upload',
'href' => helper::baseUrl() . $this->getUrl(0) . '/manage',
'value' => 'Gestion'
]); ?>
</div>
<div class="col3">
<?php echo template::button('themeAdvanced', [
'ico' => 'code',
'href' => helper::baseUrl() . $this->getUrl(0) . '/advanced',
'value' => 'Éditeur CSS'
]); ?>
</div>
</div>
<div class="row">
<div class="col4 offset4">