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