/** * Escreve arquivo de rollback do modulo * * @param array $rollbackArray * @param string $rollbackFile * @param bool $buildPHPHeader * @return bool|int|string */ public static function buildRollback(array $rollbackArray, $rollbackFile, $buildPHPHeader = true) { if ($buildPHPHeader) { //build php route header $phpStringArray = "<?php" . chr(13) . chr(13) . "return" . chr(13) . chr(13) . "[" . chr(13); } else { //Recursive fix $phpStringArray = "[" . chr(13); } //for each module loaded foreach ($rollbackArray as $key => $value) { if (!is_array($value)) { //Se value não for um array //adiciona a rota domodulo e como chave tipo-nome $phpStringArray .= '\'' . $key . '\' => \'' . $value . '\',' . chr(13) . chr(13); } else { //Se value for um array $phpStringArray .= '\'' . $key . '\' => ' . RollbackManager::buildRollback($value, null, false) . ',' . chr(13) . chr(13); } } if ($buildPHPHeader) { //fecha o array de rollback $phpStringArray .= "];"; try { //salva arquivo por cima do conteudo do arquivo anterior return file_put_contents($rollbackFile, str_replace(file_get_contents($rollbackFile), $phpStringArray, file_get_contents($rollbackFile))); } catch (Exception $e) { return false; } } else { //fecha o array de rollback $phpStringArray .= "]" . chr(13); return $phpStringArray; } }
/** * Constroi o arquivo de rollback * * @param string $moduleType * @param string $moduleName * @param array $rollback * @return array|bool */ public static function createRollbackFile($moduleType, $moduleName, array &$rollback) { $errors = []; //Cria registro no rollback dizendo que o arquivo foi copiado $rollback[Strings::ROLLBACK_OLD_ROLLBACK_TAG] = EscapeHelper::encode(file_get_contents(PathHelper::getModuleRollbackFile($moduleType, $moduleName))); if (RollbackManager::buildRollback($rollback, PathHelper::getModuleRollbackFile($moduleType, $moduleName)) == false) { $errors[] = Strings::ERROR_CREATE_ROLLBACK_FILE; } return !empty($errors) ? $errors : true; }