]> git.llucax.com Git - mecon/yatta.git/blob - lib/YATTA/Archivo.php
Agrego una opcion a la busqueda.
[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      * @param  string $destinos Indica si hay que incluir en la busqueda los
164      * destinos.
165      *
166      * @return mixed
167      * @access public
168      */
169     function buscar($db = null, $operador = MECON_DBO_OR, $orden = null,
170             $destinos = true) 
171     {
172         // Armo el WHERE.
173         $where = array();
174         if (!is_null($this->id)) {
175             $where[] = 'p.id = '.$this->id .' ';
176         }
177         if (!is_null($this->id_sistema)) {
178             $where[] = 'p.id_sistema = '. $this->id_sistema .''; 
179         }
180         if (!is_null($this->nombre_sistema)) {
181             $where[] = 's.nombre_sistema LIKE '. $db->quote("%$this->nombre_sistema%");
182         }
183         if (!is_null($this->descripcion)) {
184             $where[] = 'p.descripcion LIKE '. $db->quote("%$this->descripcion%");
185         }
186         if (!is_null($this->resultado)) {
187             $where[] = 'p.resultado LIKE '. $db->quote("%$this->resultado%");
188         }
189         if (!is_null($this->usuario)) {
190             $where[] = ' (p.owner LIKE '. $db->quote("$this->usuario");
191             if ($destinos) {
192                 $where[] = 'p.destinos LIKE '. $db->quote("%$this->usuario%"); 
193             }
194         }
195         if (!is_null($this->archivo)) {
196             $where[] = 'p.archivo LIKE '. $db->quote("$this->archivo");
197         }
198         if ($where) {
199             $where = 'WHERE p.status = 2 AND p.resultado is not null '.
200                 'AND p.id_sistema = s.id_sistema AND ('. join ("$operador
201                         ", $where).') ';
202         } 
203         else {
204             $where = 'WHERE p.id_sistema = s.id_sistema ';
205         }
206         // Armo el ORDER BY.
207         if (is_string($orden)) {
208             $orden = array($orden);
209         }
210         if ($orden) {
211             $orden = 'ORDER BY '.join(',',$orden);
212         }
213         else {
214             $orden = '';
215         }
216         
217         return $db->query(
218                 "SELECT p.id AS id, p.id_sistema AS id_sistema, s.nombre_sistema ".
219                 "AS nombre_sistema, p.descripcion AS descripcion, p.resultado ".
220                 "AS resultado, p.archivo AS archivo, p.owner AS owner ".
221                 "FROM yatta.procesos AS p, samurai.sistema AS s ".
222                 "$where ".
223                 "$orden");
224     }
225
226     /**
227      * @param  DB $db Conexion a la base de datos.
228      * @param  bool $nuevo Indica si se trata de un nuevo registro en la base.
229      *
230      * @return mixed
231      * @access public
232      */
233     function guardar($db = null, $nuevo = false)
234     {
235         trigger_error('Not implemented!', E_USER_WARNING); 
236     }
237
238     /**
239      * Hace un reset de los atributos.
240      * 
241      * @return void
242      * @access public
243      */
244     function predefinirAtributos() {
245         $this->id = null;
246         $this->id_sistema = null;
247         $this->nombre_sistema = null;
248         $this->descripcion = null;
249         $this->resultado = null;
250         $this->archivo = null;
251         $this->owner = null;
252         //$this->usuario = null;
253     }
254 }
255 ?>