/** * Retorna o Caminho onde o arquivo foi encontrado * @param string $sDiretorio -> Diretório Raiz a ser pesquisado * @param string $sNomeArquivo -> Nome do Arquivo a ser pesquisado * @return $sRetorno - String com o caminho completo do arquivo solicitado */ public static function getCaminhoArquivo($sDiretorioRaiz, $sNomeArquivo) { if (!is_dir($sDiretorioRaiz)) { throw new Exception("Não é um diretório."); } if (!$sNomeArquivo) { throw new Exception('Não foi Informado o nome do arquivo!'); } $sDirectoryScripts = $sDiretorioRaiz; if (is_file("{$sDiretorioRaiz}/{$sNomeArquivo}") && filesize("{$sDiretorioRaiz}/{$sNomeArquivo}") > 0) { return "{$sDiretorioRaiz}/{$sNomeArquivo}"; } $aDiretorios = DBFileExplorer::listarDiretorio($sDiretorioRaiz, true, true, null, true); sort($aDiretorios); foreach ($aDiretorios as $sDiretorio) { $lExisteArquivo = is_file("{$sDiretorio}/{$sNomeArquivo}"); $aArquivosExecucao = array(); if ($lExisteArquivo && filesize("{$sDiretorio}") > 0) { return "{$sDiretorio}/{$sNomeArquivo}"; } } return null; }
/** * loadScripts * * @param mixed $connection * @static * * @access public * @return void */ public static function loadScripts($connection) { $sDirectoryScripts = DBDataBaseMigration::$sPathScrips; if (!is_dir($sDirectoryScripts)) { throw new Exception("ERRO: Diretório {$sDirectoryScripts} não existe!\n"); } DBDataBaseMigration::checkTablesVersioning($connection); $sSqlLastVersion = "SELECT db142_versao FROM configuracao.database_version ORDER BY db142_versao DESC LIMIT 1"; $rLastVersion = @pg_query($connection, $sSqlLastVersion); if (!$rLastVersion) { throw new Exception("ERRO: Ao executar SQL {$sSqlLastVersion} "); } $sLastVersion = null; if (pg_num_rows($rLastVersion) > 0) { $sLastVersion = pg_result($rLastVersion, 0, 0); } $sDirectoryCheck = $sDirectoryScripts; $aDiretorios = DBFileExplorer::listarDiretorio($sDirectoryCheck, true, false); sort($aDiretorios); foreach ($aDiretorios as $sDiretorio) { $sVersao = str_replace($sDirectoryScripts, '', $sDiretorio); $sVersao = str_replace("/", '', $sVersao); $lExisteDDL = is_file("{$sDiretorio}/ddl_{$sVersao}.sql"); $aArquivosExecucao = array(); if ($lExisteDDL && filesize("{$sDiretorio}/ddl_{$sVersao}.sql") > 0) { $aArquivosExecucao["ddl"] = file_get_contents("{$sDiretorio}/ddl_{$sVersao}.sql"); } $sVersaoEscapada = pg_escape_string($sVersao); $sSqlExists = "SELECT * FROM configuracao.database_version WHERE db142_versao = '{$sVersaoEscapada}'"; $rsExists = @pg_query($connection, $sSqlExists); if (!$rsExists) { throw new Exception("ERRO: Ao executar SQL {$sSqlExists} . " . pg_last_error()); } if (pg_num_rows($rsExists) == 0) { $sInsert = "INSERT INTO configuracao.database_version VALUES ('{$sVersaoEscapada}')"; $rInsert = @pg_query($connection, $sInsert); if (!$rInsert) { throw new Exception("Erro ao Incluir Versão {$sVersao}" . pg_last_error($connection)); } } foreach ($aArquivosExecucao as $sTipo => $sConteudo) { $sSqlExists = "SELECT * FROM configuracao.database_version_sql WHERE db143_versao = '{$sVersaoEscapada}' and db143_tipo = '{$sTipo}' and db143_executado is true;"; $rsExists = @pg_query($connection, $sSqlExists); if (!$rsExists) { throw new Exception("ERRO: Ao executar SQL {$sSqlExists} " . pg_last_error()); } if (pg_num_rows($rsExists) > 0) { continue; } $sArquivoEscapado = pg_escape_string("{$sDiretorio}/{$sTipo}_{$sVersao}.sql"); $sConteudoEscapado = pg_escape_string($sConteudo); $rDelete = @pg_query($connection, "delete from configuracao.database_version_sql WHERE db143_versao = '{$sVersaoEscapada}' and db143_tipo = '{$sTipo}'"); if (!$rDelete) { throw new Exception("Erro ao Remover script {$sVersao}" . pg_last_error($connection)); } $sInsertSql = "INSERT INTO configuracao.database_version_sql (db143_arquivo, db143_versao, db143_script, db143_tipo) "; $sInsertSql .= " VALUES ('{$sArquivoEscapado}', '{$sVersaoEscapada}', '{$sConteudoEscapado}','{$sTipo}')"; $rInsertSql = @pg_query($connection, $sInsertSql); if (!$rInsertSql) { throw new Exception("Erro ao Incluir script {$sVersao}" . pg_last_error($connection)); } } } }