idiomasPedido = $idiomasPedido; $this->idiomasUsuario = $idiomasUsuario; $this->tecnologiasPedido = $tecnologiasPedido; $this->tecnologiasUsuario = $tecnologiasUsuario; $this->perfilPedido = $perfilPedido; $this->perfilUsuario = $perfilUsuario; $this->provinciasPedido = $provinciasPedido; $this->provinciaDeseada = $provinciaDeseada; } //Funciones /** * Calcula la afinidad entre un usuario y un pedido. * @param usuario - usuario candidato al pedido. * @param pedido - pedido para el que calcular la afinidad. */ function calculaAfinidad($pI, $pP, $pT){ //Si no coincide alguna provincia deseada no nos vale. if($this->provinciasPedido != ""){ foreach($this->provinciasPedido as $provincia){ if(in_array($provincia, $this->provinciaDeseada)){ $vL = $vL + 1; } } } if($vL <= 0) return -1; $afi = 0; //Afinidad con los perfiles: if(count($this->perfilUsuario) > 0){ if(in_array($this->perfilPedido, $this->perfilUsuario)){ $vP = 1; } } //Afinidad con los idiomas: if($this->idiomasPedido != ""){ foreach($this->idiomasPedido as $idioma){ if(in_array($idioma, $this->idiomasUsuario)){ $vI = $vI + 1; } } } if(count($this->idiomasPedido) > 0){ $vI = $vI/count($this->idiomasPedido); } //Afinidad con las tecnologías: if($this->tecnologiasPedido != ""){ foreach($this->tecnologiasPedido as $this->tecnologia){ if(in_array($this->tecnologia, $this->tecnologiasUsuario)){ $vT = $vT + 1; } } } if(count($this->tecnologiasPedido) > 0){ $vT = $vT/count($this->tecnologiasPedido); } $afi = ($pP * $vP) + ($pI * $vI) + ($pT * $vT); return $afi; } } ?>