<?php
if (is_file("../../../../config/config_dir_raiz.php"))
{	
	require_once("../../../../config/config_dir_raiz.php");
}
elseif (is_file("../../config/config_dir_raiz.php"))
{
	require_once("../../config/config_dir_raiz.php");
}
else
{
	require_once("config/config_dir_raiz.php");
}		
$_config = new Config();
require_once($config->diretorio_raiz()."/src/model/arquivo/Configuracoes_bd_DAO_arq.php");
class Conexao
{
	
	private static $conexao;
	private static $utilizarBanco = array("mysql","oci","msserv");
	private static $bancoAtual = null;
	
	public static function obterConexao(){
		if(isset(self::$conexao)==false)
		{	
			$configuracoes_bd_DAO_arq = new Configuracoes_bd_DAO_arq();
			self::validaSeExisteObanco($configuracoes_bd_DAO_arq->getHost(), $configuracoes_bd_DAO_arq->getUser(), $configuracoes_bd_DAO_arq->getSenha(), $configuracoes_bd_DAO_arq->getDbname());
			self::setSetBancoAtual($configuracoes_bd_DAO_arq->getSgbd());
			self::$conexao = new PDO(self::getUtilizarBanco().":host=".$configuracoes_bd_DAO_arq->getHost().";dbname=".$configuracoes_bd_DAO_arq->getDbname(), $configuracoes_bd_DAO_arq->getUser(), $configuracoes_bd_DAO_arq->getSenha(),array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
		}	
			return self::$conexao;
	}
	
	public static function getBancoAtual()
	{
		return self::$bancoAtual;
	}
	public static function getUtilizarBanco()
	{
		return self::$utilizarBanco[self::getBancoAtual()];
	}
	private static function setSetBancoAtual($sgbdArquivoConfig)
	{
		for($i = 0; $i < count(self::$utilizarBanco); $i++)
		{
			if (self::$utilizarBanco[$i] == $sgbdArquivoConfig)
			{
				self::$bancoAtual = $i;
			}
		}
	}
	private static function validaSeExisteObanco($url, $dbusername, $dbpassword, $dbname)
	{
		$pdo = new PDO("mysql:host=".$url, $dbusername, $dbpassword);
		$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		$dbname = "`".str_replace("`","``",$dbname)."`";
		$pdo->query("CREATE DATABASE IF NOT EXISTS $dbname");
		$pdo->query("use $dbname");
	}
}