require_once 'YATTA/ProcesoDB.php';
require_once 'YATTA/Servidor.php';
-define ('PATH_TACHO', '/var/www/yatta/tacho/');
+define ('PATH_TACHO', '/var/www/sistemas/yatta/tacho/');
/**
* Clase para el manejo centralizado de toda la informacion de YATTA.
/**
* Agrega un proceso a la base de datos
- * Los datos a pasar son:
+ * Recibe un array asociativo con:
* Obligatorios
* script : Path completo para el require_once.
- * id_sistema : Identificador del sistema al que pertenece .
- * descripcion: Es lo que permite al usuario identificar al proecso.
+ * id_sistema : Identificador del sistema al que pertenece. (Es el id que
+ * asigna SAMURAI)
+ * descripcion: Es lo que permite al usuario identificar al proceso.
* owner : Login@Organismo de la persona responsable del proceso.
*
* Opcionales
* resultado : En caso que el proceso genere archivos resultado, se debe
* indicar aqui el nombre del archivo que deben visualizar
* los usuarios.
+ * parametros : Parametros que hay que pasarle al metodo run del script.
*
* @param DB $db Conexion a la base de datos.
* @param mixed $datos Datos necesarios del proceso.
elseif (!is_array($datos)) {
return new PEAR_Error ("Error con los datos pasados. El segundo".
" parametro debe ser un array asociativo o una instancia".
- " del objeto YATTA_Proceso.");
+ " del objeto YATTA_ProcesoDB.");
}
$res = $this->_obtenerServidor($db);
+ //Serializo los parametros
+ if (@$datos['parametros']) {
+ $datos['parametros'] = serialize($datos['parametros']);
+ }
+
if (DB::isError($res)) {
return $res;
}
function terminarProceso($db, $id_proceso, $id_server, $status, $nota =
null, $archivo = null, $notificar = 0) {
- //Actualizo la base procesos
- $sql = 'UPDATE yatta.procesos SET status = '. $status;
+ //NOTIFICO
+ if (@$notificar) {
+ $this->_emailUsuario ($db, $id_proceso, $status, $nota, $archivo);
+ }
+
+ //COPIO EL ARCHIVO
+ if (@$archivo) {
+ $arch = basename ($archivo);
+ rename ($archivo, PATH_TACHO.$arch);
+ }
+
+ //ACTUALIZO LA BASE PROCESOS
+ $sql = 'UPDATE yatta.procesos SET status = '.
+ $db->quoteSmart($status);
if (@$nota) {
- $sql.= ', nota = '. $nota;
+ $sql.= ', nota = '. $db->quoteSmart($nota);
}
if (@$archivo) {
- $sql.= ', archivo = '. $archivo;
+ $sql.= ', archivo = '. $db->quoteSmart(PATH_TACHO.$arch);
}
if (@$notificar) {
- $sql.= ', notificar = '. $notificar;
+ $sql.= ', notificar = '. $db->quoteSmart($notificar);
}
- $sql.= ' WHERE id = '. $id_proceso;
+ $sql.= ' WHERE id = '. $db->quoteSmart($id_proceso);
+
$res = $db->query($sql);
if (DB::isError($res)) {
return $res;
}
- //NOTIFICO
- if (@$notificar) {
- $this->_emailUsuario ($db, $id_proceso, $status, $nota, $archivo);
- }
- //COPIO EL ARCHIVO
- if (@$archivo) {
- $arch = basename ($archivo);
- rename ($archivo, PATH_TACHO.$arch);
- }
-
//Actualizo los servidores
$SERVER =& new YATTA_Servidor;
return $SERVER->quitarProceso($db, $id_server);
* @access public
*/
function obtenerNuevoProceso($db, $id) {
- $res = $db->query('SELECT p.id AS id, p.script AS script
+ $res = $db->query('SELECT p.id AS id, p.script AS script, p.parametros
+ AS parametros
FROM yatta.procesos AS p
WHERE p.server = '.$id.' AND status = 0
ORDER BY p.prioridad, p.id');
$res = $db->query(
"SELECT p.descripcion AS descripcion, p.owner AS owner, ".
"p.destinos AS destinos, p.resultado AS resultado, ".
- "p.estado AS estado, p.nota AS nota ".
- "FROM yatta.procesos AS p".
+ "p.status AS estado, p.nota AS nota ".
+ "FROM yatta.procesos AS p ".
"WHERE p.id = ". $id_proceso);
+
if (DB::isError($res)) {
return $res;
}
$res = $res->fetchRow(DB_FETCHMODE_ASSOC);
+
$dest = split (',', @$res['destinos']);
- $to = $owner.'.gov.ar';
+ $to = $res['owner'].'.gov.ar';
foreach ($dest as $d) {
$to = $to . ", $d.gov.ar";
}
$headers = "From: Intranet - YATTA <intranet2@mecon.gov.ar>\r\n";
$subject = "INTRANET - YATTA - Proceso Finalizado";
- $body = "El proceso {$res['descripcion']} ha finalizado ".
+ $body = "El proceso {$res['descripcion']} ha finalizado ";
switch ($status) {
case 2:
"en la seccion Archivos del sistema YATTA.\n".
"Recuerde que este archivo puede ser borrado sin previo aviso\n".
"por tres motivos:\n".
- "\t1- El archivo supera la antigüedad máxima establecida.\n".
- "\t2- Se supero la capacidad máxima de información permitida\n".
- "\t por usuario.\n".
- "\t3- Decisión administrativa por mantenimiento de los servidores.\n";
+ "1- El archivo supera la antigüedad máxima establecida.\n".
+ "2- Se supero la capacidad máxima de información permitida\n".
+ " por usuario.\n".
+ "3- Decisión administrativa por mantenimiento de los servidores.\n";
}
mail($to, $subject, $body, $headers);
}
+ /**
+ * Verifica si un usuario tiene alguna informacion en la base de yatta para
+ * mostrarle el icono en la lista de sistemas de la intranet.
+ *
+ * @param DB $db Conexion a la base de datos.
+ * @param string $login Usuario que se esta verificando
+ *
+ * @return bool
+ * @access public
+ * @static
+ */
+ function visible($DB, $login) {
+ $res = $db->query('SELECT count (p.id) AS id FROM yatta.procesos AS p'.
+ ' WHERE (p.owner LIKE \'%'. $login .'%\') OR'.
+ ' (p.destinos LIKE \'%'. $login .'%\')');
+
+ if (DB::isError($res)) {
+ return $res;
+ }
+ $res = $res->fetchRow(DB_FETCHMODE_ASSOC);
+
+ return $res['id'];
+ }
+
+ /**
+ * Busca los usuarios que tienen al menos una entrada en el mysql como
+ * owners.
+ *
+ * @param DB $db Conexion a la base de datos.
+ *
+ * @return mixed
+ * @access public
+ */
+ function obtenerListaOwners($db) {
+ return $db->query('SELECT DISTINCT p.owner AS owner
+ FROM yatta.procesos As p');
+ }
+
+ /**
+ * Obtiene las cuotas especiales de los usuarios.
+ *
+ * @param DB $db Conexion a la base de datos.
+ *
+ * @return mixed
+ * @access public
+ */
+ function obtenerListaCuotas($db) {
+ return $db->query('SELECT login, cuota
+ FROM yatta.cuotas');
+ }
}
?>
\ No newline at end of file