]> git.llucax.com Git - mecon/yatta.git/blob - lib/YATTA/CuotaDB.php
Modificacion para que se haga mas ejecute mas rapido el script.
[mecon/yatta.git] / lib / YATTA / CuotaDB.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: jue mar  4 19:23:27 ART 2004
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 require_once 'SAMURAI/Perm.php';
30
31 /**
32  * Clase para el manejo de las cuotas especiales.
33  *
34  * @access public
35  */
36 class YATTA_CuotaDB extends MECON_DBO {
37
38     /**
39      * Login del usuario.
40      *
41      * @var    string $login
42      * @access public
43      */
44     var $login = null;
45      
46     /**
47      * Cuota del usuario.
48      *
49      * @var    int $cuota
50      * @access public
51      */
52     var $cuota = null;
53      
54     /**
55      * Carga el objeto con los datos que se pasan por parametro.
56      * 
57      * @param  DB $db DB o DB_Result a usar para la carga.
58      *
59      * @return mixed
60      * @access public
61      */
62     function cargar($db = null)
63     {
64         // Si es un resultado, obtengo los elemento.
65         if (is_a($db, 'db_result')) {
66             $this->predefinirAtributos();
67             $res = $db->fetchRow(DB_FETCHMODE_ASSOC);
68             // Si hay error lo devuelve.
69             if (DB::isError($res)) {
70                 return $res;
71             }
72             elseif (!$res) {
73                 return false;
74             }
75             $this->login = $res['login'];
76             $this->cuota = $res['cuota'];
77             return true;
78         }
79         return false; 
80     }
81
82     /**
83      * Borra el objeto de una base de datos.
84      *
85      * @param  DB $db Base de datos de donde borrar el objeto.
86      *
87      * @return mixed
88      * @access public
89      */
90     function borrar($db = null)
91     {
92         return $db->query ("DELETE FROM yatta.cuotas
93                 WHERE login = ". $db->quote($this->login));
94     }
95
96     /**
97      * Busca los datos en la base.
98      *
99      * @param  DB $db Conexion a la base de datos.
100      * @param  string $operador Indica como deben concatenarse las condiciones de busqueda
101      * @param  string $orden Indica de que manera deben ordenarse los resultados de la busqueda
102      *
103      * @return mixed
104      * @access public
105      */
106     function buscar($db = null, $operador = MECON_DBO_OR, $orden = null) 
107     {
108         // Armo el WHERE.
109         $where = array();
110         if (!is_null($this->login)) {
111             $where[] = 'c.login LIKE '. $db->quote("%$this->login%");
112         }
113         if (!is_null($this->cuota)) {
114             $where[] = 'c.cuota = '. $this->cuota;
115         }
116         if ($where) {
117             $where = 'WHERE '. join ("$operador", $where);
118         }
119         else {
120             $where = '';
121         }
122         // Armo el ORDER BY.
123         if (is_string($orden))
124         {
125             $orden = array($orden);
126         }
127         if ($orden) 
128         {
129             $orden = 'ORDER BY '.join(',',$orden);
130         }
131         else {
132             $orden = '';
133         }
134         
135         return $db->query(
136                 "SELECT c.login AS login, c.cuota AS cuota 
137                 FROM yatta.cuotas AS c
138                 $where
139                 $orden");
140     }
141
142     /**
143      * Guarda los datos en la base.
144      *
145      * @param  DB $db Conexion a la base de datos.
146      * @param  bool $nuevo Indica si se trata de un nuevo registro en la base.
147      *
148      * @return mixed
149      * @access public
150      */
151     function guardar($db = null, $nuevo = true)
152     {
153         //Debo verificar que el login que me pasaron tenga permisos en samurai.
154         $tmp =& new SAMURAI_Perm ($this->login, YATTA_PERM, $db);
155         
156         if (!$tmp->tiene()) {
157             return new PEAR_Error (
158                     'El usuario tiene que tener permisos en yatta.'
159                     );
160         }
161         
162         if ($nuevo) {
163             $datos = array (
164                     'login' => $this->login,
165                     'cuota' => $this->cuota
166                     );
167             return $db->autoExecute('yatta.cuotas', $datos, 
168                     DB_AUTOQUERY_INSERT);
169         }
170         else {
171             $datos = array (
172                     'login' => $this->login,
173                     'cuota' => $this->cuota
174                     );
175             return $db->autoExecute('yatta.cuotas', $datos,
176                     DB_AUTOQUERY_UPDATE, 'login = '. $db->quote($this->login));
177         }
178     }
179
180     /**
181      * Hace un reset de los atributos.
182      * 
183      * @return void
184      * @access public
185      */
186     function predefinirAtributos() {
187         $this->login = null;
188         $this->cuota = null;
189     }
190 }
191 ?>