]> git.llucax.com Git - mecon/yatta.git/blob - lib/YATTA/Archivo.php
Interfaz de usuario casi completa.
[mecon/yatta.git] / lib / YATTA / Archivo.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: mié dic  3 13:11:15 ART 2003
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 define ('PATH', '/var/www/sistemas/yatta/test/');
32
33 /**
34  * Clase para el manejo de los archivos.
35  *
36  * @access public
37  */
38 class YATTA_Archivo extends MECON_DBO {
39
40     /**
41      * Identificador del proceso.
42      *
43      * @var    int $id
44      * @access public
45      */
46     var $id = null;
47
48     /**
49      * Identificador del sistema en el cual se lanzo el proceso.
50      *
51      * @var    int $id_sistema
52      * @access public
53      */
54     var $id_sistema = null;
55
56     /**
57      * Nombre del sistema al que pertenece.
58      *
59      * @var string $nombre_sistema
60      * @access public
61      */
62     var $nombre_sistema = null;
63
64     /**
65      * Descripcion del proceso.
66      * 
67      * @var string $descripcion
68      * @access public
69      */
70     var $descripcion = null;
71
72     /**
73      * Identificador del usuario con el que se esta trabajando.
74      *
75      * @var    string $usuario
76      * @access public
77      */
78     var $usuario = null;
79
80     /**
81      * Nombre del archivo para el download
82      *
83      * @var string $resultado
84      * @access public
85      */
86     var $resultado = null;
87    
88     /**
89      * Nombre del archivo en el tacho
90      *
91      * @var string $archivo
92      * @access public
93      */
94     var $archivo = null;
95     
96     /**
97      * Path del archivo
98      *
99      * @var string $path
100      * @access public
101      */
102     var $path = null;
103     
104     /**
105      * Carga el objeto con los datos que se pasan por parametro.
106      * 
107      * @param  DB $db DB o DB_Result a usar para la carga.
108      *
109      * @return mixed
110      * @access public
111      */
112     function cargar($db = null)
113     {
114         // Si es un resultado, obtengo los elemento.
115         if (is_a($db, 'db_result')) {
116             $this->predefinirAtributos();
117             $res = $db->fetchRow(DB_FETCHMODE_ASSOC);
118             // Si hay error lo devuelve.
119             if (DB::isError($res)) {
120                 return $res;
121             }
122             elseif (!$res) {
123                 return false;
124             }
125
126             $this->id = $res['id'];
127             $this->nombre_sistema = $res['nombre_sistema'];
128             $this->descripcion = $res['descripcion'];
129             $this->path = PATH;
130             $this->resultado = $res['resultado'];
131             $this->archivo = $res['archivo'];
132             
133             return true;
134         }
135         return false; 
136     }
137
138     /**
139      * Borra el objeto de una base de datos.
140      *
141      * @param  DB $db Base de datos de donde borrar el objeto.
142      *
143      * @return mixed
144      * @access public
145      */
146     function borrar($db = null)
147     {
148         trigger_error('Not implemented!', E_USER_WARNING); 
149         //@TODO Solo permitir que el owner borre sus archivos.
150         //@TODO Borra el registro de la base.
151         //@TODO Borrar el archivo del tacho.
152     }
153
154     /**
155      * Busca los datos en la base.
156      *
157      * @param  DB $db Conexion a la base de datos.
158      * @param  string $operador Indica como deben concatenarse las condiciones de busqueda
159      * @param  string $orden Indica de que manera deben ordenarse los resultados de la busqueda
160      *
161      * @return mixed
162      * @access public
163      */
164     function buscar($db = null, $operador = MECON_DBO_OR, $orden = null) 
165     {
166         // Armo el WHERE.
167         $where = array();
168         if (!is_null($this->id)) {
169             $where[] = 'p.id = '.$this->id;
170         }
171         if (!is_null($this->id_sistema)) {
172             $where[] = 'p.id_sistema = '. $this->id_sistema; 
173         }
174         if (!is_null($this->nombre_sistema)) {
175             $where[] = 's.nombre_sistema LIKE '. $db->quote("%$this->nombre_sistema%");
176         }
177         if (!is_null($this->descripcion)) {
178             $where[] = 'p.descripcion LIKE '. $db->quote("%$this->descripcion%");
179         }
180         if (!is_null($this->resultado)) {
181             $where[] = 'p.resultado LIKE '. $db->quote("%$this->resultado%");
182         }
183         if (!is_null($this->usuario)) {
184             $where[] = '(p.owner LIKE '. $db->quote("$this->usuario") .' OR '.
185                     'p.destinos LIKE '. $db->quote("%$this->usuario%") .')';
186         }
187         if ($where) {
188             $where = 'WHERE p.status = 2 AND p.resultado is not null '.
189                 'AND p.id_sistema = s.id_sistema AND ('. join ("$operador
190                         ", $where).') ';
191         } 
192         else {
193             $where = 'WHERE p.owner = '. $db->quote("$this->owner").
194                 'AND p.id_sistema = s.id_sistema';
195         }
196         // Armo el ORDER BY.
197         if (is_string($orden)) {
198             $orden = array($orden);
199         }
200         if ($orden) {
201             $orden = 'ORDER BY '.join(',',$orden);
202         }
203         else {
204             $orden = '';
205         }
206         
207         return $db->query(
208                 "SELECT p.id AS id, p.id_sistema AS id_sistema, s.nombre_sistema ".
209                 "AS nombre_sistema, p.descripcion AS descripcion, p.resultado ".
210                 "AS resultado, p.archivo AS archivo ".
211                 "FROM yatta.procesos AS p, samurai.sistema AS s ".
212                 "$where ".
213                 "$orden");
214     }
215
216     /**
217      * @param  DB $db Conexion a la base de datos.
218      * @param  bool $nuevo Indica si se trata de un nuevo registro en la base.
219      *
220      * @return mixed
221      * @access public
222      */
223     function guardar($db = null, $nuevo = false)
224     {
225         trigger_error('Not implemented!', E_USER_WARNING); 
226     }
227
228     /**
229      * Hace un reset de los atributos.
230      * 
231      * @return void
232      * @access public
233      */
234     function predefinirAtributos() {
235         $this->id = null;
236         $this->id_sistema = null;
237         $this->nombre_sistema = null;
238         $this->descripcion = null;
239         $this->resultado = null;
240         $this->archivo = null;
241         $this->path = null;
242         $this->usuario = null;
243     }
244 }
245 ?>