forked from ZwiiCMS-Team/ZwiiCMS
check la validité d'une thème importé
This commit is contained in:
parent
96b0a1a9b9
commit
e7424dc9dd
@ -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
|
||||
|
@ -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">
|
||||
|
Loading…
x
Reference in New Issue
Block a user