]> git.llucax.com Git - mecon/yatta.git/blob - lib/YATTA/Archivo.php
a7d33c4a5ce7c91f53d0f2a71a22fad985dba48b
[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              trigger_error('Error: ' . $res->getMessage() . "\n", E_USER_ERROR);
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 (!is_null($this->archivo)) {
191             $where[] = 'p.archivo LIKE '. $db->quote("$this->archivo");
192         }
193         if ($where) {
194             $where = 'WHERE p.status = 2 AND p.resultado is not null '.
195                 'AND p.id_sistema = s.id_sistema AND ('. join ("$operador
196                         ", $where).') ';
197         } 
198         else {
199             $where = 'WHERE p.id_sistema = s.id_sistema ';
200         }
201         // Armo el ORDER BY.
202         if (is_string($orden)) {
203             $orden = array($orden);
204         }
205         if ($orden) {
206             $orden = 'ORDER BY '.join(',',$orden);
207         }
208         else {
209             $orden = '';
210         }
211         
212         return $db->query(
213                 "SELECT p.id AS id, p.id_sistema AS id_sistema, s.nombre_sistema ".
214                 "AS nombre_sistema, p.descripcion AS descripcion, p.resultado ".
215                 "AS resultado, p.archivo AS archivo, p.owner AS owner ".
216                 "FROM yatta.procesos AS p, samurai.sistema AS s ".
217                 "$where ".
218                 "$orden");
219     }
220
221     /**
222      * @param  DB $db Conexion a la base de datos.
223      * @param  bool $nuevo Indica si se trata de un nuevo registro en la base.
224      *
225      * @return mixed
226      * @access public
227      */
228     function guardar($db = null, $nuevo = false)
229     {
230         trigger_error('Not implemented!', E_USER_WARNING); 
231     }
232
233     /**
234      * Hace un reset de los atributos.
235      * 
236      * @return void
237      * @access public
238      */
239     function predefinirAtributos() {
240         $this->id = null;
241         $this->id_sistema = null;
242         $this->nombre_sistema = null;
243         $this->descripcion = null;
244         $this->resultado = null;
245         $this->archivo = null;
246         $this->owner = null;
247         //$this->usuario = null;
248     }
249 }
250 ?>