]> git.llucax.com Git - mecon/meconlib.git/blob - lib/Marco/Menu.php
Se cambia a la nueva estructura de directorios a Marco.
[mecon/meconlib.git] / lib / 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     /**
72      * Variable que contiene el titulo de la seccion seleccionada
73      *
74      * @var    string $titulo
75      *
76      * @access private
77      */
78     var $_titulo;
79
80     /**
81      * Array con los objetos seccion.
82      *
83      * @var    array $secciones
84      *
85      * @access private
86      */
87     var $_secciones;
88
89     /**
90      *
91      * @var    string $componentesVertical
92      *
93      * @access private
94      */
95     var $_componentesVertical;
96
97     // ~X2C
98
99     // +X2C Operation 56
100     /**
101      * Constructor. Recibe como parametro el directorio en donde se encuentra el sistema.
102      *
103      * @param  string $directorio Nombre del directorio en donde se encuentra el sistema.
104      *
105      * @return void
106      *
107      * @access public
108      */
109     function Menu($directorio = null) // ~X2C
110     {
111         $this->_componentes = array (); //Inicializo vacio el array de componentes del menu
112         $this->_componentesVertical = array (); //Inicializo vacio el array de componentes del menu
113         $this->_secciones = array (); //Inicializo vacio el array de los objetos secciones
114         $this->_tabla = new HTML_Table('width=760 align="center" bgcolor="#FFFFFF" cellspacing="0" cellpadding="0" border="0"');
115         $this->_directorio = $directorio;
116     }
117     // -X2C
118
119     // +X2C Operation 57
120     /**
121      * Funcion que se encarga de generar el archivo que despues sera utilizado con la funcion EVAL.
122      *
123      * @return void
124      *
125      * @access private
126      */
127     function _generarArchivo() // ~X2C
128     {
129         $s = serialize($this);
130         $fp = fopen(PRE_DIR.$this->_directorio.POST_DIR.MENU_SERIALIZADO,'w');
131         fputs($fp, $s);
132         fclose($fp);
133     }
134     // -X2C
135
136     // +X2C Operation 58
137     /**
138      * Funcion que se encarga de obtener el archivo con los datos del objeto para ser utilizado con la funcion EVAL.
139      *
140      * @param  string $directorio Nombre del directorio en donde se encuentra el sistema instalado
141      *
142      * @return string
143      *
144      * @access private
145      */
146     function _obtenerArchivo($directorio) // ~X2C
147     {
148         $s = implode("", @file(PRE_DIR.$directorio.POST_DIR.MENU_SERIALIZADO));
149         return unserialize($s);
150     }
151     // -X2C
152
153
154     // +X2C Operation 76
155     /**
156      * Funcion que obtiene el archivo de configuracion de secciones.
157      *
158      * @return array
159      *
160      * @access private
161      */
162     function _obtenerConfSecciones() // ~X2C
163     {
164         $archivo = include SISTEMA_CONF_SECCIONES;
165         return $archivo;
166     }
167     // -X2C
168
169     // +X2C Operation 82
170     /**
171      * Funcion que arma a partir de la configuracion de las secciones el array con los objetos seccion.
172      *
173      * @param  array $confSec Array con la informacion de las secciones
174      *
175      * @return void
176      *
177      * @access private
178      */
179     function _armarArraySecciones($confSec) // ~X2C
180     {
181         $linksel = $_SERVER['PHP_SELF'];
182         $ultimo = 0;
183         $cuenta = count ($confSec);
184         $i = 1;
185         foreach ($confSec as $sec) {
186             $tmp = new Seccion ($sec, $this->_directorio);         
187             array_push($this->_componentes,$tmp->toHtml($linksel));
188             if ($cuenta == $i) {
189                 $ultimo = 1;
190             }
191             array_push($this->_componentesVertical, $tmp->toHtmlVertical($linksel,$ultimo));
192             $i++;
193             array_push($this->_secciones,$tmp);
194         }
195     }
196     // -X2C
197
198
199     // +X2C Operation 126
200     /**
201      * 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.
202      *
203      * @return void
204      *
205      * @access private
206      */
207     function _serializarArraySecciones() // ~X2C
208     {
209         $secciones = include SISTEMA_CONF_SECCIONES;
210         $tmp  = array();
211         $tmp2 = array();
212         
213         $PATH = '/www/sistemas/'.$this->_directorio.'/www/';
214        
215         foreach ($secciones as $sec) { //Chequeo las secciones
216             $tmp[$sec['nombre']] = array ($PATH.$sec['link']);
217             if (array_key_exists('hijos',$sec)) {
218                 foreach ($sec['hijos'] as $hijo) { //Chequeo las subsecciones            
219                     array_push($tmp[$sec['nombre']],$PATH.$hijo['link']);
220                     $tmp2[$hijo['nombre']] = array ($PATH.$hijo['link']);
221                     if (array_key_exists('subhijos',$hijo)) {
222                         foreach ($hijo['subhijos'] as $subhijo) { //Chequeo las subsubsecciones
223                             array_push($tmp[$sec['nombre']],$PATH.$subhijo);
224                             array_push($tmp2[$hijo['nombre']],$PATH.$subhijo);
225                         }
226                     }
227                 }
228             }
229         }
230         $tmp = array_merge($tmp,$tmp2);
231         $s = serialize($tmp);
232         $fp = fopen(PRE_DIR.$this->_directorio.POST_DIR.ARRAYSECCIONES_SERIALIZADO,'w');
233         fputs($fp, $s);
234         fclose($fp);
235     }
236     // -X2C
237
238
239     // +X2C Operation 134
240     /**
241      * Funcion que se encarga de agregar componentes al array
242      *
243      * @param  array $componente Datos del componente de menu a agregar
244      *
245      * @return void
246      *
247      * @access public
248      */
249     function agregarComponente($componente) // ~X2C
250     {
251         array_push($this->_componentes,$componente);
252     }
253     // -X2C
254
255
256     // +X2C Operation 143
257     /**
258      * Funcion que se encarga de devolver lo que se debe mostrar en pantalla
259      *
260      * @return string
261      *
262      * @access public
263      */
264     function toHtml() // ~X2C
265     {   
266         return $this->_tabla->toHtml();
267     }
268     // -X2C
269
270
271     // +X2C Operation 151
272     /**
273      * Devuelve el html del menu que hay que mostrar en pantalla
274      *
275      * @return string
276      *
277      * @access public
278      */
279     function menuToHtml() // ~X2C
280     {
281         return $this->_menuHtml;
282     }
283     // -X2C
284
285 } // -X2C Class :Menu
286
287 ?>