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