1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
5 -------------------------------------------------------------------------------
6 This file is part of YATTA!.
8 YATTA! is free software; you can redistribute it and/or modify it under
9 the terms of the GNU General Public License as published by the Free
10 Software Foundation; either version 2 of the License, or (at your option)
13 YATTA! is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License; if not,
18 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
19 Boston, MA 02111-1307 USA
20 -------------------------------------------------------------------------------
21 Creado: vie ene 9 16:28:04 ART 2004
22 Autor: Martin Marrese <mmarre@mecon.gov.ar>
23 -------------------------------------------------------------------------------
25 -----------------------------------------------------------------------------*/
27 require_once 'YATTA/Proceso.php';
28 require_once 'YATTA/ProcesoWeb.php';
29 require_once 'YATTA/Servidor.php';
32 * Clase para el manejo centralizado de toda la informacion de YATTA.
36 class YATTA_Controlador {
39 * Obtiene el nombre del servidor al cual asignar un nuevo proceso.
41 * @param DB $db Conexion a la base de datos.
46 function _obtenerServidor($db) {
47 $res = $db->query('SELECT s.id, s.escala * s.procesos AS ponderacion
48 FROM yatta.servidores AS s
49 ORDER BY ponderacion ASC, s.escala DESC');
50 // Si hay error lo devuelve.
51 if (DB::isError($res)) {
54 $res = $res->fetchRow(DB_FETCHMODE_ASSOC);
59 * Agrega un proceso a la base de datos
60 * Los datos obligatorios a pasar son: script, id_sistema, descripcion,
61 * owner, destinos, prioridad, scheduling y notificar.
63 * @param DB $db Conexion a la base de datos.
64 * @param mixed $datos Datos necesarios del proceso.
69 function agregarProceso($db, $datos) {
70 //XXX Dentro de los datos puede estar el tiempo estimado de ejecucion
71 //del proceso. Esta informacion podria ser utilizada en futuras
72 //versiones para asignar servidores.
75 if (is_object($datos) && is_a ($datos, 'YATTA_ProcesoDB')) {
76 $datos = $datos->obtenerDatos();
78 elseif (!is_array($datos)) {
79 return new PEAR_Error ("Error con los datos pasados. El segundo".
80 " parametro debe ser un array asociativo o una instancia".
81 " del objeto YATTA_Proceso.");
83 $res = $this->_obtenerServidor($db);
85 if (DB::isError($res)) {
88 $datos['server'] = $res;
89 $datos['fecha'] = date('Y-m-d');
90 $res = $db->autoExecute('yatta.procesos', $datos, DB_AUTOQUERY_INSERT);
91 if (DB::isError($res)) {
94 $SERVER =& new YATTA_Servidor;
95 return $SERVER->agregarProceso($db, $datos['server']);
99 * Obtiene los procesos de un usuario.
101 * @param DB $db Conexion a la base de datos.
102 * @param string $owner Usuario duenio de los procesos.
103 * @param int $id Identificador del proceso a buscar
108 function obtenerProcesosUsuario($db, $owner, $id = null) {
109 $proceso =& new YATTA_ProcesoDB;
110 $proceso->owner = $owner;
114 return $proceso->buscar($db, MECON_DBO_AND, ' id ASC');
118 * Obtiene un proceso de un usuario.
120 * @param DB $db Conexion a la base de datos.
121 * @param string $owner Usuario duenio de los procesos.
122 * @param int $id Identificador del proceso a buscar
127 function obtenerProcesoUsuario($db, $owner, $id) {
128 $proceso =& new YATTA_ProcesoDB;
129 $proceso->owner = $owner;
131 $res = $proceso->buscar($db, MECON_DBO_AND, ' id ASC');
132 $res = $proceso->cargar($res);