git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_Intranet/trunk/src@81 e2b1556b-49f8-d141-9351-52d6861a72d9
210 lines
6.4 KiB
PHP
210 lines
6.4 KiB
PHP
<?php
|
|
/*
|
|
* Clase Administración
|
|
*
|
|
* Mantenimiento de las tablas maestras del sistema. Para cada tabla ofrece unos servicios mínimos de:
|
|
*
|
|
* - Insertar elemento (addItem)
|
|
* - Editar elemento (editItem)
|
|
* - Eliminar elemento (removeItem)
|
|
* - Obtener tabla (getTabla)
|
|
*
|
|
* Adicionalmente puede ofrecer otros servicios para cada tabla.
|
|
*
|
|
* 2008-10-21 (diego): Se crea la clase con los métodos necesarios para mantener las
|
|
* tablas maestras del sistema.
|
|
*/
|
|
|
|
include_once("BD.php");
|
|
|
|
class Administracion{
|
|
|
|
//Atributos:
|
|
|
|
/* Usuario que tiene sesión activa. */
|
|
private $usuario;
|
|
|
|
/* Idioma */
|
|
private $locale;
|
|
|
|
/* Información sobre las tablas de sistema*/
|
|
private $tablasSistema;
|
|
|
|
|
|
//Constructores:
|
|
|
|
/**
|
|
* Crea un objeto encargado de administrar el sistema.
|
|
* @param usuario - Usuario con sesión activa.
|
|
* @param locale - Idioma.
|
|
*/
|
|
public function Administracion($usuario, $locale){
|
|
$this->usuario = $usuario;
|
|
$this->locale = $locale;
|
|
$this->tablasSistema = array();
|
|
//perfil, tecnologias, idiomas, titulaciones, tipoVia, provincia, procedenciaCV,
|
|
//incorporaciones, localidad, constantes, procedencia
|
|
$this->tablasSistema["perfil"] = array("perfil", "oid", "id", "abrev");
|
|
$this->tablasSistema["perfil_funcional"] = array("perfil_funcional", "oid", "id", "abrev");
|
|
$this->tablasSistema["tecnologias"] = array("tecnologia", "oid", "id");
|
|
$this->tablasSistema["idiomas"] = array("idiomas", "oid", "id");
|
|
$this->tablasSistema["titulaciones"] = array("titulaciones", "oid", "id");
|
|
$this->tablasSistema["tipoVia"] = array("tipo_via", "oid", "id");
|
|
$this->tablasSistema["provincia"] = array("provincias", "oid", "id");
|
|
$this->tablasSistema["procedenciaCV"] = array("procedencia_cv", "id", "nombre");
|
|
$this->tablasSistema["incorporaciones"] = array("incorporaciones", "oid", "id");
|
|
$this->tablasSistema["localidad"] = array("localidades", "oid", "id", "provincia");
|
|
$this->tablasSistema["constantes"] = array("sistema", "id", "valor");
|
|
$this->tablasSistema["procedencia"] = array("procedencia", "num", "id", "color");
|
|
$this->tablasSistema["salario"] = array("salario", "id", "nombre");
|
|
}
|
|
|
|
//Funciones de administración de perfiles:
|
|
|
|
public function addItem($vista, $valores){
|
|
if(!$this->usuario->tieneRol(2)){
|
|
$error = $this->locale['4039'];
|
|
throw new Exception($error);
|
|
return -1;
|
|
exit;
|
|
}
|
|
$valoresTabla = $this->tablasSistema[$vista];
|
|
$tabla = $valoresTabla[0];
|
|
$campos = array_slice($valoresTabla, 2);
|
|
if(count($campos) != count($valores)){
|
|
$error = $this->locale['3007'];
|
|
throw new Exception($error);
|
|
return -1;
|
|
exit;
|
|
}else{
|
|
$cadenaCampos = "";
|
|
foreach($campos as $campo){
|
|
$cadenaCampos .= $campo.",";
|
|
}
|
|
//Quitamos la última coma
|
|
if ($cadenaCampos{strlen($cadenaCampos) - 1} == ",")
|
|
$cadenaCampos = substr($cadenaCampos,0,strlen($cadenaCampos) - 1);
|
|
$cadenaValores = "";
|
|
foreach($valores as $valor){
|
|
$cadenaValores .= "'".$valor."',";
|
|
}
|
|
//Quitamos la última coma
|
|
if ($cadenaValores{strlen($cadenaValores) - 1} == ",")
|
|
$cadenaValores = substr($cadenaValores,0,strlen($cadenaValores) - 1);
|
|
$consulta = "INSERT INTO ".$tabla." (".$cadenaCampos.") VALUES (".$cadenaValores.")";
|
|
|
|
$bd = new BD();
|
|
if($bd->execQuery($consulta)){
|
|
return true;
|
|
}else{
|
|
$error = $this->locale['bd'];
|
|
throw new Exception($error);
|
|
return -1;
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
|
|
public function editItem($vista, $valores){
|
|
if(!$this->usuario->tieneRol(2)){
|
|
$error = $this->locale['4040'];
|
|
throw new Exception($error);
|
|
return -1;
|
|
exit;
|
|
}
|
|
$valoresTabla = $this->tablasSistema[$vista];
|
|
$tabla = $valoresTabla[0];
|
|
$campoCod = $valoresTabla[1];
|
|
$cod = $valores[0];
|
|
$campos = array_slice($valoresTabla, 2);
|
|
$valores = array_slice($valores, 1);
|
|
$total = count($campos);
|
|
if($total != count($valores)){
|
|
$error = $this->locale['3007'];
|
|
throw new Exception($error);
|
|
return -1;
|
|
exit;
|
|
}else{
|
|
$update = "";
|
|
for($i = 0; $i < $total; $i++){
|
|
$update .= $campos[$i]." = '".addslashes($valores[$i])."',";
|
|
}
|
|
|
|
//Quitamos la última coma
|
|
if ($update{strlen($update) - 1} == ",")
|
|
$update = substr($update,0,strlen($update) - 1);
|
|
|
|
$consulta = "UPDATE ".$tabla." SET ".$update." WHERE ".$campoCod."='".$cod."'";
|
|
$bd = new BD();
|
|
if($bd->execQuery($consulta)){
|
|
return true;
|
|
}else{
|
|
$error = $this->locale['bd'];
|
|
throw new Exception($error);
|
|
return -1;
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
|
|
public function removeItem($vista, $cod){
|
|
if(!$this->usuario->tieneRol(2)){
|
|
$error = $this->locale['4041'];
|
|
throw new Exception($error);
|
|
return -1;
|
|
exit;
|
|
}
|
|
$valoresTabla = $this->tablasSistema[$vista];
|
|
$tabla = $valoresTabla[0];
|
|
$campoCod = $valoresTabla[1];
|
|
$consulta = "DELETE FROM ".$tabla." WHERE ".$campoCod."='".$cod."'";
|
|
//echo $consulta;
|
|
|
|
$bd = new BD();
|
|
if($bd->execQuery($consulta)){
|
|
return true;
|
|
}else{
|
|
$error = $this->locale['4038'];
|
|
throw new Exception($error);
|
|
return -1;
|
|
exit;
|
|
}
|
|
}
|
|
|
|
public function getItem($vista){
|
|
$tabla = $this->tablasSistema[$vista][0];
|
|
$consulta="SELECT * FROM ".$tabla;
|
|
$bd = new BD();
|
|
$salida=$bd->keyValueQuery($consulta,$this->tablasSistema[$vista][1],$this->tablasSistema[$vista][2]);
|
|
return $salida;
|
|
}
|
|
|
|
/*
|
|
* Mantiene el sistema, sobre todo el tema de vacaciones y permisos:
|
|
* - Vacaciones no aprobadas con permanencia de más de 7 días, se elimina
|
|
* - Permisos no aprobados con permanencia de más de 7 días, se elimina
|
|
*/
|
|
public function mantenSistema(){
|
|
if(!$this->usuario->tieneRol(2)){
|
|
$error = $this->locale['4041'];
|
|
throw new Exception($error);
|
|
return -1;
|
|
exit;
|
|
}
|
|
$acciones=array();
|
|
$bd = new BD();
|
|
//Vacaciones no aprobadas con permanencia de más de 7 días, se elimina
|
|
$consulta="DELETE FROM vacaciones WHERE DATEDIFF(f_mod,curdate()) < -7 AND aprobada=2";
|
|
$bd->execQuery($consulta);
|
|
$acciones[]= mysql_affected_rows().$this->locale['2313'];
|
|
|
|
//Vacaciones no aprobadas con permanencia de más de 7 días, se elimina
|
|
$consulta="DELETE FROM permisos WHERE DATEDIFF(f_mod,curdate()) < -7 AND aprobada=2";
|
|
$bd->execQuery($consulta);
|
|
$acciones[]= mysql_affected_rows().$this->locale['2314'];
|
|
return $acciones;
|
|
}
|
|
|
|
}
|
|
?>
|