usuario = $usuario; switch (gettype($id)) { case "string":$this->campos['oid']=$id; break; case "array": $this->parseaArray($id); break; case "resource": $this->parseaResource($id); break; default: echo gettype($id); break; } $this->locale = $locale; } /** * Devuelve el valor de un campo. * @param nombre - nombre del campo por el que buscar. * @return valor del campo buscado. */ function getValor($nombre){ $especial = false; if(gettype($nombre) != "integer" && gettype($nombre) != "string"){ return false; exit; } if(array_key_exists($nombre,$this->campos)){ // El campo ya lo habíamos recuperamos, lo mostramos return $this->campos[$nombre]; } else { // Hay que recuperar el campo de la base de datos $consulta="SELECT * FROM clientes WHERE oid=\"".$this->campos['oid']."\""; switch ($nombre) { case "nombre_gerente":$idGerente=$this->getValor("gerente"); $consulta="SELECT CONCAT(nombre,\" \",apellidos) FROM usuarios WHERE oid=\"".$idGerente."\""; $especial = true; break; case "nombre_privacidad":$idGerente=$this->getValor("oid"); $consulta="SELECT privado FROM clientes WHERE oid=\"".$idGerente."\""; $especial = true; break; default: break; } $bd=new BD(); if(!$especial){ $valores = $bd->getRegistro($consulta); // Lo insertamos para nosotros foreach($valores as $key => $value){ $arrayAct=array($key => $value); $this->campos=$this->campos + $arrayAct; } }else{ // Lo insertamos para nosotros $valor= $bd->getCampo($consulta); //echo $valor."-".$consulta; if($nombre == "nombre_privacidad"){ switch ($valor) { case 0: $valor = $this->locale['2213']; break; case 1: $valor = $this->locale['2212']; break; default: break; } } // Lo insertamos para nosotros $arrayAct=array($nombre => $valor); $this->campos=$this->campos + $arrayAct; } return $this->campos[$nombre]; } } /** * Acceso a los campos de la empresa. * @return los campos de la empresa. */ function getCampos(){ return $this->campos; } /** * Asigna un nuevo campo a la empresa * @param nombre - nombre del campo a asignar. * @param valor - valor del campo. */ private function setCampo($nombre, $valor){ $viejo = $this->getValor($nombre); if($viejo != $valor){ $this->campos[$nombre] = $valor; $dato = $nombre." = '".$valor."',"; return $dato; }else{ return ""; } } /** * Asigna nuevos campos a la empresa. * @param array - lista de campos a asignar de la forma campo => valor. */ function setCampos($array){ if($this->puedeGestionar()){ $consulta = "UPDATE clientes SET "; foreach($array as $key => $value){ $consulta .= $this->setCampo($key, $value); } //Quitamos la última coma if ($consulta{strlen($consulta) - 1} == ",") $consulta = substr($consulta,0,strlen($consulta) - 1); $oid = $this->getValor("oid"); $consulta .= "WHERE oid='$oid'"; $bd = new BD(); if($bd->execQuery($consulta)){ return true; }else{ $error = $this->locale['bd']; throw new Exception($error); return false; exit; } }else{ $error = $this->locale['2206']; throw new Exception($error); return false; exit; } } /** * Elimina una empresa de la base de datos. */ function eliminar(){ //PERMISOS: $gerente = $this->getValor("gerente"); if($this->puedeGestionar()){ $oid = $this->getValor("oid"); $consulta = "DELETE FROM clientes WHERE oid='$oid'"; $bd = new BD(); if($bd->execQuery($consulta)){ return true; }else{ $error = $this->locale['bd']; throw new Exception($error); return false; exit; } }else{ $error = $this->locale['2206']; throw new Exception($error); return false; exit; } } /** * Comprueba si el usuario tiene permisos para gestionar la empresa. */ function puedeGestionar(){ //Sólo los gerentes pueden gestionar empresas. if($this->usuario->tieneRol(3)){ //Sólo puede si es el propio dueño o administrador. if(($this->usuario->getValor("oid") == $this->getValor("gerente")) || $this->usuario->tieneRol(1)){ return true; }else{ return false; } }else{ return false; } } } ?>