if ( ! defined('BASEPATH')) { exit('No direct script access allowed'); } class Publico extends CI_Controller { function __construct() { parent::__construct(); $this->load->helper('text'); $lang = $this->session->userdata('lang'); if ($lang == '') { $lang = config_item::get_value("idioma"); $this->session->set_userdata('lang', $lang); } $this->idioma = $lang; if ( ! file_exists('assets/other/vars.json')) { $fp = fopen('assets/other/vars.json', 'w+'); fwrite($fp, json_encode([])); fclose($fp); } $this->variables = json_decode(file_get_contents('assets/other/vars.json'), true); if ( ! file_exists('assets/other/'.$lang.'.json')) { $fp = fopen('assets/other/'.$lang.'.json', 'w+'); fwrite($fp, json_encode([])); fclose($fp); } $this->traducciones = json_decode(file_get_contents('assets/other/'.$lang.'.json'), true); // echo(); // var_dump($this->input->request_headers()); } public function index() { $argumentos = func_get_args(); $pagina = ''; if (count($argumentos) == 0 || strpos($argumentos[0], '_') === 0) { if (file_exists('index.html')) { $this->load->view('index.html'); } else { $pagina = 'index.html'; $array_argumentos = array(); } } else { $pagina = array_shift($argumentos); $array_argumentos = argumentos_asociativa($argumentos); } if ($pagina == 'index') { $pagina = 'index.html'; } if ($pagina == 'cambio_idioma') { $this->session->set_userdata('lang', $argumentos[0]); redirect(''); } switch ($pagina) { case '': break; case 'solicitar_inmueble': $this->solicitar(); break; case 'favorito': $this->favorito($array_argumentos); break; case 'envio_form': $this->contacto(); break; case 'recomendar': $this->recomendar($array_argumentos); break; case 'llamame': $this->llamame($array_argumentos); break; case '3er_export': $this->export($array_argumentos, $pagina); break; case 'imprimir': $datos = $this->piezas($array_argumentos, $pagina); generar_pdf($datos['datos']['inmuebles'][0], $datos['datos']['campos'], $this->idioma); break; default: // var_dump($datos); if (file_exists($pagina.'.php')) { $datos = $this->piezas($array_argumentos, $pagina); $datos['datos']['url_back'] = $this->session->userdata('url_back'); if (current_url() != $datos['datos']['url_back']) { $this->session->set_userdata('url_back', current_url()); } $busqueda = $array_argumentos; unset($busqueda['orden']); unset($busqueda['direccion_orden_busqueda']); $busqueda = implode('/', array_map(function ($v, $k) { return $k.'/'.$v; }, $busqueda, array_keys($busqueda))); $datos['cadena_busqueda'] = $busqueda; $this->load->view($pagina.'.php', $datos); } else { if ( ! isset(json_decode(config_item::get_all()['pages_distribution'])->{$pagina == 'index.html' ? '/' : "/".$pagina.".html"})) { header("HTTP/1.1 404 Not Found"); exit(); } $datos = $this->piezas($array_argumentos, $pagina); $datos['datos']['url_back'] = $this->session->userdata('url_back'); if (current_url() != $datos['datos']['url_back']) { $this->session->set_userdata('url_back', current_url()); } $busqueda = $array_argumentos; unset($busqueda['orden']); unset($busqueda['direccion_orden_busqueda']); $busqueda = implode('/', array_map(function ($v, $k) { return $k.'/'.$v; }, $busqueda, array_keys($busqueda))); $datos['cadena_busqueda'] = $busqueda; $this->load->view('themes/'.$datos['datos']['configuracion']['theme'].'/_page_template.php', $datos); } break; } } private function export($array_argumentos, $pagina) { $inmuebles = new property(); $inmuebles = $inmuebles->like("export_3er", $array_argumentos['platform'])->get(); $meta_info = []; foreach (json_decode(config_item::get_value('export_3er')) as $portal) { if ($portal->name == $array_argumentos['platform']) { $meta_info = $portal->meta; } } $this->load->view("templates/3er_export/".$array_argumentos['platform']."/index.php", array( 'inmuebles' => $inmuebles, "meta_info" => $meta_info, 'datos' => $this->piezas($array_argumentos, $pagina)['datos'] )); } private function contacto() { $this->load->library('email'); $sender_email = config_item::get_value('email_sender'); $sender_name = config_item::get_value('email_sender_name'); $email_to = []; if ($this->input->post('email') != '') { $sender_email = $this->input->post('email'); $email_to[] = $sender_email; } if ($this->input->post('nombre') != '') { $sender_name = $this->input->post('nombre'); } if ($this->input->post('destino') != '') { $email_to[] = $this->input->post('destino'); } else { $email_to[] = config_item::get_value('email_admin'); } $this->email->to($email_to); $this->email->from(config_item::get_value('email_sender'), config_item::get_value('email_sender_name')); if ($this->input->post('referencia') != '') { $inmueble = new property(); $inmueble->get_by_referencia($this->input->post('referencia')); stadistics::contact($inmueble->id); $this->email->subject('Formulario web referente a '.$this->input->post('referencia')); } else { stadistics::contact(); $this->email->subject('Formulario web'); } if ($this->input->post('asunto') != '') { $this->email->subject($this->input->post('asunto')); } $mensaje = ''; foreach ($this->input->post() as $key => $value) { if ($key != 'redireccion' && $key != 'destino' && $key != 'asunto' && $key != 'captcha' && $key != 'redireccion_ko') { $mensaje .= ' '.$key.' : '.$value; } } $this->email->message($mensaje); $captcha_info = $this->session->userdata('captcha_info'); $redirect = $this->input->get_request_header("Referer"); if ($mensaje != '') { $this->email->send(); // echo $this->email->print_debugger(); if ($this->input->post('redireccion') != '') { $redirect = $this->input->post('redireccion'); } } else { if ($this->input->post('redireccion_ko') != '') { $redirect = $this->input->post('redireccion_ko'); } } // redirect($redirect); } private function recomendar($argumentos) { $this->load->library('email'); $this->email->initialize(array('mailtype' => 'html')); $this->email->from(config_item::get_value('email_sender'), config_item::get_value('email_sender_name')); $this->email->to($argumentos['direccion']); $this->email->subject('Te recomiendo que visites este inmueble de '.config_item::get_value("aplicacion")); $mensaje = 'Inmueble recomendado, aqui'; $this->email->message($mensaje); if ($this->email->send()) { stadistics::shared($argumentos['referido']); } redirect($argumentos['volver']); } private function solicitar() { $usuario = new person(); $usuario->save(); $usuario->guardar_valores($this->input->post()); $busqueda = new find(); $busqueda->comprador_id = $usuario->id; $busqueda->tipos = $this->input->post('tipos'); $busqueda->poblacion = $this->input->post('poblacion'); $busqueda->zona = $this->input->post('zona'); $busqueda->operacion = $this->input->post('operacion'); $busqueda->max_precio = $this->input->post('max_precio'); $busqueda->min_precio = $this->input->post('min_precio'); $busqueda->max_habitaciones = $this->input->post('max_habitaciones'); $busqueda->min_habitaciones = $this->input->post('min_habitaciones'); $busqueda->max_banyos = $this->input->post('max_banyos'); $busqueda->min_banyos = $this->input->post('min_banyos'); $busqueda->caracteristicas = implode(',', $this->input->post('caracteristicas')); $busqueda->save(); $this->load->library('email'); $this->email->initialize(array('mailtype' => 'html')); $this->email->from(config_item::get_value('email_sender'), config_item::get_value('email_sender_name')); $this->email->to(config_item::get_value('email_admin')); $this->email->subject('Nueva solicitud de inmueble'); $mensaje = 'Se ha generado una nueva solicitud de inmueble desde la web. Acceda desde aqui'; $this->email->message($mensaje); $this->email->send(); redirect($this->input->post('redireccion')); } private function llamame($argumentos) { $this->load->library('email'); $this->email->initialize(array('mailtype' => 'html')); $this->email->from(config_item::get_value('email_sender'), config_item::get_value('email_sender_name')); $this->email->to(config_item::get_value('email_admin')); $this->email->subject('Quiero que me llamen sobre un inmueble de '.config_item::get_value("aplicacion")); $mensaje = 'Quiero que me llamen al '.$argumentos['telefono'].' para hablar del inmueble '.$argumentos['referido']; if ($argumentos['telefono'] != '' && $argumentos['telefono'] != 'undefined' && $argumentos['referido']) { $this->email->message($mensaje); $this->email->send(); } redirect($argumentos['volver']); } private function piezas($array_argumentos, $pagina) { $temp['datos'] = $this->datos($array_argumentos, $pagina); $directorio = scandir('./'); // var_dump($directorio); foreach ($directorio as $elemento) { if ( ! is_dir($elemento) && strpos($elemento, '_') === 0 && pathinfo($elemento, PATHINFO_EXTENSION) === 'php' ) { $temp[substr($elemento, 1, strlen($elemento) - 5)] = $this->load->view($elemento, $temp, true); } } // var_dump($temp); return $temp; } private function datos($array_argumentos, $pagina) { $temp = array(); $temp['meta-title'] = ""; $temp['meta-descripcion'] = ""; $temp['pagina'] = $pagina == 'index.html' ? '/' : "/".$pagina.".html"; $temp['configuracion'] = config_item::get_all(); $temp['configuracion']['etiquetas'] = array_combine(explode(',', strtolower($temp['configuracion']['etiquetas'])), explode(',', $temp['configuracion']['colores_etiquetas'])); $temp['array_argumentos'] = $array_argumentos; $temp['configuracion']['destacados'] = json_decode($temp['configuracion']['destacados']); $maximo_anterior = 0; foreach ((array)$temp['configuracion']['destacados']->zonas as $key => $zona) { $maximo = $maximo_anterior + $zona->maximo; $inmuebles = new property(); $inmuebles->where('estado', 1)->where_not_in('posicion_destacado', [0])->where('posicion_destacado <=', $maximo, false) ->where('posicion_destacado >', $maximo_anterior, false)->order_by('posicion_destacado')->get(); $temp['destacados'][$key] = $inmuebles->listado_importante(); $maximo_anterior = $maximo; } $inmuebles = new property(); $temp['inmuebles_totales'] = $inmuebles->publica(true)->where('estado', 1)->count(); $temp['listado_favoritos'] = $this->session->userdata('favoritos'); $temp['favoritos'] = []; if ($temp['listado_favoritos'] == false) { $temp['listado_favoritos'] = []; } if (count($temp['listado_favoritos'])) { $inmuebles = new property(); $inmuebles->publica(true)->where_in('referencia', $this->session->userdata('favoritos'))->get(); $temp['favoritos'] = $inmuebles->listado_importante('visible'); } $idiomas = new lang(); $temp['idiomas'] = $idiomas->where('activo', 1)->get(); $temp['idioma_sel'] = $this->idioma; $temp['idioma_defect'] = [ 'bandera' => $temp['configuracion']["bandera_idioma"], 'idioma' => $temp['configuracion']["idioma"], 'nombre' => $temp['configuracion']["nombre_idioma"], ]; $campos = new field(); $campos->get(); $temp_campos = array(); $temp_campos_tipos = array(); $temp_campos_id = array(); foreach ($campos as $campo) { $temp_campos[$campo->nombre] = $campo->etiqueta; $temp_campos_tipos[$campo->nombre] = $campo->tipo; $temp_campos_id[$campo->nombre] = $campo->id; } $temp_campos['precio'] = 'Precio'; $temp['campos'] = $temp_campos; $temp['campos_tipos'] = $temp_campos_tipos; $temp_propiedad = new property(); $temp['poblaciones'] = $temp_propiedad->publica(true)->select('poblacion')->distinct()->where('estado', 1)->get()->all_to_single_array('poblacion'); sort($temp['poblaciones']); $temp_propiedad = new property(); $temp['zonas'] = $temp_propiedad->publica(true)->select('zona')->distinct()->where('estado', 1)->get()->all_to_single_array('zona'); sort($temp['zonas']); $temp_propiedad = new property(); $temp['tipos'] = $temp_propiedad->publica(true)->select('tipo')->distinct()->where('estado', 1)->get()->all_to_single_array('tipo'); $t_tipos = array(); foreach ($temp['tipos'] as $value) { $t_explode = explode(',', $value); foreach ($t_explode as $value) { $t_tipos[] = $value; } } $temp['tipos'] = array_unique($t_tipos); sort($temp['tipos']); $valores = new value(); $valores = $valores->group_by('campo_id')->get()->all_to_array('campo_id'); $tempCampos = []; foreach ($valores as $campo) { $tempCampos[] = $campo['campo_id']; } $campos = new field(); $campos = $campos->where('tipo', '4')->where('busqueda', '1'); if (count($tempCampos)) { $campos->where_in('id', $tempCampos); } $campos->where('referente', 0)->get(); $tempCampos = []; foreach ($campos as $campo) { $tempCampos[$campo->nombre] = $campo->etiqueta; } $campos = $tempCampos; $temp['checks_disponibles'] = $campos; $temp_valor = new value(); $temp['bdrooms'] = $temp_valor->select('valor')->distinct()->where_related('campo', 'nombre', 'bdrooms')->get()->all_to_single_array('valor'); sort($temp['bdrooms']); $temp_valor = new value(); $temp['bhrooms'] = $temp_valor->select('valor')->distinct()->where_related('campo', 'nombre', 'bhrooms')->get()->all_to_single_array('valor'); sort($temp['bhrooms']); $temp_valor = new price(); $temp['max_price'] = @$temp_valor->select_max('precio')->get()->all_to_single_array('precio')[0]; $temp_valor = new price(); $temp['min_price'] = @$temp_valor->select_min('precio')->get()->all_to_single_array('precio')[0]; $fields = new field(); $fields_temp = $fields->where('referente', 0)->where('busqueda', 1)->order_by('etiqueta')->get(); $temp['fields_search'] = []; foreach ($fields_temp as $field) { $temp['fields_search'][$field->grupo][$field->nombre] = $field->etiqueta; } asort($temp['fields_search']); $noticia = null; if (isset($array_argumentos['noticia'])) { $noticia = new news(); $noticia->where('slug', $array_argumentos['noticia'])->get(); $noticia->creada = $noticia->creada(); $temp['meta-title'] = $noticia->titulo; $temp['meta-descripcion'] = $noticia->meta_descripcion; } $noticias = new news(); $temp2 = array(); foreach ($noticias->where('language', $this->idioma)->get() as $value) { $value->creada = $value->creada(); $temp2[] = $value; if (is_null($noticia)) { $noticia = $value; } } $temp['noticias'] = $temp2; $temp['noticia'] = $noticia; $temp['captcha'] = $this->captcha->main(); $this->session->set_userdata('captcha_info', $temp['captcha']); $this->session->set_userdata('last_call', $_SERVER["REQUEST_URI"]); $datos_busqueda = array(); $paginas_resultados = explode(',', $temp['configuracion']['paginas_resultados']); $paginas_resultados_estrictos = explode(',', $temp['configuracion']['paginas_resultados_estrictos']); if (in_array($pagina, $paginas_resultados)) { $datos_busqueda = busqueda($array_argumentos, $temp_campos_tipos, $temp_campos_id, in_array($pagina, $paginas_resultados_estrictos)); if (in_array($pagina, $paginas_resultados_estrictos)) { if (count($datos_busqueda['inmuebles']) < 1) { header("HTTP/1.1 404 Not Found"); exit(); } $precio = current($datos_busqueda['inmuebles'][0]['array_precios'])[0]['precio']; $temp['inmueble'] = $datos_busqueda['inmuebles'][0]; $tipo = $datos_busqueda['inmuebles'][0]['tipo']; $temp['relacionados'] = busqueda([ 'tipo' => $tipo, 'max_precio' => $precio + $temp['configuracion']['margen_precio_relacionados'], 'min_precio' => $precio - $temp['configuracion']['margen_precio_relacionados'], ], $temp_campos_tipos, $temp_campos_id)['inmuebles']; $temp['meta-descripcion'] = t($temp['inmueble'] ['meta_description'], 'property_'.$temp['inmueble']['id']); $temp['meta-title'] = t($temp['inmueble']['meta_title'], 'property_'.$temp['inmueble']['id']); } } return array_merge($temp, $datos_busqueda); } /** * @param $array_argumentos */ private function favorito($array_argumentos) { $favourite = $this->session->userdata('favoritos'); if (in_array($array_argumentos['referencia'], $favourite)) { unset($favourite[array_search($array_argumentos['referencia'], $favourite)]); } else { $favourite[] = $array_argumentos['referencia']; } $this->session->set_userdata('favoritos', $favourite); redirect($this->input->get_request_header("Referer")); } } /* End of file welcome.php */ /* Location: ./application/controllers/welcome.php */ Page Not Found :(

Página no encontrada :(

Disculpe, pero la página a la que esta intentado accedo no existe