usuario = $usuario; $this->orden = $orden; //Si where tiene algún valor se le añade la cláusula where. if($sql != ""){ $this->sql = $sql; } if($orden != ""){ $this->order_by = $orden; } } function getSQL(){ return $this->sql; } /** * Busca y devuelve todas las personas de un tipo. */ function getPersonas(){ //PERMISOS: /* * Admin (1) - Todos * RRHH (4) - Todos * Otro - Excepción */ $estado = $this->estado; if($this->personas == null){ //Modificamos la consulta en función del rol. if($this->usuario->tieneRol(4) || $this->usuario->tieneRol(1)){ if($this->sql != ""){ if($estado > 0){ if(stripos($this->sql,"WHERE")>0){ $sqlAntesWhere=substr($this->sql,0,stripos($this->sql,"WHERE")); $sqlDespuesWhere=substr($this->sql,stripos($this->sql,"WHERE")+5,strlen($this->sql)); // echo "antes:".$sqlAntesWhere." -- ".$sqlDespuesWhere; $sqlConTipo="WHERE usuarios.estado='".$estado."' and "; $sqlNueva=$sqlAntesWhere.$sqlConTipo.$sqlDespuesWhere; } else{ // TODO quitar el aviso este echo "COMPRUEBAME si ListaPersonas.php cuando no hay WHERE,(avisar a Sergio)"; $sqlConTipo="WHERE usuarios.estado='".$estado."' "; $sqlNueva=$this->sql.$sqlConTipo; } $consulta = $this->sql." ".$this->order_by; } else { $sqlNueva=$this->sql; } $consulta = $sqlNueva." ".$this->order_by; }else{ if($estado > 0){ $consulta = "SELECT * from usuarios where tipo = '".$this->tipo."' and estado='".$estado."' ".$this->orden; } else{ $consulta = "SELECT * from usuarios where tipo = '".$this->tipo."' and estado in ('10', '30', '50', '70', '90','80', '100')$this->orden"; } } }else{ $error = "El usuario no tiene permisos para listar personas."; throw new Exception($error); } $bd=new BD(); $resultado = $bd->execQuery($consulta); //Procesamos los candidatos. if(mysql_num_rows($resultado) == 0){ $this->personas = array(); }else{ while($rows = mysql_fetch_array($resultado)){ switch ($this->tipo) { case "candidato":$p = new Candidato($this->usuario,$rows["oid"]); break; case "usuario":$p = new Empleado($this->usuario,$rows["oid"]); break; default: break; } $this->personas[] = $p; } } } return $this->personas; } /** * Añade un candidato a la bd. * @param campos - campos del nuevo candidato. */ protected function addPersona($campos){ if(!$this->usuario->tieneRol(1) && !$this->usuario->tieneRol(4)){ $error = "El usuario no tiene permisos para crear candidatos."; throw new Exception($error); return false; } if($this->existe($campos)){ $error = "Ya existe una persona con esos campos. No se inserta."; throw new Exception($error); return false; } $fecha = "'".date(Y."-".m."-".d)."'"; $inserto = "tipo, fecha_modificacion, fecha_registro"; $valores = "'".$this->tipo."', $fecha, $fecha"; //Procesamos los datos foreach($campos as $key => $value){ $inserto .= ", $key"; $valores .= ", '$value'"; } //Insertamos en la BD $consulta = "INSERT INTO usuarios ($inserto) VALUES ($valores)"; $bd = new BD(); if(!$bd->execQuery($consulta)){ $error = "Campos del candidato incorrectos. Por favor, avise al webmaster de este error."; throw new Exception($error); return false; } $id = mysql_insert_id(); return $id; } /** * Elimina un candidato, tanto de la BD como de la lista de candidatos. * @param id - Identificador del candidato a eliminar. * @return true si lo eliminó con éxito y false en caso contrario. */ function eliminarPersona($id){ //PERMISOS: /* * Admin (1) - Eliminar * RRHH (4) - Eliminar * Otro - Excepción */ if(!$this->usuario->tieneRol(1) && !$this->usuario->tieneRol(4)){ $error = "El usuario no tiene permisos para borrar personas."; throw new Exception($error); } $persona = $this->buscarPersona($id); //Si lo encuentro puedo eliminarlo. if($persona != null){ $lista = $this->personas; $this->personas = null; //Compruebo elemento a elemento es o no el que quiero //eliminar. Si es así, no lo copio. foreach($lista as $elem){ if($elem->getValor("oid") != $id){ $this->personas[] = $elem; } } //Elimino el pedido de la BD. $persona->eliminar(); return true; }else{ return false; } } /** * Busca un candidato en función de su identificador. * @return el candidato, en caso de encontrarlo y null en * caso contrario. */ function buscarPersona($id){ $lista = $this->getPersonas(); if($lista){ foreach($lista as $elem){ if($elem->getValor("oid") == $id){ return $elem; } } } return null; } private function existe($campos){ $existe = false; /** EXISTENCIA DE DNI **/ $dni = $campos["dni"]; //Si hay letra en la posición 7 es porque el DNI empezaba por cero y se le ha quitado if(!ereg("^[0-9]+$",$dni[7])){ $letra = $dni[7]; $cont=8; while(!ereg("^[a-zA-Z]+$",$letra) && $cont < 11){ $letra = $dni[$cont]; $cont++; } $nums = "0".substr($dni, 0, 7); }else{ $letra = $dni[8]; $cont=9; while(!verificar_letra($letra) && $cont < 12){ $letra = $dni[$cont]; $cont++; } $nums = substr($dni, 0, 8); } $letra = strtoupper($letra); $dni = $nums.$letra; $link = conectar(); $bd = new BD(); $consulta = "select dni from usuarios where dni='$dni'"; if($bd->numFilas($consulta) > 0){ return true; } /** EXISTENCIA DE CORREO ELECTRÓNICO **/ $email = $campos["email"]; $consulta = "select email from usuarios where email='$email'"; $num = $bd->numFilas($consulta); if($num > 0){ return true; } /** EXISTENCIA DE NOMBRE Y APELLIDOS **/ if($campos["nombre"] == "-"){ $dato = " "; }else{ $dato = $campos["nombre"]; } $total = trim($dato." ".$campos["apellidos"]); $consulta = "select email from usuarios where CONCAT(nombre,' ',apellidos)='$total' or apellidos='$total'"; $num = $bd->numFilas($consulta); if($num > 0){ return true; } return false; } } ?>