]> git.llucax.com Git - mecon/ai.git/blob - sistema/www/index.php
5b5c97e8fd8e8c2f417d024a4a79fb45395e2bd1
[mecon/ai.git] / sistema / www / index.php
1 <?php
2 // vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker:
3 // +--------------------------------------------------------------------+
4 // |                      Ministerio de Economía                        |
5 // |                  AI (Administrador de Intranet)                    |
6 // +--------------------------------------------------------------------+
7 // | This file is part of AI.                                           |
8 // |                                                                    |
9 // | AI is free software; you can redistribute it and/or modify         |
10 // | it under the terms of the GNU General Public License as published  |
11 // | by the Free Software Foundation; either version 2 of the License,  |
12 // | or (at your option) any later version.                             |
13 // |                                                                    |
14 // | AI is distributed in the hope that it will be useful, but          |
15 // | WITHOUT ANY WARRANTY; without even the implied warranty of         |
16 // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   |
17 // | General Public License for more details.                           |
18 // |                                                                    |
19 // | You should have received a copy of the GNU General Public License  |
20 // | along with Hooks; if not, write to the Free Software Foundation,   |
21 // | Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA      |
22 // +--------------------------------------------------------------------+
23 // | Creado: vie jun 27 17:08:18 ART 2003                               |
24 // | Autor:  Leandro Lucarella <llucar@mecon.gov.ar>                    |
25 // +--------------------------------------------------------------------+
26 //
27 // $Id$
28 //
29
30 // Debug. {{{
31 require_once 'PEAR.php';
32 PEAR::setErrorHandling(PEAR_ERROR_TRIGGER);
33 // }}}
34
35 // Creo el Marco. {{{
36 require_once 'MECON/Marco.php';
37 $marco = new Marco('../conf/Marco.php');
38 // }}}
39
40 // Agrego una barra al costado con el listado de objetos (XXX - va a ir en Marco). {{{
41 require_once 'HTML/Table.php';
42 $layout = new HTML_Table(
43     array(
44         'width'         => '100%',
45         'align'         => 'center',
46         'valign'        => 'top',
47         'border'        => 0,
48         'cellspacing'   => 0,
49         'cellpadding'   => 0,
50     )
51 );
52 $layout->setAutoGrow(true);
53 $layout->setCellAttributes(0, 0, array('width' => '1'));
54 $layout->setCellAttributes(0, 1, array('width' => '10'));
55 $layout->setCellContents(0, 1, '&nbsp;');
56 // }}}
57
58 // Averiguo si estoy administrando algún tipo de objeto. {{{
59 $tipo = null;
60 if (@$_SERVER['PATH_INFO']) {
61     $tmp = ltrim($_SERVER['PATH_INFO'], '/');
62     if ($tmp == 'grupo') {
63         $tipo    = $tmp;
64         $clase   = "AI_GrupoSecciones";
65         $require = 'AI/GrupoSecciones.php';
66         $tabla   = 'grupo_secciones';
67     } elseif ($tmp == 'servicio') {
68         $tipo    = $tmp;
69         $clase   = 'AI_Servicio';
70         $require = 'AI/Servicio.php';
71         $tabla   = $tipo;
72     } elseif ($tmp == 'sistema') {
73         $tipo    = $tmp;
74         $clase   = 'AI_Sistema';
75         $require = 'AI/Sistema.php';
76         $tabla   = $tipo;
77     } else { // No hay un objeto válido para administrar.
78         header('Location: '.$_SERVER['SCRIPT_NAME']);
79     }
80 }
81 // }}}
82
83 // Si tiene un tipo, estamos editando algo. {{{
84 if ($tipo) {
85
86     // Creo formulario. {{{
87     require_once 'AI/Form.php';
88     $form =& new AI_Form;
89     // }}}
90
91     // Creo un objeto y seteo su id. {{{
92     require_once $require;
93     $obj = new $clase;
94     $obj->$tipo = @$_REQUEST['id'];
95     // }}}
96
97     // Verifico que la acción sea válida. {{{
98     switch(@$_REQUEST['accion']) {
99         case AI_BAJA:
100         case AI_MODIF:
101             $accion = $_REQUEST['accion'];
102             break;
103         default:
104             $accion = AI_ALTA;
105     }
106     // }}}
107
108     // Verifico si ya se envio el formulario. {{{
109     $botones = $form->getSubmitValue('botones');
110     if ($boton = @join('', array_keys($botones))) {
111         $boton = $boton . '_' . strtolower($botones[$boton]);
112     }
113     switch ($boton) {
114         case 'aceptar_agregar':
115             $accion = AI_ALTA;
116             break;
117         case 'modificar_borrar':
118             // Viene de modificar,  hay que confirmar primero.
119             $a_confirmar = true;
120         case 'aceptar_borrar':
121             $accion = AI_BAJA;
122             $obj->$tipo = $form->getSubmitValue($tipo);
123             break;
124         case 'borrar_cancelar':
125             // Indico que viene de un formulario cancelado.
126             $cancelado = true;
127         case 'aceptar_modificar':
128             $accion = AI_MODIF;
129             $obj->$tipo = $form->getSubmitValue($tipo);
130             break;
131     }
132     // }}}
133
134     // Creo la base de datos. {{{
135     require_once 'AI/DB.php';
136     $db =& AI_DB::connect('../conf/DB.ini');
137     if (DB::isError($db)) {
138         die($db->getMessage());
139     }
140     // }}}
141
142     // Inicio el formulario, cargando datos de ser necesario. {{{
143     if ($accion & (AI_BAJA | AI_MODIF)) {
144         $err =& $obj->cargar($db);
145         if (PEAR::isError($err)) {
146             die($err->getMessage());
147         }
148         $form->iniciar($obj, $accion);
149     } else {
150         $accion = AI_ALTA;
151         $form->iniciar($obj);
152     }
153     // }}}
154
155     // Freezo de ser necesario. {{{
156     if (@$a_confirmar) {
157         $form->freeze();
158     }
159     // }}}
160
161     // Me fijo si se cargo un formulalrio y si es válido hago el ABM. {{{
162     if ($form->validate()) {
163
164         switch ($accion) {
165             case AI_ALTA: // {{{
166                 $form->llenarObjeto($obj);
167                 $err =& $obj->guardar($db);
168                 if (PEAR::isError($err)) {
169                     die($err->getMessage());
170                 }
171                 header(sprintf('Location: %s?accion=%d&id=%d',
172                     $tipo, AI_MODIF, $obj->$tipo));
173                 exit;
174                 break;
175                 // }}}
176             case AI_BAJA: // {{{
177                 if (!@$a_confirmar) {
178                     $form->llenarObjeto($obj);
179                     $err =& $obj->borrar($db);
180                     if (PEAR::isError($err)) {
181                         die($err->getMessage());
182                     }
183                     header("Location: $tipo");
184                     exit;
185                 }
186                 break;
187                 // }}}
188             case AI_MODIF: // {{{
189                 if (!@$cancelado) {
190                     $form->llenarObjeto($obj);
191                     $err =& $obj->guardar($db);
192                     if (PEAR::isError($err)) {
193                         die($err->getMessage());
194                     }
195                     header(sprintf('Location: %s?accion=%d&id=%d',
196                         $tipo, AI_MODIF, $obj->$tipo));
197                     exit;
198                 }
199                 break;
200                 // }}}
201         }
202     }
203     // }}}
204
205     // Creo el árbol con el tipo de objeto que manejo. {{{
206     require_once 'MECON/HTML/Arbol/ArbolDB.php';
207     $dbdata = array(
208         'db'            => &$db,
209         'tabla'         => $tabla,
210         'id'            => $tipo,
211         'nombre'        => $tipo,
212         'prepend_link'  => $tipo.'?accion='.AI_MODIF.'&id='
213     );
214     if ($tipo == 'grupo' or $tipo == 'servicio') {
215         $dbdata['nombre']   = 'nombre';
216         $dbdata['id_padre'] = $tipo . '_padre';
217     }
218     $arbol = new HTML_ArbolDB($dbdata, '/MECON/images/arbol_noticias.gif');
219     // }}}
220
221     // Agrego al cuerpo de la página las cosas que voy a dibujar. {{{
222     $layout->setCellContents(0, 0, $arbol);
223     $layout->setCellContents(0, 2, $form);
224     $marco->addBody($layout);
225     // }}}
226 // }}}
227
228 // No se está editando nada, agrego al cuerpo de la página la pantalla de entrada {{{
229 } else {
230     require_once 'HTML/Image.php';
231     $marco->setEspacios(false);
232     $marco->addBody(new HTML_Image('images/home', 'Adminitrador de Intranet'));
233 }
234 // }}}
235
236 // Dibujo. {{{
237 $marco->display();
238 // }}}
239
240 ?>