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: mar ene 27 13:15:52 ART 2004
22 Autor: Martin Marrese <mmarre@mecon.gov.ar>
23 -------------------------------------------------------------------------------
25 -----------------------------------------------------------------------------*/
27 require_once 'MECON/DBO.php';
28 require_once 'PEAR.php';
31 * Clase para el manejo de los servidores.
35 class YATTA_ServidorDB extends MECON_DBO {
38 * Identificador del servidor.
46 * Nombre del servidor.
54 * Escala del servidor.
62 * Procesos que tiene asignado el servidor (incluye el proceso en
71 * Carga el objeto con los datos que se pasan por parametro.
73 * @param DB $db DB o DB_Result a usar para la carga.
78 function cargar($db = null)
80 // Si es un resultado, obtengo los elemento.
81 if (is_a($db, 'db_result')) {
82 $this->predefinirAtributos();
83 $res = $db->fetchRow(DB_FETCHMODE_ASSOC);
84 // Si hay error lo devuelve.
85 if (DB::isError($res)) {
91 $this->id = $res['id'];
92 $this->nombre = $res['nombre'];
93 $this->escala = $res['escala'];
94 $this->procesos = $res['procesos'];
101 * Borra el objeto de una base de datos.
103 * @param DB $db Base de datos de donde borrar el objeto.
108 function borrar($db = null)
110 return $db->query ("DELETE FROM yatta.servidores
111 WHERE id = ". $this->id);
115 * Busca los datos en la base.
117 * @param DB $db Conexion a la base de datos.
118 * @param string $operador Indica como deben concatenarse las condiciones de busqueda
119 * @param string $orden Indica de que manera deben ordenarse los resultados de la busqueda
124 function buscar($db = null, $operador = MECON_DBO_OR, $orden = null)
128 if (!is_null($this->id)) {
129 $where[] = 's.id = '.$this->id;
131 if (!is_null($this->nombre)) {
132 $where[] = 's.nombre LIKE '. $db->quote("%$this->nombre%");
135 $where = 'WHERE '. join ("$operador", $where);
141 if (is_string($orden))
143 $orden = array($orden);
147 $orden = 'ORDER BY '.join(',',$orden);
154 "SELECT s.id AS id, s.nombre AS nombre, s.escala AS escala,
155 s.procesos AS procesos
156 FROM yatta.servidores AS s
162 * Guarda los datos en la base.
164 * @param DB $db Conexion a la base de datos.
165 * @param bool $nuevo Indica si se trata de un nuevo registro en la base.
170 function guardar($db = null, $nuevo = true)
172 //Reasigno las escalas a los servidores que ya estan.
173 $res = $db->query("UPDATE yatta.servidores SET escala = escala + 1 WHERE
174 escala >= ".$this->escala);
175 if (PEAR::isError($res)) {
176 trigger_error('Error: ' . $res->getMessage() . "\n", E_USER_ERROR);
181 'nombre' => $this->nombre,
182 'escala' => $this->escala,
185 return $db->autoExecute('yatta.servidores', $datos,
186 DB_AUTOQUERY_INSERT);
190 'nombre' => $this->nombre,
191 'escala' => $this->escala,
192 'procesos' => $this->procesos
194 return $db->autoExecute('yatta.servidores', $datos,
195 DB_AUTOQUERY_UPDATE, 'id = '. $this->id);
200 * Hace un reset de los atributos.
205 function predefinirAtributos() {
207 $this->nombre = null;
208 $this->escala = null;
209 $this->procesos = null;