public function loadConfigs($path) { if (!is_dir($path)) { throw new Exception("Un dossier contenant les fichiers de configuration doit être donné."); } if (!$this->env) { throw new Exception("Un environnement doit être configuré avant l'appel de cette méthode."); } require_once $path . '/config.php'; $config_files = read_folder($path); foreach ($config_files as $file) { if (contains('config.*', basename($file)) && basename($file) != 'config.php') { require_once '/' . $file; } } foreach ($configs['default'] as $key => $value) { Config::set($key, $value); } if (isset($configs[$this->env])) { foreach ($configs[$this->env] as $key => $value) { Config::set($key, $value); } } }
function read_folder($path, $content = array()) { if ($handle = opendir($path)) { while (false !== ($item = readdir($handle))) { if ($item != '.' && $item != '..') { if (is_dir($path . '/' . $item)) { $content = array_merge($content, read_folder($path . '/' . $item)); } else { $content[] = preg_replace('~^(\\./)?(.*?)/~', '', $path . '/' . $item); } } } closedir($handle); } return $content; }
protected function duplicate($from_dir, $to_dir, $overide = false) { if (!file_exists($from_dir)) { $this->debug('Pas de dossier ' . $from_dir . ' à copier.'); return false; } $files = read_folder($from_dir); foreach ($files as $file) { $from = $from_dir . '/' . $file; $to = $to_dir . '/' . $file; $this->mkdir(dirname($to)); if (basename($file) == 'empty') { continue; } if (file_exists($to) && $overide === false) { $this->debug('Le fichier existe déjà. ' . $to . ' est ignoré.', true); } else { $this->debug('Création du fichier ' . $to . '.'); copy($from, $to); } } }