]> git.llucax.com Git - mecon/yatta.git/blob - lib/YATTA/ServidorDB.php
BugFix en YATTA_DB
[mecon/yatta.git] / lib / YATTA / ServidorDB.php
1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3                              Ministerio de Economía
4                                     YATTA!
5 -------------------------------------------------------------------------------
6 This file is part of YATTA!.
7
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)
11 any later version.
12
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.
16  
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 -------------------------------------------------------------------------------
24 $Id$
25 -----------------------------------------------------------------------------*/
26
27 require_once 'MECON/DBO.php';
28 require_once 'PEAR.php';
29
30 /**
31  * Clase para el manejo de los servidores.
32  *
33  * @access public
34  */
35 class YATTA_ServidorDB extends MECON_DBO {
36
37     /**
38      * Identificador del servidor.
39      *
40      * @var    int $id
41      * @access public
42      */
43     var $id = null;
44      
45     /**
46      * Nombre del servidor.
47      *
48      * @var    string $nombre
49      * @access public
50      */
51     var $nombre = null;
52      
53     /**
54      * Escala del servidor.
55      *
56      * @var    int $escala
57      * @access public
58      */
59     var $escala = null;
60
61     /**
62      * Procesos que tiene asignado el servidor (incluye el proceso en
63      * ejecución).
64      *
65      * @var    int $procesos
66      * @access public
67      */
68     var $procesos = null;
69      
70     /**
71      * Carga el objeto con los datos que se pasan por parametro.
72      * 
73      * @param  DB $db DB o DB_Result a usar para la carga.
74      *
75      * @return mixed
76      * @access public
77      */
78     function cargar($db = null)
79     {
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)) {
86                 return $res;
87             }
88             elseif (!$res) {
89                 return false;
90             }
91             $this->id       = $res['id'];
92             $this->nombre   = $res['nombre'];
93             $this->escala   = $res['escala'];
94             $this->procesos = $res['procesos'];
95             return true;
96         }
97         return false; 
98     }
99
100     /**
101      * Borra el objeto de una base de datos.
102      *
103      * @param  DB $db Base de datos de donde borrar el objeto.
104      *
105      * @return mixed
106      * @access public
107      */
108     function borrar($db = null)
109     {
110         return $db->query ("DELETE FROM yatta.servidores 
111                 WHERE id = ". $this->id);
112     }
113
114     /**
115      * Busca los datos en la base.
116      *
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
120      *
121      * @return mixed
122      * @access public
123      */
124     function buscar($db = null, $operador = MECON_DBO_OR, $orden = null) 
125     {
126         // Armo el WHERE.
127         $where = array();
128         if (!is_null($this->id)) {
129             $where[] = 's.id = '.$this->id;
130         }
131         if (!is_null($this->nombre)) {
132             $where[] = 's.nombre LIKE '. $db->quote("%$this->nombre%");
133         }
134         if ($where) {
135             $where = 'WHERE '. join ("$operador", $where);
136         }
137         else {
138             $where = '';
139         }
140         // Armo el ORDER BY.
141         if (is_string($orden))
142         {
143             $orden = array($orden);
144         }
145         if ($orden) 
146         {
147             $orden = 'ORDER BY '.join(',',$orden);
148         }
149         else {
150             $orden = '';
151         }
152         
153         return $db->query(
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
157                 $where
158                 $orden");
159     }
160
161     /**
162      * Guarda los datos en la base.
163      *
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.
166      *
167      * @return mixed
168      * @access public
169      */
170     function guardar($db = null, $nuevo = true)
171     {
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);
177         }
178         
179         if ($nuevo) {
180             $datos = array (
181                     'nombre'   => $this->nombre,
182                     'escala'   => $this->escala,
183                     'procesos' => 0
184                     );
185             return $db->autoExecute('yatta.servidores', $datos, 
186                     DB_AUTOQUERY_INSERT);
187         }
188         else {
189             $datos = array (
190                     'nombre'   => $this->nombre,
191                     'escala'   => $this->escala,
192                     'procesos' => $this->procesos
193                     );
194             return $db->autoExecute('yatta.servidores', $datos,
195                     DB_AUTOQUERY_UPDATE, 'id = '. $this->id);
196         }
197     }
198
199     /**
200      * Hace un reset de los atributos.
201      * 
202      * @return void
203      * @access public
204      */
205     function predefinirAtributos() {
206         $this->id       = null;
207         $this->nombre   = null;
208         $this->escala   = null;
209         $this->procesos = null;
210     }
211 }
212 ?>