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