X-Git-Url: https://git.llucax.com/mecon/yatta.git/blobdiff_plain/735964073308bc3d76b1d0d64525022ffa8e8436..b6a6a2a30f3d83d558a55fcf809b6098a4b73566:/lib/YATTA/Controlador.php diff --git a/lib/YATTA/Controlador.php b/lib/YATTA/Controlador.php index a7984a5..610ba02 100644 --- a/lib/YATTA/Controlador.php +++ b/lib/YATTA/Controlador.php @@ -59,11 +59,12 @@ class YATTA_Controlador { /** * 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 @@ -75,6 +76,7 @@ class YATTA_Controlador { * 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. @@ -98,6 +100,11 @@ class YATTA_Controlador { } $res = $this->_obtenerServidor($db); + //Serializo los parametros + if (@$datos['parametros']) { + $datos['parametros'] = serialize($datos['parametros']); + } + if (DB::isError($res)) { return $res; } @@ -152,34 +159,37 @@ class YATTA_Controlador { 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); @@ -195,7 +205,8 @@ class YATTA_Controlador { * @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'); @@ -244,18 +255,20 @@ class YATTA_Controlador { $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); + //@FIXME El email se lo envio al owner y a los destinos, o al owner solamente? $dest = split (',', @$res['destinos']); - $to = $owner.'.gov.ar'; + $to = $res['owner'].'.gov.ar'; foreach ($dest as $d) { $to = $to . ", $d.gov.ar"; } @@ -287,10 +300,10 @@ class YATTA_Controlador { "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"; }