]> git.llucax.com Git - mecon/yatta.git/blobdiff - lib/YATTA/Controlador.php
Modificacion para que se haga mas ejecute mas rapido el script.
[mecon/yatta.git] / lib / YATTA / Controlador.php
index 307760ebb1127257549632219a4aae480c29996e..610ba02d34e9e38f4649968958167f2e46f9b1d2 100644 (file)
@@ -28,7 +28,7 @@ require_once 'YATTA/Proceso.php';
 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.
@@ -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.
@@ -94,10 +96,15 @@ class YATTA_Controlador {
         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;
         }
@@ -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";
         }
         
             
@@ -312,7 +325,7 @@ class YATTA_Controlador {
      * @param string $login Usuario que se esta verificando
      *
      * @return bool
-     * @access private
+     * @access public
      * @static
      */
     function visible($DB, $login) {
@@ -327,5 +340,32 @@ class YATTA_Controlador {
 
         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