/** * Ajoute un nouveau theme * @param string $themeName * * @return bool */ public function add($themeName = null) { if ($themeName === null) { echo helper::theme(false, 'add'); return false; } $themeDir = $this->themesDir . $themeName . DIRECTORY_SEPARATOR; // On vérifie que le thème n'existe pas déjà if (!file_exists($themeDir)) { // On crée le dossier du thème if (mkdir($themeDir, 0755, true)) { // On crée le fichier js par défaut if (file_put_contents($themeDir . 'default.js', $this->getDefaultJS($themeName))) { // On crée le fichier css par défaut if (file_put_contents($themeDir . 'default.css', $this->getDefaultCSS($themeName))) { // On crée le répertoire des images if (mkdir($themeDir . 'imgs', 0755, true)) { echo helper::success("Le thème {$themeName} a été initialisé !\r\n"); echo helper::success("L'arborescence suivante a été créée :\r\n"); echo helper::info("-- public\n -- assets/\n -- {$themeName}/\n -- imgs/\n default.css\n default.js\n"); return true; } echo helper::warning("Impossible de créer le répertoire {$themeDir}imgs !\r\n"); return false; } echo helper::warning("Impossible de créer le fichier default.css !\r\n"); return false; } echo helper::warning("Impossible de créer le fichier default.js !\r\n"); return false; } echo helper::warning("Impossible de créer le répertoire {$themeDir} !\r\n"); return false; } echo helper::warning("Un thème du nom {$themeName} existe déjà !\r\n"); return false; }
/** * Aide du theme * @param bool $full * @param string|null $section * @return string */ public static function theme($full = true, $section = null) { if ($full) { $msg = helper::info("[theme]\r\n"); } else { $msg = helper::success("Usage : "); } if ($section === null) { $msg .= helper::success("xengine theme ") . helper::warning("[add] (themeName)") . "\r\n"; } if ($section === null || $section === 'add') { $msg .= helper::warning("[add]") . helper::success(" xengine theme add\r\n") . helper::standard(" Crée le dossier pour le thème 'themeName'") . "\r\n"; } return $msg; }
/** * Génération du répertoire ressources/ * @return bool */ public function generateRessources($root) { // Création du répertoire ressources/ if (mkdir($root . 'ressources', 0755)) { // Création du répertoires ressources/assets if (mkdir($root . 'ressources' . DIRECTORY_SEPARATOR . 'assets', 0755)) { // Création du répertoire ressources/assets/less/ if (!mkdir($root . 'ressources' . DIRECTORY_SEPARATOR . 'assets' . DIRECTORY_SEPARATOR . 'less', 0755)) { echo helper::warning("Impossible de créer le répertoire ressources/assets/less/ !\r\n"); return false; } // Création du répertoire ressources/assets/js/ if (!mkdir($root . 'ressources' . DIRECTORY_SEPARATOR . 'assets' . DIRECTORY_SEPARATOR . 'js', 0755)) { echo helper::warning("Impossible de créer le répertoire ressources/assets/js/ !\r\n"); return false; } // Création du répertoire ressources/assets/sass/ if (!mkdir($root . 'ressources' . DIRECTORY_SEPARATOR . 'assets' . DIRECTORY_SEPARATOR . 'sass', 0755)) { echo helper::warning("Impossible de créer le répertoire ressources/assets/sass/ !\r\n"); return false; } // Création du répertoire ressources/locale/ if (mkdir($root . 'ressources' . DIRECTORY_SEPARATOR . 'locale', 0755)) { // Création du répertoire ressources/locale/fr_FR if (mkdir($root . 'ressources' . DIRECTORY_SEPARATOR . 'locale' . DIRECTORY_SEPARATOR . 'fr_FR', 0755)) { // Création du répertoire ressources/models if (mkdir($root . 'ressources' . DIRECTORY_SEPARATOR . 'locale' . DIRECTORY_SEPARATOR . 'fr_FR' . DIRECTORY_SEPARATOR . 'LC_MESSAGES', 0755)) { // Création du répertoire ressources/models if (mkdir($root . 'ressources' . DIRECTORY_SEPARATOR . 'models', 0755)) { return true; } echo helper::warning("Impossible de créer le répertoire ressources/models/ !\r\n"); return false; } echo helper::warning("Impossible de créer le répertoire ressources/locale/fr_FR/LC_MESSAGES !\r\n"); return false; } echo helper::warning("Impossible de créer le répertoire ressources/locale/fr_FR/ !\r\n"); return false; } echo helper::warning("Impossible de créer le répertoire ressources/locale/ !\r\n"); return false; } echo helper::warning("Impossible de créer le répertoire ressources/assets/ !\r\n"); return false; } echo helper::warning("Impossible de créer le répertoire ressources/ !\r\n"); return false; }
/** * Mise à jour du fichier route.php * @param string $routeFile * @param string $controllerName * @param bool $add * @param string|null $redirect * @param bool $json * * @return bool */ public function updateRouteFile($routeFile, $controllerName, $add = true, $redirect = null, $json = false) { // On charge le fichier xml if (($lines = file($routeFile)) !== false) { // Si c'est un ajout if ($add) { if ($redirect) { $redirectStr = "'{$redirect}'"; } else { $redirectStr = "null"; } $output = $json ? 'json' : 'html'; $newLines = <<<EOF '{$controllerName}' => [ 'label' => 'Controller {$controllerName}', 'output' => '{$output}', 'view' => null, 'folder' => null, 'signup' => null, 'redirect' => {$redirectStr}, 'params' => [] ], EOF; // On boucle sur les lignes pour trouver 'controllers' => [ foreach ($lines as $index => $line) { if (strpos($line, "'controllers' => [") !== false) { array_splice($lines, $index + 1, 0, [$newLines]); break; } } $fileContent = implode($lines); // Sinon c'est une suppression } else { // On boucle sur les lignes pour trouver 'controllerName' => [ $startLine = 0; $endLine = 0; foreach ($lines as $index => $line) { if (strpos($line, "'{$controllerName}' => [") !== false) { $startLine = $index; } // Si l'on a trouvé le début, on cherche : // 'properties' => [ // ]; (fin du fichier) // 'label' => ' (controller suivant) if ($startLine !== 0 && (strpos($line, "'properties' =>") || strpos($line, "];") !== false || strpos($line, "'label' => '")) !== false && $index - 1 > $startLine) { $endLine = $index - 1; break; } } $fileContent = implode(array_merge(array_slice($lines, 0, $startLine), array_slice($lines, $endLine))); } // On supprime le cache array_map('unlink', glob($this->root . "config/*.cache.*")); // On ré écrit le fichier if (file_put_contents($routeFile, $fileContent) !== false) { return true; } } echo helper::warning("Impossible de lire le fichier {$routeFile} !\r\n"); return false; }