]> git.llucax.com Git - mecon/ai.git/blob - sistema/www/index.php
Se sacan las secciones de noticias de MEconDAV, se sacan los nombres de los
[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 #PEAR::setErrorHandling(PEAR_ERROR_RETURN);
34 // }}}
35
36 // Clase de error HTML (para mostrar errores) TODO - ver si se pasa a meconlib {{{
37 class HTML_Error {
38     var $msg = '';
39     function HTML_Error($msg) {
40         $this->msg = $msg;
41     }
42     function toHtml() {
43         return '<DIV style="font-size: 11px; text-align: center; color: red">' . $this->msg . '</DIV>';
44     }
45 }
46 // }}}
47
48 // Creo el Marco. {{{
49 require_once 'MECON/Marco.php';
50 $marco = new Marco('../conf/Marco.php');
51 // }}}
52
53 // Averiguo si estoy administrando algún tipo de objeto. XXX - desafear {{{
54 $tipo = null;
55 if (@$_SERVER['PATH_INFO']) {
56     $tmp = ltrim($_SERVER['PATH_INFO'], '/');
57     if ($tmp == 'grupo') {
58         $tipo    = $tmp;
59         $clase   = "AI_GrupoSecciones";
60         $require = 'AI/GrupoSecciones.php';
61         $tabla   = 'grupo_secciones';
62         $nombre  = "grupo de secciones";
63         $arbol   = 'NOTICIAS';
64     } elseif ($tmp == 'servicio') {
65         $tipo    = $tmp;
66         $clase   = 'AI_Servicio';
67         $require = 'AI/Servicio.php';
68         $tabla   = $tipo;
69         $nombre  = $tipo;
70         $arbol   = 'SERVICIOS';
71     } elseif ($tmp == 'sistema') {
72         $tipo    = $tmp;
73         $clase   = 'AI_Sistema';
74         $require = 'AI/Sistema.php';
75         $tabla   = $tipo;
76         $nombre  = $tipo;
77         $arbol   = 'SISTEMAS';
78     } else { // No hay un objeto válido para administrar.
79         header('Location: '.$_SERVER['SCRIPT_NAME']);
80     }
81 }
82 // }}}
83
84 // Si tiene un tipo, estamos administrando algun objeto. {{{
85 if ($tipo) {
86
87     // Creo formulario. {{{
88     require_once 'AI/Form.php';
89     $form =& new AI_Form;
90     // }}}
91
92     // Creo un objeto y seteo su id. {{{
93     require_once $require;
94     $obj = new $clase;
95     $obj->$tipo = @$_REQUEST['id'];
96     // }}}
97
98     // Verifico que la acción sea válida y si no lo es hago que sea un alta. {{{
99     switch(@$_REQUEST['accion']) {
100         case AI_BAJA:
101         case AI_MODIF:
102             $accion = $_REQUEST['accion'];
103             break;
104         default:
105             $accion = AI_ALTA;
106     }
107     // }}}
108
109     // Modifico la acción si ya se envió el formulario. {{{
110     $botones = $form->getSubmitValue('botones');
111     if ($boton = @join('', array_keys($botones))) {
112         $boton = $boton . '_' . strtolower($botones[$boton]);
113     }
114     switch ($boton) {
115         case 'aceptar_agregar':
116             $accion = AI_ALTA;
117             break;
118         case 'modificar_borrar':
119             // Viene de modificar,  hay que confirmar primero.
120             $a_confirmar = true;
121         case 'aceptar_borrar':
122             $accion = AI_BAJA;
123             $obj->$tipo = $form->getSubmitValue($tipo);
124             break;
125         case 'borrar_cancelar':
126             // Indico que viene de un formulario cancelado.
127             $cancelado = true;
128         case 'aceptar_modificar':
129             $accion = AI_MODIF;
130             $obj->$tipo = $form->getSubmitValue($tipo);
131             break;
132     }
133     // }}}
134
135     // Creo la base de datos. {{{
136     require_once 'AI/DB.php';
137     $db =& AI_DB::connect('../conf/DB.ini');
138     if (DB::isError($db)) {
139         die($db->getMessage());
140     }
141     // }}}
142
143     // Inicio el formulario, cargando datos de ser necesario. {{{
144     if ($accion & (AI_BAJA | AI_MODIF)) {
145         $err =& $obj->cargar($db);
146         if (PEAR::isError($err)) {
147             die($err->getMessage());
148         }
149         $form->iniciar($obj, $accion);
150     } else {
151         $accion = AI_ALTA;
152         $form->iniciar($obj);
153     }
154     // }}}
155
156     // Freezo el formulario si se está confirmando. {{{
157     if (@$a_confirmar) {
158         $form->freeze();
159     }
160     // }}}
161
162     // Si los datos del formulario son válidos, hago el ABM. {{{
163     if ($form->validate()) {
164         switch ($accion) {
165             case AI_ALTA: // {{{
166                 $form->llenarObjeto($obj);
167                 $err =& $obj->guardar($db, true);
168                 if (PEAR::isError($err)) {
169                     if (DB::isError($err) and $err->getCode() == DB_ERROR_ALREADY_EXISTS) {
170                         $error = new HTML_Error("Ya existe un $nombre con el identificador "
171                             . $obj->$tipo);
172                     } else {
173                         $error = new HTML_Error('Error no esperado: ' . $err->getMessage());
174                     }
175                     $marco->addBody($error);
176                 } else {
177                     header(sprintf('Location: %s?accion=%d&id=%d',
178                         $tipo, AI_MODIF, $obj->$tipo));
179                     exit;
180                 }
181                 break;
182             // }}}
183             case AI_BAJA: // {{{
184                 if (!@$a_confirmar) {
185                     $form->llenarObjeto($obj);
186                     $err =& $obj->borrar($db);
187                     if (PEAR::isError($err)) {
188                         $error = new HTML_Error('Error no esperado: ' . $err->getMessage());
189                         $marco->addBody($error);
190                     } else {
191                         header("Location: $tipo");
192                         exit;
193                     }
194                 }
195                 break;
196             // }}}
197             case AI_MODIF: // {{{
198                 if (!@$cancelado) {
199                     $form->llenarObjeto($obj);
200                     $err =& $obj->guardar($db);
201                     if (PEAR::isError($err)) {
202                         $error = new HTML_Error('Error no esperado: ' . $err->getMessage());
203                         $marco->addBody($error);
204                     } else {
205                         header(sprintf('Location: %s?accion=%d&id=%d',
206                             $tipo, AI_MODIF, $obj->$tipo));
207                         exit;
208                     }
209                 }
210                 break;
211             // }}}
212         }
213     }
214     // }}}
215
216     // Agrego el menu y el formulario a la página. {{{
217
218     // Creo el árbol con el tipo de objeto que manejo y lo agrego a la página. {{{
219     require_once 'MECON/HTML/Arbol/ArbolDB.php';
220     $dbdata = array(
221         'db'            => &$db,
222         'tabla'         => $tabla,
223         'id'            => $tipo,
224         'nombre'        => $tipo,
225         'prepend_link'  => $tipo.'?accion='.AI_MODIF.'&id='
226     );
227     if ($tipo == 'grupo' or $tipo == 'servicio') {
228         $dbdata['nombre']   = 'nombre';
229         $dbdata['id_padre'] = $tipo . '_padre';
230     } elseif ($tipo == 'sistema') { // FIXME - horrible!!!
231         $dbdata = array(
232             'db'            => &$db,
233             'tabla'         => "intranet.$tabla as A, samurai.sistema as S",
234             'id'            => "A.$tipo",
235             'nombre'        => 'S.nombre_sistema',
236             'prepend_link'  => $tipo.'?accion='.AI_MODIF.'&id=',
237             'where'         => 'S.id_sistema = A.sistema',
238             'order'         => 'asc',
239         );
240     }
241     $arbol = new HTML_ArbolDB($dbdata, $arbol);
242     $marco->addMenuVertical($arbol);
243     // }}}
244
245     // Agrego el formulario a la página. {{{
246     $marco->addBody($form);
247     // }}}
248
249     // }}}
250
251 // }}}
252
253 // No se está editando nada, agrego la imágen de bienvenida a la página. {{{
254 } else {
255     require_once 'HTML/Image.php';
256     $marco->setEspacios(false);
257     $marco->addBody(new HTML_Image('images/home', 'Adminitrador de Intranet'));
258 }
259 // }}}
260
261 // Muestro la página. {{{
262 $marco->display();
263 // }}}
264
265 ?>