2011-04-04 15:16:10 +00:00
|
|
|
|
<?php
|
|
|
|
|
|
/*
|
|
|
|
|
|
* Clase Persona
|
|
|
|
|
|
*
|
|
|
|
|
|
* Contiene toda la informaci<EFBFBD>n relativa a la persona.
|
|
|
|
|
|
*
|
|
|
|
|
|
* 2008-10-06 (diego): Se crea el objeto con los m<EFBFBD>todos necesarios para gestionar candidatos.
|
|
|
|
|
|
*
|
|
|
|
|
|
*/
|
|
|
|
|
|
include_once("BD.php");
|
|
|
|
|
|
include_once("Rol.php");
|
|
|
|
|
|
include_once("Objects/Administracion.php");
|
|
|
|
|
|
|
|
|
|
|
|
class Persona{
|
|
|
|
|
|
|
|
|
|
|
|
protected $campos = array();
|
|
|
|
|
|
|
|
|
|
|
|
/* Lista de tecnolog<6F>as*/
|
|
|
|
|
|
protected $listaTecnologias = null;
|
|
|
|
|
|
|
|
|
|
|
|
/* Lista de idiomas*/
|
|
|
|
|
|
protected $listaIdiomas = null;
|
|
|
|
|
|
|
|
|
|
|
|
/* Lista de titulaciones*/
|
|
|
|
|
|
protected $listaTitulaciones = null;
|
|
|
|
|
|
|
2011-05-04 14:28:18 +00:00
|
|
|
|
/* Lista de provincias deseadas*/
|
2011-04-04 15:16:10 +00:00
|
|
|
|
protected $listaProvinciasDeseadas = null;
|
|
|
|
|
|
|
2011-05-04 14:28:18 +00:00
|
|
|
|
/* Lista de provincias no deseadas*/
|
|
|
|
|
|
protected $listaProvinciasNoDeseadas = null;
|
|
|
|
|
|
|
2011-04-04 15:16:10 +00:00
|
|
|
|
/* Lista de perfiles*/
|
|
|
|
|
|
protected $listaPerfiles = null;
|
|
|
|
|
|
|
|
|
|
|
|
function Persona($oid){
|
|
|
|
|
|
$consulta = "SELECT oid FROM usuarios WHERE oid = '$oid'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$num = $bd->numFilas($consulta);
|
|
|
|
|
|
if($num > 0){
|
|
|
|
|
|
$this->campos['oid']=$oid;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$error = "Persona no encontrada.";
|
|
|
|
|
|
throw new Exception($error);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function tieneRol($rol){
|
|
|
|
|
|
$roles=$this->getValor("rol");
|
|
|
|
|
|
$arrayByUser=explode(".", $roles);
|
|
|
|
|
|
//Comprobamos si tiene el rol directamente:
|
|
|
|
|
|
if(in_array($rol,$arrayByUser)){
|
|
|
|
|
|
return true;
|
|
|
|
|
|
//En caso contrario, miramos si tiene rol padre:
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$objetoRol = new Rol($rol);
|
|
|
|
|
|
foreach($arrayByUser as $unRol){
|
|
|
|
|
|
if($objetoRol->esHijoDe($unRol)){
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function tieneRolLista($rol){
|
|
|
|
|
|
$roles=$this->getValor("rol");
|
|
|
|
|
|
$arrayByUser=explode(".", $roles);
|
|
|
|
|
|
$arrayRoles=explode(".", $rol);
|
|
|
|
|
|
// echo "roles usuario:";
|
|
|
|
|
|
// print_r($arrayByUser);
|
|
|
|
|
|
// echo " roles opcion:";
|
|
|
|
|
|
// print_r($arrayRoles);
|
|
|
|
|
|
// echo "<br />";
|
|
|
|
|
|
$cuenta=count(array_diff($arrayByUser,$arrayRoles));
|
|
|
|
|
|
$cuenta2=count($arrayByUser);
|
|
|
|
|
|
return ($cuenta<$cuenta2);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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<61>amos recuperamos, lo mostramos
|
|
|
|
|
|
return $this->campos[$nombre];
|
|
|
|
|
|
} else {
|
|
|
|
|
|
// Hay que recuperar el campo de la base de datos
|
|
|
|
|
|
$consulta="SELECT * FROM usuarios WHERE oid=\"".$this->campos['oid']."\"";
|
|
|
|
|
|
|
|
|
|
|
|
switch ($nombre) {
|
|
|
|
|
|
case "nombre_procedencia":$idProcedencia=$this->getValor("procedencia");
|
|
|
|
|
|
$consulta="SELECT id FROM procedencia WHERE procedencia.num=\"".$idProcedencia."\"";
|
|
|
|
|
|
$especial = true;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "nombre_estado":$idEstado=$this->getValor("estado");
|
|
|
|
|
|
$consulta="SELECT nombre FROM candidatos_estados WHERE cod=\"".$idEstado."\"";
|
|
|
|
|
|
$especial = true;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "nombre_rol":$idRol=$this->getValor("rol");
|
|
|
|
|
|
$consulta="SELECT id FROM rol WHERE oid=\"".$idRol."\"";
|
|
|
|
|
|
$especial = true;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "nombre_localidad":$idLocalidad=$this->getValor("localidad");
|
|
|
|
|
|
$consulta="SELECT id FROM localidades WHERE oid=\"".$idLocalidad."\"";
|
|
|
|
|
|
$especial = true;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "nombre_localidad_deseada":$idLocalidad=$this->getValor("localidad_deseada");
|
|
|
|
|
|
$consulta="SELECT id FROM localidades WHERE oid=\"".$idLocalidad."\"";
|
|
|
|
|
|
$especial = true;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "nombre_perfil":$idPerfil=$this->getValor("perfil");
|
|
|
|
|
|
$consulta="SELECT id FROM perfil WHERE oid=\"".$idPerfil."\"";
|
|
|
|
|
|
$especial = true;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "nombre_cliente":$idCliente=$this->getValor("cliente");
|
|
|
|
|
|
$consulta="SELECT id FROM clientes WHERE oid=\"".$$idCliente."\"";
|
|
|
|
|
|
$especial = true;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "nombre_procedencia_cv":$idPCV=$this->getValor("procedenciaCV");
|
|
|
|
|
|
$consulta="SELECT nombre FROM procedencia_cv WHERE id=\"".$idPCV."\"";
|
|
|
|
|
|
$especial = true;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "nombre_salario_min":
|
|
|
|
|
|
$consulta="SELECT salario.nombre FROM salario, usuarios WHERE salario.id=usuarios.salario_min AND usuarios.oid=\"".$this->getValor("oid")."\"";
|
|
|
|
|
|
$especial = true;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "nombre_salario_max":
|
|
|
|
|
|
$consulta="SELECT salario.nombre FROM salario, usuarios WHERE salario.id=usuarios.salario_max AND usuarios.oid=\"".$this->getValor("oid")."\"";
|
|
|
|
|
|
$especial = true;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "nombre_tipo":$tipo=$this->getValor("tipo");
|
|
|
|
|
|
if($tipo == "candidato"){
|
|
|
|
|
|
$arrayAct=array($nombre => $tipo);
|
|
|
|
|
|
$this->campos=$this->campos + $arrayAct;
|
|
|
|
|
|
return "Candidato";
|
|
|
|
|
|
}else if($tipo == "usuario"){
|
|
|
|
|
|
$arrayAct=array($nombre => $tipo);
|
|
|
|
|
|
$this->campos=$this->campos + $arrayAct;
|
|
|
|
|
|
return "Empleado";
|
|
|
|
|
|
}
|
|
|
|
|
|
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);
|
|
|
|
|
|
// Lo insertamos para nosotros
|
|
|
|
|
|
$arrayAct=array($nombre => $valor);
|
|
|
|
|
|
$this->campos=$this->campos + $arrayAct;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return $this->campos[$nombre];
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Acceso a los campos de la persona.
|
|
|
|
|
|
* @return los campos de la persona.
|
|
|
|
|
|
*/
|
|
|
|
|
|
function getCampos(){
|
|
|
|
|
|
return $this->campos;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function setPassword($viejo, $nuevo, $confirmar){
|
|
|
|
|
|
$password = $this->getValor("password");
|
|
|
|
|
|
|
|
|
|
|
|
if($password != md5($viejo)){
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}else if($nuevo == ""){
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}else if($nuevo != $confirmar){
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$nuevo = md5($nuevo);
|
|
|
|
|
|
$consulta = "UPDATE usuarios SET password='$nuevo' WHERE oid='$oid'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$this->campos["password"]=$nuevo;
|
|
|
|
|
|
return $bd->execQuery($consulta);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function modFechaCandidatura(){
|
|
|
|
|
|
$fecha = date(Y."-".m."-".d);
|
|
|
|
|
|
$this->campos["fecha"] = $fecha;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function modObsGerente($obs){
|
|
|
|
|
|
$this->campos["obsGerente"] = $obs;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function modObsRRHH($obs){
|
|
|
|
|
|
$this->campos["obsRRHH"] = $obs;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Asigna un nuevo campo a la persona.
|
|
|
|
|
|
* @param nombre - nombre del campo a asignar.
|
|
|
|
|
|
* @param valor - valor del campo.
|
|
|
|
|
|
*/
|
|
|
|
|
|
protected function setCampo($nombre, $valor){
|
|
|
|
|
|
/*if($nombre == "salario_min" || $nombre == "salario_max"){
|
|
|
|
|
|
if(!$this->compruebaSalario($nombre, $valor)){
|
|
|
|
|
|
$error = "El salario máximo debe ser mayor que el salario mínimo.";
|
|
|
|
|
|
throw new Exception($error);
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}*/
|
|
|
|
|
|
if($nombre != "password" || $valor != ""){
|
|
|
|
|
|
//Antes de editar comprobamos si ya existe una persona
|
|
|
|
|
|
//con esos datos.
|
|
|
|
|
|
if($this->existe($nombre, $valor)){
|
|
|
|
|
|
$error = "Ya existe una persona con esos campos. No se edita.";
|
|
|
|
|
|
throw new Exception($error);
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
$viejo = $this->getValor($nombre);
|
|
|
|
|
|
if($viejo != $valor){
|
|
|
|
|
|
//Comprobamos multivaluado y casos especiales antes del cambio:
|
|
|
|
|
|
$viejo = $this->getValorMulti($nombre, $viejo);
|
|
|
|
|
|
$this->campos[$nombre] = $valor;
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
// $fecha = "'".date(Y."-".m."-".d)."'";
|
|
|
|
|
|
$dato = $nombre." = '".$valor."',";
|
|
|
|
|
|
// $consulta = "UPDATE usuarios SET $nombre = '$valor', fecha_modificacion = $fecha WHERE oid='$oid'";
|
|
|
|
|
|
// $bd = new BD();
|
|
|
|
|
|
// if($bd->execQuery($consulta)){
|
|
|
|
|
|
//Comprobamos multivaluado y casos especiales:
|
|
|
|
|
|
$valor = $this->getValorMulti($nombre, $valor);
|
|
|
|
|
|
|
|
|
|
|
|
if(($nombre == "observaciones") || ($nombre == "descripcion")){
|
|
|
|
|
|
$historial = $nombre;
|
|
|
|
|
|
}else if($viejo == "" && $valor != ""){
|
|
|
|
|
|
$historial = "$nombre (de - a $valor)";
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$historial = "$nombre (de $viejo a $valor)";
|
|
|
|
|
|
}
|
|
|
|
|
|
//Hay campos que no actualizan el historial
|
|
|
|
|
|
if(($nombre != "msgEstado") && ($nombre != "diasEspera")){
|
2011-05-16 11:41:24 +00:00
|
|
|
|
//$this->actualizarHistorial($historial);
|
2011-04-04 15:16:10 +00:00
|
|
|
|
}
|
|
|
|
|
|
// }
|
|
|
|
|
|
return $dato;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return "";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private function compruebaSalario($nombre, $valor){
|
|
|
|
|
|
$salario = nombre_salario($valor);
|
|
|
|
|
|
//Hago comparaciones num<75>ricas.
|
|
|
|
|
|
$search = array(">", "<", "=", ".", "+", "-");
|
|
|
|
|
|
$replace = array("", "", "", "", "", "");
|
|
|
|
|
|
$salario = str_replace($search, $replace, $salario);
|
|
|
|
|
|
switch ($nombre) {
|
|
|
|
|
|
case "salario_min":
|
|
|
|
|
|
$salario_max = $this->getValor("nombre_salario_max");
|
|
|
|
|
|
$search = array(">", "<", "=", ".", "+", "-");
|
|
|
|
|
|
$replace = array("", "", "", "", "", "");
|
|
|
|
|
|
$salario_max = str_replace($search, $replace, $salario_max);
|
|
|
|
|
|
if($salario_max < $salario){
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "salario_max":
|
|
|
|
|
|
$salario_min = $this->getValor("nombre_salario_min");
|
|
|
|
|
|
$search = array(">", "<", "=", ".", "+", "-");
|
|
|
|
|
|
$replace = array("", "", "", "", "", "");
|
|
|
|
|
|
$salario_min = str_replace($search, $replace, $salario_min);
|
|
|
|
|
|
if($salario_min > $salario){
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private function existe($nombre, $valor){
|
|
|
|
|
|
if($valor == ""){
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
switch ($nombre) {
|
|
|
|
|
|
case "dni":
|
|
|
|
|
|
$consulta = "SELECT dni FROM usuarios WHERE dni='$valor' AND oid <> '$oid'";
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "email":
|
|
|
|
|
|
$consulta = "SELECT email FROM usuarios WHERE email='$valor' AND oid <> '$oid'";
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
return false;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$cont = $bd->numFilas($consulta);
|
|
|
|
|
|
|
|
|
|
|
|
if($cont > 0){
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private function getValorMulti($nombre, $antiguo){
|
|
|
|
|
|
switch ($nombre) {
|
|
|
|
|
|
case "procedencia":
|
|
|
|
|
|
$valor = nombre_procedencia($antiguo);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "procedenciaCV":
|
|
|
|
|
|
$valor = nombre_procedencia_cv($antiguo);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "estado":
|
|
|
|
|
|
$valor = nombre_estado($antiguo);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "localidad":
|
|
|
|
|
|
$valor = nombre_localidad($antiguo);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "localidad_deseada":
|
|
|
|
|
|
$valor = nombre_localidad($antiguo);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "perfil":
|
|
|
|
|
|
$valor = nombre_perfil($antiguo);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "cliente":
|
|
|
|
|
|
$valor = nombre_cliente($antiguo);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "salario_min":
|
|
|
|
|
|
$valor = nombre_salario($antiguo);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case "salario_max":
|
|
|
|
|
|
$valor = nombre_salario($antiguo);
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
$valor = $antiguo;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
return $valor;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Asigna nuevos campos a la persona.
|
|
|
|
|
|
* @param array - lista de campos a asignar de la forma campo => valor.
|
|
|
|
|
|
*/
|
|
|
|
|
|
function setCampos($array){
|
|
|
|
|
|
$consulta = "UPDATE usuarios SET ";//" $nombre = '$valor', fecha_modificacion = $fecha WHERE oid='$oid'";
|
|
|
|
|
|
foreach($array as $key => $value){
|
|
|
|
|
|
$consulta .= $this->setCampo($key, $value);
|
|
|
|
|
|
}
|
|
|
|
|
|
//Quitamos la <20>ltima coma
|
|
|
|
|
|
/*if ($consulta{strlen($consulta) - 1} == ",")
|
|
|
|
|
|
$consulta = substr($consulta,0,strlen($consulta) - 1);*/
|
2011-05-04 14:28:18 +00:00
|
|
|
|
$fecha = "'".date('Y'."-".'m'."-".'d')."'";
|
2011-04-04 15:16:10 +00:00
|
|
|
|
$consulta .= " fecha_modificacion = $fecha ";
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$consulta .= "WHERE oid='$oid'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
return $bd->execQuery($consulta);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Elimina una persona de la base de datos.
|
|
|
|
|
|
*/
|
|
|
|
|
|
protected function eliminar(){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
// Recuperamos todos sus curriculum para eliminarlos
|
|
|
|
|
|
$consulta = "SELECT curriculum FROM curriculum_usuario WHERE oid='".$oid."'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$curriculums=$bd->arrayQuery($consulta,"curriculum");
|
|
|
|
|
|
$administracion=new Administracion("","");
|
|
|
|
|
|
$constantes=$administracion->getItem("constantes");
|
|
|
|
|
|
$url = $constantes['srcDocs'];
|
|
|
|
|
|
foreach ($curriculums as $doc){
|
|
|
|
|
|
echo "eliminamos ".$url.SLASH.$doc;
|
|
|
|
|
|
@unlink($url.SLASH.$doc);
|
|
|
|
|
|
}
|
|
|
|
|
|
$consulta = "DELETE FROM usuarios WHERE oid='$oid'";
|
|
|
|
|
|
|
|
|
|
|
|
return $bd->execQuery($consulta);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Devuelve una lista de tecnolog<EFBFBD>as asociadas al usuario.
|
|
|
|
|
|
*/
|
|
|
|
|
|
function getTecnologias(){
|
|
|
|
|
|
if($this->listaTecnologias == null){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$consulta = "SELECT tecnologia, id FROM tecnologia_usuario, tecnologia WHERE oid_i = '$oid' and tecnologia_usuario.tecnologia = tecnologia.oid";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$this->listaTecnologias = $bd->keyValueQuery($consulta, "id", "tecnologia");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return $this->listaTecnologias;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Devuelve una lista de idiomas asociados al usuario.
|
|
|
|
|
|
*/
|
|
|
|
|
|
function getIdiomas(){
|
|
|
|
|
|
if($this->listaIdiomas == null){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$consulta = "SELECT idioma, id FROM idioma_usuario, idiomas WHERE oid_i = '$oid' and idioma_usuario.idioma = idiomas.oid";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$this->listaIdiomas = $bd->keyValueQuery($consulta, "id", "idioma");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return $this->listaIdiomas;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Devuelve una lista de titulaciones asociadas al usuario.
|
|
|
|
|
|
*/
|
|
|
|
|
|
function getTitulaciones(){
|
|
|
|
|
|
if($this->listaTitulaciones == null){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$consulta = "SELECT t.oid, t.id FROM titulacion_usuario tu, titulaciones t WHERE tu.oid_i = '$oid' and tu.titulacion = t.oid";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$this->listaTitulaciones = $bd->keyValueQuery($consulta, "id", "oid");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return $this->listaTitulaciones;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Devuelve una lista de provincias deseadas asociadas al usuario.
|
|
|
|
|
|
*/
|
|
|
|
|
|
function getProvinciasDeseadas(){
|
|
|
|
|
|
if($this->listaProvinciasDeseadas == null){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$consulta = "SELECT l.oid, l.id FROM provincia_usuario lu, provincias l WHERE lu.oid_i = '$oid' and lu.provincia = l.oid";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$this->listaProvinciasDeseadas = $bd->keyValueQuery($consulta, "id", "oid");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return $this->listaProvinciasDeseadas;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2011-05-04 14:28:18 +00:00
|
|
|
|
/**
|
|
|
|
|
|
* Devuelve una lista de provincias deseadas asociadas al usuario.
|
|
|
|
|
|
*/
|
|
|
|
|
|
function getProvinciasNoDeseadas(){
|
|
|
|
|
|
if($this->listaProvinciasNoDeseadas == null){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$consulta = "SELECT l.oid, l.id FROM no_provincia_usuario lu, provincias l WHERE lu.oid_i = '$oid' and lu.provincia = l.oid";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$this->listaProvinciasNoDeseadas = $bd->keyValueQuery($consulta, "id", "oid");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return $this->listaProvinciasNoDeseadas;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-04-04 15:16:10 +00:00
|
|
|
|
/**
|
|
|
|
|
|
* Devuelve una lista de perfiles asociadas al usuario.
|
|
|
|
|
|
*/
|
|
|
|
|
|
function getPerfiles(){
|
|
|
|
|
|
if($this->listaPerfiles == null){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$consulta = "SELECT p.oid, p.id FROM perfil_usuario pu, perfil p WHERE pu.oid_i = '$oid' and pu.perfil = p.oid";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$this->listaPerfiles = $bd->keyValueQuery($consulta, "id", "oid");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return $this->listaPerfiles;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function addTecnologias($array){
|
|
|
|
|
|
if(gettype($array) == "array"){
|
|
|
|
|
|
foreach($array as $elem){
|
|
|
|
|
|
$this->addTecnologia($elem);
|
|
|
|
|
|
}
|
|
|
|
|
|
$this->calculaAfinidad();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function addIdiomas($array){
|
|
|
|
|
|
if(gettype($array) == "array"){
|
|
|
|
|
|
foreach($array as $elem){
|
|
|
|
|
|
$this->addIdioma($elem);
|
|
|
|
|
|
}
|
|
|
|
|
|
$this->calculaAfinidad();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function addTitulaciones($array){
|
|
|
|
|
|
if(gettype($array) == "array"){
|
|
|
|
|
|
foreach($array as $elem){
|
|
|
|
|
|
$this->addTitulacion($elem);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function addProvinciasDeseadas($array){
|
|
|
|
|
|
if(gettype($array) == "array"){
|
|
|
|
|
|
foreach($array as $elem){
|
|
|
|
|
|
$this->addProvinciaDeseada($elem);
|
|
|
|
|
|
}
|
|
|
|
|
|
$this->calculaAfinidad();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2011-05-04 14:28:18 +00:00
|
|
|
|
function addProvinciasNoDeseadas($array){
|
|
|
|
|
|
if(gettype($array) == "array"){
|
|
|
|
|
|
foreach($array as $elem){
|
|
|
|
|
|
$this->addProvinciaNoDeseada($elem);
|
|
|
|
|
|
}
|
|
|
|
|
|
$this->calculaAfinidad();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2011-04-04 15:16:10 +00:00
|
|
|
|
function addPerfiles($array){
|
|
|
|
|
|
if(gettype($array) == "array"){
|
|
|
|
|
|
foreach($array as $elem){
|
|
|
|
|
|
$this->addPerfil($elem);
|
|
|
|
|
|
}
|
|
|
|
|
|
$this->calculaAfinidad();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Asocia una nueva tecnolog<EFBFBD>a en la base de datos.
|
|
|
|
|
|
*/
|
|
|
|
|
|
private function addTecnologia($id){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$this->getTecnologias();
|
|
|
|
|
|
if(!in_array($id, $this->listaTecnologias)){
|
|
|
|
|
|
$consulta = "SELECT id FROM tecnologia WHERE oid='$id'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$nombre_tecno = $bd->getCampo($consulta);
|
|
|
|
|
|
$consulta = "INSERT INTO tecnologia_usuario VALUES('$id', '$oid')";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
if($bd->execQuery($consulta)){
|
|
|
|
|
|
$mensaje = "Nueva tecno: $nombre_tecno";
|
2011-05-16 11:41:24 +00:00
|
|
|
|
// $this->actualizarHistorial($mensaje);
|
2011-04-04 15:16:10 +00:00
|
|
|
|
$this->listaTecnologias[$nombre_tecno] = $id;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Asocia un nuevo idioma en la base de datos.
|
|
|
|
|
|
*/
|
|
|
|
|
|
private function addIdioma($id){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$this->getIdiomas();
|
|
|
|
|
|
if(!in_array($id, $this->listaIdiomas)){
|
|
|
|
|
|
$consulta = "SELECT id FROM idiomas WHERE oid='$id'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$nombre_idioma = $bd->getCampo($consulta);
|
|
|
|
|
|
$consulta = "INSERT INTO idioma_usuario VALUES('$id', '$oid')";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
if($bd->execQuery($consulta)){
|
|
|
|
|
|
$mensaje = "Nuevo idioma: $nombre_idioma";
|
2011-05-16 11:41:24 +00:00
|
|
|
|
// $this->actualizarHistorial($mensaje);
|
2011-04-04 15:16:10 +00:00
|
|
|
|
$this->listaIdiomas[$nombre_idioma] = $id;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Asocia una nueva titulaci<EFBFBD>n en la base de datos.
|
|
|
|
|
|
*/
|
|
|
|
|
|
private function addTitulacion($id){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$this->getTitulaciones();
|
|
|
|
|
|
if(!in_array($id, $this->listaTitulaciones)){
|
|
|
|
|
|
$consulta = "SELECT id FROM titulaciones WHERE oid='$id'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$nombre_titulacion = $bd->getCampo($consulta);
|
|
|
|
|
|
$consulta = "INSERT INTO titulacion_usuario VALUES('$id', '$oid')";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
if($bd->execQuery($consulta)){
|
|
|
|
|
|
$mensaje = "Nueva titu: $nombre_titulacion";
|
2011-05-16 11:41:24 +00:00
|
|
|
|
//$this->actualizarHistorial($mensaje);
|
2011-04-04 15:16:10 +00:00
|
|
|
|
$this->listaTitulaciones[$nombre_titulacion] = $id;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Asocia una nueva provincia deseada en la base de datos.
|
|
|
|
|
|
*/
|
|
|
|
|
|
private function addProvinciaDeseada($id){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$this->getProvinciasDeseadas();
|
|
|
|
|
|
if(!in_array($id, $this->listaProvinciasDeseadas)){
|
|
|
|
|
|
$consulta = "SELECT id FROM provincias WHERE oid='$id'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$nombre_provincia = $bd->getCampo($consulta);
|
|
|
|
|
|
$consulta = "INSERT INTO provincia_usuario VALUES('$id', '$oid')";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
if($bd->execQuery($consulta)){
|
|
|
|
|
|
$mensaje = "Nueva provincia deseada: ".$nombre_provincia;
|
2011-05-16 11:41:24 +00:00
|
|
|
|
//$this->actualizarHistorial($mensaje);
|
2011-04-04 15:16:10 +00:00
|
|
|
|
$this->listaProvinciasDeseadas[$nombre_provincia] = $id;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2011-05-04 14:28:18 +00:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Asocia una nueva provincia no deseada en la base de datos.
|
|
|
|
|
|
*/
|
|
|
|
|
|
private function addProvinciaNoDeseada($id){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$this->getProvinciasNoDeseadas();
|
|
|
|
|
|
if(!in_array($id, $this->listaProvinciasNoDeseadas)){
|
|
|
|
|
|
$consulta = "SELECT id FROM provincias WHERE oid='$id'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$nombre_provincia = $bd->getCampo($consulta);
|
|
|
|
|
|
$consulta = "INSERT INTO no_provincia_usuario VALUES('$id', '$oid')";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
if($bd->execQuery($consulta)){
|
|
|
|
|
|
$mensaje = "Nueva provincia no deseada: ".$nombre_provincia;
|
2011-05-16 11:41:24 +00:00
|
|
|
|
//$this->actualizarHistorial($mensaje);
|
2011-05-04 14:28:18 +00:00
|
|
|
|
$this->listaProvinciasNoDeseadas[$nombre_provincia] = $id;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-04-04 15:16:10 +00:00
|
|
|
|
/**
|
|
|
|
|
|
* Asocia un nuevo perfil en la base de datos.
|
|
|
|
|
|
*/
|
|
|
|
|
|
private function addPerfil($id){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$this->getPerfiles();
|
|
|
|
|
|
if(!in_array($id, $this->listaPerfiles)){
|
|
|
|
|
|
$consulta = "SELECT id FROM perfil WHERE oid='$id'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$nombre_perfil = $bd->getCampo($consulta);
|
|
|
|
|
|
$consulta = "INSERT INTO perfil_usuario VALUES('$id', '$oid')";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
if($bd->execQuery($consulta)){
|
|
|
|
|
|
$mensaje = "Nuevo perfil: ".$nombre_perfil;
|
2011-05-16 11:41:24 +00:00
|
|
|
|
//$this->actualizarHistorial($mensaje);
|
2011-04-04 15:16:10 +00:00
|
|
|
|
$this->listaPerfiles[$nombre_perfil] = $id;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* A<EFBFBD>ade un nuevo curr<EFBFBD>culum a la persona.
|
|
|
|
|
|
*/
|
|
|
|
|
|
protected function addCurriculum($archivo, $usuario){
|
|
|
|
|
|
$cv = $this->getValor("cv") + 1;
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
|
|
|
|
|
|
$nombre_archivo = $oid."-".$cv;
|
|
|
|
|
|
|
|
|
|
|
|
$directorio = constante("srcDocs").SLASH."cv".SLASH;
|
|
|
|
|
|
if (!@file_exists($directorio)){
|
|
|
|
|
|
mkdir($directorio, 0777);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$tamano_archivo = $archivo['size'];
|
|
|
|
|
|
$nombre_archivo .= ".".nombre_extension($archivo['name']);
|
|
|
|
|
|
$destino = $directorio.$nombre_archivo;
|
|
|
|
|
|
$nombre_ruta_tabla = "cv".SLASH.$nombre_archivo;
|
|
|
|
|
|
$fichero_subido = false;
|
|
|
|
|
|
|
|
|
|
|
|
if (($tamano_archivo < 10000000) && (is_uploaded_file($archivo['tmp_name']))) {
|
|
|
|
|
|
copy($archivo['tmp_name'], $destino);
|
|
|
|
|
|
$fichero_subido = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
$nombre_ruta_tabla=addslashes($nombre_ruta_tabla);
|
|
|
|
|
|
|
|
|
|
|
|
if($fichero_subido){
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$consulta = "INSERT INTO curriculum_usuario (oid, curriculum, fecha) values ('".$oid."', '".$nombre_ruta_tabla."', now())";
|
|
|
|
|
|
$bd->execQuery($consulta);
|
2011-05-16 11:41:24 +00:00
|
|
|
|
//$this->actualizarHistorial("Nuevo CV", $usuario);
|
2011-04-04 15:16:10 +00:00
|
|
|
|
$consulta = "update usuarios set cv=cv+1 where oid='$oid'";
|
|
|
|
|
|
$bd->execQuery($consulta);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected function removeCurriculum($curriculum, $fecha, $usuario){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$consulta = "DELETE FROM curriculum_usuario WHERE oid = '".$oid."' and curriculum = '".$curriculum."' and fecha = '".$fecha."'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$resultado = $bd->execQuery($consulta);
|
|
|
|
|
|
|
|
|
|
|
|
if ($resultado){
|
|
|
|
|
|
$consulta = "update usuarios set cv=cv-1 where oid='$oid'";
|
|
|
|
|
|
$bd->execQuery($consulta);
|
|
|
|
|
|
|
|
|
|
|
|
$cambios = "CV eliminado";
|
|
|
|
|
|
|
2011-05-16 11:41:24 +00:00
|
|
|
|
//$this->actualizarHistorial($cambios, $usuario);
|
2011-04-04 15:16:10 +00:00
|
|
|
|
$ruta = constante("srcDocs")."\\".$curriculum;
|
|
|
|
|
|
if (!@unlink($ruta)){
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Elimina la asociaci<EFBFBD>n entre una tecnolog<EFBFBD>a y un usuario.
|
|
|
|
|
|
*/
|
|
|
|
|
|
function removeTecnologia($id){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$this->getTecnologias();
|
|
|
|
|
|
if(in_array($id, $this->listaTecnologias)){
|
|
|
|
|
|
$consulta = "SELECT id FROM tecnologia WHERE oid='$id'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$nombre_tecno = $bd->getCampo($consulta);
|
|
|
|
|
|
$consulta = "DELETE FROM tecnologia_usuario WHERE tecnologia='$id' and oid_i='$oid'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
if($bd->execQuery($consulta)){
|
|
|
|
|
|
$mensaje = "Eliminada tecno: $nombre_tecno";
|
2011-05-16 11:41:24 +00:00
|
|
|
|
//$this->actualizarHistorial($mensaje);
|
2011-04-04 15:16:10 +00:00
|
|
|
|
$lista = $this->listaTecnologias;
|
|
|
|
|
|
$this->listaTecnologias = null;
|
|
|
|
|
|
foreach($lista as $key => $value){
|
|
|
|
|
|
if($value != $id){
|
|
|
|
|
|
$this->listaTecnologias[$key] = $value;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$this->calculaAfinidad();
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Elimina la asociaci<EFBFBD>n entre un idioma y un usuario.
|
|
|
|
|
|
*/
|
|
|
|
|
|
function removeIdioma($id){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$this->getIdiomas();
|
|
|
|
|
|
if(in_array($id, $this->listaIdiomas)){
|
|
|
|
|
|
$consulta = "SELECT id FROM idiomas WHERE oid='$id'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$nombre_idioma = $bd->getCampo($consulta);
|
|
|
|
|
|
$consulta = "DELETE FROM idioma_usuario WHERE idioma='$id' and oid_i='$oid'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
if($bd->execQuery($consulta)){
|
|
|
|
|
|
$mensaje = "Eliminado idioma: $nombre_idioma";
|
2011-05-16 11:41:24 +00:00
|
|
|
|
//$this->actualizarHistorial($mensaje);
|
2011-04-04 15:16:10 +00:00
|
|
|
|
$lista = $this->listaIdiomas;
|
|
|
|
|
|
$this->listaIdiomas = null;
|
|
|
|
|
|
foreach($lista as $key => $value){
|
|
|
|
|
|
if($value != $id){
|
|
|
|
|
|
$this->listaIdiomas[$key] = $value;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$this->calculaAfinidad();
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Elimina la asociaci<EFBFBD>n entre una titulaci<EFBFBD>n y un usuario.
|
|
|
|
|
|
*/
|
|
|
|
|
|
function removeTitulacion($id){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$this->getTitulaciones();
|
|
|
|
|
|
if(in_array($id, $this->listaTitulaciones)){
|
|
|
|
|
|
$consulta = "SELECT id FROM titulaciones WHERE oid='$id'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$nombre_titulacion = $bd->getCampo($consulta);
|
|
|
|
|
|
$consulta = "DELETE FROM titulacion_usuario WHERE titulacion='$id' and oid_i='$oid'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
if($bd->execQuery($consulta)){
|
|
|
|
|
|
$mensaje = "Eliminada titulacion: $nombre_titulacion";
|
2011-05-16 11:41:24 +00:00
|
|
|
|
//$this->actualizarHistorial($mensaje);
|
2011-04-04 15:16:10 +00:00
|
|
|
|
$lista = $this->listaTitulaciones;
|
|
|
|
|
|
$this->listaTitulaciones = null;
|
|
|
|
|
|
foreach($lista as $key => $value){
|
|
|
|
|
|
if($value != $id){
|
|
|
|
|
|
$this->listaTitulaciones[$key] = $value;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$this->calculaAfinidad();
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2011-05-04 14:28:18 +00:00
|
|
|
|
* Elimina la asociación entre una localidad deseada y un usuario.
|
2011-04-04 15:16:10 +00:00
|
|
|
|
*/
|
|
|
|
|
|
function removeProvinciaDeseada($id){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$this->getProvinciasDeseadas();
|
|
|
|
|
|
if(in_array($id, $this->listaProvinciasDeseadas)){
|
|
|
|
|
|
$consulta = "SELECT id FROM provincias WHERE oid='$id'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$nombre_provincia = $bd->getCampo($consulta);
|
|
|
|
|
|
$consulta = "DELETE FROM provincia_usuario WHERE provincia='$id' and oid_i='$oid'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
if($bd->execQuery($consulta)){
|
|
|
|
|
|
$mensaje = "Eliminada provincia deseada: $nombre_provincia";
|
2011-05-16 11:41:24 +00:00
|
|
|
|
//$this->actualizarHistorial($mensaje);
|
2011-04-04 15:16:10 +00:00
|
|
|
|
$lista = $this->listaProvinciasDeseadas;
|
|
|
|
|
|
$this->listaProvinciasDeseadas = null;
|
|
|
|
|
|
foreach($lista as $key => $value){
|
|
|
|
|
|
if($value != $id){
|
|
|
|
|
|
$this->listaProvinciasDeseadas[$key] = $value;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$this->calculaAfinidad();
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2011-05-04 14:28:18 +00:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Elimina la asociación entre una localidad no deseada y un usuario.
|
|
|
|
|
|
*/
|
|
|
|
|
|
function removeProvinciaNoDeseada($id){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$this->getProvinciasNoDeseadas();
|
|
|
|
|
|
if(in_array($id, $this->listaProvinciasNoDeseadas)){
|
|
|
|
|
|
$consulta = "SELECT id FROM provincias WHERE oid='$id'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$nombre_provincia = $bd->getCampo($consulta);
|
|
|
|
|
|
$consulta = "DELETE FROM no_provincia_usuario WHERE provincia='$id' and oid_i='$oid'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
if($bd->execQuery($consulta)){
|
|
|
|
|
|
$mensaje = "Eliminada provincia no deseada: $nombre_provincia";
|
2011-05-16 11:41:24 +00:00
|
|
|
|
//$this->actualizarHistorial($mensaje);
|
2011-05-04 14:28:18 +00:00
|
|
|
|
$lista = $this->listaProvinciasNoDeseadas;
|
|
|
|
|
|
$this->listaProvinciasNoDeseadas = null;
|
|
|
|
|
|
foreach($lista as $key => $value){
|
|
|
|
|
|
if($value != $id){
|
|
|
|
|
|
$this->listaProvinciasNoDeseadas[$key] = $value;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$this->calculaAfinidad();
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-04-04 15:16:10 +00:00
|
|
|
|
/**
|
|
|
|
|
|
* Elimina la asociaci<EFBFBD>n entre un perfil y un usuario.
|
|
|
|
|
|
*/
|
|
|
|
|
|
function removePerfil($id){
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$this->getPerfiles();
|
|
|
|
|
|
if(in_array($id, $this->listaPerfiles)){
|
|
|
|
|
|
$consulta = "SELECT id FROM perfil WHERE oid='$id'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$nombre_perfil = $bd->getCampo($consulta);
|
|
|
|
|
|
$consulta = "DELETE FROM perfil_usuario WHERE perfil='$id' and oid_i='$oid'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
if($bd->execQuery($consulta)){
|
|
|
|
|
|
$mensaje = "Eliminada localidad deseada: $nombre_perfil";
|
2011-05-16 11:41:24 +00:00
|
|
|
|
//$this->actualizarHistorial($mensaje);
|
2011-04-04 15:16:10 +00:00
|
|
|
|
$lista = $this->listaPerfiles;
|
|
|
|
|
|
$this->listaPerfiles = null;
|
|
|
|
|
|
foreach($lista as $key => $value){
|
|
|
|
|
|
if($value != $id){
|
|
|
|
|
|
$this->listaPerfiles[$key] = $value;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$this->calculaAfinidad();
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Calcula la afinidad del usuario con todos los pedidos del sistema.
|
|
|
|
|
|
* @param id - identificador del usuario.
|
|
|
|
|
|
*/
|
|
|
|
|
|
function calculaAfinidad(){
|
|
|
|
|
|
//Recuperamos al usuario:
|
|
|
|
|
|
$id = $this->getValor("oid");
|
|
|
|
|
|
$email = $this->getValor("email");
|
|
|
|
|
|
//Eliminamos al usuario de la tabla de candidatos en pedido para todos los
|
|
|
|
|
|
//pedidos en los que se encuentre en proceso.
|
|
|
|
|
|
$consulta = "DELETE FROM candidato_pedido WHERE candidato='$id' AND estado='3'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$bd->execQuery($consulta);
|
|
|
|
|
|
//Si el candidato es v<>lido calculamos su afinidad para los pedidos:
|
|
|
|
|
|
$estado = $this->getValor("estado");
|
|
|
|
|
|
//Estados v<>lidos: Disponible, En proceso, Entrevistado y en En proceso (entrevistado).
|
|
|
|
|
|
if(($estado == 10) || ($estado == 30) || ($estado == 50) || ($estado == 70)){
|
|
|
|
|
|
$consulta = "SELECT oid FROM pedidos WHERE estado = 10";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$listaPedidos = $bd->arrayQuery($consulta, "oid");
|
|
|
|
|
|
foreach($listaPedidos as $idPedido){
|
|
|
|
|
|
$pedido = new Pedido($idPedido, new Usuario($email));
|
|
|
|
|
|
$idiomasPedido = $pedido->getIdiomas();
|
|
|
|
|
|
$idiomasUsuario = $this->getidiomas();
|
|
|
|
|
|
$tecnologiasPedido = $pedido->getTecnologias();
|
|
|
|
|
|
$tecnologiasUsuario = $this->getTecnologias();
|
|
|
|
|
|
$perfilPedido = $pedido->getValor("perfil");
|
|
|
|
|
|
$perfilUsuario = $this->getPerfiles();
|
|
|
|
|
|
$provinciasPedido = $pedido->getProvincias();
|
|
|
|
|
|
$provinciasDeseadas = $this->getProvinciasDeseadas();
|
2011-05-10 18:22:34 +00:00
|
|
|
|
$provinciasNoDeseadas = $this->getProvinciasNoDeseadas();
|
2011-04-04 15:16:10 +00:00
|
|
|
|
$afinidad = new Afinidad($idiomasPedido, $idiomasUsuario, $tecnologiasPedido,
|
2011-05-10 18:22:34 +00:00
|
|
|
|
$tecnologiasUsuario, $perfilPedido, $perfilUsuario, $provinciasPedido, $provinciasDeseadas, $provinciasNoDeseadas);
|
2011-04-04 15:16:10 +00:00
|
|
|
|
$afi = $afinidad->calculaAfinidad($pedido->getValor("PesoIdioma"), $pedido->getValor("PesoPerfil"), $pedido->getValor("PesoTecno"));
|
|
|
|
|
|
if($afi >= 0){
|
|
|
|
|
|
$consulta = "INSERT INTO candidato_pedido (candidato, pedido, afinidad, estado, fecha) VALUES('$id', '$idPedido', '$afi', '30', curdate())";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$bd->execQuery($consulta);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return $afi;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected function actualizarHistorial($mensaje, $usuario){
|
|
|
|
|
|
try{
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
$p = new Persona($oid);
|
|
|
|
|
|
$consulta = "INSERT INTO historial_usuario (oid_h, fecha_h, persona_h, texto_h) VALUES('$oid', now(), '$usuario', '$mensaje')";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
return $bd->execQuery($consulta);
|
|
|
|
|
|
}catch(Exception $e){
|
|
|
|
|
|
//No muestro nada, pongo este try catch para evitar que actualice
|
|
|
|
|
|
//el historial al asignar campos a un usuario antes de meterlo en la BD.
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function getHistorial(){
|
|
|
|
|
|
$historial = "";
|
|
|
|
|
|
$oid = $this->getValor("oid");
|
|
|
|
|
|
|
|
|
|
|
|
$consulta = "SELECT * FROM historial_usuario WHERE oid_h='$oid' ORDER BY fecha_h DESC";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$resultado = $bd->execQuery($consulta);
|
|
|
|
|
|
|
|
|
|
|
|
while($rows = mysql_fetch_array($resultado)){
|
|
|
|
|
|
$fecha = $rows["fecha_h"];
|
|
|
|
|
|
$persona = $rows["persona_h"];
|
|
|
|
|
|
$texto = $rows["texto_h"];
|
|
|
|
|
|
$historial .= "[$fecha] $persona - $texto\n";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return $historial;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private function calculaVacaciones($anio){
|
|
|
|
|
|
$fecha = $this->getValor("fecha_alta");
|
|
|
|
|
|
$fecha_array = explode("-", $fecha);
|
|
|
|
|
|
$anyo = $fecha_array[0];
|
|
|
|
|
|
$mes = $fecha_array[1];
|
|
|
|
|
|
$dia = $fecha_array[2];
|
|
|
|
|
|
$fecha = mktime(0,0,0,$mes,$dia,$anyo);
|
|
|
|
|
|
$dias_mes = date('t',$fecha);
|
|
|
|
|
|
$fiestas = constante("fiestas");
|
|
|
|
|
|
//Si se dio de alta un a<>o anterior al actual tiene todos sus d<>as.
|
|
|
|
|
|
if($anio<$anyo){
|
|
|
|
|
|
$fiestas=0;
|
|
|
|
|
|
}elseif($anio==$anyo){
|
|
|
|
|
|
if($anyo == date('Y')){
|
|
|
|
|
|
$fiestas = (($fiestas/12)*(12-$mes))+(($fiestas/12/$dias_mes)*($dias_mes-$dia));
|
|
|
|
|
|
$fiestas=round($fiestas,0);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return $fiestas;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function getDiasVacaciones($anio){
|
|
|
|
|
|
$consulta = "SELECT dias FROM vacaciones_oid WHERE oid='".$this->getValor("oid")."' AND anyo='".$anio."'";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$dias = $bd->getCampo($consulta);
|
|
|
|
|
|
if(($dias >= 0) && ($dias != "")){
|
|
|
|
|
|
return $dias;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$dias=$this->calculaVacaciones($anio);
|
|
|
|
|
|
// Insertamos en la tabla
|
|
|
|
|
|
$consulta = "INSERT INTO vacaciones_oid (oid, anyo, dias) VALUES ('".$this->getValor("oid")."', '".$anio."', '".$dias."')";
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$bd->execQuery($consulta);
|
|
|
|
|
|
}
|
|
|
|
|
|
return $dias;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Suma o resta las vacaciones de un usuario dando el número que hay que sumar o restar
|
|
|
|
|
|
* Comprueba en qué año hay que hacer la cuenta
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function variaVacaciones($cantidad){
|
|
|
|
|
|
$diaoff=substr(constante("daycacationsoff"),0,2);
|
|
|
|
|
|
$mesoff=substr(constante("daycacationsoff"),3,2);
|
|
|
|
|
|
$diaCierreVac=mktime(0,0,0,$mesoff,$diaoff,date('Y'));
|
|
|
|
|
|
|
|
|
|
|
|
$hoy=mktime(0,0,0,date('m'),date('d'),date('Y'));
|
|
|
|
|
|
$anio_sig=date('Y')+1;
|
|
|
|
|
|
$anio_ant=date('Y')-1;
|
|
|
|
|
|
if($cantidad < 0){
|
|
|
|
|
|
// Quitamos dias, hay que calcular el año
|
|
|
|
|
|
$cantidad = -1*$cantidad;
|
|
|
|
|
|
if($hoy>$diaCierreVac){
|
|
|
|
|
|
// este y posterior
|
|
|
|
|
|
if($this->getDiasVacaciones(date('Y'))>0) {
|
|
|
|
|
|
$anio=date('Y');
|
|
|
|
|
|
}elseif($this->getDiasVacaciones($anio_sig)>0){
|
|
|
|
|
|
$anio=$anio_sig;
|
|
|
|
|
|
}else {
|
|
|
|
|
|
// No le quedan vacaciones, lanzamos exception
|
|
|
|
|
|
$error = "No quedan vacaciones.";
|
|
|
|
|
|
throw new Exception($error);
|
|
|
|
|
|
exit();
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
// anterior y este
|
|
|
|
|
|
$pos=date('Y')-1;
|
|
|
|
|
|
if($this->getDiasVacaciones($anio_ant)>0) {
|
|
|
|
|
|
$anio=$anio_ant;
|
|
|
|
|
|
}elseif($this->getDiasVacaciones(date('Y'))>0){
|
|
|
|
|
|
$anio=date('Y');
|
|
|
|
|
|
}else {
|
|
|
|
|
|
// No le quedan vacaciones, lanzamos exception
|
|
|
|
|
|
$error = "No quedan vacaciones.";
|
|
|
|
|
|
throw new Exception($error);
|
|
|
|
|
|
exit();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
$consulta = "UPDATE vacaciones_oid SET dias=dias-".$cantidad." WHERE oid='".$this->getValor("oid")."' AND anyo='".$anio."'";
|
|
|
|
|
|
} else{
|
|
|
|
|
|
// hay que sumar días
|
|
|
|
|
|
if($hoy>$diaCierreVac){
|
|
|
|
|
|
// este y posterior constante("fiestas")
|
|
|
|
|
|
if($this->getDiasVacaciones($anio_sig)<constante("fiestas")) {
|
|
|
|
|
|
$anio=$anio_sig;
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$anio=date('Y');
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
// anterior y este
|
|
|
|
|
|
if($this->getDiasVacaciones(date('Y'))<constante("fiestas")) {
|
|
|
|
|
|
$anio=date('Y');
|
|
|
|
|
|
}else{
|
|
|
|
|
|
$anio=date('Y');
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
$consulta = "UPDATE vacaciones_oid SET dias=dias+".$cantidad." WHERE oid='".$this->getValor("oid")."' AND anyo='".$anio."'";
|
|
|
|
|
|
}
|
|
|
|
|
|
$bd = new BD();
|
|
|
|
|
|
$bd->execQuery($consulta);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public function diasTotalesVacaciones(){
|
|
|
|
|
|
$diaoff=substr(constante("daycacationsoff"),0,2);
|
|
|
|
|
|
$mesoff=substr(constante("daycacationsoff"),3,2);
|
|
|
|
|
|
$diaCierreVac=mktime(0,0,0,$mesoff,$diaoff,date('Y'));
|
|
|
|
|
|
|
|
|
|
|
|
$hoy=mktime(0,0,0,date('m'),date('d'),date('Y'));
|
|
|
|
|
|
$anio_sig=date('Y')+1;
|
|
|
|
|
|
$anio_ant=date('Y')-1;
|
|
|
|
|
|
if($hoy>$diaCierreVac){
|
|
|
|
|
|
// este y posterior
|
|
|
|
|
|
$diasTotales=$this->getDiasVacaciones(date('Y'))+$this->getDiasVacaciones($anio_sig);
|
|
|
|
|
|
} else {
|
|
|
|
|
|
$diasTotales=$this->getDiasVacaciones($anio_ant)+$this->getDiasVacaciones(date('Y'));
|
|
|
|
|
|
}
|
|
|
|
|
|
return $diasTotales;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
?>
|