read()) { if (!preg_match('!\.(?:html|css)$!', $file)) continue; if (!file_exists($this->journal_path . 'skel_' . $file)) { copy(LENCRIER_DATA_ROOT . '/skins/' . Journal_Rendu::EXAMPLE_SKIN . '/' . $file, $this->journal_path . 'skel_' . $file); } } $dir->close(); return; } public function resetSkinFile($file) { $file = substr($file, 5); if (file_exists($this->journal_path . 'skel_' . $file)) { unlink($this->journal_path . 'skel_' . $file); } copy(LENCRIER_DATA_ROOT . '/skins/' . Journal_Rendu::EXAMPLE_SKIN . '/' . $file, $this->journal_path . 'skel_' . $file); return true; } public function listSkinFiles() { $out = array(); $dir = dir($this->journal_path); while ($file = $dir->read()) { if (preg_match('!^skel_(.*\.(?:html|css|ini))$!', $file)) { $out[$file] = $this->getSkinFileName($file); } } ksort($out); return $out; } public function getSkinFileName($file) { if (substr($file, 0, 5) != 'skel_') return false; $file = substr($file, 5); switch ($file) { case 'style.css': return 'Feuille de style CSS'; case 'style.ini': return 'Configuration de la personnalisation assistée'; case 'accueil.html': return 'Squelette - page d\'accueil'; case 'liste_ecrits.html': return 'Squelette - liste des écrits'; case 'ecrit.html': return 'Squelette - affichage d\'un écrit seul'; case 'header.html': return 'Squelette inclus - entête de page'; case 'footer.html': return 'Squelette inclus - pied de page'; case 'menu.html': return 'Squelette inclus - menu latéral'; case 'contact.html': return 'Squelette - contacter l\'auteur du journal'; case 'forum.html': return 'Squelette - forum : liste des messages'; case 'forum_message.html': return 'Squelette - forum : discussion'; case 'forum_formulaire.html': return 'Squelette inclus - forum : formulaire d\'envoi de message'; case (substr($file, -5) == '.html'): return 'Squelette personnel : '.$file; default: return 'Inconnu : '.$file; } } public function saveTemplateSkinStyle($styles) { $ini = ''; foreach ($styles as $key=>$value) { $value = str_replace('\"', '\\"', $value); $ini .= $key.'="'.$value.'"'."\n"; } file_put_contents($this->journal_path . 'skel_style.ini', $ini); $default = $this->getTemplateDefaultStyles(); foreach ($default as $key=>$value) { if (!isset($styles[$key])) $styles[$key] = ''; } extract($styles, EXTR_SKIP); ob_start(); include LENCRIER_DATA_ROOT . '/skins/' . Journal_Rendu::EXAMPLE_SKIN . '/style.php'; $css = ob_get_clean(); file_put_contents($this->journal_path . 'skel_style.css', $css); return true; } public function getTemplateSkinStyles() { $default = $this->getTemplateDefaultStyles(); if (file_exists($this->journal_path . 'skel_style.ini')) { $styles = @parse_ini_file($this->journal_path . 'skel_style.ini', false); foreach ($default as $key=>$value) { if (!isset($styles[$key])) $styles[$key] = ''; } return $styles; } else { return $default; } } public function getTemplateDefaultStyles() { return parse_ini_file(LENCRIER_DATA_ROOT . '/skins/' . Journal_Rendu::EXAMPLE_SKIN . '/style.ini', false); } } ?>