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. |
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. |
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. |
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 // +--------------------------------------------------------------------+
30 require_once 'MECON/HTML/Error.php';
33 require_once 'PEAR.php';
34 #PEAR::setErrorHandling(PEAR_ERROR_TRIGGER);
35 PEAR::setErrorHandling(PEAR_ERROR_RETURN);
39 require_once 'MECON/Marco.php';
40 $marco = new Marco('../conf/Marco.php');
43 // Averiguo si estoy administrando algún tipo de objeto. XXX - desafear {{{
45 if (@$_SERVER['PATH_INFO']) {
46 $tmp = ltrim($_SERVER['PATH_INFO'], '/');
47 if ($tmp == 'grupo') {
49 $clase = "AI_GrupoSecciones";
50 $require = 'AI/GrupoSecciones.php';
51 $tabla = 'grupo_secciones';
52 $nombre = "grupo de secciones";
54 } elseif ($tmp == 'servicio') {
56 $clase = 'AI_Servicio';
57 $require = 'AI/Servicio.php';
61 } elseif ($tmp == 'sistema') {
63 $clase = 'AI_Sistema';
64 $require = 'AI/Sistema.php';
68 } else { // No hay un objeto válido para administrar.
69 header('Location: '.$_SERVER['SCRIPT_NAME']);
74 // Si tiene un tipo, estamos administrando algun objeto. {{{
77 // Creo formulario. {{{
78 require_once 'AI/Form.php';
82 // Creo un objeto y seteo su id. {{{
83 require_once $require;
85 $obj->$tipo = @$_REQUEST['id'];
88 // Verifico que la acción sea válida y si no lo es hago que sea un alta. {{{
89 switch(@$_REQUEST['accion']) {
92 $accion = $_REQUEST['accion'];
99 // Modifico la acción si ya se envió el formulario. {{{
100 $botones = $form->getSubmitValue('botones');
101 if ($boton = @join('', array_keys($botones))) {
102 $boton = $boton . '_' . strtolower($botones[$boton]);
105 case 'aceptar_agregar':
108 case 'modificar_borrar':
109 // Viene de modificar, hay que confirmar primero.
111 case 'aceptar_borrar':
113 $obj->$tipo = $form->getSubmitValue($tipo);
115 case 'borrar_cancelar':
116 // Indico que viene de un formulario cancelado.
118 case 'aceptar_modificar':
120 $obj->$tipo = $form->getSubmitValue($tipo);
125 // Creo la base de datos. {{{
126 require_once 'AI/DB.php';
127 $db =& AI_DB::connect('../conf/DB.ini');
128 if (DB::isError($db)) {
129 die($db->getMessage());
133 // Inicio el formulario, cargando datos de ser necesario. {{{
134 if ($accion & (AI_BAJA | AI_MODIF)) {
135 $err =& $obj->cargar($db);
136 if (PEAR::isError($err)) {
137 die($err->getMessage());
139 $form->iniciar($obj, $accion);
142 $form->iniciar($obj);
146 // Freezo el formulario si se está confirmando. {{{
152 // Si los datos del formulario son válidos, hago el ABM. {{{
153 if ($form->validate()) {
156 $form->llenarObjeto($obj);
157 $err =& $obj->guardar($db, true);
158 if (PEAR::isError($err)) {
159 if (DB::isError($err) and $err->getCode() == DB_ERROR_ALREADY_EXISTS) {
160 $error = new MECON_HTML_Error("Ya existe un $nombre con el identificador "
163 $error = new MECON_HTML_Error('Error no esperado: ' . $err->getMessage());
165 $marco->addBody($error);
167 header(sprintf('Location: %s?accion=%d&id=%d',
168 $tipo, AI_MODIF, $obj->$tipo));
174 if (!@$a_confirmar) {
175 $form->llenarObjeto($obj);
176 $err =& $obj->borrar($db);
177 if (PEAR::isError($err)) {
178 $error = new MECON_HTML_Error('Error no esperado: ' . $err->getMessage());
179 $marco->addBody($error);
181 header("Location: $tipo");
187 case AI_MODIF: // {{{
189 $form->llenarObjeto($obj);
190 $err =& $obj->guardar($db);
191 if (PEAR::isError($err)) {
192 $error = new MECON_HTML_Error('Error no esperado: ' . $err->getMessage());
193 $marco->addBody($error);
195 header(sprintf('Location: %s?accion=%d&id=%d',
196 $tipo, AI_MODIF, $obj->$tipo));
206 // Agrego el menu y el formulario a la página. {{{
208 // Creo el árbol con el tipo de objeto que manejo y lo agrego a la página. {{{
209 require_once 'MECON/HTML/Arbol/ArbolDB.php';
215 'prepend_link' => $tipo.'?accion='.AI_MODIF.'&id='
217 if ($tipo == 'grupo' or $tipo == 'servicio') {
218 $dbdata['nombre'] = 'nombre';
219 $dbdata['id_padre'] = $tipo . '_padre';
220 } elseif ($tipo == 'sistema') { // FIXME - horrible!!!
223 'tabla' => "intranet.$tabla as A, samurai.sistema as S",
225 'nombre' => 'S.nombre_sistema',
226 'prepend_link' => $tipo.'?accion='.AI_MODIF.'&id=',
227 'where' => 'S.id_sistema = A.sistema AND S.estado = 1',
231 $arbol = new HTML_ArbolDB($dbdata, $arbol);
232 $marco->addMenuVertical($arbol);
235 // Agrego el formulario a la página. {{{
236 $marco->addBody($form);
243 // No se está editando nada, agrego la imágen de bienvenida a la página. {{{
245 require_once 'HTML/Image.php';
246 $marco->setEspacios(false);
247 $marco->addBody(new HTML_Image('images/home', 'Adminitrador de Intranet'));
251 // Muestro la página. {{{