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/Servidor.php';
31 * Clase para el manejo centralizado de toda la informacion de YATTA.
35 class YATTA_Controlador {
38 * Agrega un proceso a la base de datos
39 * Los datos obligatorios a pasar son: script, id_sistema, descripcion,
40 * owner, destinos, prioridad, scheduling y notificar.
42 * @param DB $db Conexion a la base de datos.
43 * @param mixed $datos Datos necesarios del proceso.
48 function agregarProceso($db, $datos) {
49 //XXX Dentro de los datos puede estar el tiempo estimado de ejecucion
50 //del proceso. Esta informacion podria ser utilizada en futuras
51 //versiones para asignar servidores.
52 if (!is_array($datos)) {
53 $datos = $datos->obtenerDatos();
55 $res = $this->_obtenerServidor($db);
56 if (DB::isError($res)) {
59 $datos['server'] = $res;
60 $datos['fecha'] = date('Y-m-d');
61 $res = $db->autoExecute('yatta.procesos', $datos, DB_AUTOQUERY_INSERT);
62 if (DB::isError($res)) {
65 $SERVER =& new YATTA_Servidor;
66 $res = $SERVER->agregarProceso($db, $datos['server']);
71 * Obtiene el nombre del servidor al cual asignar un nuevo proceso.
73 * @param DB $db Conexion a la base de datos.
78 function _obtenerServidor($db) {
79 $res = $db->query('SELECT s.id, s.escala * s.procesos AS ponderacion
80 FROM yatta.servidores AS s
81 ORDER BY ponderacion DESC, s.escala DESC');
82 // Si hay error lo devuelve.
83 if (DB::isError($res)) {
86 $res = $res->fetchRow(DB_FETCHMODE_ASSOC);
91 * Obtiene los procesos de un usuario.
93 * @param DB $db Conexion a la base de datos.
94 * @param string $owner Usuario duenio de los procesos.
95 * @param int $id Identificador del proceso a buscar
100 function obtenerProcesosUsuario($db, $owner, $id = null) {
101 $proceso =& new YATTA_Proceso;
102 $proceso->owner = $owner;
106 return $proceso->buscar($db, MECON_DBO_AND, ' id ASC');
110 * Obtiene un proceso de un usuario.
112 * @param DB $db Conexion a la base de datos.
113 * @param string $owner Usuario duenio de los procesos.
114 * @param int $id Identificador del proceso a buscar
119 function obtenerProcesoUsuario($db, $owner, $id) {
120 $proceso =& new YATTA_Proceso;
121 $proceso->owner = $owner;
123 $res = $proceso->buscar($db, MECON_DBO_AND, ' id ASC');
124 $proceso->cargar($res);