Incam_Intranet/Objects/ListaCandidatos.php
roberto 400d81b595 Tareas #679. Al dar de alta una oferta, la lista de candidatos para la selección tiene que salir todos menos los "no disponibles".
update usuarios
set estado = '540'
where estado = '560';

update usuarios
set estado = '530'
where estado = '100';

Revisar la tabla candidatos_estados para que coincida con la de desarrollo

git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_Intranet/trunk/src@80 e2b1556b-49f8-d141-9351-52d6861a72d9
2011-05-25 10:16:19 +00:00

137 lines
4.5 KiB
PHP

<?php
/*
* Clase ListaCandidatos
*
* Contiene una lista de los candidatos.
*
*/
include_once("ListaPersonas.php");
class ListaCandidatos extends ListaPersonas {
//Atributos:
//Constructor:
//Funciones:
public $estados = array();
/**
* Crea una lista de candidatos.
* @param usuario - dueño de la sesión.
* @param orden - parámetros por los que ordenar la lista.
* @param sql - consulta de búsqueda.
*/
function ListaCandidatos($usuario, $orden, $sql, $estado) {
parent::ListaPersonas($usuario, $orden, $sql);
$this->tipo = "candidato";
$this->estado = $estado;
$this->estados = explode(",", $estado);
}
/**
* Devuelve la query de la consulta usada en la búsqueda para crear la lista.
* @return una cadena de texto con la query.
*/
function getSQL() {
return $this->sql;
}
/**
* Devuelve una lista de los posibles estados en los que se puede encontrar un candidato
* como Key => value, donde key es el cod del estado y value es el nombre del estado.
*/
function getEstados() {
$consulta = "SELECT cod, nombre FROM candidatos_estados WHERE tipo='candidato'";
$bd = new BD();
return $bd->keyValueQuery($consulta, "cod", "nombre");
}
/**
* Inserta un nuevo candidato en la lista de candidatos.
* @param campos - datos del candidato.
*/
function addCandidato($campos) {
$campos["estado"] = 510;
$id = parent::addPersona($campos);
$candidato = new Candidato($this->usuario, $id);
$mensaje = "Nuevo candidato";
$candidato->actualizarHistorial($mensaje);
return $id;
}
/**
* Devuelve los candidatos
*/
function getCandidatos() {
$candidatos = array();
$value = "";
if ($this->sql != "") {
// metemos el estado si es > 0
if (count($this->estados) > 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));
$sqlConEstado = "WHERE usuarios.estado in (";
$i=1;
foreach ($this->estados as $value) {
$sqlConEstado = $sqlConEstado. "'". $value . "'";
if ($i != count($this->estados))
$sqlConEstado = $sqlConEstado. ",";
$i++;
}
$sqlConEstado = $sqlConEstado. ") and ";
$sqlNueva = $sqlAntesWhere . $sqlConEstado . $sqlDespuesWhere;
} else {
$sqlConEstado = "WHERE usuarios.estado in (";
$i=1;
foreach ($this->estados as $value) {
$sqlConEstado = $sqlConEstado. "'". $value . "'";
if ($i != count($this->estados))
$sqlConEstado = $sqlConEstado. ",";
$i++;
}
$sqlConEstado = $sqlConEstado. ") ";
$sqlNueva = $this->sql . $sqlConEstado;
}
} else {
$sqlNueva = $this->sql;
}
$consulta = $sqlNueva . " " . $this->order_by;
} else {
if (count($this->estados) > 0) {
$consulta = "SELECT oid from usuarios WHERE tipo='" . $this->tipo . "' and estado in (";
$i=1;
foreach ($this->estados as $value) {
$consulta = $consulta. "'". $value . "'";
if ($i != count($this->estados))
$consulta = $consulta. ",";
$i++;
}
$consulta = $consulta. ")". $this->orden;
} else {
$consulta = "SELECT oid from usuarios WHERE tipo='" . $this->tipo . "'" . $this->orden . "";
}
}
$bd = new BD();
$resultado = $bd->execQuery($consulta);
//Procesamos los candidatos.
if (mysql_num_rows($resultado) != 0) {
while ($rows = mysql_fetch_array($resultado)) {
$p = new Candidato($this->usuario, $rows["oid"]);
$candidatos[] = $p;
}
}
return $candidatos;
}
}
?>