require_once 'YATTA/ProcesoDB.php';
require_once 'YATTA/Servidor.php';
+define ('PATH_TACHO', '/var/www/yatta/tacho/');
+
/**
* Clase para el manejo centralizado de toda la informacion de YATTA.
*
* @access private
*/
function _obtenerServidor($db) {
-
- //@FIXME La ponderacion esta mal. No tengo que buscar el que tenga mas
- //alta o mas baja OJO!!! Volver a pensar el calculo.
-
$res = $db->query('SELECT s.id, s.escala * s.procesos AS ponderacion
FROM yatta.servidores AS s
ORDER BY ponderacion ASC, s.escala DESC');
//NOTIFICO
if (@$notificar) {
- $res = $db->query(
- "SELECT p.descripcion AS descripcion, p.owner AS owner, ".
- "p.destinos AS destinos ".
- "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';
- foreach ($dest as $d) {
- $to = $to . ", $d.gov.ar";
- }
- $headers = "From: Intranet - YATTA <intranet@mecon.gov.ar>\r\n";
- $subject = "Proceso finalizado";
- $body = "El proceso:\n".
- $res['descripcion'] .
- "\nha finalizado. Puede verificar el estado de finalizacion\n".
- "en el sistema YATTA dentro de la intranet.\n".
- "\n\n\n".
- "************************************************************\n".
- "Este es un mensaje generado automaticamente por MECON_YATTA.\n".
- "Por favor no responder a esta direccion de e-mail.\n".
- "************************************************************\n";
- mail($to, $subject, $body, $headers);
+ $this->_emailUsuario ($db, $id_proceso, $status, $nota, $archivo);
}
//COPIO EL ARCHIVO
if (@$archivo) {
$arch = basename ($archivo);
- rename ($archivo, '/var/www/yatta_tacho/'.$arch);
+ rename ($archivo, PATH_TACHO.$arch);
}
//Actualizo los servidores
$res = $res->fetchRow(DB_FETCHMODE_ASSOC);
return $res['cuenta'];
}
+
+ /**
+ * Envia el email al usuario informandole la finalizacion de uno de sus
+ * procesos.
+ *
+ * @param DB $db Conexion a la base de datos.
+ * @param int $id_proceso Identificador del proceso.
+ * @param int $status Identificador del estado de finalizacion.
+ * @param string $nota Nota de error o similar.
+ * @param string $archivo Nombre del archivo temporal que esta en el fs.
+ *
+ * @return void
+ * @access private
+ */
+ function _emailUsuario($db, $id_proceso, $status, $nota = null, $archivo = null) {
+ $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".
+ "WHERE p.id = ". $id_proceso);
+ if (DB::isError($res)) {
+ return $res;
+ }
+ $res = $res->fetchRow(DB_FETCHMODE_ASSOC);
+
+//@FIXME El email se lo envio al owner y a los destinos, o al owner solamente?
+
+ $dest = split (',', @$res['destinos']);
+ $to = $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 ".
+
+ switch ($status) {
+ case 2:
+ $body .= "con éxito.\n";
+ break;
+ case 3:
+ $body .= "con errores.\n";
+ if ($nota) {
+ $body .= "Motivo:\n$nota\n";
+ }
+ break;
+ case 4:
+ $body .= "porque se abortó su ejecución.\n";
+ if ($nota) {
+ $body .= "Motivo:\n$nota\n";
+ }
+ break;
+ }
+
+ if ($archivo) {
+ $body .= "Usted puede obtener el archivo resultado del proceso\n".
+ "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";
+ }
+
+
+
+ $body .="\n\n\n".
+ "************************************************************\n".
+ "Este es un mensaje generado automaticamente por MECON_YATTA.\n".
+ "Por favor no responder a esta direccion de e-mail.\n".
+ "************************************************************\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 private
+ * @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'];
+ }
}
?>
\ No newline at end of file