From 4ae440ccd98339cb17ef8a8c64d59a0f33442e67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Tempez?= Date: Wed, 15 Dec 2021 19:03:52 +0100 Subject: [PATCH] =?UTF-8?q?export=20images=20de=20=20la=20banni=C3=A8re?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/theme/theme.php | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/core/module/theme/theme.php b/core/module/theme/theme.php index 8c647c82..da03a69d 100644 --- a/core/module/theme/theme.php +++ b/core/module/theme/theme.php @@ -443,6 +443,7 @@ class theme extends common { // Encodage des images en base64 // Identifier les images + /* preg_match_all('/]+>/i',$featureContent, $results); foreach($results[0] as $value) { // Lire le contenu XML @@ -455,8 +456,7 @@ class theme extends common { $featureContent = str_replace($src, $base64, $featureContent); } - // Encodage des video en base64 - // Identifier les images + // Encodage des videos en base64 preg_match_all('/]+>/i',$featureContent, $results); foreach($results[0] as $value) { // Lire le contenu XML @@ -467,8 +467,18 @@ class theme extends common { $base64 = 'src="data:source/'. pathinfo($sx[0]['src'],PATHINFO_EXTENSION) . ';base64,'. base64_encode(file_get_contents($sx[0]['src'])).'"'; // Effectuer le remplacement dans la chaine $featureContent = str_replace($src, $base64, $featureContent); - } + }*/ + /** + * Stocker les images incluses dans la bannière perso dans un tableau + */ + preg_match_all('/]+>/i',$featureContent, $results); + foreach($results[0] as $value) { + // Lire le contenu XML + $sx = simplexml_load_string($value); + // Elément à remplacer + $files [] = str_replace('./site/file/source/','',(string) $sx[0]['src']); + } // Sauvegarder $this->setData(['theme', 'header', [ @@ -491,7 +501,8 @@ class theme extends common { 'imageContainer' => $this->getInput('themeHeaderImageContainer'), 'tinyHidden' => $this->getInput('themeHeaderTinyHidden', helper::FILTER_BOOLEAN), 'feature' => $this->getInput('themeHeaderFeature'), - 'featureContent' => $featureContent + 'featureContent' => $featureContent, + 'featureFiles' => $files ]]); // Modification de la position du menu selon la position de la bannière if ( $this->getData(['theme','header','position']) == 'site' ) @@ -809,7 +820,7 @@ class theme extends common { } /** - * construction du zip + * construction du zip Fonction appelée par export() et save() * @param string $modele theme ou admin */ private function zipTheme($modele) { @@ -826,16 +837,25 @@ class theme extends common { $zip->addFile(self::DATA_DIR.'theme.json',self::DATA_DIR.'theme.json'); $zip->addFile(self::DATA_DIR.'theme.css',self::DATA_DIR.'theme.css'); $zip->addFile(self::DATA_DIR.'custom.css',self::DATA_DIR.'custom.css'); + // Traite l'image dans le body if ($this->getData(['theme','body','image']) !== '' ) { $zip->addFile(self::FILE_DIR.'source/'.$this->getData(['theme','body','image']), self::FILE_DIR.'source/'.$this->getData(['theme','body','image']) ); } + // Traite l'image dans le header if ($this->getData(['theme','header','image']) !== '' ) { $zip->addFile(self::FILE_DIR.'source/'.$this->getData(['theme','header','image']), self::FILE_DIR.'source/'.$this->getData(['theme','header','image']) ); } + // Traite les images du header perso + if (!empty($this->getData(['theme','header','featureFiles'])) ) { + foreach($this->getData(['theme','header','featureFiles']) as $value) { + $zip->addFile(self::FILE_DIR . 'source/' . $value, + self::FILE_DIR . 'source/' . $value ); + } + } break; } $ret = $zip->close();