diff --git a/core/core.php b/core/core.php
index dd8c4054..0d234f23 100644
--- a/core/core.php
+++ b/core/core.php
@@ -298,7 +298,7 @@ class common {
// Construit la liste des pages parents/enfants
if($this->hierarchy['all'] === []) {
- $pages = helper::arrayCollumn($this->getData(['page']), 'position', 'SORT_ASC');
+ $pages = helper::arrayColumn($this->getData(['page']), 'position', 'SORT_ASC');
// Parents
foreach($pages as $pageId => $pagePosition) {
if(
@@ -411,6 +411,54 @@ class common {
}
}
+ /**
+ * Construit la liste des fontes dans un tableau
+ * @return @fonts
+ * fontid
+ * 'familyName' =>
+ * 'type=> websafe ou imported ou file
+ * 'ressource' => stack ou file
+ */
+ public function getFonts() {
+
+ // Fusionne la liste des fontes avec les webSafe
+ foreach (self::$fontsWebSafe as $fontId => $fontValue) {
+ $fontName = explode (',', $fontValue);
+ $f[$fontId] = [
+ 'fontfamily'=> $fontName[0],
+ 'ressource' => $fontValue,
+ 'type' => 'websafe'
+ ];
+ }
+ // Ajoute les polices importées chez cdnfonts
+ $fontsImported = $this->getData(['fonts', 'imported']);
+ if (is_array($fontsImported)
+ ) {
+ foreach ($fontsImported as $fontId => $fontValue) {
+ $f[$fontId] = [
+ 'fontfamily'=> $fontValue,
+ 'ressource' => $fontValue . "; sans-serif", // Format par défaut
+ 'type' => 'imported'
+ ];
+ }
+ }
+ // Ajoute les polices locales
+ $fontsFiles = $this->getData(['fonts', 'files']);
+ if (is_array($fontsFiles)
+ ) {
+ foreach ($fontsFiles as $fontId => $fontValue) {
+ $f[$fontId] = [
+ // la fonte family est reprise de files
+ 'ressource' => $fontValue,
+ 'type' => 'files'
+ ];
+ }
+ }
+ // Tri Alphabétique
+ ksort($f);
+ return $f;
+ }
+
/**
* Check du token CSRF (true = bo
*/
@@ -2265,27 +2313,6 @@ class core extends common {
}
}
- /**
- * Traitement des polices de caractères
- */
-
- // Fusionne la liste des fontes avec les webSafe
- foreach (self::$fontsWebSafe as $fontId => $fontValue) {
- $fontName = explode (',', $fontValue);
- self::$fonts [$fontId] = $fontName[0];
- }
- // Importe les polices personnalisées
- $fontsImported = $this->getData(['fonts', 'imported']);
- if (is_array($fontsImported) &&
- !empty ($fontsImported)
- ) {
- // Fusionner avec les fontes installées
- self::$fonts = array_merge(self::$fonts, $fontsImported);
-
- }
- // Tri Alphabétique
- asort(self::$fonts);
-
// Crée le fichier de personnalisation avancée
if(file_exists(self::DATA_DIR.'custom.css') === false) {
file_put_contents(self::DATA_DIR.'custom.css', file_get_contents('core/module/theme/resource/custom.css'));
@@ -2301,18 +2328,24 @@ class core extends common {
file_put_contents(self::DATA_DIR.'admin.css', '');
chmod(self::DATA_DIR.'admin.css', 0755);
}
+
// Check la version rafraichissement du theme
$cssVersion = preg_split('/\*+/', file_get_contents(self::DATA_DIR.'theme.css'));
if(empty($cssVersion[1]) OR $cssVersion[1] !== md5(json_encode($this->getData(['theme'])))) {
// Version
$css = '/*' . md5(json_encode($this->getData(['theme']))) . '*/';
+
/**
* Import des polices de caractères
* A partir du CDN
* ou dans le dossier site/file/source/fonts
* ou pas du tout si fonte webSafe
*/
+
+ // Fonts disponibles
+ $fontsAvailable = $this->getFonts();
+ // Fontes installées
$fonts = [ $this->getData(['theme', 'text', 'font']),
$this->getData(['theme', 'title', 'font']),
$this->getData(['theme', 'header', 'font']),
@@ -2322,44 +2355,32 @@ class core extends common {
// Suppression des polices identiques
$fonts = array_unique($fonts);
- /**
- * Fontes Web Safe, ne sont pas chargées.
- */
- foreach ($fonts as $fontId) {
- if (array_key_exists($fontId, self::$fontsWebSafe) ) {
- unset($fonts[$fontId]);
- }
- }
-
/**
* Chargement des polices en ligne dans un fichier fonts.html inclus dans main.php
*/
- $localFonts = $this->getData(['fonts', 'files']);
$fontFile = '';
foreach ($fonts as $fontId) {
- if (!array_key_exists($fontId, $localFonts) ) {
- $fontFile .= '';
- // Supprimer l'élément des fontes chargées en ligne
- unset($fonts[$fontId]);
+ if ( isset($fontsAvailable[$fontId]) &&
+ $fontsAvailable[$fontId]['type'] === 'imported' ) {
+ $fontFile .= '';
}
}
+ // Enregistre la personnalisation
+ file_put_contents(self::DATA_DIR.'fonts/fonts.html', $fontFile);
/**
* Fontes installées localement
*/
- if ( !empty($localFonts)
- ) {
- foreach ($localFonts as $fontId => $fontName) {
- // Validité du tableau :
- if ( array_key_exists($fontId, self::$fonts) &&
- file_exists(self::DATA_DIR . 'fonts/' . $fontName) ) {
- // Chargement de la police
- //$formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName);
- $css .= '@font-face {font-family:"' . self::$fonts[$fontId] . '";';
- $css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontName . '");}';
- }
-
+ foreach ($fonts as $fontId) {
+ // Validité du tableau :
+ if ( array_key_exists($fontId, self::$fonts) &&
+ file_exists(self::DATA_DIR . 'fonts/' . $fontName) ) {
+ // Chargement de la police
+ //$formatFont = explode('.', self::DATA_DIR . 'fonts/' . $fontName);
+ $css .= '@font-face {font-family:"' . self::$fonts[$fontId] . '";';
+ $css .= 'src: url("' . helper::baseUrl(false) . self::DATA_DIR . 'fonts/' . $fontName . '");}';
}
+
}
// Fond du body