------------------------------------------------------------------------------- $Id$ -----------------------------------------------------------------------------*/ require_once 'YATTA/Proceso.php'; require_once 'YATTA/Servidor.php'; /** * Clase para el manejo centralizado de toda la informacion de YATTA. * * @access public */ class YATTA_Controlador { /** * 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. if (!is_array($datos)) { $datos = $datos->obtenerDatos(); } $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; $res = $SERVER->agregarProceso($db, $datos['server']); return $res; } /** * 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 DESC, s.escala DESC'); // Si hay error lo devuelve. if (DB::isError($res)) { return $res; } $res = $res->fetchRow(DB_FETCHMODE_ASSOC); return $res['id']; } /** * 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_Proceso; $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_Proceso; $proceso->owner = $owner; $proceso->id = $id; $res = $proceso->buscar($db, MECON_DBO_AND, ' id ASC'); $proceso->cargar($res); return $proceso; } } ?>