/** * Faz o rollback das configurações feitas pelo modulo * * @param array $rollback * @return array|bool */ private static function runModuleConfigsRollback($rollback) { $errors = []; if (array_key_exists(Strings::ROLLBACK_MODULE_CONFIGS_TAG, $rollback)) { $revertedConfigs = array_reverse($rollback[Strings::ROLLBACK_MODULE_CONFIGS_TAG]); foreach ($revertedConfigs as $configName => $fileContent) { $path = explode(Strings::MODULE_CONFIG_CONFIGS_SEPARATOR_REPLACEMENT, $configName); if ($path != array()) { array_pop($path); $path = PathHelper::getConfigDir(implode(Strings::PATH_SEPARATOR, $path) . Strings::PHP_EXTENSION); if (file_put_contents($path, str_replace(file_get_contents($path), EscapeHelper::decode($fileContent[$path]), file_get_contents($path))) == false) { $errors[] = Strings::ERROR_MODULE_CONFIG_ROLLBACK; } } else { $errors[] = Strings::ERROR_INVALID_CONFIG_ROLLBACK; } } } return !empty($errors) ? $errors : true; }
/** * Efetua as configurações do modulo passado * * @param $moduleType * @param $moduleName * @param array $rollback * @return array|bool */ public static function makeModuleConfigs($moduleType, $moduleName, array &$rollback) { $errors = []; //Pega configurações $configuracoes = Configs::getConfig(PathHelper::getModuleConfigPath($moduleType, $moduleName), Strings::CONFIG_CONFIGURATIONS); //Inicia o Rollback de arquivos configurados $rollback[Strings::ROLLBACK_MODULE_CONFIGS_TAG] = []; foreach ($configuracoes as $configuracao => $valor) { if ($valor != Strings::EMPTY_STRING) { $path = explode(Strings::MODULE_CONFIG_CONFIGS_SEPARATOR, $configuracao); array_pop($path); $path = PathHelper::getConfigDir(implode(Strings::PATH_SEPARATOR, $path) . Strings::PHP_EXTENSION); $configName = str_replace(Strings::MODULE_CONFIG_CONFIGS_SEPARATOR, Strings::MODULE_CONFIG_CONFIGS_SEPARATOR_REPLACEMENT, $configuracao); //Inicia o Rollback de arquivos configurados $rollback[Strings::ROLLBACK_MODULE_CONFIGS_TAG][EscapeHelper::encode($configName)] = []; //Adiciona para a lista de rollback $rollback[Strings::ROLLBACK_MODULE_CONFIGS_TAG][EscapeHelper::encode($configName)][EscapeHelper::encode($path)] = EscapeHelper::encode(file_get_contents($path)); //Se ao tentar configurar temos um erro, então: if (Configs::setLaravelConfig($configuracao, $valor) == false) { //Adiciona o erro para o array de erros $errors[] = Strings::cantMakeModuleConfig($moduleType . Strings::MODULE_TYPE_NAME_SEPARATOR . $moduleName, $configuracao); } } } return !empty($errors) ? $errors : true; }