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