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/general.php';
31 prepend_include_path('/var/www/sistemas/ai/sistema/local_lib');
32 require_once 'MECON/HTML/Error.php';
33 require_once 'permisos.php';
36 require_once 'PEAR.php';
37 #PEAR::setErrorHandling(PEAR_ERROR_TRIGGER);
38 PEAR::setErrorHandling(PEAR_ERROR_RETURN);
41 // Creo la base de datos. {{{
42 require_once 'AI/DB.php';
43 $db =& AI_DB::connect('../conf/DB.ini');
44 if (DB::isError($db)) {
45 die($db->getMessage());
49 // Creo el objeto de permisos - FIXME - esto debería venir de intranet. {{{
50 require_once 'SAMURAI/Perm.php';
51 $perm = new SAMURAI_Perm(@$_GET['login'] ? $_GET['login'] : 'llucar@mecon', AI_PERM, $db);
55 require_once 'MECON/Marco.php';
56 $marco = new MECON_Marco('../conf/Marco.php', $perm);
59 // Averiguo si estoy administrando algún tipo de objeto. {{{
61 if (@$_SERVER['PATH_INFO']) {
62 $tmp = ltrim($_SERVER['PATH_INFO'], '/');
63 if ($tmp == 'grupo') {
65 $clase = 'AI_GrupoSecciones';
66 $require = 'AI/GrupoSecciones.php';
67 $tabla = 'grupo_secciones';
68 $nombre = 'grupo de secciones';
69 if (!$perm->tiene(AI_PERM_NOTICIAS)) {
70 die('Acceso no autorizado!!!'); // FIXME - se va a poner más lindo?
72 } elseif ($tmp == 'servicio') {
74 $clase = 'AI_Servicio';
75 $require = 'AI/Servicio.php';
78 if (!$perm->tiene(AI_PERM_SERVICIOS)) {
79 die('Acceso no autorizado!!!'); // FIXME - se va a poner más lindo?
81 } elseif ($tmp == 'sistema') {
83 $clase = 'AI_Sistema';
84 $require = 'AI/Sistema.php';
87 if (!$perm->tiene(AI_PERM_SISTEMAS)) {
88 die('Acceso no autorizado!!!'); // FIXME - se va a poner más lindo?
90 } else { // No hay un objeto válido para administrar.
91 header('Location: '.$_SERVER['SCRIPT_NAME']);
96 // Si tiene un tipo, estamos administrando algun objeto. {{{
99 // Creo formulario. {{{
100 require_once 'AI/Form.php';
101 $form =& new AI_Form;
104 // Creo un objeto y seteo su id. {{{
105 require_once $require;
107 $obj->$tipo = @$_REQUEST['id'];
110 // Verifico que la acción sea válida y si no lo es hago que sea un alta. {{{
111 switch(@$_REQUEST['accion']) {
114 $accion = $_REQUEST['accion'];
121 // Modifico la acción si ya se envió el formulario. {{{
122 $botones = $form->getSubmitValue('botones');
123 if ($boton = @join('', array_keys($botones))) {
124 $boton = $boton . '_' . strtolower($botones[$boton]);
127 case 'aceptar_agregar':
130 case 'modificar_borrar':
131 // Viene de modificar, hay que confirmar primero.
133 case 'aceptar_borrar':
135 $obj->$tipo = $form->getSubmitValue($tipo);
137 case 'borrar_cancelar':
138 // Indico que viene de un formulario cancelado.
140 case 'aceptar_modificar':
142 $obj->$tipo = $form->getSubmitValue($tipo);
147 // Creo el árbol con el tipo de objeto que manejo y lo agrego a la página. {{{
148 require_once 'AI/Arbol.php';
149 $arbol = new AI_Arbol($obj, $db);
152 // Inicio el formulario, cargando datos de ser necesario. {{{
153 if ($accion & (AI_BAJA | AI_MODIF)) {
154 $err =& $obj->cargar($db);
155 if (PEAR::isError($err)) {
156 die($err->getMessage());
158 $form->iniciar($obj, $accion, $arbol, $db);
161 $form->iniciar($obj, $accion, $arbol, $db);
165 // Freezo el formulario si se está confirmando. {{{
171 // Si los datos del formulario son válidos, hago el ABM. {{{
172 if ($form->validate()) {
175 $form->llenarObjeto($obj);
176 $err =& $obj->guardar($db, true);
177 if (PEAR::isError($err)) {
178 if (DB::isError($err)
179 and $err->getCode() == DB_ERROR_ALREADY_EXISTS) {
180 $error = new MECON_HTML_Error(
181 "Ya existe un $nombre con el identificador "
184 $error = new MECON_HTML_Error('Error no esperado: '
185 . $err->getMessage());
187 $marco->addBody($error);
189 header(sprintf('Location: %s?accion=%d&id=%d',
190 $tipo, AI_MODIF, $obj->$tipo));
196 if (!@$a_confirmar) {
197 $form->llenarObjeto($obj);
198 $err =& $obj->borrar($db);
199 if (AI_Error::isError($err)
200 and $err->getCode() == AI_ERROR_TIENE_HIJOS) {
201 $error = new MECON_HTML_Error('No se puede borrar el '
202 . $nombre . ' porque todavía tiene "hijos".'
203 . ' Elimine todos los "hijos" y pruebe otra vez.');
204 $marco->addBody($error);
205 } elseif (PEAR::isError($err)) {
206 $error = new MECON_HTML_Error('Error no esperado: '
207 . $err->getMessage());
208 $marco->addBody($error);
210 header("Location: $tipo");
216 case AI_MODIF: // {{{
218 $form->llenarObjeto($obj);
219 $err =& $obj->guardar($db);
220 if (PEAR::isError($err)) {
221 $error = new MECON_HTML_Error('Error no esperado: ' . $err->getMessage());
222 $marco->addBody($error);
224 header(sprintf('Location: %s?accion=%d&id=%d',
225 $tipo, AI_MODIF, $obj->$tipo));
235 // Agrego el menu, link para nuevo y formulario a la página. {{{
236 $marco->addMenuVertical($arbol);
237 if ($accion & ~AI_ALTA) {
238 require_once 'HTML/Image.php';
239 require_once 'HTML/Link.php';
240 $img = new HTML_Image('/MECON/images/general_nuevo', 'Agregar nuevo',
241 array('border' => 0, 'align' => 'middle',));
242 $link = new HTML_Link($tipo);
243 $marco->addBody('<DIV class="texto11_negro" valign="middle" align="center">');
244 $link->addContents($img);
245 $link_text = ' Agregar un nuevo ' . $nombre;
246 $link->addContents($link_text);
247 $marco->addBody($link);
248 $marco->addBody('</DIV>');
250 $marco->addBody($form);
255 // No se está editando nada, agrego la imágen de bienvenida a la página. {{{
257 require_once 'HTML/Image.php';
258 $marco->setEspacios(false);
259 $marco->addBody(new HTML_Image('images/home', 'Adminitrador de Intranet'));
263 // Muestro la página. {{{