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,
|
'admin' => self::GROUP_ADMIN,
|
||||||
'manage' => self::GROUP_ADMIN,
|
'manage' => self::GROUP_ADMIN,
|
||||||
'export' => self::GROUP_ADMIN,
|
'export' => self::GROUP_ADMIN,
|
||||||
'save' => self::GROUP_ADMIN
|
'save' => self::GROUP_ADMIN,
|
||||||
|
'checkImport' => self::GROUP_ADMIN
|
||||||
];
|
];
|
||||||
public static $aligns = [
|
public static $aligns = [
|
||||||
'left' => 'À gauche',
|
'left' => 'À gauche',
|
||||||
@ -619,20 +620,31 @@ class theme extends common {
|
|||||||
if ($zip->open(self::FILE_DIR.'source/'.$zipFilename) === TRUE) {
|
if ($zip->open(self::FILE_DIR.'source/'.$zipFilename) === TRUE) {
|
||||||
mkdir (self::TEMP_DIR . $tempFolder);
|
mkdir (self::TEMP_DIR . $tempFolder);
|
||||||
$zip->extractTo(self::TEMP_DIR . $tempFolder );
|
$zip->extractTo(self::TEMP_DIR . $tempFolder );
|
||||||
|
$modele = '';
|
||||||
// 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')
|
$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
|
// 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
|
||||||
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
$this->removeDir(self::TEMP_DIR . $tempFolder);
|
||||||
|
// Check le thème
|
||||||
|
$this->checkImport($modele);
|
||||||
} else {
|
} else {
|
||||||
// pas une archive de thème
|
// pas une archive de thème
|
||||||
$success = false;
|
$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
|
* construction du zip
|
||||||
* @param string $modele theme ou admin
|
* @param string $modele theme ou admin
|
||||||
|
@ -22,20 +22,20 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col3 offset3">
|
<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', [
|
<?php echo template::button('themeManage', [
|
||||||
'ico' => 'upload',
|
'ico' => 'upload',
|
||||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/manage',
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/manage',
|
||||||
'value' => 'Gestion'
|
'value' => 'Gestion'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col3">
|
||||||
|
<?php echo template::button('themeAdvanced', [
|
||||||
|
'ico' => 'code',
|
||||||
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/advanced',
|
||||||
|
'value' => 'Éditeur CSS'
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col4 offset4">
|
<div class="col4 offset4">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user