+ 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;
+ if (@$nota) {
+ $sql.= ', nota = '. $nota;
+ }
+ if (@$archivo) {
+ $sql.= ', archivo = '. $archivo;
+ }
+ if (@$notificar) {
+ $sql.= ', notificar = '. $notificar;
+ }
+ $sql.= ' WHERE id = '. $id_proceso;
+ $res = $db->query($sql);
+ if (DB::isError($res)) {
+ return $res;
+ }
+
+ //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);
+ }
+
+ //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);
+ }
+
+ /**
+ * Busca un proceso en cola para el servidor
+ *
+ * @param DB $db Conexion a la base de datos.
+ * @param int $id Identificador del servidor.
+ *
+ * @return mixed
+ * @access public
+ */
+ function obtenerNuevoProceso($db, $id) {
+ $res = $db->query('SELECT p.id AS id, p.script AS script
+ FROM yatta.procesos AS p
+ WHERE p.server = '.$id.' AND status = 0
+ ORDER BY p.prioridad, p.id');
+ // Si hay error lo devuelve.
+ if (DB::isError($res)) {
+ return $res;
+ }
+ return $res->fetchRow(DB_FETCHMODE_ASSOC);
+ }
+
+ /**
+ * Busca si un proceso que se esta ejecutando tiene pedido de cancelacion.
+ *
+ * @param DB $db Conexion a la base de datos.
+ * @param int $id Identificador del proceso.
+ *
+ * @return mixed
+ * @access public
+ */
+ function abortar($db, $id) {
+ $res = $db->query('SELECT count(*) AS cuenta
+ FROM yatta.procesos
+ WHERE id = '.$id.' AND status = 5');
+ // Si hay error lo devuelve.
+ if (DB::isError($res)) {
+ return $res;
+ }
+ $res = $res->fetchRow(DB_FETCHMODE_ASSOC);
+ return $res['cuenta'];