#!/usr/bin/env php $versao_db_cliente) { # diretorio dos sql $sql = "SELECT nom_diretorio from administracao.gestao where cod_gestao = " . $ar_dados_gestao['cod_gestao']; $result = pg_query( $conn, $sql ); $ar_dir = pg_fetch_all( $result ); $tmp = $ar_dir[0]['nom_diretorio']; $ar_tmp = explode('/',$tmp); $stDirFontesGestao = dirname(__FILE__)."/".$ar_tmp[6]."/fontes/"; $arArquivosSql = all_files($stDirFontesGestao."SQL"); $arArquivosPlSql = all_files($stDirFontesGestao."PLPGSQL"); // arquivo que acumula tudo(SQL e PL's, na ordem) $stConteudoDeBanco = ""; #buscar arquivos sql a se executar foreach($arArquivosSql as $stArquivoSql): list($null,$stNomArquivo) = explode('_',substr($stArquivoSql, 0, strpos($stArquivoSql,'.'))); // busca no array de arquivos somente pelos nomes e versao preg_match("/(G.*)\_(.*)\.sql$/", $stArquivoSql, $arquivos); list($stNomArquivo,$stSiglaGestao,$stVersaoBanco ) = $arquivos; if ((integer) $stVersaoBanco > $versao_db_cliente && (integer) $stVersaoBanco <= $versao_db_min) { echo "Executando arquivo : " . $stNomArquivo . "\n"; $stConteudoDeBanco = file_get_contents($stArquivoSql); $res1 = @pg_query( $conn, $stConteudoDeBanco); if (false == $res1) { echo "Saindo por falha ao executar o arquivo" . $stArquivoSql . "\n"; echo "FALHA: " . pg_last_error() . "\n"; pg_query( $conn, 'ROLLBACK;'); pg_close($conn); exit(2); // termina a execução com erro; } } endforeach; foreach($arArquivosPlSql as $stArquivoPlSql): echo "Executando arquivo PL : " . basename($stArquivoPlSql) . "\n"; $stConteudoDeBanco = file_get_contents($stArquivoPlSql); $res1 = @pg_query( $conn, $stConteudoDeBanco); if (false == $res1) { echo "Saindo por falha ao executar o arquivo" . $stArquivoPlSql . "\n"; echo "FALHA: " . pg_last_error(). "\n"; pg_query( $conn, 'ROLLBACK;'); pg_close($conn); exit(2); // termina a execução com erro; } endforeach; } elseif ($versao_db_min < $versao_db_cliente) { exit("Versão Alvo menor do que a instalada na base, contate o suporte!\n"); } else { echo "Versão Alvo == Versão Cliente, Nada a fazer!\n"; } # atualizar versao do banco $sql = "insert into administracao.historico_versao(cod_gestao, versao, versao_db) VALUES (".$ar_dados_gestao['cod_gestao'].", '$versao_app', $versao_db_min);"; if ($result = pg_query( $conn, $sql )) { echo "Versao App/Db Sincronizada\n"; } else { echo "Problema ao sincronizar base e fontes"; } endforeach; $result = pg_query( $conn, "COMMIT;" ); if (pg_close($conn)) { echo "Conexão Fechada\n"; } unset($stConteudoDeBanco); function all_files($dir) { $files = Array(); $file_tmp= glob($dir.'*',GLOB_MARK ); foreach ($file_tmp as $item) { if (substr($item,-1)!=DIRECTORY_SEPARATOR) { if (preg_match("/sql$/", $item)) { $files[] = $item; } } else { $files = array_merge($files,all_files($item)); } } return $files; }