------------------------------------------------------------------------------- $Id$ -----------------------------------------------------------------------------*/ require_once 'YATTA/Proceso.php'; require_once 'YATTA/ProcesoWeb.php'; require_once 'YATTA/Servidor.php'; /** * Clase para el manejo centralizado de toda la informacion de YATTA. * * @access public */ class YATTA_Controlador { /** * Obtiene el nombre del servidor al cual asignar un nuevo proceso. * * @param DB $db Conexion a la base de datos. * * @return mixed * @access private */ function _obtenerServidor($db) { $res = $db->query('SELECT s.id, s.escala * s.procesos AS ponderacion FROM yatta.servidores AS s ORDER BY ponderacion ASC, s.escala DESC'); // Si hay error lo devuelve. if (DB::isError($res)) { return $res; } $res = $res->fetchRow(DB_FETCHMODE_ASSOC); return $res['id']; } /** * Agrega un proceso a la base de datos * Los datos obligatorios a pasar son: script, id_sistema, descripcion, * owner, destinos, prioridad, scheduling y notificar. * * @param DB $db Conexion a la base de datos. * @param mixed $datos Datos necesarios del proceso. * * @return mixed * @access public */ function agregarProceso($db, $datos) { //XXX Dentro de los datos puede estar el tiempo estimado de ejecucion //del proceso. Esta informacion podria ser utilizada en futuras //versiones para asignar servidores. //Si no es un array if (is_object($datos) && is_a ($datos, 'YATTA_ProcesoDB')) { $datos = $datos->obtenerDatos(); } 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."); } $res = $this->_obtenerServidor($db); if (DB::isError($res)) { return $res; } $datos['server'] = $res; $datos['fecha'] = date('Y-m-d'); $res = $db->autoExecute('yatta.procesos', $datos, DB_AUTOQUERY_INSERT); if (DB::isError($res)) { return $res; } $SERVER =& new YATTA_Servidor; return $SERVER->agregarProceso($db, $datos['server']); } /** * Obtiene los procesos de un usuario. * * @param DB $db Conexion a la base de datos. * @param string $owner Usuario duenio de los procesos. * @param int $id Identificador del proceso a buscar * * @return mixed * @access public */ function obtenerProcesosUsuario($db, $owner, $id = null) { $proceso =& new YATTA_ProcesoDB; $proceso->owner = $owner; if (@$id) { $proceso->id = $id; } return $proceso->buscar($db, MECON_DBO_AND, ' id ASC'); } /** * Obtiene un proceso de un usuario. * * @param DB $db Conexion a la base de datos. * @param string $owner Usuario duenio de los procesos. * @param int $id Identificador del proceso a buscar * * @return mixed * @access public */ function obtenerProcesoUsuario($db, $owner, $id) { $proceso =& new YATTA_ProcesoDB; $proceso->owner = $owner; $proceso->id = $id; $res = $proceso->buscar($db, MECON_DBO_AND, ' id ASC'); $res = $proceso->cargar($res); return $proceso; } } ?>