source: admin/WebConsole/includes/ConfiguracionesParticiones.php @ 7caf5a7c

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since 7caf5a7c was 3ec149c, checked in by alonso <alonso@…>, 15 years ago

git-svn-id: https://opengnsys.es/svn/trunk@1314 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100644
File size: 26.5 KB
Line 
1<?php
2/*________________________________________________________________________________________________________
3        La clave de configuración está formada por una serie de valores separados por ";"
4                Ejemplo:1;7;30000000;3;3;0;11
5               
6                Parámetros:
7                        1) Número de partición
8                        2) Código de la partición
9                        3) Tamaño
10                        4) Identificador del sistema de ficheros instalado en la partición
11                        5) Identificador del nombre del sistema operativo instalado en la partición
12                        6) Identificador de la imagen restaurada en la partición
13                        7) Identificador del perfil software que contiene el S.O. instalado en la partición
14                       
15                Además de este campo, la consulta almacena la descripción de los identificadores que forman parte
16                 de esta clave compuesta de manera que el tiempo de acceso para recuperlarlos sean corto
17                 ya que están en memoria y no en tablas.
18                 
19                En el ejempo anterior podríamos tener datos     
20                        1        NTFS   30000000        Windows NTFS    Windows XP profesional          NULL    Perfil Software (CUR-8, Part:1)
21                Que indica:
22                        1) Número de partición
23                        2) Código de la partición
24                        3) Tamaño
25                        4) Descripción del sistema de ficheros instalado en la partición
26                        5) Descripción del nombre del sistema operativo instalado en la partición
27                        6) Descripción de la imagen restaurada en la partición
28                        7) Descripción del perfil software que contiene el S.O. instalado en la partición
29                       
30                        Estos datos se guardan en la misma tabla de claves que será una matriz asociativa.
31                       
32                        Parámetros de la función:
33                                $cmd: Objeto comando (Operativo)
34                                $idambito: Identificador del ámbito (identificador del Aula, grupo de ordenador u ordenador)                   
35                                $ambito: Tipo de ambito (Aulas, grupos de ordenadores u ordenadores)
36                                $sws: Switchs que indican el nivel de agrupamiento de los ordenadores para ser tratados
37                                                        Se trata de un octeto de manera que si tiene un "1" en la posición determinada
38                                                        indica que se requiere desplegar por ese parámetro:
39                                                                00000001- No agrupar por Sistema de ficheros
40                                                                00000010- No agrupar por Nombre de sistema Operativo
41                                                                00000100- No agrupar por Tamaño de partición
42                                                                00001000- No agrupar por Imagen instalada
43                                                                00010000- No agrupar por Perfil software contenido
44                                $swr: Indica  si se se tiene en cuenta las particiones no clonables (si:true o no:false)       
45________________________________________________________________________________________________________*/
46function cargaCaves($cmd,$idambito,$ambito,$sws,$swr)
47{
48        global $tbKeys; // Tabla contenedora de claves de configuración
49        global $conKeys; // Contador de claves de configuración
50        global $AMBITO_AULAS;
51        global $AMBITO_GRUPOSORDENADORES;
52        global $AMBITO_ORDENADORES;
53       
54        global $msk_sysFi;
55        global $msk_nombreSO;
56        global $msk_tamano;
57        global $msk_imagen;
58        global $msk_perfil;     
59                               
60        $cmd->texto="SELECT                     
61                                concat_WS( ';',
62                                                        ordenadores_particiones.numpar, ";
63                                                       
64        if($sws & $msk_tamano)                                         
65                $cmd->texto.="  ordenadores_particiones.tamano,";
66       
67
68        if($sws & $msk_sysFi)                                           
69                $cmd->texto.="  ordenadores_particiones.idsistemafichero, ";   
70               
71        if($sws & $msk_nombreSO)                                               
72                $cmd->texto.="  ordenadores_particiones.idnombreso, ";                                                         
73                                                       
74        if($sws & $msk_imagen)                                         
75                $cmd->texto.="  ordenadores_particiones.idimagen, ";   
76               
77        if($sws & $msk_perfil)                                         
78                $cmd->texto.="  ordenadores_particiones.idperfilsoft, ";                                                                               
79
80        $cmd->texto.=" ordenadores_particiones.codpar) as configuracion,       
81                                ordenadores_particiones.numpar ,
82                                ordenadores_particiones.codpar ,                               
83                                tipospar.tipopar,
84                                tipospar.clonable,
85                                ordenadores_particiones.tamano,
86                                sistemasficheros.descripcion as sistemafichero,
87                                ordenadores_particiones.idnombreso,
88                                nombresos.nombreso,
89                                imagenes.idimagen,
90                                imagenes.descripcion as imagen,
91                                imagenes.nombreca as nombreca,                         
92                                imagenes.idrepositorio as repositorio,                         
93                                ordenadores_particiones.idperfilsoft,
94                                perfilessoft.descripcion as perfilsoft
95
96                                FROM ordenadores
97                                        INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
98                                        LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso
99                                        INNER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar
100                                        LEFT OUTER JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen
101                                        LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft
102                                        LEFT OUTER JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero";
103                                       
104        switch($ambito){
105                        case $AMBITO_AULAS :
106                                        $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula
107                                                                                                        WHERE aulas.idaula =".$idambito;
108                                        break;
109                        case $AMBITO_GRUPOSORDENADORES :
110                                        $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
111                                                                                                        WHERE gruposordenadores.idgrupo =".$idambito;
112                                        break;
113                        case $AMBITO_ORDENADORES :
114                                        $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito;
115                                break;
116        }               
117        if($swr) // Si se trata de restauración no se tiene en cuenta las partciones no clonables
118                $cmd->texto.=" AND tipospar.clonable=1 ";
119                                       
120        $cmd->texto.=" GROUP by configuracion";
121        //echo "carga claves:".$cmd->texto;
122        $rs=new Recordset;
123        $rs->Comando=&$cmd;
124        if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset
125        $rs->Primero();
126        $idx=0;
127        //echo $cmd->texto;
128        while (!$rs->EOF){
129                        $tbKeys[$idx]["cfg"]=$rs->campos["configuracion"];
130                        $tbKeys[$idx]["numpar"]=$rs->campos["numpar"];
131                        $tbKeys[$idx]["codpar"]=$rs->campos["codpar"];                 
132                        $tbKeys[$idx]["tipopar"]=$rs->campos["tipopar"];
133                        $tbKeys[$idx]["clonable"]=$rs->campos["clonable"];                     
134                        $tbKeys[$idx]["tamano"]=$rs->campos["tamano"];
135                        $tbKeys[$idx]["sistemafichero"]=$rs->campos["sistemafichero"];
136                        $tbKeys[$idx]["idnombreso"]=$rs->campos["idnombreso"];
137                        $tbKeys[$idx]["nombreso"]=$rs->campos["nombreso"];                     
138                        $tbKeys[$idx]["idimagen"]=$rs->campos["idimagen"];
139                        $tbKeys[$idx]["imagen"]=$rs->campos["imagen"];
140                        $tbKeys[$idx]["nombreca"]=$rs->campos["nombreca"];
141                        $tbKeys[$idx]["repositorio"]=$rs->campos["repositorio"];
142                        $tbKeys[$idx]["idperfilsoft"]=$rs->campos["idperfilsoft"];
143                        $tbKeys[$idx]["perfilsoft"]=$rs->campos["perfilsoft"];                 
144                        $idx++;
145                $rs->Siguiente();
146        }
147        $conKeys=$idx; // Guarda contador
148        $rs->Cerrar();
149}
150/*________________________________________________________________________________________________________
151                        Dibuja la tabla de configuración de las particiones de un grupo de ordenadores
152                       
153                        Parámetros de la función:
154                                $cmd: Objeto comando (Operativo)
155                                $idambito: Identificador del ámbito (identificador del Aula, grupo de ordenador u ordenador)                   
156                                $ambito: Tipo de ambito (Aulas, grupos de ordenadores u ordenadores)
157                                $sws: Switchs que indican el nivel de agrupamiento (ver comentarios de la función(cargaCaves)
158                                $swr: Indica  si se se tiene en cuenta las particiones no clonables (true:sólo conables , false:todas)
159                               
160                        Especificaciones:
161                                Esta función llama a pintaParticiones() que es realmente la encargada de mostrar o bien la
162                                configuración de los ordenadores o la pantalla de los comandos "Configurar" o "RestaurarImagen"
163                                para permitir introducir los    datos necesarios.               
164________________________________________________________________________________________________________*/
165function pintaConfiguraciones($cmd,$idambito,$ambito,$colums,$sws,$swr)
166{
167        global $AMBITO_AULAS;
168        global $AMBITO_GRUPOSORDENADORES;
169        global $AMBITO_ORDENADORES;
170
171        global $msk_sysFi;
172        global $msk_nombreSO;
173        global $msk_tamano;
174        global $msk_imagen;
175        global $msk_perfil;     
176               
177        cargaCaves($cmd,$idambito,$ambito,$sws,$swr);
178        cargaSistemasFicheros($cmd,$idambito,$ambito);
179        cargaPerfiles($cmd,$idambito,$ambito);
180        cargaImagenes($cmd,$idambito,$ambito);
181        cargaNombresSO($cmd,$idambito,$ambito);
182        cargaTamano($cmd,$idambito,$ambito);
183       
184        $cmd->texto="SELECT
185                                                        count(*) as con,
186                                                        group_concat(cast( temp2.idordenador AS char( 11 ) )  ORDER BY temp2.idordenador SEPARATOR ',' ) AS idordenadores,
187                                                        temp2.configuraciones
188                                                        FROM
189                                                        (SELECT
190                                                                temp1.idordenador as idordenador,
191                                                                group_concat(cast( temp1.configuracion AS char( 250) )  ORDER BY temp1.configuracion SEPARATOR '@' ) AS configuraciones
192                                                                FROM
193                                                                (SELECT ordenadores_particiones.idordenador,
194                                                                                        ordenadores_particiones.numpar,
195                                                                                        concat_WS( ';',
196                                                                                                                        ordenadores_particiones.numpar, ";
197                                                                                                                       
198        if($sws & $msk_tamano)                                         
199                $cmd->texto.="  ordenadores_particiones.tamano,";
200                               
201        if($sws & $msk_sysFi)                                           
202                $cmd->texto.="  ordenadores_particiones.idsistemafichero, ";   
203               
204        if($sws & $msk_nombreSO)                                               
205                $cmd->texto.="  ordenadores_particiones.idnombreso, ";                                                         
206                                                       
207        if($sws & $msk_imagen)                                         
208                $cmd->texto.="  ordenadores_particiones.idimagen, ";   
209               
210        if($sws & $msk_perfil)                                         
211                $cmd->texto.="  ordenadores_particiones.idperfilsoft, ";                                                                                                                               
212                       
213        $cmd->texto.=" ordenadores_particiones.codpar) as configuracion
214                                                                                        FROM ordenadores
215                                                                                                                INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
216                                                                                                                LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso
217                                                                                                                INNER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar
218                                                                                                                LEFT OUTER JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen
219                                                                                                                LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft
220                                                                                                                LEFT OUTER JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero";
221                                                                                                               
222        switch($ambito){
223                case $AMBITO_AULAS :
224                                $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula
225                                                                                                WHERE aulas.idaula =".$idambito;
226                break;
227                case $AMBITO_GRUPOSORDENADORES :
228                                        $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
229                                                                                                        WHERE gruposordenadores.idgrupo =".$idambito;
230                        break;
231                case $AMBITO_ORDENADORES :
232                                $cmd->texto.=" WHERE ordenadores.idordenador=".$idambito;
233                        break;
234        }                                                                                                                       
235        if($swr) // Si se trata de restauración no se tiene en cuenta las particiones no clonables
236                $cmd->texto.=" AND tipospar.clonable=1 ";
237       
238        $cmd->texto.=" ORDER BY ordenadores_particiones.idordenador,ordenadores_particiones.numpar) as temp1
239                                        GROUP BY temp1.idordenador) as temp2
240                                        GROUP BY temp2.configuraciones
241                                        ORDER BY con desc,idordenadores";
242                                                               
243        //echo  $cmd->texto;
244        $rs=new Recordset;
245        $rs->Comando=&$cmd;
246        if (!$rs->Abrir()) return; // Error al abrir recordset
247        $rs->Primero();
248        $cc=0; // Contador de configuraciones
249        echo '<TABLE  id="tabla_conf" width="95%" class="tabla_listados_sin" align=center border=0 cellPadding=0 cellSpacing=1>';
250        while (!$rs->EOF){
251                $cc++;
252                //Muestra ordenadores
253                echo '<TR><TD colspan='.$colums.' style="BACKGROUND-COLOR: #FFFFFF;">';
254                echo pintaOrdenadores($cmd,$rs->campos["idordenadores"],10,$cc);
255                echo '</TD></TR>';
256                //Muestra particiones y configuración
257
258                echo pintaParticiones($cmd,$rs->campos["configuraciones"],$rs->campos["idordenadores"],$cc);
259                $rs->Siguiente();
260        }
261        echo "</TABLE>";
262        $rs->Cerrar();
263}
264//________________________________________________________________________________________________________
265//      Descripción:
266//              Muestra una taba html con el icono de ordenadores
267//      Parametros:
268//              $cmd: Objeto comando (operativo)               
269//              $idordenadores: Cadena con los identificadores de los ordenadores separados por ","
270//              $maxcontor: Número máximo de ordenadores por fila
271//              $cc: Identificador del bloque de configuración
272//________________________________________________________________________________________________________
273function pintaOrdenadores($cmd,$idordenadores,$maxcontor,$cc)
274{
275        $tablaHtml.="";
276        $contor=0;
277        $maxcontor=10; // Número máximo de prodenadores por fila
278        $cmd->texto=" SELECT idordenador,nombreordenador,ip FROM ordenadores WHERE  idordenador in (".$idordenadores." ) ORDER BY nombreordenador";
279        $rs=new Recordset;
280        $rs->Comando=&$cmd;
281        if (!$rs->Abrir()) return(""); // Error al abrir recordset
282        $tablaHtml.='<TABLE align=left border="0" id="tbOrd_'.$cc.'" value="'.$idordenadores.'"><TR>';
283        while (!$rs->EOF){
284                $contor++;
285                $tablaHtml.= '<TD align=center  style="BACKGROUND-COLOR: #FFFFFF;">
286                                                                        <IMG src="../images/iconos/ordenador.gif" >
287                                                                        <br><span style="FONT-SIZE:9px; COLOR: #4f4f4f;" >'.$rs->campos["nombreordenador"].'</span>
288                                                                </TD>';
289                if($contor>$maxcontor){
290                        $contor=0;
291                        $tablaHtml.='</TR><TR>';
292                }
293                $rs->Siguiente();
294        }
295        $tablaHtml.='</TR>';
296        $tablaHtml.= '</TABLE>';
297        return($tablaHtml);
298}
299/*________________________________________________________________________________________________________
300       
301        Selecciona los ordenadores que tienen el mismo sistema de ficheros del ámbito elegido
302________________________________________________________________________________________________________*/
303function cargaSistemasFicheros($cmd,$idambito,$ambito)
304{
305        global $tbSysFi; // Tabla contenedora de ordenadores incluidos en la consulta
306        global $conSysFi; // Contador de elementos anteriores
307        global $AMBITO_AULAS;
308        global $AMBITO_GRUPOSORDENADORES;
309        global $AMBITO_ORDENADORES;
310       
311        $cmd->texto="SELECT count(*) as con,ordenadores_particiones.idsistemafichero,ordenadores_particiones.numpar,
312                                                                                        sistemasficheros.descripcion as sistemafichero,
313                                                                                        group_concat(cast(ordenadores_particiones.idordenador AS char( 11) )
314                                                                                         ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
315                                                        FROM    ordenadores
316                                                        INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
317                                                        INNER JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero";
318
319        switch($ambito){
320                case $AMBITO_AULAS :
321                                $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula
322                                                                                                WHERE aulas.idaula =".$idambito;
323                                break;
324                case $AMBITO_GRUPOSORDENADORES :
325                                $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
326                                                                                                WHERE gruposordenadores.idgrupo =".$idambito;
327                        break;
328                case $AMBITO_ORDENADORES :
329                                $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito;
330                        break;
331        }       
332                $cmd->texto.=" GROUP BY ordenadores_particiones.numpar,ordenadores_particiones.idsistemafichero";
333        //echo "carga sistemas de ficheros:".$cmd->texto;
334        $rs=new Recordset;
335        $rs->Comando=&$cmd;
336        if (!$rs->Abrir()) return; // Error al abrir recordset
337        $rs->Primero();
338        $idx=0;
339        //echo $cmd->texto;
340        while (!$rs->EOF){
341                        $tbSysFi[$idx]["idsistemafichero"]=$rs->campos["idsistemafichero"];
342                        $tbSysFi[$idx]["numpar"]=$rs->campos["numpar"];                 
343                        $tbSysFi[$idx]["sistemafichero"]=$rs->campos["sistemafichero"];
344                        $tbSysFi[$idx]["ordenadores"]=$rs->campos["ordenadores"];                       
345                        $idx++;
346                $rs->Siguiente();
347        }
348        $conSysFi=$idx; // Guarda contador
349        $rs->Cerrar();
350}
351/*________________________________________________________________________________________________________
352       
353        Toma sistema de ficheros común a los ordenadores pasados como parámetros
354________________________________________________________________________________________________________*/
355function tomaSistemasFicheros($numpar,$ordenadores,$sw=false)
356{
357        global $tbSysFi; // Tabla contenedora de ordenadores incluidos en la consulta
358        global $conSysFi; // Contador de elementos anteriores
359
360        for($k=0;$k<$conSysFi;$k++){
361                $pos = strpos($tbSysFi[$k]["ordenadores"], $ordenadores);
362                if ($pos !== false) { // Cadena encontrada
363                        if($tbSysFi[$k]["numpar"]==$numpar){
364                                if($sw) // Retonar identificador
365                                        return($tbSysFi[$k]["idsistemafichero"]);
366                                else
367                                        return($tbSysFi[$k]["sistemafichero"]);
368                        }
369                }
370        }
371}
372/*________________________________________________________________________________________________________
373       
374        Selecciona los ordenadores que tienen el mismo perfil software en la misma partición
375________________________________________________________________________________________________________*/
376function cargaPerfiles($cmd,$idambito,$ambito)
377{
378        global $tbPerfil; // Tabla contenedora de ordenadores incluidos en la consulta
379        global $conPerfil; // Contador de elementos anteriores
380        global $AMBITO_AULAS;
381        global $AMBITO_GRUPOSORDENADORES;
382        global $AMBITO_ORDENADORES;
383       
384        $cmd->texto="SELECT count(*) as con,ordenadores_particiones.idperfilsoft,ordenadores_particiones.numpar,perfilessoft.descripcion as perfilsoft,
385                                                                                        group_concat(cast(ordenadores_particiones.idordenador AS char( 11) )
386                                                                                         ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
387                                                        FROM    ordenadores
388                                                        INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
389                                                        INNER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft";
390
391        switch($ambito){
392                case $AMBITO_AULAS :
393                                $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula
394                                                                                                WHERE aulas.idaula =".$idambito;
395                                break;
396                case $AMBITO_GRUPOSORDENADORES :
397                                $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
398                                                                                                WHERE gruposordenadores.idgrupo =".$idambito;
399                        break;
400                case $AMBITO_ORDENADORES :
401                                $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito;
402                        break;
403        }       
404                $cmd->texto.=" GROUP BY ordenadores_particiones.numpar,ordenadores_particiones.idperfilsoft";
405        //echo "carga perfiles:".$cmd->texto;
406        $rs=new Recordset;
407        $rs->Comando=&$cmd;
408        if (!$rs->Abrir()) return; // Error al abrir recordset
409        $rs->Primero();
410        $idx=0;
411        while (!$rs->EOF){
412                        $tbPerfil[$idx]["idperfilsoft"]=$rs->campos["idperfilsoft"];
413                        $tbPerfil[$idx]["perfilsoft"]=$rs->campos["perfilsoft"];
414                        $tbPerfil[$idx]["numpar"]=$rs->campos["numpar"];                                       
415                        $tbPerfil[$idx]["ordenadores"]=$rs->campos["ordenadores"];                     
416                        $idx++;
417                $rs->Siguiente();
418        }
419        $conPerfil=$idx; // Guarda contador
420        $rs->Cerrar();
421}
422/*________________________________________________________________________________________________________
423       
424                Toma perfilsoft común a los ordenadores pasados como parámetros
425________________________________________________________________________________________________________*/
426function tomaPerfiles($numpar,$ordenadores)
427{
428        global $tbPerfil; // Tabla contenedora de ordenadores incluidos en la consulta
429        global $conPerfil; // Contador de elementos anteriores
430
431        for($k=0;$k<$conPerfil;$k++){
432                $pos = strpos($tbPerfil[$k]["ordenadores"], $ordenadores);
433                if ($pos !== false) { // Cadena encontrada
434                        if($tbPerfil[$k]["numpar"]==$numpar)
435                                return($tbPerfil[$k]["perfilsoft"]);
436                }
437        }
438}
439/*________________________________________________________________________________________________________
440       
441        Selecciona los ordenadores que tienen la misma imagen en la misma partición
442________________________________________________________________________________________________________*/
443function cargaImagenes($cmd,$idambito,$ambito)
444{
445        global $tbImg; // Tabla contenedora de ordenadores incluidos en la consulta
446        global $conImg; // Contador de elementos anteriores
447        global $AMBITO_AULAS;
448        global $AMBITO_GRUPOSORDENADORES;
449        global $AMBITO_ORDENADORES;
450       
451        $cmd->texto="SELECT count(*) as con,ordenadores_particiones.idimagen,ordenadores_particiones.numpar,imagenes.descripcion as imagen,
452                                                                                        group_concat(cast(ordenadores_particiones.idordenador AS char( 11) )
453                                                                                         ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
454                                                        FROM    ordenadores
455                                                        INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
456                                                        INNER JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen";
457
458        switch($ambito){
459                case $AMBITO_AULAS :
460                                $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula
461                                                                                                WHERE aulas.idaula =".$idambito;
462                                break;
463                case $AMBITO_GRUPOSORDENADORES :
464                                $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
465                                                                                                WHERE gruposordenadores.idgrupo =".$idambito;
466                        break;
467                case $AMBITO_ORDENADORES :
468                                $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito;
469                        break;
470        }       
471                $cmd->texto.=" GROUP BY ordenadores_particiones.numpar,ordenadores_particiones.idimagen";
472        //echo "carga imagenes:".$cmd->texto;
473        $rs=new Recordset;
474        $rs->Comando=&$cmd;
475        if (!$rs->Abrir()) return; // Error al abrir recordset
476        $rs->Primero();
477        $idx=0;
478        while (!$rs->EOF){
479                        $tbImg[$idx]["idimagen"]=$rs->campos["idimagen"];
480                        $tbImg[$idx]["imagen"]=$rs->campos["imagen"];
481                        $tbImg[$idx]["numpar"]=$rs->campos["numpar"];                   
482                        $tbImg[$idx]["ordenadores"]=$rs->campos["ordenadores"];                 
483                        $idx++;
484                $rs->Siguiente();
485        }
486        $conImg=$idx; // Guarda contador
487        $rs->Cerrar();
488}
489/*________________________________________________________________________________________________________
490       
491                Toma sistema operativo común a los ordenadores pasados como parámetros
492________________________________________________________________________________________________________*/
493function tomaImagenes($numpar,$ordenadores)
494{
495        global $tbImg; // Tabla contenedora de ordenadores incluidos en la consulta
496        global $conImg; // Contador de elementos anteriores
497
498        for($k=0;$k<$conImg;$k++){
499                $pos = strpos($tbImg[$k]["ordenadores"], $ordenadores);
500                if ($pos !== false) { // Cadena encontrada
501                        if($tbImg[$k]["numpar"]==$numpar)
502                                return($tbImg[$k]["imagen"]);
503                }
504        }
505}
506/*________________________________________________________________________________________________________
507       
508        Selecciona los ordenadores que tienen el mismo sistema de ficheros en la misma partición
509________________________________________________________________________________________________________*/
510function cargaNombresSO($cmd,$idambito,$ambito)
511{
512        global $tbSO; // Tabla contenedora de ordenadores incluidos en la consulta
513        global $conSO; // Contador de elementos anteriores
514        global $AMBITO_AULAS;
515        global $AMBITO_GRUPOSORDENADORES;
516        global $AMBITO_ORDENADORES;
517       
518        $cmd->texto="SELECT count(*) as con,ordenadores_particiones.idnombreso,ordenadores_particiones.numpar,nombresos.nombreso,
519                                                                                        group_concat(cast(ordenadores_particiones.idordenador AS char( 11) )
520                                                                                         ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
521                                                        FROM    ordenadores
522                                                        INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
523                                                        INNER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso";
524
525        switch($ambito){
526                case $AMBITO_AULAS :
527                                $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula
528                                                                                                WHERE aulas.idaula =".$idambito;
529                                break;
530                case $AMBITO_GRUPOSORDENADORES :
531                                $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
532                                                                                                WHERE gruposordenadores.idgrupo =".$idambito;
533                        break;
534                case $AMBITO_ORDENADORES :
535                                $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito;
536                        break;
537        }       
538                $cmd->texto.=" GROUP BY ordenadores_particiones.numpar,ordenadores_particiones.idnombreso";
539        //echo "carga nombresos:".$cmd->texto;
540        $rs=new Recordset;
541        $rs->Comando=&$cmd;
542        if (!$rs->Abrir()) return; // Error al abrir recordset
543        $rs->Primero();
544        $idx=0;
545        while (!$rs->EOF){
546                        $tbSO[$idx]["idnombreso"]=$rs->campos["idnombreso"];
547                        $tbSO[$idx]["nombreso"]=$rs->campos["nombreso"];
548                        $tbSO[$idx]["numpar"]=$rs->campos["numpar"];                   
549                        $tbSO[$idx]["ordenadores"]=$rs->campos["ordenadores"];                 
550                        $idx++;
551                $rs->Siguiente();
552        }
553        $conSO=$idx; // Guarda contador
554        $rs->Cerrar();
555}
556/*________________________________________________________________________________________________________
557       
558                Toma sistema operativo común a los ordenadores pasados como parámetros
559________________________________________________________________________________________________________*/
560function tomaNombresSO($numpar,$ordenadores)
561{
562        global $tbSO; // Tabla contenedora de ordenadores incluidos en la consulta
563        global $conSO; // Contador de elementos anteriores
564
565        for($k=0;$k<$conSO;$k++){
566                $pos = strpos($tbSO[$k]["ordenadores"], $ordenadores);
567                if ($pos !== false) { // Cadena encontrada
568                        if($tbSO[$k]["numpar"]==$numpar)
569                                return($tbSO[$k]["nombreso"]);
570                }
571        }
572}
573/*________________________________________________________________________________________________________
574       
575        Selecciona los ordenadores que tienen el mismo tamaño para la misma partición
576________________________________________________________________________________________________________*/
577function cargaTamano($cmd,$idambito,$ambito)
578{
579        global $tbTam; // Tabla contenedora de ordenadores incluidos en la consulta
580        global $conTam; // Contador de elementos anteriores
581        global $AMBITO_AULAS;
582        global $AMBITO_GRUPOSORDENADORES;
583        global $AMBITO_ORDENADORES;
584       
585        $cmd->texto="SELECT count(*) as con,ordenadores_particiones.tamano,ordenadores_particiones.numpar,
586                                                                                        group_concat(cast(ordenadores_particiones.idordenador AS char( 11) )
587                                                                                         ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
588                                                        FROM    ordenadores
589                                                        INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador";
590
591        switch($ambito){
592                case $AMBITO_AULAS :
593                                $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula
594                                                                                                WHERE aulas.idaula =".$idambito;
595                                break;
596                case $AMBITO_GRUPOSORDENADORES :
597                                $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
598                                                                                                WHERE gruposordenadores.idgrupo =".$idambito;
599                        break;
600                case $AMBITO_ORDENADORES :
601                                $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito;
602                        break;
603        }       
604                $cmd->texto.=" GROUP BY ordenadores_particiones.numpar,ordenadores_particiones.tamano";
605        //echo "carga tamaños:".$cmd->texto;
606        $rs=new Recordset;
607        $rs->Comando=&$cmd;
608        if (!$rs->Abrir()) return; // Error al abrir recordset
609        $rs->Primero();
610        $idx=0;
611        while (!$rs->EOF){
612                        $tbTam[$idx]["tamano"]=$rs->campos["tamano"];
613                        $tbTam[$idx]["numpar"]=$rs->campos["numpar"];                   
614                        $tbTam[$idx]["ordenadores"]=$rs->campos["ordenadores"];                 
615                        $idx++;
616                $rs->Siguiente();
617        }
618        $conTam=$idx; // Guarda contador
619        $rs->Cerrar();
620}
621/*________________________________________________________________________________________________________
622       
623                Toma tamaño de partición común a los ordenadores pasados como parámetros
624________________________________________________________________________________________________________*/
625function tomaTamano($numpar,$ordenadores)
626{
627        global $tbTam; // Tabla contenedora de ordenadores incluidos en la consulta
628        global $conTam; // Contador de elementos anteriores
629
630        for($k=0;$k<$conTam;$k++){
631                $pos = strpos($tbTam[$k]["ordenadores"], $ordenadores);
632                if ($pos !== false) { // Cadena encontrada
633                        if($tbTam[$k]["numpar"]==$numpar)
634                                return($tbTam[$k]["tamano"]);
635                }
636        }
637}
638
639?>
Note: See TracBrowser for help on using the repository browser.