source: admin/WebConsole/includes/comunes.php @ 3b5fb9d

Last change on this file since 3b5fb9d was 15a9c87, checked in by OpenGnSys Support Team <soporte-og@…>, 5 years ago

#942 add immediate commands on the queue (web)

Users can launch immediate commands on the queue to keep an history and
to watch the status and the properties.

This commit adapt this functionality to new functions and behaviour
of the ogAdmServer.

  • Property mode set to 100644
File size: 14.3 KB
Line 
1<?php
2        //________________________________________________________________________________________
3        //
4        //      Trocea en elementos de una matriz la cadena enviada como parametro separando por parametros
5        //      Parámetros:
6        //              - trama: La trama
7        //       Devuelve:
8        //              Una matriz con las parejas de parámertos "nombre=valor"
9        //________________________________________________________________________________________
10        function extrae_parametros($parametros,$chsep,$chval){
11                $ParametrosCadena=array();
12                $auxP=explode($chsep,$parametros);
13                for ($i=0;$i<sizeof($auxP);$i++){
14                        $dualparam=explode($chval,$auxP[$i]);
15
16                        if (isset($dualparam[0]) && isset($dualparam[1])){
17                                $streval='$ParametrosCadena["'.$dualparam[0].'"]="'.$dualparam[1].'";';
18                                eval($streval);
19                        }
20                }
21                return($ParametrosCadena);
22        }
23        //________________________________________________________________________________________
24        //
25        //      Trocea en elementos de una matriz la cadena enviada como parametro separando por parametros
26        //      y devolviendo el elegido
27        //      Parámetros:
28        //       Devuelve:
29        //________________________________________________________________________________________
30        function extrae_parametro($parametros,$chsep,$chval,$chr){
31                $ParametrosCadena="";
32                $auxP=explode($chsep,$parametros);
33                for ($i=0;$i<sizeof($auxP);$i++){
34                        $dualparam=explode($chval,$auxP[$i]);
35                        if (isset($dualparam[0]) && isset($dualparam[1])){
36                                if($dualparam[0]==$chr)
37                                        return($dualparam[1]);
38                        }
39                }
40                return("");
41        }
42        //________________________________________________________________________________________
43        //
44        //      Busca una cadena dentro de otra.
45        // Especificaciones:
46        //              Puede ser sensible a las  mayúsculas
47        // Parametros:
48        //              cadena; cadena donde se va a buscar
49        //              subcadena; cadena a buscar
50        //              swsensible; si es sensible o no a las mayúsculas y minúsculas
51        // Devuelve:
52        //              La posición de comienzo de la subcadena dentro de la cadena, o (-1) en caso de no estar dentro
53        //________________________________________________________________________________________
54        function EnCadena($cadena,$subcadena,$swsensible = false) {
55                $i=0;
56                while (strlen($cadena)>=$i) {
57                        unset($substring);
58                        if ($swsensible) {
59                                $subcadena=strtolower($subcadena);
60                                $cadena=strtolower($cadena);
61                        }
62                        $substring=substr($cadena,$i,strlen($subcadena));
63                        if ($substring==$subcadena) return$i;
64                        $i++;
65                }
66                return -1;
67         }
68        //_____________________________________________________________________________________________
69        // Búsqueda binaria o dicotómica en una tabla y devuelve el índice del elemento buscado tabla de una dimension
70        //_____________________________________________________________________________________________
71        function busca_indicebinario($dato,$tabla,$cont){
72                if (empty($tabla)) return(-1);
73                $a=0;
74                $b=$cont-1;
75                do{
76                        $p=round(($a+$b)/2,0);
77                        if ($tabla[$p]==$dato)
78                                return($p);
79                       
80                        else{
81                                        if ($tabla[$p]<$dato){
82                                                $a=$p+1;
83                                        }
84                                        else
85                                                $b=$p-1;
86                        }
87                }while($b>=$a);
88                return(-1);
89        }
90        //_____________________________________________________________________________________________
91        // Búsqueda binaria o dicotómica en una tabla y devuelve el índice del elemento buscado tabla de dos dimensiones
92        //_____________________________________________________________________________________________
93        function busca_indicebinariodual($dato,$tabla,$cont){
94                $a=0;
95                $b=$cont-1;
96                do{
97                        $p=round(($a+$b)/2,0);
98                        if ($tabla[$p][0]==$dato)
99                                return($p);
100                       
101                        else{
102                                        if ($tabla[$p][0]<$dato){
103                                                $a=$p+1;
104                                        }
105                                        else
106                                                $b=$p-1;
107                        }
108                }while($b>=$a);
109                return(-1);
110        }
111        //___________________________________________________________________________________
112        //
113        // Crea un Array con las especificaciones de los parámetros de los comandos
114        //___________________________________________________________________________________
115        function CreaTablaParametros($cmd)
116        {
117                $cmd->texto="SELECT * FROM parametros ORDER BY nemonico";
118                $rs=new Recordset;             
119                $rs->Comando=&$cmd;
120                if (!$rs->Abrir()) return(false); // Error al abrir recordset
121                $cont=0;
122                while (!$rs->EOF){
123                        $nemo=$rs->campos["nemonico"];
124                        $auxtabla_parametros=array();
125                        $auxtabla_parametros["nemonico"]=$nemo;
126                        $auxtabla_parametros["descripcion"]=$rs->campos["descripcion"];
127                        $auxtabla_parametros["nomidentificador"]=$rs->campos["nomidentificador"];
128                        $auxtabla_parametros["nomtabla"]=$rs->campos["nomtabla"];
129                        $auxtabla_parametros["nomliteral"]=$rs->campos["nomliteral"];
130                        $auxtabla_parametros["tipopa"]=$rs->campos["tipopa"];
131                        $auxtabla_parametros["visual"]=$rs->campos["visual"];
132                        $tabla_parametros[$nemo]=$auxtabla_parametros;
133                        $cont++;
134                        $rs->Siguiente();
135                }
136                return($tabla_parametros);
137        }
138        //___________________________________________________________________________________
139        //
140        // Crea una tabla en memoria con los valores reales de los parámetros enviados
141        //
142        //      Parámetros:
143        //              $cmd: Objeto comando (Operativo)
144        //              $parámetros: El formato de parámetros que viaje en las trama y que es el mismo
145        //              que se almacenan en las tablas de procedimientos_acciones o acciones
146        //___________________________________________________________________________________
147               
148        function ParametrosValor($cmd,$parametros,&$tbParametrosValor,$ch="\r")
149        {
150                global $tbParametros;
151                $html="";
152                $auxprm=explode($ch,$parametros);
153                for($i=0;$i<sizeof($auxprm);$i++){
154                        list($nemonico,$valor)=explode("=",$auxprm[$i]);
155                        if(isset($tbParametros[$nemonico])){
156                                if($tbParametros[$nemonico]["visual"]==1){
157                                        $tbParametrosValor[$nemonico]["descripcion"]=$tbParametros[$nemonico]["descripcion"];
158                                        switch($tbParametros[$nemonico]["tipopa"]){
159                                                case 0: // El valor lo toma directamente
160                                                        $tbParametrosValor[$nemonico]["valor"]=$valor;
161                                                        break;
162                                                case 1: // El valor lo toma de una tabla */
163                                                        $tbParametrosValor[$nemonico]["valor"]=TomaDato($cmd,0,$tbParametros[$nemonico]["nomtabla"],$valor,$tbParametros[$nemonico]["nomidentificador"],$tbParametros[$nemonico]["nomliteral"]);
164                                                        break;
165                                                case 2: // El parámetro es compuesto de otros parametros
166                                                        $blkprm=explode(chr(10),substr($auxprm[$i],4));
167                                                        for($j=0;$j<sizeof($blkprm);$j++){
168                                                                $tbSubParametrosValor=array();
169                                                                ParametrosValor($cmd,$blkprm[$j],$tbSubParametrosValor,chr(9));
170                                                                for($k=0;$k<sizeof($tbSubParametrosValor);$k++){
171                                                                        $elem=current($tbSubParametrosValor);
172                                                                        $tbParametrosValor[$nemonico][$j]["valor"].=$elem["descripcion"];                                                       
173                                                                        $tbParametrosValor[$nemonico][$j]["valor"].=": ".$elem["valor"];
174                                                                        $tbParametrosValor[$nemonico][$j]["valor"].=", ";
175                                                                        next($tbSubParametrosValor);                                                           
176                                                                }
177                                                        }
178                                                        break; 
179                                                case 3: // El valor lo toma de una array
180                                                        $tbcte=explode($tbParametros[$nemonico]["nomidentificador"],$tbParametros[$nemonico]["nomliteral"]);
181                                                        $tbParametrosValor[$nemonico]["valor"]=$tbcte[$valor];
182                                                        break;
183                                                case 4: // El valor lo toma directamente pero está codificado con urlencode
184                                                        $tbParametrosValor[$nemonico]["valor"]='<PRE>'.urldecode($valor).'</PRE>';
185                                                        break;
186                                                case 5: // El valor es 0 ó 1 y se muestra NO o SI
187                                                        $tbSN[0]="No";
188                                                        $tbSN[1]="Si";
189                                                        $tbParametrosValor[$nemonico]["valor"]=$tbSN[$valor];
190                                        }
191                                }
192                        }       
193                }
194        }
195        /*______________________________________________________________________
196                Redirecciona a la página de error
197                Parametros:
198                        - Literal del error
199        _______________________________________________________________________*/
200        function RedireccionaError($herror){
201
202                $urlerror=urldecode($herror);
203                $wurl="../seguridad/logerror.php?herror=".$urlerror;
204                Header('Location: '.$wurl);
205        }
206
207        /*______________________________________________________________________
208                Elimina de la cadena de parametros, el parametro iph ( que debe ser el ultimo)
209                Parametros:
210                        - cadena de parametros de un comando
211                Devuelve:
212                        - la cadena sin el parametro iph y su valor
213        _______________________________________________________________________*/
214        function Sin_iph($cadena){
215
216                $pos=EnCadena($cadena,"iph=") ;
217                if($pos==-1) return($cadena);
218                return(substr($cadena,0,$pos));
219        }
220        /*______________________________________________________________________
221                Elimina de la cadena de parametros, el parametro mac ( que debe ser el ultimo)
222                Parametros:
223                        - cadena de parametros de un comando
224                Devuelve:
225                        - la cadena sin el parametro iph y su valor
226        _______________________________________________________________________*/
227        function Sin_mac($cadena){
228
229                $pos=EnCadena($cadena,"mac=") ;
230                if($pos==-1) return($cadena);
231                return(substr($cadena,0,$pos));
232        }
233        /*______________________________________________________________________
234                Formatea un campo númerico con los puntos de las unidades de millar
235                Parametros:
236                        - cadena con el valor del campo
237                Devuelve:
238                        - la cadena con los puntos de los miles
239        ________________________________________________________________________*/
240        function formatomiles($cadena){
241                $len=strlen($cadena);
242                $cadenafinal="";
243                $m=1;
244                for($i=$len-1;$i>=0;$i--){
245                        $cadenafinal=substr($cadena,$i,1).$cadenafinal;
246                        if($m%3==0 && $i>0){
247                                        $cadenafinal=".".$cadenafinal;
248                                        $m=0;
249                        }
250                        $m++;
251                }
252                return($cadenafinal);
253        }
254        /*______________________________________________________________________
255                Devuelve la url de la imagen y la descripción de un ámbito
256                Parametros:
257                        - ambito: Identificador del ambito
258                        - urlimg: Por referencia. Es donde se devuelve la url de la imagen     
259                        - textambito: Por referencia. Es donde se devuelve la descripción
260                       
261                Devuelve:
262                        - Los dos parámetros pasados por referencia
263        ________________________________________________________________________*/
264        function tomaAmbito($ambito,&$urlimg,&$textambito)
265        {
266                global $AMBITO_CENTROS;
267                global $AMBITO_GRUPOSAULAS;
268                global $AMBITO_AULAS;
269                global $AMBITO_GRUPOSORDENADORES;
270                global $AMBITO_ORDENADORES;
271
272                switch($ambito){
273                        case $AMBITO_CENTROS :
274                                $urlimg='../images/iconos/centros.gif';
275                                $textambito="Centros";
276                                break;
277                        case $AMBITO_GRUPOSAULAS :
278                                $urlimg='../images/iconos/carpeta.gif';
279                                $textambito="Grupos de aulas";
280                                break;
281                        case $AMBITO_AULAS :
282                                $urlimg='../images/iconos/aula.gif';
283                                $textambito="Aulas";
284                                break; 
285                        case $AMBITO_GRUPOSORDENADORES :
286                                $urlimg='../images/iconos/carpeta.gif';
287                                $textambito="Grupos de ordenadores";
288                                break;
289                        case $AMBITO_ORDENADORES :
290                                $urlimg='../images/iconos/ordenador.gif';
291                                $textambito="Ordenadores";
292                                break;
293                        default:
294                                $urlimg='../images/iconos/ordenador.gif';
295                                $textambito="Ordenadores";
296                                break;                 
297                }       
298        }
299        /*______________________________________________________________________
300       
301                Devuelve la descripción de un ambito
302                Parametros:
303                        - cmd: Objeto comando (Operativo)
304                        - ambito: tipo de ambito
305                        - idambito: Identificador del ambito
306                        - textambito: Por referencia. Es donde se devuelve la descripción
307                       
308                Devuelve:
309                        - Los dos parámetros pasados por referencia
310        ________________________________________________________________________*/
311       
312        function tomaDescriAmbito($cmd,$ambito,$idambito,&$textambito)
313        {
314                global $AMBITO_CENTROS;
315                global $AMBITO_GRUPOSAULAS;
316                global $AMBITO_AULAS;
317                global $AMBITO_GRUPOSORDENADORES;
318                global $AMBITO_ORDENADORES;
319
320                        switch($ambito){
321                                case $AMBITO_CENTROS :
322                                        $textambito=TomaDato($cmd,0,'centros',$idambito,'idcentro','nombrecentro');
323                                        break;
324                                case $AMBITO_GRUPOSAULAS :
325                                        $textambito=TomaDato($cmd,0,'grupos',$idambito,'idgrupo','nombregrupo');
326                                        break;
327                                case $AMBITO_AULAS :
328                                        $textambito=TomaDato($cmd,0,'aulas',$idambito,'idaula','nombreaula');
329                                        break;
330                                case $AMBITO_GRUPOSORDENADORES :
331                                        $textambito=TomaDato($cmd,0,'gruposordenadores',$idambito,'idgrupo','nombregrupoordenador');
332                                        break;
333                                case $AMBITO_ORDENADORES :
334                                        $textambito=TomaDato($cmd,0,'ordenadores',$idambito,'idordenador','nombreordenador');
335                                        break;
336                                default:       
337                                        $textambito="";
338                        }
339        }
340        /*______________________________________________________________________
341       
342                Devuelve el código html de una etiqueta SELECT para un ámbito concreto
343                Parametros:
344                        - cmd: Objeto comando (Operativo)
345                        - ambito: tipo de ambito
346                        - idambito: Identificador del ambito
347                        - $idcentro: Centro donde pertenecen o 0 para todos
348                        - $wdth: Ancho del desplegable
349                Devuelve:
350                        - Los dos parámetros pasados por referencia
351        ________________________________________________________________________*/
352       
353        function tomaSelectAmbito($cmd,$ambito,$idambito,$idcentro,$wdth)
354        {
355                global $AMBITO_CENTROS;
356                global $AMBITO_GRUPOSAULAS;
357                global $AMBITO_AULAS;
358                global $AMBITO_GRUPOSORDENADORES;
359                global $AMBITO_ORDENADORES;
360               
361                switch($ambito){
362                        case $AMBITO_CENTROS :
363                                $selecHtml=HTMLSELECT($cmd,1,'centros',$idcentro,'idcentro','nombrecentro',$wdth);
364                                break;
365                        case $AMBITO_GRUPOSAULAS :
366                                $selecHtml=HTMLSELECT($cmd,$idcentro,'grupos',$idambito,'idgrupo','nombregrupo',$wdth,"","","tipo=".$AMBITO_GRUPOSAULAS);
367                                break;
368                        case $AMBITO_AULAS :
369                                $selecHtml=HTMLSELECT($cmd,$idcentro,'aulas',$idambito,'idaula','nombreaula',$wdth);
370                                break;
371                        case $AMBITO_GRUPOSORDENADORES :
372                                $selecHtml=HTMLSELECT($cmd,0,'gruposordenadores',$idambito,'idgrupo','nombregrupoordenador',$wdth);
373                                break;
374                        case $AMBITO_ORDENADORES :
375                                $clsWhere=" idaula IN (SELECT idaula FROM aulas WHERE idcentro=".$idcentro.")";
376                                $selecHtml=HTMLSELECT($cmd,0,'ordenadores',$idambito,'idordenador','nombreordenador',$wdth,"","",$clsWhere);
377                                break;
378                        default:       
379                                $selecHtml="";                                 
380                }
381                return($selecHtml);     
382        }
383
384        /*
385         * Devuelve el valor legible para un tamaño (en múltiplos de 1024).
386         * Nota: obtenido de la documentación de PHP (php.net).
387         * Parámetros:
388         *      bytes - tamaño en bytes (entero)
389         * Devielve:
390         *      cadena con número en formato de sistema internacional (2 decimales)
391         */
392        function humanSize($bytes) {
393                $si_prefix = array( 'B', 'KB', 'MB', 'GB', 'TB', 'EB', 'ZB', 'YB' );
394                $base = 1024;
395                $class = min((int)log($bytes , $base) , count($si_prefix) - 1);
396                if ($class < 0) {
397                        return '0 B';
398                } else {
399                        return sprintf('%1.2f' , $bytes / pow($base, $class)) . ' ' . $si_prefix[$class];
400                }
401        }
402
403        function now_params()
404        {
405                $year = intval(date('Y')) - 2010;
406                $month = intval(date('m')) - 1;
407                $day = intval(date('j')) - 1;
408                $hour = intval(date('g'));
409                $am_pm = date('a');
410                $minute = intval(date('i'));
411
412                $params['map_year'] = 1 << $year;
413                $params['map_month'] = 1 << $month;
414                $params['map_day'] = 1 << $day;
415                $params['map_hour'] = 1 << $hour;
416                $params['map_am_pm'] = strcmp($am_pm, 'am') ? 1 : 0;
417                $params['map_minute'] = $minute;
418
419                return $params;
420        }
Note: See TracBrowser for help on using the repository browser.