shell bypass 403
<?
App::uses('PagesController', 'Controller');
class InmueblesController extends PagesController {
public function home() {
//Variables recibidas en URL
$this->setInmueblesMap();
//Listado de inmuebles
$conditions = array('Inmueble.publicado' => true);
//Filtro de precio
if ($this->request->is('post') && isset($this->request->data['tipo'])) {
unset($this->params->query['pagina']); //al filtrar no tiene sentido mantener el nº de página
switch ($this->request->data['tipo']) {
case 'precio':
$precioDesde = (int) $this->request->data['precioDesde'];
$precioHasta = (int) $this->request->data['precioHasta'];
if (!empty($precioDesde) && !empty($precioHasta) && $precioDesde >= $precioHasta) {
$precioHasta = 0;
$this->Session->setFlash('No puedes poner un precio desde mayor o igual que el precio hasta.' . $this->btnClose, 'default', array('class' => 'alert alert-danger'));
}
if (!empty($precioDesde)) {
$this->params->query['precio-desde'] = $precioDesde;
} else {
unset($this->params->query['precio-desde']);
}
if (!empty($precioHasta)) {
$this->params->query['precio-hasta'] = $precioHasta;
} else {
unset($this->params->query['precio-hasta']);
}
$this->redirect($this->App->getInmueblesUrl($this->params->query));
break;
case 'extra':
$extras = array();
foreach ($this->request->data as $k => $v) {
if ($k != 'tipo' && (bool) $v) {
$extras[] = $k;
}
}
if (!empty($extras)) {
$this->params->query['extras'] = implode('-', $extras);
} else {
unset($this->params->query['extras']);
}
$this->redirect($this->App->getInmueblesUrl($this->params->query));
break;
}
}
array_push($this->uses, 'InmuebleTipo');
$this->set('buscadorTipos', $this->InmuebleTipo->find('list',
array(
'conditions' => array('InmuebleTipo.tipo_id' => 0, 'AND' => array()),
'fields' => array('InmuebleTipo.id', 'InmuebleTipo.nombre'),
'order' => $this->App->getOrden('InmuebleTipo'))));
$this->set('buscadorLocalidades', $this->App->getLocalidadesSelect());
$this->getListadoInmuebles($conditions);
debug($conditions);
debug($this->getListadoInmuebles($conditions));
//Cabecera
$this->set('cabeceraAfter', Configure::read('App.nombre'));
//Migas
$this->migas['Inmuebles'] = array('controller' => $this->params->controller, 'action' => $this->params->action);
$this->render('/Pages/inmuebles');
}
public function detalle() {
array_push($this->uses, 'Inmueble');
$inmueble = $this->Inmueble->findBySeoAndPublicado($this->params->inmueble, true);
//Comprobamos si hemos encontrado el inmueble
if (empty($inmueble)) {
$this->Session->setFlash('No se ha encontrado el inmueble al que deseas acceder.' . $this->btnClose, 'default', array('class' => 'alert alert-danger'));
$this->redirect(array('controller' => 'pages', 'action' => 'error'));
}
if ($this->request->is('post') && !empty($this->request->data['Contacto'])) {
array_push($this->uses, 'Contacto');
$this->Contacto->create();
$this->request->data['Contacto']['pagina'] = 'Inmueble';
$this->request->data['Contacto']['entidad'] = 'inmueble';
$this->request->data['Contacto']['entidad_id'] = $inmueble['Inmueble']['id'];
if ($this->Contacto->save($this->request->data)) {
//Email
$Email = new CakeEmail(Configure::read('App.env'));
$Email->to(Configure::read('App.email'))
->subject('Contacto en la web de ' . Configure::read('App.nombre'))
->template('contacto')
->emailFormat('html')
->viewVars(array('fecha' => date('d/m/Y G:i'), 'contacto' => $this->request->data['Contacto'], 'entidad' => $inmueble['Inmueble']))
->send();
$this->Session->setFlash('/obj-inmueble', 'default', array(), 'ga');
$this->Session->setFlash('Gracias por completar el formulario de contacto, nos pondremos en contacto con usted para atenderte lo antes posible.' . $this->btnClose, 'default', array('class' => 'alert alert-success'));
$this->redirect(array('controller' => 'inmuebles', 'action' => 'detalle', 'inmueble' => $inmueble['Inmueble']['seo']));
} else {
$this->errores = $this->Contacto->validationErrors;
}
}
$this->set('inmueble', $inmueble);
$this->set('provincias', $this->App->getProvinciasSelect());
$this->set('localidades', $this->App->getLocalidadesSelect(array('Localidad.id_provincia' => $inmueble['Inmueble']['id_provincia'])));
$this->set('zonas', $this->App->getZonasSelect(array('Zona.id_localidad' => $inmueble['Inmueble']['id_localidad'])));
$this->set('estados', $this->App->getInmueblesEstadosSelect());
$this->set('gestiones', $this->App->getInmueblesGestionesSelect());
$this->set('tipos', $this->App->getInmueblesTiposSelect());
//Aumentamos el nº de visitas
$this->Inmueble->updateAll(array('visualizaciones' => 'visualizaciones + 1'), array('Inmueble.id' => $inmueble['Inmueble']['id']));
//Inmuebles similares
$similares = $this->Components->load('Inmueble')->getSimilares($inmueble, $this->getParamsSession('inmueblesConditions'));
$this->set('similares', $similares);
//Metas
$this->metas['title'] = strip_tags($inmueble['Inmueble']['titulo']);
$this->metas['description'] = $inmueble['Inmueble']['texto'];
$this->metas['keywords'] = strip_tags($inmueble['Inmueble']['titulo']) . ', ' . $inmueble['Inmueble']['texto'];
if (!empty($inmueble['InmuebleGaleria'])) {
$this->metas['img'] = $inmueble['InmuebleGaleria'][0]['imagen'];
$this->metas['img_mime'] = $inmueble['InmuebleGaleria'][0]['imagen_mime'];
}
//Migas
$this->migas['Inmuebles'] = array('controller' => $this->params->controller, 'action' => $this->params->action);
$this->migas[$inmueble['Inmueble']['titulo']] = array('controller' => $this->params->controller, 'action' => $this->params->action, 'inmueble' => $inmueble['Inmueble']['seo']);
$this->stylesheets[] = 'https://code.interactivaclic.com/bxslider/4.2.3/jquery.bxslider.min.css';
$this->stylesheets[] = 'https://code.interactivaclic.com/lightGallery/1.1.4/css/lightGallery.css';
$this->javascripts[] = 'https://code.interactivaclic.com/bxslider/4.2.3/jquery.bxslider.min.js';
$this->javascripts[] = 'https://code.interactivaclic.com/lightGallery/1.1.4/js/lightGallery.min.js';
$this->javascripts[] = 'https://maps.google.com/maps/api/js?sensor=false';
$this->javascripts[] = 'frontend/galeria';
$this->render('/Pages/inmueble');
}
public function referencia() {
array_push($this->uses, 'Inmueble');
$inmuebles = $this->Inmueble->find('all', array('conditions' => array('Inmueble.publicado' => true, 'Inmueble.referencia' => $this->params->referencia)));
//Comprobamos si hemos encontrado algún inmueble
if (empty($inmuebles)) {
$this->Session->setFlash('No se ha encontrado la referencia introducida.' . $this->btnClose, 'default', array('class' => 'alert alert-danger'));
$this->redirect(array('controller' => 'inmuebles', 'action' => 'home'));
}
$this->set('listado', $inmuebles);
//Migas
$this->migas['Inmuebles con la referencia: ' . $this->params->descriptor] = array('controller' => $this->params->controller, 'action' => $this->params->action, 'referencia' => $this->params->referencia);
$this->render('/Pages/referencia');
}
private function getListadoInmuebles($conditions = array()) {
array_push($this->uses, 'Inmueble');
$Inmueble = $this->Components->load('Inmueble');
//Establecemos el límite de elementos que se visualizarán en el listado
$limit = 15;
//Obtenemos la vista
$vista = $this->getParamsSession('vista', 'iconos');
$this->Session->write('vista', $vista);
$this->set('vista', $vista);
//Obtenemos el orden
$order = $this->getParamsSession('orden', 'fecha');
$this->Session->write('orden', $order);
$this->set('orden', $order);
//Obtenemos los arrays de datos
$inmueblesGestionesSeoID = $this->getFiltros('InmuebleGestion', 'inmueblesGestiones');
$inmueblesTiposSeoID = $this->getFiltros('InmuebleTipo', 'inmueblesTipos');
$inmueblesEstadosSeoID = $this->getFiltros('InmuebleEstado', 'inmueblesEstados');
$inmueblesAreasSeoID = $this->getFiltros('Area', 'inmueblesAreas', array('Area.id_provincia' => Configure::read('App.id_provincia'))); //aunque haya area, es necesario el array de areas para obtener la condición de las localidades
if (!empty($this->params->query['area'])) { //si no hay area no se muestran las localidades
$inmueblesLocalidadesSeoID = $this->getFiltros('Localidad', 'inmueblesLocalidades', array('Localidad.id_area' => $inmueblesAreasSeoID[$this->params->query['area']]));
if (!empty($this->params->query['localidad'])) { //si no hay localidad no se muestran las zonas
$inmueblesZonasSeoID = $this->getFiltros('Zona', 'inmueblesZonas', array('Zona.id_localidad' => $inmueblesLocalidadesSeoID[$this->params->query['localidad']]));
}
}
//Generamos las condiciones de búsqueda del filtrado
$this->getFiltro('Inmueble', $conditions, 'gestion', 'id_gestion', $inmueblesGestionesSeoID);
$this->getFiltro('Inmueble', $conditions, 'tipo', 'id_tipo_inmueble', $inmueblesTiposSeoID);
$this->getFiltro('Inmueble', $conditions, 'estado', 'id_estado_inmueble', $inmueblesEstadosSeoID);
$this->getFiltroArea($conditions, 'area', $inmueblesAreasSeoID);
if (!empty($this->params->query['area'])) { //si no hay area no se muestran las localidades
$this->getFiltro('Inmueble', $conditions, 'localidad', 'id_localidad', $inmueblesLocalidadesSeoID);
if (!empty($this->params->query['localidad'])) { //si no hay localidad no se muestran las zonas
$this->getFiltro('Inmueble', $conditions, 'zona', 'id_zona', $inmueblesZonasSeoID);
}
}
$this->getFiltroRango($conditions, 'precio', 'precio' . ((!empty($conditions['Inmueble.id_gestion']) && in_array($conditions['Inmueble.id_gestion'], Configure::read('Inmueble.gestionesAlquiler'))) ? '_alquiler' : ''));
//Habitaciones y baños
$habitaciones = Configure::read('Inmueble.habitaciones');
$habitacionesLast = end($habitaciones); //obtenemos el último elemento para mostrar los que cumplan igual o mayor a su valor
$this->getFiltroValores($conditions, 'habitacion', 'habitaciones', $habitaciones, $habitacionesLast);
$banos = Configure::read('Inmueble.banos');
$banosLast = end($banos); //obtenemos el último elemento para mostrar los que cumplan igual o mayor a su valor
$this->getFiltroValores($conditions, 'bano', 'banos', $banos, $banosLast);
$this->getFiltroExtras($conditions);
$this->getFiltroBusqueda($conditions);
//Obtenemos el ID de las áreas por localidad para poder generar el filtro de áreas
array_push($this->uses, 'Localidad');
$localidadesAreas = $this->Localidad->find('list', array('fields' => array('Localidad.id', 'Localidad.id_area'), 'conditions' => array('Localidad.id_provincia' => Configure::read('App.id_provincia'))));
//Generamos los filtros y obtenemos el total de registros que cumplen con el criterio de búsqueda
$inmueblesTotales = 0;
$inmueblesNum = array('gestion' => array(), 'tipo' => array(), 'area' => array(), 'localidad' => array(), 'zona' => array(), 'estado' => array(), 'habitacion' => array(), 'bano' => array());
foreach ($this->Inmueble->find('all', array('conditions' => $conditions, 'fields' => array('Inmueble.id_gestion', 'Inmueble.id_tipo_inmueble', 'Inmueble.id_estado_inmueble', 'Inmueble.id_localidad', 'Inmueble.id_zona', 'Inmueble.id_provincia', 'Inmueble.habitaciones', 'Inmueble.banos'), 'recursive' => 0)) as $i) {
$i = $i['Inmueble'];
$this->addCont($inmueblesNum, 'gestion', $i['id_gestion']);
$this->addCont($inmueblesNum, 'tipo', $i['id_tipo_inmueble']);
$this->addCont($inmueblesNum, 'estado', $i['id_estado_inmueble']);
if (!empty($i['id_localidad'])) {
@$this->addCont($inmueblesNum, 'area', $localidadesAreas[(int) $i['id_localidad']]);
if (!empty($this->params->query['area'])) { //si no hay area no se muestran las localidades
$this->addCont($inmueblesNum, 'localidad', $i['id_localidad']);
if (!empty($this->params->query['localidad'])) { //si no hay localidad no se muestran las zonas
$this->addCont($inmueblesNum, 'zona', $i['id_zona']);
}
}
}
//Habitaciones y baños
if (!empty($i['habitaciones']) && (int) $i['habitaciones'] > 0) {
if ((int) $i['habitaciones'] >= $habitacionesLast) {
$this->addCont($inmueblesNum, 'habitacion', $habitacionesLast);
} else {
$this->addCont($inmueblesNum, 'habitacion', $habitaciones[$i['habitaciones']]);
}
}
if (!empty($i['banos']) && (int) $i['banos'] > 0) {
if ((int) $i['banos'] >= $banosLast) {
$this->addCont($inmueblesNum, 'bano', $banosLast);
} else {
$this->addCont($inmueblesNum, 'bano', $banos[$i['banos']]);
}
}
$inmueblesTotales += 1;
}
//En caso de no haber resultados y sí filtro, mostramos el filtro para poder deseleccionarle
if ($inmueblesTotales == 0 && !empty($this->filtro)) {
$inmueblesNum = $this->getFiltroVacio($this->filtro, array('_id', 'inmueble_'));
}
$this->set('inmueblesNum', $inmueblesNum);
$this->set('options', $Inmueble->getSelects($conditions));
//Arrays con los datos para habitaciones y baños, dado que no salen de una tabla externa
$this->getArrayValores($inmueblesNum, 'habitacion', 'inmueblesHabitaciones');
$this->getArrayValores($inmueblesNum, 'bano', 'inmueblesBanos');
//Obtenemos la información de las páginas que tiene el listado
$this->set('inmueblesTotales', $inmueblesTotales);
$pagTotales = ceil($inmueblesTotales / $limit);
$pagActual = (int) $this->getParamsSession('pagina', 1);
if ($pagActual < 1) { //si solicitamos páginas por debajo de la 1
$pagActual = 1;
} elseif ($pagActual > $pagTotales) { //si solicitamos páginas por encima del total de páginas
$pagActual = $pagTotales;
}
$this->set('paginaActual', $pagActual);
$this->set('paginaTotales', $pagTotales);
//Preparamos el orden para ordenar el listado
switch ($order) {
case 'precio':
$order = array('Inmueble.precio' . ((!empty($conditions['Inmueble.id_gestion']) && in_array($conditions['Inmueble.id_gestion'], Configure::read('Inmueble.gestionesAlquiler'))) ? '_alquiler' : '') => 'ASC', 'Inmueble.created' => 'DESC', 'Inmueble.titulo_corto' => 'ASC');
break;
case 'superficie':
$order = array('Inmueble.superficie_construida' => 'ASC', 'Inmueble.created' => 'DESC', 'Inmueble.titulo_corto' => 'ASC');
break;
default:
$order = $this->App->getOrden('Inmueble');
break;
}
//Listado según tipo de vista
switch ($vista) {
case 'mapa':
//Quitamos limites dado que el listado principal puede tener una gran cantidad de inmuebles
ini_set('memory_limit', '-1');
ini_set('max_execution_time', 0);
$listado = $this->Inmueble->find('all', array('conditions' => $conditions, 'order' => $order));
$inmuebleHelper = new InmuebleHelper(new View());
$listadoMapa = array('totales' => 0, 'items' => array());
foreach ($listado as $l) {
if (!empty($l['Inmueble']['geolocalizacion'])) {
$listadoMapa['totales'] ++;
$geo = explode(',', $l['Inmueble']['geolocalizacion']);
$imagen = $inmuebleHelper->getImagen($l['Inmueble']['imagen_dn'], 100, 75);
$listadoMapa['items'][] = array(
'titulo' => $inmuebleHelper->trimText($l['Inmueble']['titulo_corto'], 45),
'referencia' => $l['Inmueble']['referencia'],
'precio' => $inmuebleHelper->getPrecio($l['Inmueble']),
'imagen' => $imagen,
'habitaciones' => $l['Inmueble']['habitaciones'],
'superficie_util' => $l['Inmueble']['superficie_util'],
'url' => $inmuebleHelper->url(array('controller' => $this->params->controller, 'action' => 'detalle', 'inmueble' => $l['Inmueble']['seo'])),
'latitud' => $geo[0],
'longitud' => $geo[1]
);
}
}
$this->set('listado', $listadoMapa);
$this->javascripts[] = 'https://maps.google.com/maps/api/js?sensor=false';
$this->javascripts[] = 'https://www.google.com/jsapi';
$this->javascripts[] = 'infobox';
$this->javascripts[] = 'gmaps.lib';
$this->javascripts[] = 'frontend/inmuebles-mapa';
break;
default: //iconos y lista
//Listado paginado
$this->paginate = array('conditions' => $conditions, 'limit' => $limit, 'order' => $order, 'page' => $pagActual);
$listado = $this->paginate('Inmueble');
$this->set('listado', $listado);
break;
}
//Guardamos en sesión las condiciones para buscar los relacionados de un inmueble en el detalle
$this->Session->write('inmueblesConditions', $conditions);
}
//Método que genera las condiciones de las áreas
private function getFiltroArea(&$conditions, $campo, $seoID = null) {
if (!empty($this->params->query[$campo]) && !empty($seoID[$this->params->query[$campo]]) && empty($this->params->query['localidad'])) {
//Buscamos las localidades del área seleccionada
array_push($this->uses, 'Localidad');
$localidadesIDs = $this->Localidad->find('list', array('fields' => array('Localidad.id', 'Localidad.id'), 'conditions' => array('Localidad.id_area' => $seoID[$this->params->query[$campo]])));
$conditions['Inmueble.id_localidad'] = array_merge(array(0), $localidadesIDs);
}
}
//Método que genera las condiciones de los campos en caso que sean rangos
private function getFiltroRango(&$conditions, $campo, $campoTabla = null) {
if (empty($campoTabla)) {
$campoTabla = $campo;
}
if (!empty($this->params->query["$campo-desde"]) || !empty($this->params->query["$campo-hasta"])) {
$desde = (!empty($this->params->query["$campo-desde"])) ? $this->params->query["$campo-desde"] : null;
$hasta = (!empty($this->params->query["$campo-hasta"])) ? $this->params->query["$campo-hasta"] : null;
if (empty($hasta)) {
$conditions["Inmueble.$campoTabla >="] = $desde;
} elseif (empty($desde)) {
$conditions["Inmueble.$campoTabla <"] = $hasta;
} else {
$conditions["Inmueble.$campoTabla >="] = $desde;
$conditions["Inmueble.$campoTabla <"] = $hasta;
}
if (array_key_exists('NOT', $conditions)) {
$conditions['NOT'] = array();
}
$conditions['NOT']["Inmueble.$campoTabla"] = 0;
}
}
//Método que genera las condiciones de las habitaciones y baños
private function getFiltroValores(&$conditions, $campo, $campoTabla, $valores, $valoresLast) {
if (!empty($this->params->query[$campo])) {
foreach ($valores as $k => $v) {
if ($this->params->query[$campo] == Inflector::slug($v, '-')) {
if ($valoresLast == $v) { //último elemento
$conditions["Inmueble.$campoTabla >="] = $k;
$this->filtro[$campo] = array($v => 0);
} else {
$conditions["Inmueble.$campoTabla"] = $k;
$this->filtro[$campo] = array($v => 0);
}
}
}
}
}
private function getFiltroExtras(&$conditions) {
if (!empty($this->params->query['extras'])) {
$extras = explode('-', $this->params->query['extras']);
foreach ($extras as $e) {
$conditions["Inmueble." . str_replace(array('aireacondicionado'), array('aire_acondicionado'), $e)] = true;
}
}
}
private function getFiltroBusqueda(&$conditions) {
if (!empty($this->params->query['busqueda'])) {
//Partimos la cadena de búsqueda
$busqueda = explode('-', $this->params->query['busqueda']);
$strings = array();
$inmuebleBusquedaConditions = array();
foreach ($busqueda as $b) {
if (strlen($b) > 3) {
$b = str_replace('-', ' ', strtolower($b));
$strings[$b] = $b;
$inmuebleBusquedaConditions[] = $b;
}
}
//Obtenemos los mapeos de búsquedas existentes
array_push($this->uses, 'InmuebleBusqueda');
$busquedas = array();
foreach ($this->InmuebleBusqueda->find('all', array('conditions' => array('OR' => array('InmuebleBusqueda.busqueda' => $inmuebleBusquedaConditions)))) as $b) {
if (!array_key_exists($b['InmuebleBusqueda']['campo'], $busquedas)) {
$busquedas[$b['InmuebleBusqueda']['campo']] = array();
}
$busquedas[$b['InmuebleBusqueda']['campo']][] = $b['InmuebleBusqueda']['valor'];
//Quitamos la búsqueda encontrada para no buscar como LIKE en el campo busqueda del inmueble
if (array_key_exists($b['InmuebleBusqueda']['busqueda'], $strings)) {
unset($strings[$b['InmuebleBusqueda']['busqueda']]);
}
}
//Generamos las condiciones de las búsquedas encontradas
foreach ($busquedas as $campo => $valores) {
if (count($valores) == 1) {
$conditions['Inmueble.' . $campo] = $valores[0];
} else {
$conditions['Inmueble.' . $campo] = array();
foreach ($valores as $v) {
$conditions['Inmueble.' . $campo][] = $v;
}
}
}
//Parámetros no encontrados, se buscan en la cadena de búsqueda del inmueble con LIKE
if (!empty($strings)) {
if (count($strings) == 1) {
foreach ($strings as $l) {
$conditions['Inmueble.busqueda LIKE'] = '%' . $l . '%';
}
} else {
foreach ($strings as $l) {
$conditions[] = array('Inmueble.busqueda LIKE' => '%' . $l . '%');
}
}
}
}
}
//Método que pasa a la vista un array con valores obtenidos de la propia tabla
private function getArrayValores($elementosNum, $campo, $vista) {
$out = array();
if (!empty($elementosNum[$campo])) {
$out = array_keys($elementosNum[$campo]);
sort($out);
}
$this->set($vista, $out);
}
private function setInmueblesMap() {
//Gestión
if (!empty($this->params->gestion)) {
$this->params->query['gestion'] = $this->params->gestion;
}
//Tipo
if (!empty($this->params->tipo) && $this->params->tipo != 'inmuebles') {
$this->params->query['tipo'] = $this->params->tipo;
}
//Estado
if (!empty($this->params->estado)) {
$this->params->query['estado'] = $this->params->estado;
}
//Área, localidad y zona
if (!empty($this->params->area)) {
array_push($this->uses, 'Area');
$areas = $this->Area->find('list', array('fields' => array('Area.seo', 'Area.id'), 'order' => $this->App->getOrden('Area')));
if (array_key_exists($this->params->area, $areas)) {
$this->params->query['area'] = $this->params->area;
if (!empty($this->params->localidad)) {
array_push($this->uses, 'Localidad');
$localidades = $this->Localidad->find('list', array('conditions' => array('Localidad.id_area' => $areas[$this->params->area]), 'fields' => array('Localidad.seo', 'Localidad.id'), 'order' => $this->App->getOrden('Localidad')));
if (array_key_exists($this->params->localidad, $localidades)) {
$this->params->query['localidad'] = $this->params->localidad;
if (!empty($this->params->zona)) {
array_push($this->uses, 'Zona');
$zonas = $this->Zona->find('list', array('conditions' => array('Zona.id_localidad' => $localidades[$this->params->localidad]), 'fields' => array('Zona.seo', 'Zona.id'), 'order' => $this->App->getOrden('Zona')));
if (array_key_exists($this->params->zona, $zonas)) {
$this->params->query['zona'] = $this->params->zona;
} else {
$this->getInmueblesMapParams($this->params->zona);
}
}
} else {
$this->getInmueblesMapParams($this->params->localidad);
}
}
} else {
$this->getInmueblesMapParams($this->params->area);
}
}
//Parametros
if (!empty($this->params->parametros)) {
$this->getInmueblesMapParams($this->params->parametros);
}
}
private function getInmueblesMapParams($query) {
foreach (explode('_', $query) as $p) {
if (substr_count($p, 'pagina-')) {
$this->params->query['pagina'] = str_replace(array('pagina-'), null, $p);
} elseif (substr_count($p, 'vista-')) {
$this->params->query['vista'] = str_replace(array('vista-'), null, $p);
} elseif (substr_count($p, 'orden-')) {
$this->params->query['orden'] = str_replace(array('orden-'), null, $p);
} elseif (substr_count($p, 'precio-desde-')) {
$this->params->query['precio-desde'] = str_replace(array('precio-desde-'), null, $p);
} elseif (substr_count($p, 'precio-hasta-')) {
$this->params->query['precio-hasta'] = str_replace(array('precio-hasta-'), null, $p);
} elseif (substr_count($p, 'extras-')) {
$this->params->query['extras'] = str_replace(array('extras-'), null, $p);
} elseif (substr_count($p, '-habitacion')) {
$this->params->query['habitacion'] = $p;
} elseif (substr_count($p, '-bano')) {
$this->params->query['bano'] = $p;
} elseif (substr_count($p, 'busqueda-')) {
$this->params->query['busqueda'] = str_replace(array('busqueda-'), null, $p);
}
}
}
}