/////////////////////////////////
/// CLASES CARGADAS ///
///////////////////////////////
/*
· $GLOBALS['Metas']
· $GLOBALS['Util']
· Idioma
· $GLOBALS['Con']
· $GLOBALS['Config']
/////////////////////////////////
/// METODOS ///
///////////////////////////////
· incluye('archivo.ext'); // 26/06/2013 - Carga js y css || Heredado de MEtas.
· extrae_cadena($limitador_i,$limitador_f,$cadena) // 26/06/2013 - Extrae un trozo de cadena delimitada
· inyecta_cadena($limitador_i,$limitador_f,$cadena,$sustituto)
*/
/////////////////////////////////
/// ERROR REPORTING ///
///////////////////////////////
/*
error_reporting(E_ALL);
ini_set('display_errors', '1');
ini_set('log_errors', 'On');
*/
/*
echo "
";
var_dump(debug_backtrace());
echo "
";
print_r(debug_backtrace(), true);
*/
class CEngine{
public $EN_DESAROLLO;
public $ATRAS = 'javascript:history.go(-1);';
public $tiempoInicial;
function __construct(){
/////////////////////////////////
/// INICIO SESSIION ///
///////////////////////////////
header('Content-Type: text/html; charset=UTF-8');
ini_set('session.cache_expire',1260); # duran 20 minutos las variables de sesion
session_start();
if (version_compare(phpversion(), '5.2.0', '<')) { // 5.3.3
die('La versión de php que usa tu Servidor es demasiado antigüa, necesitas como mínimo la 5.3.3');
}
//// *CS : Por si viene de otra web, solo funcionará una vez publicada en internet
/*if(md5(__FILE__) != $_SESSION['pw_unica']){
session_unset();
session_destroy();
session_start();
$_SESSION['pw_unica'] = md5(__FILE__);
}*/
$this->tiempoInicial = microtime(true);
/////////////////////////////////
/// CARGAMOS CLASES ///
///////////////////////////////
//// CONECTAMOS A LA SQL ////
include_once(dirname(dirname(dirname(__FILE__))).'/config/bbdd.php'); # datos de conexion a la BDD
include_once(dirname(dirname(dirname(__FILE__))).'/class/conexion.php');
$GLOBALS['Con'] = new CConexion;
$GLOBALS['Con']->conectar();
//// CARGAMOS EL CONFIG DE LA WEB ////
include_once(dirname(dirname(dirname(__FILE__))).'/class/config.php');
$Config = new CSuperConfig($GLOBALS['Con']);
$GLOBALS['Config'] = $Config->obtener_uno();
unset($Config);
if($GLOBALS['Config']->WEB_CERRADA == '1'){
header("Location: ".$GLOBALS['Config']->URL."503.php");
die();
}
//// LOS MODULOS ACTIVOS ///
include_once($GLOBALS['Config']->DIRBASE.'/class/niveles_admin.php');
$niveles_admin = new CNiveles_admin($GLOBALS['Con']);
$this->PERMISOS = $niveles_admin->obtener_key(1);
unset($niveles_admin);
//// CARGAMOS LAS UTILIDADES ////
include_once($GLOBALS['Config']->DIRBASE.'/class/util.php');
$GLOBALS['Util'] = new CUtil();
//// ESTADISTICAS DE VISITA ///
include_once($GLOBALS['Config']->DIRBASE.'/modulos/megaVisitas/megaVisitas.php');
$visitas = new CmegaVisitas();
}
public function inicia(){
include_once('class/metatags.php');
//// CARGAMOS LOS IDIOMAS ////
include_once($GLOBALS['Config']->DIRBASE.'/class/idiomas.php');
$idioma = new CSuperIdiomas($GLOBALS['Con']);
$GLOBALS['Idiomas'] = $idioma->obtener(null,1); // solo los activos
if(isset($_POST['id_idioma'])){
$_SESSION['id_idioma'] = $_POST['id_idioma'];
} else if(isset($_GET['id_idioma'])){
$_SESSION['id_idioma'] = $_GET['id_idioma'];
} else if(!isset($_SESSION['id_idioma']) || !$_SESSION['id_idioma'] > 0){
// La primera vez que entra en el index . Idioma aun sin seleccionar.
$_SESSION['id_idioma'] = 1; // idioma por defecto
$idioma_navegador = strtoupper(substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2));
for($i=0;$iISO) $_SESSION['id_idioma'] = $GLOBALS['Idiomas'][$i]->ID_IDIOMA;
}
}
$GLOBALS['Isos'] = array();
if(isset($GLOBALS['Idiomas'])) {
for ($i = 0; $i < count($GLOBALS['Idiomas']); $i++) {
$GLOBALS['Idiomas'][$i]->ISO = strtolower($GLOBALS['Idiomas'][$i]->ISO);
if (!is_object($GLOBALS['Isos'][$GLOBALS['Idiomas'][$i]->ID_IDIOMA])) {
$GLOBALS['Isos'][$GLOBALS['Idiomas'][$i]->ID_IDIOMA] = new stdClass;
}
$GLOBALS['Isos'][$GLOBALS['Idiomas'][$i]->ID_IDIOMA]->ISO = $GLOBALS['Idiomas'][$i]->ISO;
if ($GLOBALS['Idiomas'][$i]->ID_IDIOMA == $_SESSION['id_idioma']) $GLOBALS['Idioma'] = $GLOBALS['Idiomas'][$i];
}
}
if(!isset($GLOBALS['Idioma'])){
// Está intentando cargar un idioma no activo
$_SESSION['id_idioma'] = 1; // idioma por defecto
$GLOBALS['Idioma'] = $GLOBALS['Idiomas'][1];
}
unset($idioma);
// para evitar contenido duplicado se envia directamente al idioma por defecto o seleccionado al entrar al dominio
$path = explode('/', $_SERVER['SCRIPT_NAME']);
if(!isset($_GET['id_idioma']) && end($path) === 'index.php'){
/*
$metas = new CSuperMetatags($GLOBALS['Con']);
echo $metas->crearHtaccess();
*/
@header('Location: '.$GLOBALS['Config']->URL.$GLOBALS['Idioma']->ISO.'/');
}
//// CARGAMOS LAS METAS ////
include_once($GLOBALS['Config']->DIRBASE.'/modulos/megaMetatags/megaMetatags.php');
//// CARGAMOS LA TRADUCCION ////
include_once($GLOBALS['Config']->DIRBASE.'/modulos/traduccion_web/traduccion_web.php');
///// CLIENTES //////
if($this->PERMISOS[132]){
include_once($GLOBALS['Config']->DIRBASE.'/modulos/megaClientes/megaClientes.php');
$GLOBALS['Clientes'] = new CMegaClientes($GLOBALS['Con']);
}
///// CESTA //////
if($this->PERMISOS[164]){ // el id de los pedidos
// carga las divisas si hay tienda
include_once($GLOBALS['Config']->DIRBASE.'/modulos/megaDivisas/megaDivisas.php');
include_once($GLOBALS['Config']->DIRBASE.'/modulos/megaCesta/megaCesta.php');
}
//$this->carga_clases_extra($clases_extra); // clases particulares de este proyecto que se cargarán siempre.
/////////////////////////////////
/// VARIOS ///
///////////////////////////////
//// ELIMINAMOS VARIABLES PELIGROSAS ////
foreach($_GET as $clave => $valor){
$_GET[$clave] = $GLOBALS['Con']->filtro($valor);
}
foreach($_POST as $clave => $valor){
$_POST[$clave] = $GLOBALS['Con']->filtro($valor);
}
$dominio = $_SERVER['SERVER_NAME'];
if($dominio == 'www.cerotec.es'){
// EN DESARROLLO
$this->EN_DESAROLLO = 1;
}else{
// EN INTERNET
$this->EN_DESAROLLO = 0;
ini_set('display_errors',0);
error_reporting(false);
}
unset($dominio);
///// BOLETIN //////
if(isset($_POST['newsletter'])){
include_once($GLOBALS['Config']->DIRBASE.'/modulos/megaBoletin/megaBoletin.php');
}
//////////////////////////////////////////
/// PARTICULARIDADES DE ESTE PROYECTO ///
////////////////////////////////////////
function bonito($numero, $txt = null){
if($numero > 0){
$numero = round($numero,2);
$numero = $numero == 0 ? '0' : number_format($numero,2,',','.');
$numero = explode(',',$numero);
//if($numero[1] == '00'){
// $numero = $numero[0];
//}else{
$numero = $numero[0].','.$numero[1].'';
//}
}else{
if(is_null($txt))
$numero ='00,00';
else
$numero = $txt;
}
return $numero;
}
}
function __destruct(){
// se auto-ejecuto al morir la instancia, es decir, cuando la web se carga al 100%.
$GLOBALS['Con']->desconectar();
}
public function cerrar(){
if($this->EN_DESAROLLO){
echo $this->memoria_consumida();
}
/*
PARA DEPURAR LA MEMORIA
echo '';
print_r($GLOBALS);
echo '
';*/
// en algunos servidores el _destruct no funciona y se usa esto.
$GLOBALS['Con']->desconectar(1);
}
private function memoria_consumida(){
$memoria_usada = round(memory_get_peak_usage() / 1024,1) ;
$diferencia = round($memoria_usada-$_SESSION['ultima_memoria_usada'],1);
$tiempo = microtime(true)-$this->tiempoInicial;
$_SESSION['ultima_memoria_usada'] = $memoria_usada;
return "Memoria usada: ".number_format($memoria_usada,1)." KB (".$diferencia.") KB
Tiempo de carga: ".round($tiempo,3)." segundos
";
}
private function carga_clases_extra($clases_extra_){
global $Con;
for($x=0;$xmemoria_actual;
if(!isset($this->tiempo_actual)) $this->tiempo_actual = $this->tiempoInicial;
$diferencia = (microtime(true)-$this->tiempo_actual)*100;
echo "".$n.": ".round($diferencia_t,4)." | ".number_format($diferencia_m,3)."
";
$this->tiempo_actual = microtime(true);
$this->memoria_actual = $memoria_usada;
}
}
// Lo inicio.
$GLOBALS['Engine'] = new CEngine();
$GLOBALS['Engine']->inicia();
?>
///////////////////////////////////
// CLASE //
/////////////////////////////////
class Contactar_web{
public $MI_CONFIG;
function __construct(){
$this->name = 'Contactar';
$this->version = 1.0;
$this->author = 'Sergio Romero';
$this->description = 'Motor para el envío de formularios de contacto. El js genera automáticamente los errores. Los campos obligatorios se definen en el config de la admin. Genera automáticamente los onFocus';
// Cargo el config del módulo
include_once($GLOBALS['Config']->DIRBASE.'/class/contactar_config.php');
$contactar_config = new CSuperContactar_config($GLOBALS['Con']);
$this->MI_CONFIG = $contactar_config->obtener_uno();
// seteo metas
$GLOBALS["Metas"]->TITLE = t('Formulario de contacto Online.','contactar');
$GLOBALS["Metas"]->DESCRIPTION = t('Si tienes cualquier duda o sugerencia, contacta con nosotros y te ayudaremos en todo lo posible.','contactar');
// inicio operaciones
//$this->validador_javascript();
$this->MENSAJE_OMISION = '';
if(isset($_POST['consulta']) && $_POST['consulta'] != ''){
$this->MENSAJE_OMISION = $_POST['consulta'];
}elseif(isset($_GET['i']) && is_numeric($_GET['i'])){
include_once($GLOBALS['Config']->DIRBASE.'/class/productos.php');
$prod = new CSuperProductos($GLOBALS['Con']);
$tmp_prod = $prod->obtener_uno((int)$_GET['i']);
$this->MENSAJE_OMISION = t('Estoy interesado en el producto:','contactar').' '.$tmp_prod->NOMBRE.' ';
$this->NOMBRE_PRODUCTO = $tmp_prod->NOMBRE;
$GLOBALS['Metas']->TITLE = t('Información sobre el producto','contactar').' '.$tmp_prod->NOMBRE;
$GLOBALS['Metas']->DESCRIPTION = t('Solicitar información sobre el producto','contactar').' '.$tmp_prod->NOMBRE.'. Un asesor responderá todas tus preguntas referentes a '.$tmp_prod->NOMBRE;
unset($prod, $tmp_prod);
}
$this->test_envio();
}
private function validador_javascript(){
$campos_a_mirar = '';
$campos_a_mirar.= "['nombre','nombre']";
if($campos_a_mirar != '') $campos_a_mirar.= ',';
$campos_a_mirar.= "['email','email']";
if($campos_a_mirar != '') $campos_a_mirar.= ',';
$campos_a_mirar.= "['consulta','area']";
if($campos_a_mirar != '') $campos_a_mirar.= ',';
$campos_a_mirar.= "['telefono','telefono']";
// Validación JS
// TIPOS DE DATOS: nombre, telefono, email, desplegable, pass, area, fecha, web, check
// js('js/validate.js'); // impide que se incluya 2 veces lo mismo
in_line("var id_formulario = '".$this->MI_CONFIG->ID_FORMULARIO."'; var campos_a_mirar = [".$campos_a_mirar."]; inicia_validador(campos_a_mirar,id_formulario);");
}
private function test_envio(){
$this->ENVIADO = 0; // retorna si ha sido o no correcto el envio
if(isset($_POST['nombre']) && $_POST['nombre'] != ''){
// 1. Valido los datos de lado del servidor
// FUNCIONES: validaTexto, validaConsulta, validaTlf, validaEmail, validaLista, validaChek, validaPass, validaFecha
$error = '';
if($this->MI_CONFIG->NOMBRE){
$error.= $GLOBALS['Util']->validaTexto($_POST['nombre'],t('Nombre','contactar'));
}
if($this->MI_CONFIG->EMAIL){
$error.= $GLOBALS['Util']->validaEmail($_POST['email'],t('Email','contactar'));
}
if($this->MI_CONFIG->CONSULTA){
$error.= $GLOBALS['Util']->validaConsulta($_POST['consulta'],t('Consulta','contactar'));
}
if($this->MI_CONFIG->TELEFONO){
$error.= $GLOBALS['Util']->validaTlf($_POST['telefono'],t('Teléfono','contactar'));
}
if($this->MI_CONFIG->POLITICA){
$error.= $GLOBALS['Util']->validaChek($_POST['politica'],t('Política de privacidad','contactar'));
}
$error.= $GLOBALS['Util']->validaLista($_POST['cuando'],t('Fecha de venta','contactar'));
// 2. Compruebo que no haga más de 3 envios seguidos
if(!isset($_SESSION['ip_enviadas'])) $_SESSION['ip_enviadas'] = array();
if($_SESSION['ip_enviadas'][$_SERVER['REMOTE_ADDR']] > 3) $error.= t('No puede mandar más de 3 consultas seguidas.','contactar');
if($error != ''){
$_POST['consulta'] = str_replace("\\r\\n","\r\n",$_POST['consulta']); //pendiente: Esto.... es por culpa del filtro del engine.. ¿Es necesario el filtro en el engine?
$GLOBALS['Util']->alerta(t('ERROR EN EL FORMULARIO
','contactar').$error);
$GLOBALS['Util']->carga_msg('roja', t('ERROR EN EL FORMULARIO
','contactar').$error);
}else{
// 3. Almaceno el envio para no hacer más de 3
if(!isset($_SESSION['ip_enviadas'][$_SERVER['REMOTE_ADDR']]))
$_SESSION['ip_enviadas'][$_SERVER['REMOTE_ADDR']] = 1;
else
$_SESSION['ip_enviadas'][$_SERVER['REMOTE_ADDR']]++;
// 5. Monto el contenido del email, solo con los campos enviados
$cuerpo = '';
if($_POST['motivo'])
$cuerpo.= 'Motivo: '.$_POST['motivo'].'
';
if($_POST['empresa'])
$cuerpo.= 'Empresa: '.$_POST['empresa'].'
';
if($_POST['nombre'])
$cuerpo.= 'Nombre: '.$_POST['nombre'].'
';
if($_POST['apellidos'])
$cuerpo.= 'Apellidos: '.$_POST['apellidos'].'
';
if($_POST['telefono'])
$cuerpo.= 'Teléfono: '.$_POST['telefono'].'
';
if($_POST['email'])
$cuerpo.= 'Email: '.$_POST['email'].'
';
if($_POST['direccion'])
$cuerpo.= 'Dirección: '.$_POST['direccion'].'
';
$cuerpo.= 'Fecha venta: '.$_POST['cuando'].'
';
if($_POST['consulta'])
$cuerpo.= 'Consulta: '.$_POST['consulta'].'
';
$cuerpo = str_replace("\r\n","\n",nl2br($cuerpo));
$cuerpo = str_replace("\\n","\n",$cuerpo);
$cuerpo = str_replace("\n","
",$cuerpo);
$cuerpo = stripslashes($cuerpo);
// 6. Lo envio
include_once($GLOBALS['Config']->DIRBASE.'/modulos/megaEmails/megaEmails.php');
$GLOBALS['Emails']->ASUNTO = 'Formulario Reventas: '.$_POST['nombre'];
if($GLOBALS['Config']->DESTINATARIOS != '')
$GLOBALS['Emails']->PARA = $GLOBALS['Config']->DESTINATARIOS;
else
$GLOBALS['Emails']->PARA = $GLOBALS['Config']->EMAIL;
if($GLOBALS['Config']->DESTINATARIOS_O != '')
$GLOBALS['Emails']->PARA_O = $GLOBALS['Config']->DESTINATARIOS_O; // Copias ocultas
$GLOBALS['Emails']->REPLY_TO = $_POST['email'];
$GLOBALS['Emails']->FROM_NAME = $_POST['nombre'].' '.$_POST['apellidos'];
$GLOBALS['Emails']->CUERPO = $cuerpo;
$GLOBALS['Emails']->enviar_paralelo();
unset($_POST['motivo']);
unset($_POST['nombre']);
unset($_POST['apellidos']);
unset($_POST['telefono']);
unset($_POST['email']);
unset($_POST['direccion']);
unset($_POST['consulta']);
unset($_POST['empresa']);
$GLOBALS['Util']->alerta(t('ENVIO CORRECTO
El envio de su formulario se ha producido de forma correcta. Puede abandonar la página con seguridad.','contactar').$error);
$GLOBALS['Util']->carga_msg('verde', t('ENVIO CORRECTO
El envio de su formulario se ha producido de forma correcta. Puede abandonar la página con seguridad.','contactar').$error);
$this->ENVIADO = 1; // retorna si ha sido o no correcto el envio
}
}
} // test_envio
}
// Lo inicio.
$contactar_web = new Contactar_web();
?>
/////////////////////////////
///// METODOS //////
/////////////////////////////
/*
· mostrar_carrusel($mostrar_maximo); // 15/07/2013 Muestra los banners en pantalla con un carrusel animado en Java Script
· $seccion
0 - Portada
1 - Listado
2 - empresas
3 - perfiles demandantes
· $posicion
1 - Arriba
2 - Columna derecha
3 - Entre los resultados
*/
/*js('modulos/banners/jquery.blueberry.js');
css('modulos/banners/blueberry.css');
in_line("$('.blueberry').blueberry();");*/
include_once($GLOBALS['Config']->DIRBASE.'/class/banners.php');
class megaBanners extends CSuperBanners{
public $CONFIG = array();
function __construct(){
$this->name = 'Banners Web';
$this->version = 1.0;
$this->author = 'Sergio Romero';
$this->description = 'Motor para la gestión de los banners';
$this->CONEXION = new CConexion($GLOBALS['Con']->MYSQLi);
$this->CONEXION->ORDEN = 'orden';
}
public function obtener_web($cantidad = null){
if(is_null($cantidad)) $cantidad = $this->CONFIG['cantidad'];
$listado_banners = $this->obtener_inteligente($this->CONFIG['id_categoria'], 1, $this->CONFIG['seccion'], $this->CONFIG['posicion'], $GLOBALS['Idioma']->ID_IDIOMA, $cantidad);
for($b=0;$bsuma_visita($listado_banners[$b]);
}
return $listado_banners;
}
public function crea_item($obj, $ancho = null, $alto = null, $class_ = null){
$foto = '';
$clase = '';
if(!is_null($ancho))
$foto.= 'fe-'.$ancho.'x'.$alto.'-';
if(!is_null($class_))
$clase.= " class='".$class_."'";
$tmp = '
';
if($obj->PDF != ''){
$tmp = ' '.$tmp.'';
}elseif($obj->URL != ''){
$tmp = ''.$tmp.'';
}
$tmp = ''.$obj->ALT.'
'.$tmp.'';
return $tmp;
}
/*public function mostrar_carrusel($mostrar_maximo = 5, $ancho = null, $alto = null){
if(count($this->MIS_BANNERS) > $mostrar_maximo){ // hay mas de los que puedo mostrar, asi que obtendré algunos de forma aleatoria
$copia = $this->MIS_BANNERS;
$this->MIS_BANNERS = array(); // lo reseteo
$claves = array_rand($copia, $mostrar_maximo);
for($a=0;$a<$mostrar_maximo;$a++){
$this->MIS_BANNERS[] = $copia[$claves[$a]];
}
}
if(count($this->MIS_BANNERS) > 1){ // si solo hay uno, anulo el carrusel
$clase = ' class="blueberry"';
}
if(count($this->MIS_BANNERS) > 0){
echo "publicidad";
}
for($n=0;$nMIS_BANNERS);$n++){
$url = $this->MIS_BANNERS[$n]->URL != '' ? $this->MIS_BANNERS[$n]->URL : '#';
$escala = $ancho != null ? 'f-'.$ancho.'-'.$alto.'-ffffff-' : '';
echo '!['.$this->MIS_BANNERS[$n]->NOMBRE.']('.$escala.'data/fotos/'.$this->MIS_BANNERS[$n]->ARCHIVO.')
';
//echo '
';
$this->suma_visita($this->MIS_BANNERS[$n]);
}
if(count($this->MIS_BANNERS) > 0){
echo "
";
}
} */
}
// Lo inicio.
$GLOBALS['Banners'] = new megaBanners();
?>