<?php

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

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

verGetPost(array('action'));

$genopar = new Genopar(__FILE__);

$genopar->abrePagina("Tabela de EC Numbbers");

if ($genopar->UserAuth_level <= LVLADM){
	echo "<a href='?action=atualizar'>Atualizar Informações</a>";
	if ($action == 'atualizar'){
		$localFile = getECtable($genopar);
		$ECnumbers = parse($genopar,$localFile);
		update($genopar, $ECnumbers);
	
		echo "<p>Informações Atualizadas</p>";
	}
}

$genopar->abreBanco();

$q = "SELECT * FROM ECnumbers";

$genopar->queryBanco($q);

echo "<TABLE cellpadding=5 border=1 rules=all>\n";

while ($lin = $genopar->getArray()){
	echo "<TR>";
	echo "<TD>";
	echo $lin['numero'];
	echo "</TD>";

	echo "<TD>";
	echo $lin['enzima'];
	echo "</TD>";
	echo "</TR>";
}

echo "<TABLE>\n";

$genopar->fechaBanco();


$genopar->fechaPagina();

function getECtable($genopar){
	$server = "ftp.genome.jp";
	$serverFile = "pub/kegg/ligand/enzyme/ECtable";
	$localFile = "../tmp/ECtable";
	$USER = "anonymous";
	$PASS = "nada@lugar.algum";

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

	ftp_get($con, $localFile, $serverFile, FTP_BINARY) or $genopar->error("Impossible to download the file.");

	ftp_close($con);

	return $localFile;
}

function parse($genopar, $table){
	$ECnumbers = array();
	$lines = file($table);
	foreach ($lines as $line_num => $line) {
		if (preg_match("/^A/", $line)){
    			$split = preg_split("/@/", $line);
			$info = $split[1];
			$info = preg_split("/\s/", $info);
			$EC = trim($info[0]);
			$enz = $info[1];
			$ECnumbers[$EC] = trim($enz);
		}elseif(preg_match("/^[B|C]/", $line)){
			preg_match("/[\d\.]+[\d-]+/",$line,$EC);
			$EC = trim($EC[0]);
			preg_match_all("/\s\w+/",$line,$enz);
			$enz = join(" ",$enz[0]);
			$ECnumbers[$EC] = trim($enz);
		}elseif(preg_match("/^D/", $line)){
			$count = 0;
			$preArr = array();
			$prefix = '';
			$chars = preg_split('//', $line, -1, PREG_SPLIT_NO_EMPTY);
			while(!preg_match("/D\s+(\d+\.){3}\d+\s+/", $prefix) and $count < 20){

				$shift = array_shift($chars);
				array_push($preArr, $shift);
				$prefix = join("", $preArr);
				$count++;
			}
			$split = preg_split("/\s+/", $prefix);
			$EC = trim($split[1]);
			$enz = join("",$chars);
			$ECnumbers[$EC] = trim($enz);
		}
	}
	return $ECnumbers;
}

function update($genopar, $ECnumbers){
	$genopar->abreBanco();

	$q = "DROP TABLE ECnumbers";
	$genopar->queryBanco($q);

	$q = "	CREATE TABLE  `".$genopar->MySQL_Default_DBname."`.`ECnumbers` (
		`numero` varchar(15) default NULL,
		`enzima` text
		) ENGINE=MyISAM DEFAULT CHARSET=latin1";
	$genopar->queryBanco($q);

	foreach ($ECnumbers as $EC => $enz){
		$Enz = addslashes($enz);
		$q = "INSERT into `ECnumbers` VALUES ('$EC', '$Enz')";
		$genopar->queryBanco($q);
	}

	$genopar->fechaBanco();

}

?>