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