shell bypass 403
<?
class AppComponent extends Component {
//Método que define el orden en el que se mostrarán los registros según la entidad
public function getOrden($entidad) {
switch ($entidad) {
case 'Contacto':
$orden = array("$entidad.created" => 'DESC');
break;
case 'Noticia':
$orden = array("$entidad.fecha" => 'DESC', "$entidad.nombre" => 'ASC');
break;
case 'Usuario':
$orden = array("$entidad.email" => 'ASC', "$entidad.nombre" => 'ASC');
break;
case 'Instalacion':
case 'InmuebleGaleria':
case 'InmuebleListado':
case 'NoticiaGaleria':
case 'Slider':
$orden = array("$entidad.orden" => 'ASC');
break;
case 'Inmueble':
$orden = array("$entidad.created" => 'DESC', "$entidad.id" => 'ASC');
break;
case 'InmuebleTipo':
$orden = array("$entidad.nombre" => 'ASC');
break;
default:
$orden = array("$entidad.nombre" => 'ASC');
break;
}
return $orden;
}
public function getProvinciasSelect($conditions = array()) {
$this->loadModels('Provincia');
return $this->Provincia->find('list', array('conditions' => $conditions, 'fields' => array('Provincia.nombre'), 'order' => $this->getOrden('Provincia')));
}
public function getAreasSelect($conditions = array()) {
$this->loadModels('Area');
return $this->Area->find('list', array('conditions' => $conditions, 'fields' => array('Area.nombre'), 'order' => $this->getOrden('Area')));
}
public function getLocalidadesSelect($conditions = array()) {
$this->loadModels('Localidad');
return $this->Localidad->find('list', array('conditions' => $conditions, 'fields' => array('Localidad.nombre'), 'order' => $this->getOrden('Localidad')));
}
public function getZonasSelect($conditions = array()) {
$this->loadModels('Zona');
return $this->Zona->find('list', array('conditions' => $conditions, 'fields' => array('Zona.nombre'), 'order' => $this->getOrden('Zona')));
}
public function getInmueblesEstadosSelect($conditions = array()) {
$this->loadModels('InmuebleEstado');
return $this->InmuebleEstado->find('list', array('conditions' => $conditions, 'fields' => array('InmuebleEstado.nombre'), 'order' => $this->getOrden('InmuebleEstado')));
}
public function getInmueblesGestionesSelect($conditions = array()) {
$this->loadModels('InmuebleGestion');
return $this->InmuebleGestion->find('list', array('conditions' => $conditions, 'fields' => array('InmuebleGestion.nombre'), 'order' => $this->getOrden('InmuebleGestion')));
}
public function getInmueblesTiposSelect($conditions = array(), $agrupados = false) {
$this->loadModels('InmuebleTipo');
if ($agrupados) {
$out = array();
$padres = $this->InmuebleTipo->find('list', array('conditions' => array('InmuebleTipo.tipo_id' => 0), 'fields' => array('InmuebleTipo.id', 'InmuebleTipo.nombre')));
foreach ($this->InmuebleTipo->find('all', array('conditions' => array_merge($conditions, array('NOT' => array('InmuebleTipo.tipo_id' => 0))), 'fields' => array('InmuebleTipo.id', 'InmuebleTipo.tipo_id', 'InmuebleTipo.nombre'), 'order' => $this->getOrden('InmuebleTipo'))) as $t) {
$padre = $padres[$t['InmuebleTipo']['tipo_id']];
if (!array_key_exists($padre, $out)) {
$out[$padre] = array();
}
$out[$padre][$t['InmuebleTipo']['id']] = $t['InmuebleTipo']['nombre'];
}
ksort($out);
} else {
$out = $this->InmuebleTipo->find('list', array('conditions' => $conditions, 'fields' => array('InmuebleTipo.nombre'), 'order' => $this->getOrden('InmuebleTipo')));
}
return $out;
}
public function getClientesSelect($conditions = array()) {
$this->loadModels('Cliente');
return $this->Cliente->find('list', array('conditions' => $conditions, 'fields' => array('Cliente.nombre'), 'order' => $this->getOrden('Cliente')));
}
public function getInmueblesUrl($query = array()) {
$out = array('controller' => 'inmuebles', 'action' => 'home');
if (!empty($query)) {
//Gestión
if (!empty($query['gestion'])) {
$out['gestion'] = $query['gestion'];
unset($query['gestion']);
}
//Tipo
if (!empty($query['tipo'])) {
$out['tipo'] = $query['tipo'];
unset($query['tipo']);
} elseif (!empty($out['gestion'])) {
$out['tipo'] = 'inmuebles';
}
//Estado
if (!empty($query['estado'])) {
$out['estado'] = $query['estado'];
unset($query['estado']);
}
//Área, localidad y zona
if (!empty($query['area'])) {
$out['area'] = $query['area'];
unset($query['area']);
if (!empty($query['localidad'])) {
$out['localidad'] = $query['localidad'];
unset($query['localidad']);
if (!empty($query['zona'])) {
$out['zona'] = $query['zona'];
unset($query['zona']);
}
}
}
if (!empty($query)) {
$out['parametros'] = $this->getInmueblesUrlParams($query);
}
}
return $out;
}
private function getInmueblesUrlParams($query) {
$out = array();
foreach ($query as $k => $v) {
switch ($k) {
case 'pagina':
$out[] = 'pagina-' . $v;
break;
case 'vista':
$out[] = 'vista-' . $v;
break;
case 'orden':
$out[] = 'orden-' . $v;
break;
case 'precio-desde':
$out[] = 'precio-desde-' . $v;
break;
case 'precio-hasta':
$out[] = 'precio-hasta-' . $v;
break;
case 'extras':
$out[] = 'extras-' . Inflector::slug($v, '-');
break;
case 'busqueda':
$out[] = 'busqueda-' . Inflector::slug($v, '-');
break;
default: //habitacion, bano...
$out[] = Inflector::slug($v, '-');
break;
}
}
return implode('_', $out);
}
protected function loadModels($models) {
if (gettype($models) == 'string') { //permitimos que se haga la llamada mediante un string
$models = array($models);
}
foreach ($models as $a) {
if (empty($this->{$a})) {
$this->{$a} = ClassRegistry::init($a);
}
}
}
}