Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
patrixsbs
committed
Jan 10, 2014
1 parent
ab550ef
commit 9d75536
Showing
2 changed files
with
216 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,154 @@ | ||
<?php | ||
Oraculum::Load('Models'); | ||
$bancos=PDO::getAvailableDrivers(); | ||
Oraculum_Register::set('bancos', $bancos); | ||
define('NL', "\n\r\t"); | ||
$firstkey=NULL; | ||
|
||
if (post('send')): | ||
$banco=post('banco'); | ||
$servidor=post('servidor'); | ||
$usuario=post('usuario'); | ||
$senha=post('senha'); | ||
$base=post('base'); | ||
$tabela=post('tabela'); | ||
$arquivo=strtolower($tabela); | ||
$classe=ucwords($tabela); | ||
|
||
if ($base!=''): | ||
$model='<'.'?'.'php'.NL.'$this->_dsn=\''.$banco.'://'.$usuario.':'.$senha.'@'.$servidor.'/'.$base.'\';'; | ||
|
||
try{ | ||
$db=new Oraculum_Models(); | ||
$db->setDsn($banco.'://'.$usuario.':'.$senha.'@'.$servidor.'/'.$base); | ||
$db->PDO(); | ||
$dbo=new DBO(); | ||
DBO::execSQL('USE '.$base.';'); | ||
$query=DBO::execSQL('SHOW KEYS FROM '.$tabela.' WHERE Key_name = \'PRIMARY\';')->fetchAll(); | ||
|
||
//$d=$query->fetchAll(); | ||
//var_dump($query); | ||
$keys=array(); | ||
foreach($query as $r): | ||
if(is_null($firstkey)) | ||
$firstkey=$r['Column_name']; | ||
$keys[]=$r['Column_name']; | ||
endforeach; | ||
$keys='array(\''.implode('\',\'', $keys).'\')'; | ||
|
||
|
||
$control='<'.'?'.'php'.NL. | ||
'Oraculum::Load(\'Models\');'.NL. | ||
'Oraculum::Load(\'Plugins\');'.NL. | ||
'Oraculum::Load(\'HTTP\');'.NL. | ||
'// Carrega o arquivo de conexao com o banco'.NL. | ||
'$db=new Oraculum_Models(\''.$banco.'\');'.NL.NL. | ||
'// Carrega dinamicamente uma classe para a tabela '.$tabela.NL. | ||
'$db->LoadModelClass(\''.$tabela.'\');'.NL. | ||
'$action=Oraculum_Request::getvar(\''.$arquivo.'\');'.NL.NL. | ||
'// Verifica se a acao e\' permitida no sistema'.NL. | ||
'if (!(in_array($action, array(\'cadastrar\', \'listar\', \'alterar\', \'excluir\'))))'.NL. | ||
' $action=\'listar\';'.NL.NL. | ||
'// Verifica se existe uma funcao com o mesmo nome da acao'.NL. | ||
'if (is_callable($action))'.NL. | ||
' call_user_func($action); // Chama a funcao'.NL. | ||
'else'.NL. | ||
'// Senao chama a funcao listar (esse e\' um tratamento de seguranca)'.NL. | ||
'if (is_callable(\'listar\'))'.NL. | ||
' call_user_func(\'listar\');'.NL.NL. | ||
'function listar() {'.NL. | ||
' // Carrega o plugin Oraculum_Datagrid'.NL. | ||
' Oraculum_Plugins::Load(\'datagrid\');'.NL. | ||
' // Cria uma instancia da classe'.NL. | ||
' $tb=new '.$classe.'();'.NL. | ||
' $tb->setKey('.$keys.');'.NL. | ||
' // Carrega todos os registros da tabela/entidade'.NL. | ||
' $regs=$tb->getAll();'.NL. | ||
' // Cria uma instancia de do plugin Oraculum_Datagrid'.NL. | ||
' $grid=new Oraculum_Datagrid($regs);'.NL.NL. | ||
' // Define a classe CSS da tabela'.NL. | ||
' $grid->setTableClass(\'table table-bordered table-striped\');'.NL. | ||
' // Define a classe CSS do botao de atualizacao'.NL. | ||
' $grid->setUpdateClass(\'btn btn-primary\');'.NL. | ||
' // Define a classe CSS do botao de exclusao'.NL. | ||
' $grid->setDeleteClass(\'btn btn-danger\');'.NL. | ||
' // Determina o padrao de URL para o link de atualizar'.NL. | ||
' $grid->setUpdateURL(URL.\''.$arquivo.'/alterar/%id%\');'.NL. | ||
' // Determina o padrao de URL para o link de excluir'.NL. | ||
' $grid->setDeleteURL(URL.\''.$arquivo.'/excluir/%id%#confirm%id%" onclick="if(confirm(\\\'Tem certeza que deseja excluir?\\\')){return true;}else{return false;}\');'.NL. | ||
' // Define o label do botao de atualizacao'.NL. | ||
' $grid->setUpdateLabel(\'<i class="icon-pencil icon-white"></i> Alterar\');'.NL. | ||
' // Define o label do botao de exclusao'.NL. | ||
' $grid->setDeleteLabel(\'<i class="icon-remove icon-white"></i> Excluir\');'.NL. | ||
/*' // Adiciona codigo HTML na celula de acoes (onde ficam os botoes)'.NL. | ||
' $grid->setAdictionalActionHTML(\'<div id="confirm%id%" class="modal hide fade">'.NL. | ||
' <div class="modal-header">'.NL. | ||
' <button class="close" data-dismiss="modal">×</button>'.NL. | ||
' <h3>Confirmação</h3>'.NL. | ||
' </div>'.NL. | ||
' <div class="modal-body">'.NL. | ||
' <p>Você tem certeza que quer remover este registro?</p>'.NL. | ||
' </div>'.NL. | ||
' <div class="modal-footer">'.NL. | ||
' <a href="'.URL.''.$arquivo.'/excluir/%id%" class="btn btn-primary">OK</a>'.NL. | ||
' <a href="#" class="btn" data-dismiss="modal" >Cancelar</a>'.NL. | ||
' </div></div>\');'.NL.*/ | ||
' // Define o texto que deve ser exibido caso nao existem registros'.NL. | ||
' $grid->setNoRecordsFound(\'Nenhum registro encontrado!\');'.NL. | ||
' // Gera o HTML do grid'.NL. | ||
' $grid=$grid->generate();'.NL. | ||
' // Armazena o grid num registrador chamado grid que sera\' lido na view'.NL. | ||
' Oraculum_Register::set(\'grid\', $grid);'.NL. | ||
' // Armazena os registros num registrador chamado regs que sera\' lido na view'.NL. | ||
' Oraculum_Register::set(\'regs\', $regs);'.NL. | ||
'}'.NL.NL. | ||
|
||
'function excluir() {'.NL. | ||
' // Cria uma instancia da classe'.NL. | ||
' $tb=new '.$classe.'();'.NL. | ||
' $tb->setKey('.$keys.');'.NL. | ||
' // Captura o que estiver apos /excluir/ na URL'.NL. | ||
' $id=(int)Oraculum_Request::getvar(\'excluir\');'.NL. | ||
' // Carrega todos os registros que tiverem o ID relacionado'.NL. | ||
' $reg=$tb->getBy'.ucwords($firstkey).'($id);'.NL. | ||
' if (sizeof($reg)>0) {'.NL. | ||
' // Se encontrar algum registro, o mesmo e\' apagado'.NL. | ||
' $reg->delete();'.NL. | ||
' }'.NL. | ||
' // Redireciona para a pagina de listagem'.NL. | ||
' Oraculum_HTTP::redirect(URL.\''.$arquivo.'\');'.NL. | ||
'}'.NL.NL. | ||
|
||
'function cadastrar() {'.NL. | ||
' // No momento ainda e\' necessario criar manualmente o cadastro'.NL. | ||
'}'.NL.NL. | ||
|
||
'function alterar() {'.NL. | ||
' // No momento ainda e\' necessario criar manualmente a alteracao'.NL. | ||
'}'.NL.NL. | ||
|
||
'if ($action==\'listar\'):'.NL. | ||
' Oraculum_WebApp::LoadView()'.NL. | ||
' ->AddTemplate(\'geral\')'.NL. | ||
' ->LoadPage(\''.$arquivo.'-listar\'); // Carrega a view de listagem'.NL. | ||
'endif;'; | ||
|
||
$viewlistar='<'.'?'.'php $grid=Oraculum_Register::get(\'grid\'); ?'.'>'."\n\r". | ||
'<'.'?'.'php echo $grid; ?'.'>'; | ||
|
||
Oraculum_Register::set('model', $model); | ||
Oraculum_Register::set('control', $control); | ||
Oraculum_Register::set('viewlistar', $viewlistar); | ||
Oraculum_Register::set('nomebanco', $banco); | ||
Oraculum_Register::set('arquivo', $arquivo); | ||
} catch(Exception $e){ | ||
Oraculum_Register::set('msg', 'Ocorreu algum problema ao capturar as informações do banco'); | ||
Oraculum::Load('Logs'); | ||
Oraculum_Alias::LoadAlias('Logs'); | ||
} | ||
|
||
endif; | ||
endif; | ||
Oraculum_WebApp::LoadView() | ||
->AddTemplate('geral') | ||
->LoadPage('gerador-de-codigos'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
<?php | ||
Oraculum::Load('Register'); | ||
Oraculum_Register::set('titulo', 'Suporte'); | ||
$bancos=Oraculum_Register::get('bancos'); | ||
$nomebanco=Oraculum_Register::get('nomebanco'); | ||
$model=Oraculum_Register::get('model'); | ||
$arquivo=Oraculum_Register::get('arquivo'); | ||
$control=Oraculum_Register::get('control'); | ||
$view=Oraculum_Register::get('view'); | ||
$viewlistar=Oraculum_Register::get('viewlistar'); | ||
$msg=Oraculum_Register::get('msg'); | ||
?> | ||
<div id="content" style="text-align:left;"> | ||
<h1>Gerador de Códigos</h1> | ||
<p>Atualmente o Oraculum possui um gerador de códigos simples, onde você informa qual o driver do Banco de Dados, os dados de conexões, a base e a tabela alvo.<br /> | ||
Com isso é criado um <strong>controlador</strong> e <strong>views</strong> para realizar os processos de listagem e exclusão (devido ao quesito flexibilidade, ainda não está gerando código de cadastro e edições).<br /> | ||
Vale observar que ao informar os campos abaixo, caso você informe dados de conexão inválidos, deverá retorar erro.</p> | ||
<form method="post" action="?" style="text-align:left;"> | ||
<?php if(sizeof($bancos)>0): ?> | ||
Banco de Dados<br /> | ||
<select name="banco" id="banco"> | ||
<?php foreach($bancos as $banco): ?> | ||
<option><?php echo $banco; ?></option> | ||
<?php endforeach; ?> | ||
</select> <small>(Escolha um dos Drivers PDO disponíveis no seu servidor)</small> | ||
<?php endif; ?><br /> | ||
Servidor:<br /> | ||
<input type="text" name="servidor" id="servidor" value="127.0.0.1" /> | ||
<br /> | ||
Base de Dados:<br /> | ||
<input type="text" name="base" id="base" value="" /> | ||
<br /> | ||
Usuário:<br /> | ||
<input type="text" name="usuario" id="usuario" value="root" /> | ||
<br /> | ||
Senha:<br /> | ||
<input type="password" name="senha" id="senha" value="" /> | ||
<br /> | ||
Tabela:<br /> | ||
<input type="text" name="tabela" id="tabela" value="" /> | ||
<br /> | ||
<input type="submit" name="send" id="send" value="Gerar" /> | ||
</form> | ||
<hr /> | ||
<?php if($msg!=''): ?> | ||
<?php alert($msg); ?> | ||
<?php endif; ?> | ||
<?php if($model!=''): ?> | ||
models/<?php echo $nomebanco; ?>.php | ||
<div style="border:1px solid #444; padding:10px;"><?php highlight_string($model); ?></div> | ||
<?php endif; ?> | ||
|
||
<?php if($control!=''): ?> | ||
controls/<?php echo $arquivo; ?>.php | ||
<div style="border:1px solid #444; padding:10px;"><?php highlight_string($control); ?></div> | ||
<?php endif; ?> | ||
|
||
<?php if($viewlistar!=''): ?> | ||
views/<?php echo $arquivo; ?>-listar.php | ||
<div style="border:1px solid #444; padding:10px;"><?php highlight_string($viewlistar); ?></div> | ||
<?php endif; ?> | ||
</div> |