public function execute() { // Racine du projet $root = dirname(dirname(dirname(dirname(__DIR__)))) . DIRECTORY_SEPARATOR; $msg = ''; $exists = false; // Vérifie d'abord que les dossiers/fichiers n'existent pas déjà if (file_exists($root . 'config/')) { $msg .= helper::warning("Le répertoire 'config/' existe, risque d'écrasement de fichiers existants.\r\n"); $exists = true; } if (file_exists($root . 'public/')) { $msg .= helper::warning("Le répertoire 'public/' existe, risque d'écrasement de fichiers existants.\r\n"); $exists = true; } if (file_exists($root . 'ressources/')) { $msg .= helper::warning("Le répertoire 'ressources/' existe, risque d'écrasement de fichiers existants.\r\n"); $exists = true; } if (file_exists($root . 'logs/')) { $msg .= helper::warning("Le répertoire 'logs/' existe, risque d'écrasement de fichiers existants.\r\n"); $exists = true; } if (file_exists($root . 'xengine')) { $msg .= helper::warning("Le lien symbolique 'xengine' existe, risque d'écrasement de fichiers existants.\r\n"); $exists = true; } // Si les dossiers existaient déjà, on s'arrête if ($exists) { $msg = helper::error("Une erreur est survenue !\r\n") . $msg; echo $msg; return -1; } // Génération de l'arborescence if ($this->generateTree($root)) { echo helper::success("Initialisation terminée !\r\n"); echo helper::success("L'arborescence suivante a été créée :"); echo helper::info("\n-- config/\n -- database.php\n -- router.php\n-- logs/\n-- public/\n -- assets/\n -- vendor/\n -- robots.txt\n -- .htacess\n -- index.php\n-- ressources/\n -- assets/\n -- less/\n -- sass/\n -- js/\n -- locale/\n -- fr_FR/\n -- LC_MESSAGES/\n -- models/\n-- .projections.json\r\n"); echo helper::success("Un lien symbolique a été créé vers le binaire vendor/pixxid/xengine/console/xengine dans la racine de votre projet.\r\n"); return true; } return false; }
/** * 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; }
/** * Définit le module par défaut vers lequel redirige /public/index.php * @param string $moduleName * * @return bool */ public function redirect($moduleName = null) { // On vérifie qu'un moduleName a été passé if ($moduleName === null) { echo helper::module(false, 'redirect'); return false; } // On vérifie que le module existe if (file_exists($this->modulesDir . $moduleName)) { if (file_put_contents($this->modulesDir . 'index.php', "<?php\r\n// Redirection sur le module par défaut\r\nheader(\"Location: /{$moduleName}/\");\r\nexit();") !== false) { echo helper::success("Le module {$moduleName} a été défini comme module par défaut dans le fichier index.php.\r\n"); return true; } echo helper::warning("Impossible d'écrire le fichier index.php !\r\n"); return false; } echo helper::warning("Le module {$this->modulesDir}{$moduleName} n'existe pas !"); return false; }