* * * * * **/ set_time_limit(10000); ini_set('max_execution_time', 10000); ini_set('max_input_time',10000); $theme->clearContent(); $syncModule = MIOLO::_REQUEST('syncModule'); $MIOLO->uses( 'classes/bBaseDeDados.class.php','base'); $MIOLO->uses( 'classes/BString.class.php','base'); $MIOLO->uses( 'classes/bCatalogo.class.php','base'); $MIOLO->uses( 'classes/bInfoColuna.class.php','base'); if ( !$syncModule ) { // Adiciona classes necessárias. $MIOLO->uses( 'classes/bForm.class.php','base'); $MIOLO->uses( 'classes/bFormCadastro.class.php','base'); $MIOLO->uses( 'classes/bFormBusca.class.php','base'); $MIOLO->uses( 'classes/bTipo.class.php','base'); $MIOLO->uses( 'classes/bBarraDeFerramentas.class.php','base'); $MIOLO->uses( 'classes/bJavascript.class.php','base'); $MIOLO->uses( 'classes/bBooleano.class.php','base'); $MIOLO->uses( 'classes/bEscolha.class.php','base'); // Adiciona biblioteca javascript do módulo Base. $MIOLO->page->addScript('base.js','base'); // Define a base de dados. define(DB_NAME, 'base'); // Constantes para o correto funcionamento do módulo. define(DB_TRUE, 't'); define(DB_FALSE, 'f'); define(FUNCAO_BUSCAR, 'buscar'); define(FUNCAO_EDITAR, 'editar'); define(FUNCAO_INSERIR, 'inserir'); define(FUNCAO_REMOVER, 'remover'); define(FUNCAO_EXPLORAR, 'explorar'); define(MODULO, 'base'); // Constantes para tamanho de campo. define(T_CODIGO, 10); define(T_INTEIRO, 10); define(T_DESCRICAO, 25); // Inclui o manipulador. $chave = MIOLO::_REQUEST('chave'); if ( strlen($chave) > 0 ) { $MIOLO->uses('handlers/manipulador.inc.php', 'base'); } else { $shiftAction = $context->shiftAction(); if ( $shiftAction ) { $MIOLO->invokeHandler($module, $shiftAction); } } } else { $MIOLO->uses( 'classes/bSync.interface.php','base'); $MIOLO->uses( 'classes/bSyncDatabase.class.php','base'); $MIOLO->uses( 'classes/bSyncDatabaseContent.class.php','base'); $MIOLO->uses( 'classes/bSyncDatabaseFunction.class.php','base'); $MIOLO->uses( 'classes/bSyncDatabaseView.class.php','base'); if ( !defined('DB_NAME') ) { define('DB_NAME', $syncModule ); } $MIOLO->page->addJsCode( " /* Esconde / mostra conteúdo de uma tabela*/ function showHideTable( element ) { if ( element.tBodies[0].style.display == '' ) { element.tBodies[0].style.display ='none' } else { element.tBodies[0].style.display =''; } } " ); $MIOLO->page->onload(" //passa por todas tabelas adicionando suporte a esconder/mostrar tables = document.getElementsByClassName('mSimpleTable mTableRaw'); //tables = document.getElementsByTagName('table'); for ( i =0 ; i < tables.length ; i++ ) { tables[i].style.width ='100%'; tables[i].tBodies[0].style.display ='none'; if ( tables[i].caption != null ) { tables[i].caption.style.cursor= 'pointer'; tables[i].caption.setAttribute('onclick', 'showHideTable(this.parentNode)' ); } }"); try { //$db = new bBaseDeDados($syncModule); bBaseDeDados::iniciarTransacao(); if ( ! $syncModule ) { throw new Exception( new BString('É necessário informar modulo de sincronização (syncModule).') ); } //cria um espaço superior $fields[] = new MDiv('','


'); //executa o script de inicialização $startScript = $MIOLO->getConf('home.miolo').'/modules/'.$syncModule.'/syncdb/start.php'; if ( file_exists( $startScript ) ) { require $startScript; } $syncFiles = BSyncDatabase::listSyncFiles( $syncModule ); $syndDb = null; $tablesById = null; if ( is_array( $syncFiles ) ) { foreach ( $syncFiles as $line => $syncFile ) { $syncDb = new bSyncDatabase( file_get_contents( $syncFile ) ); $syncDb->setModule($syncModule); $tablesById = $syncDb->syncronize(); } } $functionFiles = BSyncDatabaseFunction::listSyncFiles( $syncModule ); //efetua sincronização de funções de base de dados if ( is_array( $functionFiles ) ) { foreach ( $functionFiles as $line => $function ) { $function = new BSyncDatabaseFunction( $function , $syncModule ); $fResult = $function->syncronize(); $functions = array_values( $fResult->missing ); $resultTable[0] = array( _M('Inicial'), $fResult->start ); $resultTable[1] = array( _M('Arquivo'), $fResult->file ); $resultTable[2] = array( _M('Final'), $fResult->final ); $resultTable[3] = array( _M('Faltando'), ( $fResult->final- $fResult->file) ); if ( $functions ) { $myTable = new MTableRaw( _M( new bString( 'Faltantes' ) ) , $functions, array(),'', true ); $resultTable[3][1] .= '
' .$myTable->generate(); } $fields[] = new MTableRaw( _M( new bString( 'Funções' ) ) , $resultTable, array( new bString( _M('Situação') ),_M( new bString( 'Contagem') ) ), 'functions', true); if ( $functions ) { if ( $fResult->sql ) { $fields[] = new MMultiLineField('sqlFunctions', $fResult->sql ); } } $fields[] = new MSeparator('
'); } } if ( $syncDb != null) { $syncDb->syncronizeTriggersAndContraints($tablesById); $messages = $syncDb->getMessages(); $fields[] = new MTableRaw(new BString('Sincronização de estrutura de base de dados'), $messages, array( new BString('Mensagem') ), 'syncDatabase', true); $fields[] = new MSeparator('
'); } $views = BSyncDatabaseView::listSyncFiles( $syncModule ); //efetua sincronização de funções de base de dados if ( is_array( $views ) ) { foreach ( $views as $line => $view ) { $view = new BSyncDatabaseView( $view, $syncModule ); $vResult = $view->syncronize(); $missing= array_values( $vResult->missing ); $resultTable = array(); $resultTable[0] = array( _M('Inicial'), $vResult->start ); $resultTable[1] = array( _M('Arquivo'), $vResult->file ); $resultTable[2] = array( _M('Final'), $vResult->final ); $resultTable[3] = array( _M('Faltando'), ( $vResult->final- $vResult->file) ); if ( $missing ) { $myTable = new MTableRaw( _M( new bString( 'Faltantes' ) ) , $missing, array(),'', true ); $resultTable[3][1] .= '
' .$myTable->generate(); } $fields[] = new MTableRaw( _M( new bString( 'Visões' ) ) , $resultTable, array( new bString( _M('Situação') ),_M( new bString( 'Contagem') ) ), 'views', true); if ( $functions ) { if ( $vResult->sql ) { $fields[] = new MMultiLineField('viewsMissing', $vResult->sql ); } } $fields[] = new MSeparator('
'); } } //obtem lista de arquivos xml a sincronizar $files = BSyncDatabaseContent::listSyncFiles( $syncModule ); if ( is_array( $files ) ) { foreach ( $files as $line => $file ) { $tableExtra = null; $resultA = null; //$fields = null; $fileBase = str_replace('.xml', '', basename($file)); $basConfig = new BSyncDatabaseContent( ); $basConfig->setXmlPath($file); $basConfig->setModule( $syncModule ); if ( strpos($file, 'miolo_') ) { $basConfig->setModule( 'admin' ); } else { $basConfig->setModule( $syncModule ); } $result = $basConfig->syncronize(); $resultExtras = null; $resultA = array(); $resultA[0] = array( new BString( _M('Contagem xml') ), $result->countXml ); $resultA[1] = array( new BString( _M('Contagem inicial') ),$result->countStart ); $resultA[2] = array( new BString( _M('Atualizações') ) ,$result->updateCount ); $resultA[3] = array( new BString( _M('Inserções') ),$result->insertCount ); $resultA[4] = array( new BString( _M('Remoções') ),$result->deleteCount ); $resultA[5] = array( new BString( _M('Contagem final') ),$result->countEnd ); if ( is_array( $result->extras ) ) { foreach ( $result->extras as $line => $extra ) { $resultE = array(); $columns = array(); foreach ( $extra as $l => $item ) { $columns[] = $l; $resultE[] = $item; } $resultExtras[] = $resultE; } $tableExtra[] = new MTableRaw( '', $resultExtras, array_values($columns), '', true ); $resultA[6] = array( _M('Itens sobrando'), $tableExtra ); } $title = $fileBase ; if ( $resultA[6] ) { $title .= new bString( _M(' - Atualizado') ); } $fields[] = new MTableRaw( $title , $resultA, array(_M('Tipo'),_M('Quantidade')), 'result'.$fileBase , true ); $fields[] = new MSeparator('
'); //inclui xml das diferenças caso exista $xml = $basConfig->makeXMLfromResult( $result->extras ); if ( $xml ) { $fields[] = new MultilineField('xml'.$fileBase , $xml); } } } $theme->appendContent( $fields ); //caso exista script de sincronização, executa-o $syncScript = $MIOLO->getConf('home.miolo').'/modules/'.$syncModule.'/syncdb/sync.php'; if ( file_exists( $syncScript ) ) { require $syncScript; } bBaseDeDados::finalizarTransacao(); } catch (Exception $e) { //$db = new bBaseDeDados($syncModule); die( bBaseDeDados::obterUltimoErro() .' -
SQL = '. bBaseDeDados::obterUltimaInstrucao() . '
Mensagem='.$e->getMessage().'-'.$e->getFile().'-'.$e->getLine()); } } ?>