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)
160 and $err->getCode() == DB_ERROR_ALREADY_EXISTS) {
161 $error = new MECON_HTML_Error(
162 "Ya existe un $nombre con el identificador "
165 $error = new MECON_HTML_Error('Error no esperado: '
166 . $err->getMessage());
168 $marco->addBody($error);
170 header(sprintf('Location: %s?accion=%d&id=%d',
171 $tipo, AI_MODIF, $obj->$tipo));
177 if (!@$a_confirmar) {
178 $form->llenarObjeto($obj);
179 $err =& $obj->borrar($db);
180 if (AI_Error::isError($err)
181 and $err->getCode() == AI_ERROR_TIENE_HIJOS) {
182 $error = new MECON_HTML_Error('No se puede borrar el '
183 . $nombre . 'porque todavía tiene "hijos".'
184 . ' Elimine todos los "hijos" y pruebe otra vez.');
185 $marco->addBody($error);
186 } elseif (PEAR::isError($err)) {
187 $error = new MECON_HTML_Error('Error no esperado: '
188 . $err->getMessage());
189 $marco->addBody($error);
191 header("Location: $tipo");
197 case AI_MODIF: // {{{
199 $form->llenarObjeto($obj);
200 $err =& $obj->guardar($db);
201 if (PEAR::isError($err)) {
202 $error = new MECON_HTML_Error('Error no esperado: ' . $err->getMessage());
203 $marco->addBody($error);
205 header(sprintf('Location: %s?accion=%d&id=%d',
206 $tipo, AI_MODIF, $obj->$tipo));
216 // Agrego el menu y el formulario a la página. {{{
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';
224 'nombre' => 'nombre',
225 'prepend_link' => $tipo.'?accion='.AI_MODIF.'&id=',
228 if ($tipo == 'grupo' or $tipo == 'servicio') {
229 $dbdata['id_padre'] = $tipo . '_padre';
230 } elseif ($tipo == 'sistema') { // FIXME - horrible!!!
233 'tabla' => "intranet.$tabla as A, samurai.sistema as S",
235 'nombre' => 'S.nombre_sistema',
236 'where' => 'S.id_sistema = A.sistema AND S.estado = 1',
240 $arbol = new HTML_ArbolDB($dbdata, $arbol);
241 $marco->addMenuVertical($arbol);
244 // Agrego el formulario a la página. {{{
245 $marco->addBody($form);
252 // No se está editando nada, agrego la imágen de bienvenida a la página. {{{
254 require_once 'HTML/Image.php';
255 $marco->setEspacios(false);
256 $marco->addBody(new HTML_Image('images/home', 'Adminitrador de Intranet'));
260 // Muestro la página. {{{