]> git.llucax.com Git - mecon/meconlib.git/blob - marco/php/marco/Menu.php
0276df399b74b9aebbb0287401bc339979f9c167
[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 'include/lib/HTML/Table.php';
29
30 define ('PRE_DIR' ,'/var/www/intranet/www/sistemas/');
31 define ('POST_DIR','/conf/MenuSerializado');
32
33 // +X2C Class 14 :Menu
34 /**
35  * Clase para el manejo de los menues y secciones de los sistemas.
36  *
37  * @access public
38  */
39 class Menu {
40     /**
41      * Array de secciones. Contiene la informacion de las secciones del sistema.
42      *
43      * @var    array(seccion) $secciones
44      *
45      * @access private
46      */
47     var $_secciones;
48
49     /**
50      * Nombre del directorio en donde se encuentra el sistema;.
51      *
52      * @var    string $directorio
53      *
54      * @access private
55      */
56     var $_directorio;
57
58     /**
59      * Nombre del menu
60      *
61      * @var    string $nombre
62      *
63      * @access private
64      */
65     var $_nombre;
66
67     /**
68      * Link del menu.
69      *
70      * @var    string $link
71      *
72      * @access private
73      */
74     var $_link;
75
76     /**
77      * Valor del colspan necesario para poder armar la pagina
78      *
79      * @var    int $colspan
80      *
81      * @access private
82      */
83     var $_colspan;
84
85     /**
86      * Nombre de la imagen del menu
87      *
88      * @var    string $imagen
89      *
90      * @access private
91      */
92     var $_imagen;
93
94     /**
95      * Contiene el objeto seccion seleccionada
96      *
97      * @var    Seccion $seccionSelect
98      *
99      * @access private
100      */
101     var $_seccionSelect;
102
103     // ~X2C
104
105     // +X2C Operation 56
106     /**
107      * Constructor. Recibe como parametro el directorio en donde se encuentra el sistema.
108      *
109      * @param  string $directorio Nombre del directorio en donde se encuentra el sistema.
110      *
111      * @return void
112      *
113      * @access public
114      */
115     function Menu($directorio = null) // ~X2C
116     {
117         if (!is_null($directorio)) {
118 //        if (file_exists(PRE_DIR.$directorio.POST_DIR)) {
119           //ESTA SERIALIZADO EL OBJETO
120 //           $this = $this->_obtenerArchivo($directorio); 
121 //        }
122 //        else {
123          //NO ESTA SERIALIZADO EL OBJETO
124             $this->_directorio = $directorio;
125             $this->_armarArraySecciones($this->_obtenerConfSecciones());                
126             $this->_generarArchivo();
127 //       }
128         }
129  
130     }
131     // -X2C
132
133     // +X2C Operation 57
134     /**
135      * Funcion que se encarga de generar el archivo que despues sera utilizado con la funcion EVAL.
136      *
137      * @return void
138      *
139      * @access private
140      */
141     function _generarArchivo() // ~X2C
142     {
143         $s = serialize($this);
144         $fp = fopen(PRE_DIR.$this->_directorio.POST_DIR,'w');
145         fputs($fp, $s);
146         fclose($fp);
147     }
148     // -X2C
149
150     // +X2C Operation 58
151     /**
152      * Funcion que se encarga de obtener el archivo con los datos del objeto para ser utilizado con la funcion EVAL.
153      *
154      * @param  string $directorio Nombre del directorio en donde se encuentra el sistema instalado
155      *
156      * @return string
157      *
158      * @access private
159      */
160     function _obtenerArchivo($directorio) // ~X2C
161     {
162         $s = implode("", @file(PRE_DIR.$directorio.POST_DIR));
163         return unserialize($s);
164     }
165     // -X2C
166
167     // +X2C Operation 59
168     /**
169      * Funcion que devuelve un string en html con lo que hay que imprimir en pantalla.
170      *
171      * @return string
172      *
173      * @access public
174      */
175     function toHtml() // ~X2C
176     {
177         trigger_error('Not implemented!', E_USER_WARNING);
178     }
179     // -X2C
180
181     // +X2C Operation 76
182     /**
183      * Funcion que obtiene el archivo de configuracion de secciones.
184      *
185      * @return array
186      *
187      * @access private
188      */
189     function _obtenerConfSecciones() // ~X2C
190     {
191         $archivo = include 'confSecciones.php';
192         return $archivo;
193     }
194     // -X2C
195
196     // +X2C Operation 82
197     /**
198      * Funcion que arma a partir de la configuracion de las secciones el array con los objetos seccion.
199      *
200      * @param  array $confSec Array con la informacion de las secciones
201      *
202      * @return void
203      *
204      * @access private
205      */
206     function _armarArraySecciones($confSec) // ~X2C
207     {
208         $link_tmp = basename($_SERVER['PHP_SELF']); //Obtengo en link al cual se quiere acceder
209         
210         $this->_secciones = array (); 
211         foreach ($confSec as $sec) {
212             $tmp = new Seccion ($sec, $link_tmp);
213             array_push($this->_secciones,$tmp);
214             
215             if ($tmp->link() ==  $link_tmp) {
216                 $this->_seccionSelect = $tmp;
217             }
218             
219         }
220     }
221     // -X2C
222
223     // +X2C Operation 87
224     /**
225      * Funcion que devuelve un string en html de las secciones con lo que hay que imprimir en pantalla.
226      *
227      * @return string
228      *
229      * @access public
230      */
231     function toHtmlSecciones() // ~X2C
232     {
233         $row = array();
234         foreach ($this->_secciones as $sec) {
235             array_push($row,$sec->toHtml());
236         }
237         $TABLA = new HTML_Table('width="760" align="center" bgcolor="#CCCCCC" cellspacing="0"');
238         $TABLA->addRow($row,'align="center" bgcolor="#CCCCCC"');
239         return $TABLA;
240     }
241     // -X2C
242
243
244
245
246     // +X2C Operation 114
247     /**
248      * Funcion que devuelve la seccion que se selecciono
249      *
250      * @return Seccion
251      *
252      * @access public
253      */
254     function darSecSel() // ~X2C
255     {
256         return $this->_seccionSelect;
257     }
258     // -X2C
259
260
261 } // -X2C Class :Menu
262
263 ?>