------------------------------------------------------------------------------- $Id$ -----------------------------------------------------------------------------*/ require_once 'MECON/DBO.php'; require_once 'PEAR.php'; /** * Clase para el manejo de los servidores. * * @access public */ class YATTA_ServidorDB extends MECON_DBO { /** * Identificador del servidor. * * @var int $id * @access public */ var $id = null; /** * Nombre del servidor. * * @var string $nombre * @access public */ var $nombre = null; /** * Escala del servidor. * * @var int $escala * @access public */ var $escala = null; /** * Procesos que tiene asignado el servidor (incluye el proceso en * ejecución). * * @var int $procesos * @access public */ var $procesos = null; /** * Carga el objeto con los datos que se pasan por parametro. * * @param DB $db DB o DB_Result a usar para la carga. * * @return mixed * @access public */ function cargar($db = null) { // Si es un resultado, obtengo los elemento. if (is_a($db, 'db_result')) { $this->predefinirAtributos(); $res = $db->fetchRow(DB_FETCHMODE_ASSOC); // Si hay error lo devuelve. if (DB::isError($res)) { return $res; } elseif (!$res) { return false; } $this->id = $res['id']; $this->nombre = $res['nombre']; $this->escala = $res['escala']; $this->procesos = $res['procesos']; return true; } return false; } /** * Borra el objeto de una base de datos. * * @param DB $db Base de datos de donde borrar el objeto. * * @return mixed * @access public */ function borrar($db = null) { return $db->query ("DELETE FROM yatta.servidores WHERE id = ". $this->id); } /** * Busca los datos en la base. * * @param DB $db Conexion a la base de datos. * @param string $operador Indica como deben concatenarse las condiciones de busqueda * @param string $orden Indica de que manera deben ordenarse los resultados de la busqueda * * @return mixed * @access public */ function buscar($db = null, $operador = MECON_DBO_OR, $orden = null) { // Armo el WHERE. $where = array(); if (!is_null($this->id)) { $where[] = 's.id = '.$this->id; } if (!is_null($this->nombre)) { $where[] = 's.nombre LIKE '. $db->quote("%$this->nombre%"); } if ($where) { $where = 'WHERE '. join ("$operador", $where); } else { $where = ''; } // Armo el ORDER BY. if (is_string($orden)) { $orden = array($orden); } if ($orden) { $orden = 'ORDER BY '.join(',',$orden); } else { $orden = ''; } return $db->query( "SELECT s.id AS id, s.nombre AS nombre, s.escala AS escala, s.procesos AS procesos FROM yatta.servidores AS s $where $orden"); } /** * Guarda los datos en la base. * * @param DB $db Conexion a la base de datos. * @param bool $nuevo Indica si se trata de un nuevo registro en la base. * * @return mixed * @access public */ function guardar($db = null, $nuevo = true) { //Reasigno las escalas a los servidores que ya estan. $res = $db->query("UPDATE yatta.servidores SET escala = escala + 1 WHERE escala >= ".$this->escala); if (PEAR::isError($res)) { die('Error: ' . $res->getMessage() . "\n"); } if ($nuevo) { $datos = array ( 'nombre' => $this->nombre, 'escala' => $this->escala, 'procesos' => 0 ); return $db->autoExecute('yatta.servidores', $datos, DB_AUTOQUERY_INSERT); } else { $datos = array ( 'nombre' => $this->nombre, 'escala' => $this->escala, 'procesos' => $this->procesos ); return $db->autoExecute('yatta.servidores', $datos, DB_AUTOQUERY_UPDATE, 'id = '. $this->id); } } /** * Hace un reset de los atributos. * * @return void * @access public */ function predefinirAtributos() { $this->id = null; $this->nombre = null; $this->escala = null; $this->procesos = null; } } ?>