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