<?php 
// // // // // // // // // // // // // // // // 
//  TO DO:
// 	FAZER SCRIPT:
//	deletar:
//		remover pasta com os blast_report
//
//  3a. PARTE DA INCLUSAO EH REDIRECIONADA POR POST
//  PARA O SCRIPT newBlast.php
// // // // // // // // // // // // // // // //


require('../lib/genopar.lib.php');

// if(!doAuth(LVLMNG)) {
// 	exit;
// }

if(!doAuth(LVLADM)) {
	$genopar->fechaPagina(); exit;
}

$genopar = new Genopar(__FILE__);

$genopar->abrePagina("Administração de Resultados BLAST");
verGetPost(array('do'));

if ($do != "delete" && $do != "add"){
	echo "<h2><a href='?do=add'>Rodar novo BLAST e criar uma nova base de dados</a></h2>";
	echo "<h2><a href='?do=delete'>Deletar tabela BLAST</a></h2>";

}elseif ($do == "delete"){
	if (!$_POST['name']){
		$genopar->abreBanco('annotV1');
		
		$q = "SELECT * FROM blastp_feitos";

		$genopar->queryBanco($q);
		$genopar->abreForm();		
		while ($lin = $genopar->getArray(MYSQL_ASSOC)){
			$array[] = $lin['dbName'];
		}
		$genopar->fechaBanco();

		$genopar->select('name', $array);
		$genopar->submit();
		$genopar->fechaForm();
	}else{
		verGetPost(array('name'));
		if ($name == '')
			$genopar->error('Erro');

		deletarTabela($genopar, $name);
		deletarDir($genopar, $name);
		echo "<h2>$name Removido com suscesso.</h2>";
	}

}elseif($do == "add"){
	if (!$_POST['newOrg']){
		$genopar->abreForm();
		$arrayOrg = getOrg($genopar);
		echo "Selecione o banco a ser usado: ";
		$genopar->select('newOrg', $arrayOrg);
		echo "<p>";$genopar->submit();echo "</p>";
		$genopar->fechaForm();
	}else{
		verGetPost(array('newOrg'));
		if ($newOrg == '')
			$genopar->error('Erro');
		echo "<h3>Novo BLAST contra ".$newOrg."</h3>";

		$pref = substr($newOrg, 0, 4);
		$suf = substr($newOrg, -4, 4);
		$suf = ucfirst($suf);

		$genopar->abreForm("return true;", "nome", "newBlast.php");
		$genopar->input('newOrg', 'hidden', $newOrg);

		echo "<p>Nome: ";
		$genopar->input('org','text');
		echo "</p>";

		echo "<p>Indetificador: ";
		$nome = $pref.$suf;
		$genopar->input('nome','text', $nome,  '', 12,12);
		echo "</p>";

		echo "<p>";$genopar->submit();echo "</p>";

		$genopar->fechaForm();
	}

}

$genopar->fechaPagina();

###############################################
########	FUNCOES		###############
###############################################

// Conecta via ftp ao NCBI e retorna array contendo a lista de bacterias disponiveis
function getOrg($genopar){
	$ncbi = "ftp.ncbi.nih.gov";
	$USER = "anonymous";
	$PASS = "nada@lugar.algum";

	$con = ftp_connect($ncbi) or $genopar->error("NCBI indisponível.");
	ftp_login($con, $USER, $PASS);

	ftp_chdir($con, "genbank/genomes/Bacteria") or $genopar->error("Nao foi possivel mudar de diretorio.");

	foreach(ftp_rawlist($con, ".") as $file){
		if (preg_match("/dr-x/", $file)){
			$file = preg_match("/\s.*\s([\w-.]*)$/i",$file,$result);
			$dir[] = $result[1];
		}
	}
	ftp_close($con);
	return $dir;
	
}

function deletarTabela($genopar, $tableName = ''){
	if ($tableName == '')
		$genopar->error("Falta nome do banco a ser deletado.");

	$sigla = substr($tableName, 7);

	$genopar->abreBanco('annotV1');

	## Remove $tableName da tabela de blastp_feitos
	$q = "DELETE FROM blastp_feitos WHERE dbName='$tableName'";
	$genopar->queryBanco($q);

	## Remove da tabela organismos
	$q = "DELETE FROM organismos WHERE sigla='$sigla'";
	$genopar->queryBanco($q);

	## Remove a tabela de nome $tableName e todo seu conteudo
	$q = "DROP TABLE $tableName";
	$genopar->queryBanco($q);

	$genopar->fechaBanco();

}

function deletarDir($genopar, $nome){
	if($nome == '')
		$genopar->error("Falta nome da pasta a ser deletada.");

	list($dir, $pasta) = split('_',$nome);
	$dir = "blast_report/".$dir;

// 	echo "rm -rf $dir/$pasta/";
	system("rm -rf $dir/$pasta/");
}



?>