<?php
/**
* @package evacms
* @copyright (C) 2004 EVA cms. Todos os direitos reservados
* @license http://www.gnu.org/copyleft/gpl.html GPL License
* @author Alessandro Nunes <alessandro@evacms.com.br>
* @author Daniel Neto <daniel@evacms.com.br>
* @link http://www.evacms.com.br Site oficial do projeto EVA
**/
?><?php
//se for pela linha de comando transforme os args em GET
//se for pela linha de comando transforme os args em GET
if (!empty($argc) && $argc > 0){
for ($i=1;$i < $argc;$i++){
parse_str($argv[$i],$tmp);
$_GET = $_POST = $_REQUEST = array_merge($_REQUEST, $tmp);
}
}
ini_set('include_path',PATH_SEPARATOR."biblioteca/classes/".PATH_SEPARATOR.$eva['caminho_eva'].PATH_SEPARATOR.ini_get('include_path'));
// by pass for dinamic javascript cache see class eva_jsmini
if(((!empty($_GET['comando'])
&& $_GET['comando'] == 'jsmini')
|| (!empty($_GET['c'])
&& $_GET['c'] == 'jsmini'))
&& file_exists($_GET['url']."_")
&& empty($_GET['atualizar'])){
header('Content-Type: text/plain');
echo file_get_contents($_GET['url']."_");
exit;
}
if(!isset($eva['caminho']) && !$noindex)return;
//include("arquivos/temas/indisponivel.htm");exit;
//Funcao para debugar
function d($x, $e=false, $comentario=false){
/*
//echo "<hr>".__FILE__." - ".__FUNCTION__." - ".__LINE__."<br>";
if($comentario)echo "<!-- \n";
var_dump($x);
echo "<hr>";
if($comentario)echo "\n -->";
if ($e) exit;
*/
if($comentario)echo "<!-- \n";
var_dump(debug_backtrace());
if($comentario)echo "\n -->";
if ($e) exit;
}
// Ocultando erros do usuário
error_reporting(E_ALL);
//if(!isset($_GET['erro'])) error_reporting(0);
// Apagando variaveis criadas por register_globals=on
if(ini_get('register_globals') > 0){
// Classe para controle de incluir e gerar classes
require_once('biblioteca/classes/eva_incluir.php');
$eva['incluir'] = new eva_incluir();
// Incuindo classes principais
$eva['incluir']->incluir('seguranca');
include($eva['caminho']."arquivos/config.php");
$config['idioma_padrao'] = empty($config['idioma_padrao'])?"br":$config['idioma_padrao'];
include("biblioteca/idiomas/{$config['idioma_padrao']}.php");
echo "<div align=\"center\"><img src=\"eva/imagens/16x16/apps/important.png\" width=\"16\" height=\"16\" alt=\"Important\" /> {$idioma['global_on']}</div>";
exit;
}
// se no php.ini nao estiver ativo o magic_quotes_gpc a funcao coloca \ aspas em tudo
if (!get_magic_quotes_gpc()) {
function addslashes_deep($value){
$value = (is_array($value))? array_map('addslashes_deep', $value) : addslashes($value);
return $value;
}
$_GET = array_map('addslashes_deep', $_GET);
$_POST = array_map('addslashes_deep', $_POST);
$_COOKIE = array_map('addslashes_deep', $_COOKIE);
}
// Variáveis globais
global $eva;
global $config;
global $eva_erros;
// Variavel que receberá todas as requisiçoes para o eva iframe $eva['ajax'][]]
if(empty($eva) || !is_array($eva)) $eva = array();
$eva['ajax'] = array();
$eva['onload'] = array();
$eva['onunload'] = array();
$eva['script'] = array();
$eva['script_file'] = array(); // passar o arquivo js para ser adicionado no packer
$eva['head'] = array();
$eva['erros']['num'] = 0;
$eva['erros']['php'] = array();
//$eva['alerta'] = array(); esta sendo usado pela classe
$eva['site'] = array();
$eva['tempo_sql'] = array();
$eva['tempo_sql_total'] = 0;
$eva['aba_cod'] = 0;
$eva['modulo_dados'] = array();
$eva['bloco_dados'] = array();
$eva['contador'] = 0; // contador global para os id dos objetos usar ($eva['contador']++)
$eva['include'] = array(); // isso é para incluir as palavras chaver para que o eva_javascript inclua os arquivos corretos
$eva['head_css'] = empty($eva['head_css'])?array():$eva['head_css'];// colocar css no head da pag passar a url do css
$eva['editor_carregado'] = false;// variavel para saber se o editor de texto tiny mce ja foi carregado
$eva['imagens']=array(); // vetor com caminhos de imagens para gerar um Preload destas imagens em javascript
// Caminho do Site
// este if eh para q o debug funcione
if(!isset($debugando)){
$eva['caminho'] = (!empty($eva['caminho']))? $eva['caminho'] : str_replace("index.php","",(isset($_SERVER["SCRIPT_FILENAME"])? $_SERVER["SCRIPT_FILENAME"] : (isset($_SERVER["PATH_TRANSLATED"])? $_SERVER["PATH_TRANSLATED"] : "")));
$eva['caminho'] .= (substr($eva['caminho'],-1) != '/')? '/' : '';
}else{
$eva['caminho'] = "";
}
// Níveis de segurança
$config['niveis'] = array('ler' => 1, 'comentar' => 2, 'editar' => 4, 'inserir' => 8, 'apagar' => 16, 'admin' => 32, 'SU' => 64);
define('INCLUDE_PATH_EVA_CLASSES', 'biblioteca/classes/');
require_once 'eva_classes.php';
// Classe para controle de incluir e gerar classes
require_once('biblioteca/classes/eva_incluir.php');
$eva['incluir'] = new eva_incluir();
// Incuindo classes principais
$eva['incluir']->incluir('arquivo','sql','carregar','javascript','exibir', 'jsmini', 'cache');
// Se for um subsite, copiar scripts
if(!empty($eva['caminho_eva'])) $eva['incluir']->incluir('subsite');
// Cronometrando tempo de criação da página
list($usec, $sec) = explode(" ", microtime());
$eva['tempo_inicio'] = ((float)$usec + (float)$sec);
// Inserindo arquivos de configuração padrão - config.php
$instalar = false;
//echo getcwd();
if(!empty($noindex) && file_exists("../../../../../../../arquivos/config.php")){
require_once("../../../../../../../arquivos/config.php");
}else if (!@file_exists($eva['caminho']."arquivos/config.php") || file_exists($eva['caminho']."recover/index.php")){
$instalar = true;
}else{
// Adicionando arquivo de configuração
require_once($eva['caminho']."arquivos/config.php");
}
$eva['incluir']->incluir_modulo('eva_modulo');
$eva['config'] = $config;
// Definindo URL atual
$url = explode('/',$_SERVER['PHP_SELF']);
unset($url[count($url)-1]);
$url = implode('/', $url);
$url = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS']=="on")?"https":"http").'://'.@$_SERVER['SERVER_NAME'].":".@$_SERVER['SERVER_PORT'].$url.'/';
// Variaveis para gerenciamento de subsites
// URL do sistema
if(empty($eva['url_eva'])) $eva['url_eva'] = $url;
$eva['url_eva'] .= (substr($eva['url_eva'],-1) != '/')? '/' : '';
// Se a URL nao foi definida no config.php, entao usa-se a url dinamica
if(empty($eva['config']['url'])) $eva['config']['url'] = $url;
$eva['config']['url'] .= (substr($eva['config']['url'],-1) != '/')? '/' : '';
// Criando sessões
// Definindo o nome e inicializando sessão
session_name(md5($eva['url']));
session_start();
//var_dump(session_name(), $eva['url']);
// Incuindo classes principais
$eva['incluir']->incluir('seguranca');
// Armazenando saída de dados para gerar cache
$eva['seguranca']->inicia_ob_start();
if(!empty($config['url'])) // porque durante a instalação nao existe esta variavel ainda
$config['url'] .= (substr($config['url'],-1) != '/')? '/' : '';
if(!$eva['seguranca']->verificar_acesso("SU") && !$instalar){
// Verificando ataques (flood)
//$eva['seguranca']->verificar_ataque(); desabilitado por enquanto
}else{
// Exibindo erros para SU
if(!empty($_GET['erro']) && $_GET['erro']!='false')
error_reporting(E_ALL);
}
// carrega algumas variaveis do sistema, como os $_FILES que estao na sessao
$eva['carregar']->carregar_variaveis();
// Redefinindo Variaveis para que se possa usar em subsite
$config['cache'] = (!empty($config['cache']))? $config['cache'] : "arquivos/cache";
$config['cache'] = (isset($config['cache_tempo']) && intval($config['cache_tempo']) > 0)? $config['cache'] : "";
$config['download'] = (!empty($config['download']))? $config['download'] : '';
// Criando objeto para cache
$config['cache_tempo']=(isset($config['cache_tempo']))?$config['cache_tempo']:"";
$eva['cache_ativo'] = false;
// Criando objeto para cache de páginas
if(!$instalar && !isset($_GET['comando']) && intval($config['cache_tempo']) > 0 && !isset($_SESSION['us_cod']) && !count($_POST) && $config['cache'] != "" && $eva['arquivo']->verificar_diretorio($config['cache']) === true){
$eva['incluir']->incluir("cache");
$eva['cache']->cache_config($config['cache'],$config['cache_tempo']);
if(intval($config['cache_tamanho']) > 0 && $eva['arquivo']->tamanho_diretorio($config['cache']) > $config['cache_tamanho']*1024){
$eva['cache']->flush();
}
//to tell the browser to keep files in cache for at least a day, you can use
$eva['cache']->cacheHeaders();
// Verificando cache
$eva['cache_ativo'] = true;
$eva['cache']->start();
}//var_dump($config['cache']);exit;
// Incluindo idioma
$config['idioma_padrao'] = (!empty($config['idioma_padrao']))? $config['idioma_padrao'] : (isset($_GET['idioma'])?$_GET['idioma']:"br") ;
include_once("biblioteca/idiomas/{$config['idioma_padrao']}.php");
// Exibição de erros
// Inclui o Try-Catch do adodb e o error_reporting do PHP para Super Usuarios
if($eva['seguranca']->verificar_acesso('SU')){
require_once("biblioteca/classes/adodb/adodb-errorhandler.inc.php");
}
//error_reporting(E_ALL);
//require_once("biblioteca/classes/adodb/adodb-errorhandler.inc.php");
if(!$instalar || (isset($_GET['comando']) && $_GET['comando'] != 'jsmini')){
//$eva['seguranca']->setKey($config['bdusuario']);
//$eva['seguranca']->decrypt($config['bdsenha']);
$eva['seguranca']->senha_banco_decrypt();
// Estabelecendo Conexão com o Banco de Dados
// Criando objeto de conexão $bd
global $bd;
//substituindo usuario e senha se foram passados via post
$config['bdusuario'] = (empty($_POST['bdusuario']))?$config['bdusuario']:$_POST['bdusuario'];
$config['bdsenha'] = (empty($_POST['bdsenha']))?$config['bdsenha']:$_POST['bdsenha'];
// Criando conexão com a base de dados
//var_dump($config);
//echo "eva['sql']->conectar([{$config['bdtipo']}], [{$config['bdhost']}], [{$config['bdusuario']}], [".stripslashes($config['bdsenha'])."], [{$config['bdnome']}])";
//exit;
// Configurando ADODB
$bd = $eva['sql']->conectar($config['bdtipo'], $config['bdhost'], $config['bdusuario'], stripslashes($config['bdsenha']), $config['bdnome']);
// se foi setada a variavel $config['adodblog'] ou $_GET['adodblog'] faça o log do banco
if(!empty($_GET['adodblog']))$config['adodblog'] = $_GET['adodblog'];
if(!empty($config['adodblog']) && !empty($_ENV['COMPUTERNAME']) && !eregi($_ENV['COMPUTERNAME'],$_SERVER["HTTP_HOST"])){
$eva['sql']->conexao->LogSQL(true);
}
// get the mysql version
if(eregi("mysql",$config['bdtipo'])) $eva['sql']->mysql_version();
//$bd->SetFetchMode(ADODB_FETCH_ASSOC);
if(!$bd){
echo "<div style=\"color:#FF0000\" align=\"center\">| [{$idioma['erro_bd']}] |</div>";
$file = fopen($eva['caminho']."bd_error.log", 'a');
$text=date("d/m/Y H:i:s").PHP_EOL.$eva['sql']->erro().PHP_EOL."Tipo: ".$config['bdtipo'].PHP_EOL."Servidor: ".$config['bdhost'].PHP_EOL."Usuario: ".$config['bdusuario'].PHP_EOL."Senha: ". stripslashes($config['bdsenha']).PHP_EOL."Banco: ".$config['bdnome'].PHP_EOL.PHP_EOL."----".PHP_EOL.PHP_EOL;
fwrite($file, $text);
fclose($file);
exit;
}
$eva['sql']->cache($config['cache'], $config['bdcache']);
// Exibição de configuração de blocos e erros PHP
if(isset($_GET['eva_blocos']) && $eva['seguranca']->verificar_acesso('admin',"eva_bloco")){
$_SESSION['eva_blocos'] = ($_GET['eva_blocos'] == "true")? true : false;
}
if(isset($_GET['eva_login'])){
$eva['incluir']->incluir("login");
// Login no Index para que o login seja sempre a primeira coisa a ser executada no codigo
$eva['login']->entrar();
}
// Definindo o site
$eva['carregar']->site();
}
// Verificando variaveis GET padrao
$_GET['modulo'] = (isset($_GET['modulo'])) ? trim($_GET['modulo']) : "eva_index";
$_GET['acao'] = isset($_GET['acao'])? $_GET['acao'] : "";
$_GET['subacao'] = isset($_GET['subacao'])? $_GET['subacao'] : "";
$_GET['popup_alerta'] = isset($_GET['popup_alerta'])? $_GET['popup_alerta'] : "";
$_GET['bloco'] = (isset($_GET['bloco']))? $_GET['bloco'] : 0;
// add the url message into the page
if(!empty($_GET['msg'])){
$eva['incluir']->incluir('alerta');
//if msg pass an idioma variable use it
if(eregi("^idioma_", $_GET['msg']))
$_GET['msg'] = $idioma[str_replace("idioma_", "", $_GET['msg'])];
$eva['alerta']->adicionar("", urldecode($_GET['msg']));
}
// Carregando bloco, módulo ou comando
if(isset($_GET['comando'])){
// Executa comando
$exibir = $eva['carregar']->comando($_GET['modulo']);
}else{
if($instalar && !@file_exists($eva['caminho']."recover/index.php")){
// Procedimento de Instalacao
require('modulos/eva_config/instalar.php');
}else if(@file_exists($eva['caminho']."recover/index.php")){
// ferramenta para recuperação
require($eva['caminho']."recover/index.php");
}else {//echo __FILE__." - ".__LINE__."<br>";
// carrega configuracoes iniciais que algum modulo precisar
$eva['carregar']->input_dos_modulos();
//verificar atualizacoes de modulos
$eva['modulo_eva_modulo']->atualizar();//echo __FILE__." - ".__LINE__."<br>";
// Carrega blocos e módulos
// Limpando sessão com a pasta de armazenamento de arquivos utilizada no módulo anterior
$_SESSION['diretorio_arquivos'] = "";
// get the URL and put it in the history
$eva['carregar']->add_history("index.php?".$_SERVER['QUERY_STRING']);
// Carregando o tema do site
$exibir = $eva['carregar']->tema();
if($_GET['bloco'] > 0 || (isset($_GET['popup']) && $_GET['popup'] == "true")){
// Carrega bloco enviar via GET
$temp = $eva['carregar']->blocos($exibir,intval($_GET['bloco']),$_GET['modulo']);
$exibir = (!empty($temp['bloco']))? str_replace("{centro}",$temp['bloco'],$exibir) : $exibir;
}
if(!isset($_GET['popup']) || (isset($_GET['popup']) && $_GET['popup'] != "true")){
// Carrega todos os blocos
$exibir = $eva['carregar']->blocos($exibir,"",$_GET['modulo']);
}
// se foi setado um lugar para redirecionar, redirecione
if(!empty($_GET['redirect']))
header("Location: ".base64_decode($_GET['redirect']));
// Removendo posições dos blocos
$eva['carregar']->limpar($exibir);
// Versão do EVAcms
$config['versao'] = (isset($config['versao']))? $config['versao'] : "2.0.0";
// Codificação para exibição do caracteres com acentos
$eva['head'][] = "<link rel=\"shortcut icon\" href=\"".(file_exists("../arquivos/favicon.ico")?"arquivos/favicon.ico":"favicon.ico")."\" type=\"image/x-icon\"/><!--| EVA - Sistema Gerenciador de Conteúdo | Copyleft 2005 EVAcms (www.evacms.com.br) Versão ".$config['versao']." | GNU General Public License versão 2 | Criado por Alessandro Nunes (alessandro@evacms.com.br) & Daniel Neto (daniel@evacms.com.br) |-->\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />";
/*
* Removi pois nao tem mais uso
//$eva['head'][] = '<script type="text/javascript" src="eva/biblioteca/javascripts/tiny_mce/plugins/imgmanager/ImageManager/assets/dialog.js"></script>';
//$eva['head'][] = '<script type="text/javascript" src="eva/biblioteca/javascripts/tiny_mce/plugins/imgmanager/ImageManager/IMEStandalone.js"></script>';
*
*/
if($eva['seguranca']->verificar_acesso()){
// Rastreando o usuario
//Desabilitei em 01 de junho de 2009 pois nao vejo mais necessidade
//$eva['ajax'][]="index.php?modulo=eva_usuario&comando=ultimo_clique";
}else{
// Definindo Creditos e Meta-Tags
$eva['head'][] = "<link rev=\"made\" href=\"http://www.evacms.com.br\"/>";
$eva['head'][] = "<meta name=\"description\" content=\"".htmlentities($eva['site']['si_nome'])." - ".htmlentities($eva['site']['si_desc'])."\"/>";
$eva['head'][] = "<meta name=\"generator\" content=\"EVA - Sistema Gerenciador de Conteúdo - GNU General Public License 2\"/>";
$eva['head'][] = "<meta name=\"author\" content=\"Alessandro do Valle Nunes - Daniel de Oliveira Santos Neto\"/><meta name=\"ROBOTS\" content=\"ALL\"/>";
}
// funcao para organizar as requisiçoes
$eva['geral']->recarregar_eva_xmlhttp($exibir);
if(!isset($_GET['popup']) || (isset($_GET['popup']) && $_GET['popup'] == "false")){
// Adicionando imagens pré-carregadas
$eva['carregar']->imagens();
// Criar menu de contexto
if($eva['seguranca']->verificar_acesso()){
$eva['incluir']->incluir_modulo("eva_menu");
$eva['modulo_eva_menu']->contexto();
}
}
}
// Adicionando alertas
// Incluindo funções JS que são executadas no evento 'onload' e 'onunload'
$eva['incluir']->incluir("alerta");
if(isset($_GET['imprimir'])) $eva['onload'][] = "window.print();";
$eva['onload'] = array_unique($eva['onload']);
$eva_camada_alerta = "<div id=\"TipLayer\" style=\"visibility:hidden;position:absolute;z-index:1000;top:-100\"></div>";
$exibir = str_replace( "</body>", $eva_camada_alerta.$eva['alerta']->monta_alerta()."
<script type='text/javascript'><!--
".$eva['jsmini']->_compact("
try{old_onload = onload;}catch(e){function old_onload(){};};/* se algum script colocou algo no unload aproveite*/
>.implode("",$eva['onload'])."}; >.implode("",$eva['onunload'])."};", 'packer', 0)."
//-->
</script><!-- {eva_microtime} --><div style=\"display:none; visibility:hidden;\">powered by EVAcms</div></body>", $exibir);
$eva['onload'] = array();
// Suprimindo erros javascript
if(!$eva['seguranca']->verificar_acesso('SU')){
//$eva['script'][] = "window.>
}
// Incluindo funções JS que serão utilizadas em cada página
$eva['head'][] = "<script type='text/javascript'>var sistema_eva=\"{$eva['url_eva']}\"; </script>";
$eva['javascript']->incluir($exibir);
//pegando o restante do onload depois de incluir os scripts
$eva['onload'] = array_unique($eva['onload']);
$exibir = str_replace( "}; >, implode("",$eva['onload'])."}; >, $exibir);
// Incluindo itens no HEAD da pagina
$eva['head'] = array_unique($eva['head']);
$eva['head_css'] = array_unique($eva['head_css']);
$eva['site']["si_desc"] = (!empty($eva['site']["si_desc"]))? $eva['site']["si_desc"] : '';
$eva['substituir']['</head>'] = "<!-- ".$eva['site']["si_desc"]." -->".implode("\n",$eva['head'])."\n<script type='text/javascript'><!--
".$eva['jsmini']->_compact(implode("\n",$eva['script']), 'packer', 0)."
//--></script>\n<style type='text/css'><!-- ".implode("\n",$eva['head_css'])." --></style>\n</head>";
/*
// coloco o js na sessao para pegar no arquivo obs: nao ficou bom dava alguns erros
$_SESSION['eva']['script'] = $eva['script'];
$eva['substituir']['</head>'] = "<!-- ".$eva['site']["si_desc"]." -->".implode("\n",$eva['head'])."\n<style type='text/css'><!-- ".implode("\n",$eva['head_css'])." --></style>\n</head>";*/
}
// Definindo tempo de criação da página
// Adiocionando exibicao do microtime
if(isset($eva['tempo_blocos']) && isset($_SESSION['eva_blocos']) && $_SESSION['eva_blocos'] === true){
$eva['site']["titulo"] .= "| ".$idioma['total'].": ".($eva['geral']->getmicrotime() - $eva['tempo_inicio'])." | ".$idioma['blocos'].": ".$eva['tempo_blocos']." |";
}
// Inclui titulo e microtime e descricao - substitui o vetor global
$eva['site']["titulo"] = (!empty($eva['site']["titulo"]))? $eva['site']["titulo"] : '';
$eva['substituir']['{titulo}'] = $eva['site']["titulo"];
$eva['substituir']['{eva_microtime}'] = ($eva['geral']->getmicrotime() - $eva['tempo_inicio']);
$exibir = strtr($exibir,$eva['substituir']);
// Tratando código para exibição
$eva['carregar']->tratar_exibir($exibir);
// Armazenando saída de dados para gerar cache
$eva['seguranca']->inicia_ob_start();
//var_dump($_GET);
//var_dump($_SESSION);exit;
// Exibindo a página
echo $exibir;
/* Descomentar se quiser ver performance */
if(!empty($_GET['debugar']))
echo "<br><hr><br>".implode("<br><br>", $eva['tempo_sql'])."<br><hr><br>".$eva['tempo_sql_total'];
// Gerando cache e exibindo página
if($eva['cache_ativo']){
$eva['cache']->end();
}else{
@ob_end_flush();
}
//error_log("You messed up!", 3, "arquivos/php.log");
?>