/**
  * 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;
 }