]> git.llucax.com Git - mecon/meconlib.git/blob - marco/php/marco/Menu.php
3e2ebeafc831b349164c12505e8a9ebadb88518b
[mecon/meconlib.git] / marco / php / marco / Menu.php
1 <?php
2 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
3 // +----------------------------------------------------------------------+
4 // | PHP Version 4                                                        |
5 // +----------------------------------------------------------------------+
6 // | Copyright (c) 1997-2003 The PHP Group                                |
7 // +----------------------------------------------------------------------+
8 // | This source file is subject to version 2.02 of the PHP license,      |
9 // | that is bundled with this package in the file LICENSE, and is        |
10 // | available at through the world-wide-web at                           |
11 // | http://www.php.net/license/2_02.txt.                                 |
12 // | If you did not receive a copy of the PHP license and are unable to   |
13 // | obtain it through the world-wide-web, please send a note to          |
14 // | license@php.net so we can mail you a copy immediately.               |
15 // +----------------------------------------------------------------------+
16 // | Created: Mon Apr 14 16:23:22 2003
17 // | Author:  Martin Marrese <mmarre@mecon.gov.ar>
18 // +----------------------------------------------------------------------+
19 //
20 // $Id$
21 // $Author$
22 // $URL$
23 // $Date$
24 // $Rev$
25 //
26
27 require_once 'Seccion.php';
28 require_once 'ImagenAnimada.php';
29 require_once 'include/lib/HTML/Table.php';
30
31 define ('PRE_DIR'                   , '/var/www/intranet/www/sistemas/');
32 define ('POST_DIR'                  , '/conf/');
33 define ('SISTEMA_CONF_SECCIONES'    , 'confSecciones.php');
34 define ('MENU_SERIALIZADO'          , 'MenuSerializado');
35 define ('ARRAYSECCIONES_SERIALIZADO', 'ArraySeccionesSerializado');
36
37 // +X2C Class 14 :Menu
38 /**
39  * Clase para el manejo de los menues y secciones de los sistemas.
40  *
41  * @access public
42  */
43 class Menu {
44     /**
45      * Nombre del directorio en donde se encuentra el sistema;.
46      *
47      * @var    string $directorio
48      *
49      * @access private
50      */
51     var $_directorio;
52
53     /**
54      * Array de array con los componentes del menu
55      *
56      * @var    array $componentes
57      *
58      * @access private
59      */
60     var $_componentes;
61
62     /**
63      * Variable que contiene la tabla general de menues que se va a mostrar en pantalla
64      *
65      * @var    table $tabla
66      *
67      * @access private
68      */
69     var $_tabla;
70
71     // ~X2C
72
73     // +X2C Operation 56
74     /**
75      * Constructor. Recibe como parametro el directorio en donde se encuentra el sistema.
76      *
77      * @param  string $directorio Nombre del directorio en donde se encuentra el sistema.
78      *
79      * @return void
80      *
81      * @access public
82      */
83     function Menu($directorio = null) // ~X2C
84     {
85         $this->_componentes = array (); //Inicializo vacio el array de componentes del menu
86         if (!is_null($directorio)) {
87 //        if (file_exists(PRE_DIR.$directorio.POST_DIR.MENU_SERIALIZADO)) {
88           //ESTA SERIALIZADO EL OBJETO
89 //           $this = $this->_obtenerArchivo($directorio); 
90 //        }
91 //        else {
92          //NO ESTA SERIALIZADO EL OBJETO
93             $this->_directorio = $directorio;
94             $this->_armarArraySecciones($this->_obtenerConfSecciones());
95             
96             $this->_tabla = new HTML_Table('width=760 align="center" bgcolor="#FFFFFF" cellspacing="0" cellpadding="0" border="0"');            
97             
98             //Serializo el array asociativo de paginas-secciones
99 //            if (!file_exists(PRE_DIR.$directorio.POST_DIR.ARRAYSECCIONES_SERIALIZADO)) {
100                 $this->_serializarArraySecciones();                
101 //            }
102 //            $this->_generarArchivo(); NO ESTOY USANDO LA SERIALIZACION GRANDE AHORA
103         }
104     }
105     // -X2C
106
107     // +X2C Operation 57
108     /**
109      * Funcion que se encarga de generar el archivo que despues sera utilizado con la funcion EVAL.
110      *
111      * @return void
112      *
113      * @access private
114      */
115     function _generarArchivo() // ~X2C
116     {
117         $s = serialize($this);
118         $fp = fopen(PRE_DIR.$this->_directorio.POST_DIR.MENU_SERIALIZADO,'w');
119         fputs($fp, $s);
120         fclose($fp);
121     }
122     // -X2C
123
124     // +X2C Operation 58
125     /**
126      * Funcion que se encarga de obtener el archivo con los datos del objeto para ser utilizado con la funcion EVAL.
127      *
128      * @param  string $directorio Nombre del directorio en donde se encuentra el sistema instalado
129      *
130      * @return string
131      *
132      * @access private
133      */
134     function _obtenerArchivo($directorio) // ~X2C
135     {
136         $s = implode("", @file(PRE_DIR.$directorio.POST_DIR.MENU_SERIALIZADO));
137         return unserialize($s);
138     }
139     // -X2C
140
141
142     // +X2C Operation 76
143     /**
144      * Funcion que obtiene el archivo de configuracion de secciones.
145      *
146      * @return array
147      *
148      * @access private
149      */
150     function _obtenerConfSecciones() // ~X2C
151     {
152         $archivo = include SISTEMA_CONF_SECCIONES;
153         return $archivo;
154     }
155     // -X2C
156
157     // +X2C Operation 82
158     /**
159      * Funcion que arma a partir de la configuracion de las secciones el array con los objetos seccion.
160      *
161      * @param  array $confSec Array con la informacion de las secciones
162      *
163      * @return void
164      *
165      * @access private
166      */
167     function _armarArraySecciones($confSec) // ~X2C
168     {
169         $linksel = $_SERVER['PHP_SELF'];
170         foreach ($confSec as $sec) {
171             $tmp = new Seccion ($sec, $this->_directorio);            
172             array_push($this->_componentes,$tmp->toHtml($linksel));
173         }
174     }
175     // -X2C
176
177
178     // +X2C Operation 126
179     /**
180      * Funcion que se encarga de serializar el array asociativo paginas-secciones. Se utilizara en la clase seccion para identificar a que seccion pertenece la pagina a la cual se quiere acceder.
181      *
182      * @return void
183      *
184      * @access private
185      */
186     function _serializarArraySecciones() // ~X2C
187     {
188         $secciones = include SISTEMA_CONF_SECCIONES;
189         $tmp = array();
190         foreach ($secciones as $sec) {
191             $tmp[$sec['link']] = $sec['nombre'];
192             if (array_key_exists('hijos',$sec)) {
193                 foreach ($sec['hijos'] as $hijo) {
194                     $tmp[$hijo['link']] = $sec['nombre'];                
195                     if (array_key_exists('hijos',$hijo)) {
196                         foreach ($hijo['hijos'] as $nieto) {
197                             $tmp[$nieto] = $hijo['link'];
198                         }
199                     }
200                 }
201             }            
202         }
203         $s = serialize($tmp);
204         $fp = fopen(PRE_DIR.$this->_directorio.POST_DIR.ARRAYSECCIONES_SERIALIZADO,'w');
205         fputs($fp, $s);
206         fclose($fp);
207     }
208     // -X2C
209
210
211     // +X2C Operation 134
212     /**
213      * Funcion que se encarga de agregar componentes al array
214      *
215      * @param  array $componente Datos del componente de menu a agregar
216      *
217      * @return void
218      *
219      * @access public
220      */
221     function agregarComponente($componente) // ~X2C
222     {
223         array_push($this->_componentes,$componente);
224     }
225     // -X2C
226
227
228     // +X2C Operation 143
229     /**
230      * Funcion que se encarga de devolver lo que se debe mostrar en pantalla
231      *
232      * @return string
233      *
234      * @access public
235      */
236     function toHtml() // ~X2C
237     {   
238         $tmp = $this->_tabla->toHtml();
239         return $tmp;
240     }
241     // -X2C
242
243
244 } // -X2C Class :Menu
245
246 ?>