Uname: Linux info 3.0 #1337 SMP Tue Jan 01 00:00:00 CEST 2000 all GNU/Linux
Software: Apache
PHP version: 5.6.40 [ PHP INFO ] PHP os: Linux
Server Ip: 217.160.0.194
Your Ip: 216.73.216.203
User: u72294154 (9179942) | Group: ftpusers (600)
Safe Mode: OFF
Disable Function:
NONE

name : AppComponent.php
<?

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);
            }
        }
    }

}
© 2026 GrazzMean