$time_start = getmicrotime();
//carrega configuracoes padrao
session_start ();
define (DIR_PROJETOS, dirname(__FILE__).'/../../../');
define (DIR_CLASSES_SITE, dirname(__FILE__).'/classes/');
$GLOBALS['__CODIGO_DEBUG__'] = "
";
//cache global
require_once (DIR_CLASSES_SITE."class.cache.php");
$cache = new cache(3600, "/tmp/gc.cache");
$cache->carregaCache();
//restantes dos defines e requires
define (REFERENCIA_AO_TEMPLATE_GERAL, "gc_template_geral");
require_once DIR_PROJETOS.$_SERVER['HTTP_HOST']."/configuracoes/configuracoes.inc";
require_once DIR_PROJETOS.$_SERVER['HTTP_HOST']."/configuracoes/conexoes.inc";
require_once DIR_PROJETOS.$_SERVER['HTTP_HOST']."/configuracoes/extras.inc";
require_once DIR_PROJETOS.$_SERVER['HTTP_HOST']."/configuracoes/extrasSite.inc";
require_once DIR_PROJETOS."../versoes/versao".VERSAO."/classes/validacao/class.validacao.php";
require_once dirname(__FILE__)."/classes/banco/db.php";
require_once dirname(__FILE__)."/classes/class.FastTemplate.php";
if (MODO_DEBUG_SITE === true)
{
register_shutdown_function("terminananana");
}
if (!defined("DIR_TEMPLATES_SITE"))
{
gcEstrutura::adicionaMsgDebug("ERRO", "Não foi possível encontrar a constante DIR_TEMPLATES_SITE de localização dos templates.");
exit;
}
//definindo banco de dados
if (!defined("BANCO_PADRAO_GC"))
{
gcEstrutura::adicionaMsgDebug("ERRO", "Não foi possível encontrar a constante BANCO_PADRAO_GC de conexão ao banco de dados.");
exit;
}
$banco = new DBSite (BANCO_PADRAO_GC);
$banco2 = new DBSite (BANCO_PADRAO_GC);
//classe do gerenciador de conteudo
if (file_exists(DIR_PROJETOS.$_SERVER['HTTP_HOST']."/classes/class.gc.php"))
{
require DIR_PROJETOS.$_SERVER['HTTP_HOST']."/classes/class.gc.php";
$_GC = new GCProjeto();
}
else
{
require dirname(__FILE__)."/classes/class.gc.php";
$_GC = new GC();
}
$_GC->inicializa();
//estrutura do GC
require_once (DIR_CLASSES_SITE."class.estrutura.php");
$estrutura = new gcEstrutura();
//paginacao
require_once (DIR_CLASSES_SITE."class.paginacao.php");
//ordenacao
require_once (DIR_CLASSES_SITE."class.ordenacao.php");
//validacao
$validacao = new Validacao();
//verifica se ha query de controle
$temLink = false;
$temTemplate = false;
$variavelLink = 0;
$nomeVariavelLink = "";
//verificando query do arquivo de configurações
for ($i=0;$ivalidar($VAR_CONTROLES[$i]['tipo'], $_GET[$VAR_CONTROLES[$i]['variavel']]) != 1)
header("location: index.php");
}
//obtem o nome da variavel passada por GET usada como id do link
if ($VAR_CONTROLES[$i]['variavel_link'] == 'S')
$nomeVariavelLink = $VAR_CONTROLES[$i]['variavel'];
//se a variavel foi passada por GET definir qual link ou template abrir
if ($_GET[$VAR_CONTROLES[$i]['variavel']])
{
if(!isset($VAR_CONTROLES[$i]['chave_tbl']))
$VAR_CONTROLES[$i]['chave_tbl'] = 'id';
if ($VAR_CONTROLES[$i]['variavel_link'] == 'S')
{
$query = "
SELECT
id AS links_id,
redirecionamento,
flagCache,
protegido
FROM
gcLinks
WHERE
".$VAR_CONTROLES[$i]['chave_tbl']." = '".$_GET[$VAR_CONTROLES[$i]['variavel']]."' and
flagInativo = 'N'";
$temLink = true;
$variavelLink = $_GET[$VAR_CONTROLES[$i]['variavel']];
$nomeVariavelLink = $VAR_CONTROLES[$i]['variavel'];
break;
}
elseif ($VAR_CONTROLES[$i]['query_link'])
{
$query = $VAR_CONTROLES[$i]['query_link'];
$temLink = true;
break;
}
elseif($VAR_CONTROLES[$i]['nomeInterno_link'])
{
$query = "
SELECT
id AS links_id,
redirecionamento,
flagCache,
protegido
FROM
gcLinks
WHERE
nomeInterno = '".$VAR_CONTROLES[$i]['nomeInterno_link']."' and
flagInativo = 'N'";
$temLink = true;
$variavelLink = $_GET[$VAR_CONTROLES[$i]['variavel']];
$nomeVariavelLink = $VAR_CONTROLES[$i]['variavel'];
break;
}
elseif ($VAR_CONTROLES[$i]['query_template'])
{
$query = $VAR_CONTROLES[$i]['query_template'];
$temTemplate = true;
break;
}
elseif($VAR_CONTROLES[$i]['nomeInterno_template'])
{
$query = "
SELECT
id AS templates_id,
caminho,
flagCache
FROM
gcTemplates
WHERE
nomeInterno = '".$VAR_CONTROLES[$i]['nomeInterno_template']."'";
$temTemplate = true;
break;
}
}
}//fim do for
//caso não tenha nenhum, carregar link ou template padrao
if (!$query)
{
//buscando link do caderno base
$query = "
SELECT id as links_id, redirecionamento, flagCache, protegido
FROM gcLinks
WHERE nomeInterno = 'index' and flagInativo = 'N' ";
$temLink = true;
$banco->query($query);
$banco->next_record();
if (!$banco->num_rows())
{
//buscando template do caderno base
$query = "
SELECT id as templates_id, caminho, flagCache
FROM gcTemplates
WHERE nomeInterno ='index' ";
$temTemplate = true;
$temLink = false;
$banco->query($query);
$banco->next_record();
}
}
else
{
$banco->query($query);
$banco->next_record();
}
//verificando se a consulta foi feita correta
if (!$banco->num_rows())
{
$erro = ($temTemplate?"template":"link com nome interno index. SQL>>
$query
");
$estrutura->debug("ERRO: Não foi possível encontrar o $erro.
A consulta não retornou nenhum registro.");
}
//verifica se tem link informado
if ($temLink)
{
//verifica se o link é protegido e o usuário não está autenticado
if ($banco->Record['protegido'] == "S")
{
$problemaPermissao = false;
$nomeIntLinkProblema = "";
// Se o usuário esta logado no site mas não tem permissão ao link
if((!$_GC->permissao($banco->Record['links_id'])) && ($_GC->autenticado()))
{
$problemaPermissao = true;
$nomeIntLinkProblema = "index_sem_permissao";
}
// Se o usuário não esta logado no site
elseif(!$_GC->autenticado())
{
$problemaPermissao = true;
$nomeIntLinkProblema = "index_nao_autenticado";
}
if($problemaPermissao)
{
//carrega o link padrao de nome interno 'index_sem_permissao' ou 'index_nao_autenticado'
$query = "
SELECT
id as links_id,
redirecionamento,
flagCache,
protegido
FROM
gcLinks
WHERE
nomeInterno = '".$nomeIntLinkProblema."' and
flagInativo = 'N' ";
$temLink = true;
$banco->query($query);
if (!$banco->next_record())
$estrutura->debug("Não foi possível localizar o link '".$nomeIntLinkProblema."'");
}
}
$_GC->adicionaAcesso($banco->Record['links_id']);
//cache do link
if($banco->Record['flagCache'] == 'S')
{
require_once (DIR_CLASSES_SITE."class.cache.php");
$cache = new cache(3600, "/tmp/gc.cache/".$_SERVER['HTTP_HOST']."/");
$cache->defineLink($banco->Record['links_id']);
$cache->carregaCache();
}
if (!empty($banco->Record['redirecionamento']))
{
header("location: ".$banco->Record['redirecionamento']);
exit;
}
$query = "
SELECT gcTemplates.id as templates_id, gcTemplates.caminho, gcTemplates.flagCache, gcLinksTemplates.ordem
FROM gcLinksTemplates
LEFT JOIN gcTemplates ON
(gcTemplates.id = gcLinksTemplates.gcTemplates_id)
WHERE
gcLinksTemplates.gcLinks_id = '".$banco->Record['links_id']."'
ORDER BY ordem asc";
$banco2->query($query);
if (!$banco2->num_rows()){
if (MODO_DEBUG_SITE){
gcEstrutura::adicionaMsgDebug("ERRO", "O link não possui templates.");
exit;
}
echo "";
die();
}
$template_anterior = "";
while($banco2->next_record()){
$template = $estrutura->add_template($banco2->Record, $banco->Record['links_id'], $template_anterior);
$template_anterior = $template;
}
echo $template;
//salva cache do link
if ($banco->Record['flagCache'] == 'S'){
$cache->salvaCache($template);
$_GC->finaliza();
}
}
else if ($temTemplate)
{
//cache do template
require_once (DIR_CLASSES_SITE."class.cache.php");
$cache = new cache(3600, "/tmp/gc.cache", $banco->Record['templates_id']);
$cache->defineTemplate($banco->Record['templates_id']);
$cache->carregaCache();
//carregando o template
$html = new FastTemplate(DIR_TEMPLATES_SITE);
$html->no_strict();
$html->define(array(REFERENCIA_AO_TEMPLATE_GERAL => $banco->Record['caminho']));
$html->assign2 ($ASSIGN_GLOBAL);
$template = $estrutura->add_template($banco->Record, $banco->Record['links_id']);
echo $template;
//salva cache do template
if ($banco->Record['flagCache'] == 'S')
{
$cache->salvaCache($html->fetch("_ULTIMO_PARSE_"));
// echo $banco->Record["templates_id"]."
";
}
}
// $cache->salvaCache($template);
// $_GC->finaliza();
unset($cache);
unset($html);
unset($_GC);
unset($banco);
unset($banco2);
unset($estrutura);
function getmicrotime(){
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
function terminananana(){
global $time_start;
$fp = fopen("/tmp/conexoes_".$_SERVER['HTTP_HOST'].".tmp","a+");
$aux = "Foram aberta " . $GLOBALS["______co"]. " conexões com o banco de dados para a montagem desta tela";
gcEstrutura::adicionaMsgDebug("Conexões com o banco de dados", $aux);
$time_end = getmicrotime();
gcEstrutura::adicionaMsgDebug("Tempo de Execução", $time_end - $time_start . " segundos");
fwrite($fp, $aux ."\r\n");
fclose($fp);
echo $GLOBALS['__CODIGO_DEBUG__'];
unset($GLOBALS["______co"]);
}
?>