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; }
/** * Supprime un controller du module * @param string $moduleName * @param string $controllerName * * @return bool */ public function remove($moduleName = null, $controllerName = null) { // On vérifie les paramètres if ($moduleName == null || $controllerName == null) { echo helper::module(false, 'remove'); return false; } // Répertoires des controllers et des vues $controllersDir = $this->modulesDir . $moduleName . DIRECTORY_SEPARATOR . 'controllers' . DIRECTORY_SEPARATOR; $viewsDir = $this->modulesDir . $moduleName . DIRECTORY_SEPARATOR . 'views' . DIRECTORY_SEPARATOR; // On vérifie que le controller existe if (file_exists($controllersDir . "{$controllerName}.controller.php") !== false) { // On demande confirmation à l'utilisateur echo helper::warning("ATTENTION - Vous êtes sur le point de supprimer le controller {$controllersDir}{$controllerName}.controller.php.\r\n") . helper::warning("Entrez 'oui' pour confirmer.\r\n") . helper::info(">> "); $input = trim(fgets(STDIN)); // On vérifie l'input fourni par l'utilisateur if ($input === 'oui') { // Supprime le fichier *.controller.php if (unlink($controllersDir . "{$controllerName}.controller.php")) { // On supprime la vue associée si elle existe if (file_exists($viewsDir . "{$controllerName}.view.php") !== false) { if (!unlink($viewsDir . "{$controllerName}.view.php")) { echo helper::warning("Impossible de supprimer le fichier {$viewsDir}{$controllerName}.view.php !\r\n"); return false; } } // On met à jour le fichier route.xml if ($this->updateRouteFile($this->modulesDir . $moduleName . DIRECTORY_SEPARATOR . 'route.php', $controllerName, false)) { echo helper::success("Le controller a bien été supprimé.\r\n"); return true; } echo helper::warning("Impossible de mettre à jour le fichier {$this->modulesDir}{$moduleName}/route.php !\r\n"); return false; } echo helper::warning("Impossible de supprimer le fichier {$controllersDir}{$controllerName}.controller.php !\r\n"); return false; } echo helper::info("Suppression annulée.\r\n"); return false; } echo helper::warning("Le controller {$controllersDir}{$controllerName}.controller.php n'existe pas !\r\n"); return false; }