source: admin/WebConsole/includes/ConfiguracionesParticiones.php @ c671867

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 c671867 was b7b8b6f, checked in by ramon <ramongomez@…>, 14 years ago

Versión 1.0.2: Consola web: mostrar mensaje en la configuración de cliente definido pero no conectado.

git-svn-id: https://opengnsys.es/svn/branches/version1.0@2369 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100644
File size: 26.4 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 count(*) as con,
185                                group_concat(cast( temp2.idordenador AS char( 11 ) )  ORDER BY temp2.idordenador SEPARATOR ',' ) AS idordenadores,
186                                temp2.configuraciones
187                                FROM (SELECT
188                                        temp1.idordenador as idordenador,
189                                        group_concat(cast( temp1.configuracion AS char( 250) )  ORDER BY temp1.configuracion SEPARATOR '@' ) AS configuraciones
190                                        FROM (SELECT ordenadores_particiones.idordenador,
191                                                ordenadores_particiones.numpar,
192                                                concat_WS( ';',
193                                                ordenadores_particiones.numpar, ";
194
195        if($sws & $msk_tamano)                                         
196                $cmd->texto.="  ordenadores_particiones.tamano,";
197
198        if($sws & $msk_sysFi)                                           
199                $cmd->texto.="  ordenadores_particiones.idsistemafichero, ";   
200
201        if($sws & $msk_nombreSO)                                               
202                $cmd->texto.="  ordenadores_particiones.idnombreso, ";
203
204        if($sws & $msk_imagen)                                         
205                $cmd->texto.="  ordenadores_particiones.idimagen, ";   
206
207        if($sws & $msk_perfil)                                         
208                $cmd->texto.="  ordenadores_particiones.idperfilsoft, ";
209                       
210        $cmd->texto.=" ordenadores_particiones.codpar) as configuracion
211                                                FROM ordenadores
212                                                INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
213                                                LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso
214                                                INNER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar
215                                                LEFT OUTER JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen
216                                                LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft
217                                                LEFT OUTER JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero";
218
219        switch($ambito){
220                case $AMBITO_AULAS :
221                                $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula WHERE aulas.idaula =".$idambito;
222                break;
223                case $AMBITO_GRUPOSORDENADORES :
224                                        $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid WHERE gruposordenadores.idgrupo =".$idambito;
225                        break;
226                case $AMBITO_ORDENADORES :
227                                $cmd->texto.=" WHERE ordenadores.idordenador=".$idambito;
228                        break;
229        }                                                                                                                       
230        if($swr) // Si se trata de restauración no se tiene en cuenta las particiones no clonables
231                $cmd->texto.=" AND tipospar.clonable=1 ";
232       
233        $cmd->texto.=" ORDER BY ordenadores_particiones.idordenador,ordenadores_particiones.numpar) as temp1
234                                        GROUP BY temp1.idordenador) as temp2
235                                        GROUP BY temp2.configuraciones
236                                        ORDER BY con desc,idordenadores";
237                                                               
238        //echo  $cmd->texto;
239        $rs=new Recordset;
240        $rs->Comando=&$cmd;
241        if (!$rs->Abrir()) return; // Error al abrir recordset
242        $rs->Primero();
243        $cc=0; // Contador de configuraciones
244        echo '<table  id="tabla_conf" width="95%" class="tabla_listados_sin" align=center border=0 cellPadding=0 cellSpacing=1>';
245        while (!$rs->EOF){
246                $cc++;
247                //Muestra ordenadores
248                echo '<tr><td colspan='.$colums.' style="background-color: #ffffff;">';
249                echo pintaOrdenadores($cmd,$rs->campos["idordenadores"],10,$cc);
250                echo '</td></tr>';
251                //Muestra particiones y configuración
252
253                echo pintaParticiones($cmd,$rs->campos["configuraciones"],$rs->campos["idordenadores"],$cc,$ambito,$idambito);
254                $rs->Siguiente();
255        }
256        if ($cc == 0) {
257                echo "<tr><th>Sin configuración: cliente no conectado al servidor.</th><tr>";
258        }
259        echo "</table>";
260        $rs->Cerrar();
261}
262//________________________________________________________________________________________________________
263//      Descripción:
264//              Muestra una taba html con el icono de ordenadores
265//      Parametros:
266//              $cmd: Objeto comando (operativo)               
267//              $idordenadores: Cadena con los identificadores de los ordenadores separados por ","
268//              $maxcontor: Número máximo de ordenadores por fila
269//              $cc: Identificador del bloque de configuración
270//________________________________________________________________________________________________________
271function pintaOrdenadores($cmd,$idordenadores,$maxcontor,$cc)
272{
273        $tablaHtml.="";
274        $contor=0;
275        $maxcontor=10; // Número máximo de prodenadores por fila
276        $cmd->texto=" SELECT idordenador,nombreordenador,ip FROM ordenadores WHERE  idordenador in (".$idordenadores." ) ORDER BY nombreordenador";
277        $rs=new Recordset;
278        $rs->Comando=&$cmd;
279        if (!$rs->Abrir()) return(""); // Error al abrir recordset
280        $tablaHtml.='<TABLE align=left border="0" id="tbOrd_'.$cc.'" value="'.$idordenadores.'"><TR>';
281        while (!$rs->EOF){
282                $contor++;
283                $tablaHtml.= '<TD align=center  style="BACKGROUND-COLOR: #FFFFFF;">
284                                                                        <IMG src="../images/iconos/ordenador.gif" >
285                                                                        <br><span style="FONT-SIZE:9px; COLOR: #4f4f4f;" >'.$rs->campos["nombreordenador"].'</span>
286                                                                </TD>';
287                if($contor>$maxcontor){
288                        $contor=0;
289                        $tablaHtml.='</TR><TR>';
290                }
291                $rs->Siguiente();
292        }
293        $tablaHtml.='</TR>';
294        $tablaHtml.= '</TABLE>';
295        return($tablaHtml);
296}
297/*________________________________________________________________________________________________________
298       
299        Selecciona los ordenadores que tienen el mismo sistema de ficheros del ámbito elegido
300________________________________________________________________________________________________________*/
301function cargaSistemasFicheros($cmd,$idambito,$ambito)
302{
303        global $tbSysFi; // Tabla contenedora de ordenadores incluidos en la consulta
304        global $conSysFi; // Contador de elementos anteriores
305        global $AMBITO_AULAS;
306        global $AMBITO_GRUPOSORDENADORES;
307        global $AMBITO_ORDENADORES;
308       
309        $cmd->texto="SELECT count(*) as con,ordenadores_particiones.idsistemafichero,ordenadores_particiones.numpar,
310                                                                                        sistemasficheros.descripcion as sistemafichero,
311                                                                                        group_concat(cast(ordenadores_particiones.idordenador AS char( 11) )
312                                                                                         ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
313                                                        FROM    ordenadores
314                                                        INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
315                                                        INNER JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero";
316
317        switch($ambito){
318                case $AMBITO_AULAS :
319                                $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula
320                                                                                                WHERE aulas.idaula =".$idambito;
321                                break;
322                case $AMBITO_GRUPOSORDENADORES :
323                                $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
324                                                                                                WHERE gruposordenadores.idgrupo =".$idambito;
325                        break;
326                case $AMBITO_ORDENADORES :
327                                $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito;
328                        break;
329        }       
330                $cmd->texto.=" GROUP BY ordenadores_particiones.numpar,ordenadores_particiones.idsistemafichero";
331        //echo "carga sistemas de ficheros:".$cmd->texto;
332        $rs=new Recordset;
333        $rs->Comando=&$cmd;
334        if (!$rs->Abrir()) return; // Error al abrir recordset
335        $rs->Primero();
336        $idx=0;
337        //echo $cmd->texto;
338        while (!$rs->EOF){
339                        $tbSysFi[$idx]["idsistemafichero"]=$rs->campos["idsistemafichero"];
340                        $tbSysFi[$idx]["numpar"]=$rs->campos["numpar"];                 
341                        $tbSysFi[$idx]["sistemafichero"]=$rs->campos["sistemafichero"];
342                        $tbSysFi[$idx]["ordenadores"]=$rs->campos["ordenadores"];                       
343                        $idx++;
344                $rs->Siguiente();
345        }
346        $conSysFi=$idx; // Guarda contador
347        $rs->Cerrar();
348}
349/*________________________________________________________________________________________________________
350       
351        Toma sistema de ficheros común a los ordenadores pasados como parámetros
352________________________________________________________________________________________________________*/
353function tomaSistemasFicheros($numpar,$ordenadores,$sw=false)
354{
355        global $tbSysFi; // Tabla contenedora de ordenadores incluidos en la consulta
356        global $conSysFi; // Contador de elementos anteriores
357
358        for($k=0;$k<$conSysFi;$k++){
359                $pos = strpos($tbSysFi[$k]["ordenadores"], $ordenadores);
360                if ($pos !== false) { // Cadena encontrada
361                        if($tbSysFi[$k]["numpar"]==$numpar){
362                                if($sw) // Retonar identificador
363                                        return($tbSysFi[$k]["idsistemafichero"]);
364                                else
365                                        return($tbSysFi[$k]["sistemafichero"]);
366                        }
367                }
368        }
369}
370/*________________________________________________________________________________________________________
371       
372        Selecciona los ordenadores que tienen el mismo perfil software en la misma partición
373________________________________________________________________________________________________________*/
374function cargaPerfiles($cmd,$idambito,$ambito)
375{
376        global $tbPerfil; // Tabla contenedora de ordenadores incluidos en la consulta
377        global $conPerfil; // Contador de elementos anteriores
378        global $AMBITO_AULAS;
379        global $AMBITO_GRUPOSORDENADORES;
380        global $AMBITO_ORDENADORES;
381       
382        $cmd->texto="SELECT count(*) as con,ordenadores_particiones.idperfilsoft,ordenadores_particiones.numpar,perfilessoft.descripcion as perfilsoft,
383                                                                                        group_concat(cast(ordenadores_particiones.idordenador AS char( 11) )
384                                                                                         ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
385                                                        FROM    ordenadores
386                                                        INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
387                                                        INNER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft";
388
389        switch($ambito){
390                case $AMBITO_AULAS :
391                                $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula
392                                                                                                WHERE aulas.idaula =".$idambito;
393                                break;
394                case $AMBITO_GRUPOSORDENADORES :
395                                $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
396                                                                                                WHERE gruposordenadores.idgrupo =".$idambito;
397                        break;
398                case $AMBITO_ORDENADORES :
399                                $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito;
400                        break;
401        }       
402                $cmd->texto.=" GROUP BY ordenadores_particiones.numpar,ordenadores_particiones.idperfilsoft";
403        //echo "carga perfiles:".$cmd->texto;
404        $rs=new Recordset;
405        $rs->Comando=&$cmd;
406        if (!$rs->Abrir()) return; // Error al abrir recordset
407        $rs->Primero();
408        $idx=0;
409        while (!$rs->EOF){
410                        $tbPerfil[$idx]["idperfilsoft"]=$rs->campos["idperfilsoft"];
411                        $tbPerfil[$idx]["perfilsoft"]=$rs->campos["perfilsoft"];
412                        $tbPerfil[$idx]["numpar"]=$rs->campos["numpar"];                                       
413                        $tbPerfil[$idx]["ordenadores"]=$rs->campos["ordenadores"];                     
414                        $idx++;
415                $rs->Siguiente();
416        }
417        $conPerfil=$idx; // Guarda contador
418        $rs->Cerrar();
419}
420/*________________________________________________________________________________________________________
421       
422                Toma perfilsoft común a los ordenadores pasados como parámetros
423________________________________________________________________________________________________________*/
424function tomaPerfiles($numpar,$ordenadores)
425{
426        global $tbPerfil; // Tabla contenedora de ordenadores incluidos en la consulta
427        global $conPerfil; // Contador de elementos anteriores
428
429        for($k=0;$k<$conPerfil;$k++){
430                $pos = strpos($tbPerfil[$k]["ordenadores"], $ordenadores);
431                if ($pos !== false) { // Cadena encontrada
432                        if($tbPerfil[$k]["numpar"]==$numpar)
433                                return($tbPerfil[$k]["perfilsoft"]);
434                }
435        }
436}
437/*________________________________________________________________________________________________________
438       
439        Selecciona los ordenadores que tienen la misma imagen en la misma partición
440________________________________________________________________________________________________________*/
441function cargaImagenes($cmd,$idambito,$ambito)
442{
443        global $tbImg; // Tabla contenedora de ordenadores incluidos en la consulta
444        global $conImg; // Contador de elementos anteriores
445        global $AMBITO_AULAS;
446        global $AMBITO_GRUPOSORDENADORES;
447        global $AMBITO_ORDENADORES;
448       
449        $cmd->texto="SELECT count(*) as con,ordenadores_particiones.idimagen,ordenadores_particiones.numpar,imagenes.descripcion as imagen,
450                                                                                        group_concat(cast(ordenadores_particiones.idordenador AS char( 11) )
451                                                                                         ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
452                                                        FROM    ordenadores
453                                                        INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
454                                                        INNER JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen";
455
456        switch($ambito){
457                case $AMBITO_AULAS :
458                                $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula
459                                                                                                WHERE aulas.idaula =".$idambito;
460                                break;
461                case $AMBITO_GRUPOSORDENADORES :
462                                $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
463                                                                                                WHERE gruposordenadores.idgrupo =".$idambito;
464                        break;
465                case $AMBITO_ORDENADORES :
466                                $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito;
467                        break;
468        }       
469                $cmd->texto.=" GROUP BY ordenadores_particiones.numpar,ordenadores_particiones.idimagen";
470        //echo "carga imagenes:".$cmd->texto;
471        $rs=new Recordset;
472        $rs->Comando=&$cmd;
473        if (!$rs->Abrir()) return; // Error al abrir recordset
474        $rs->Primero();
475        $idx=0;
476        while (!$rs->EOF){
477                        $tbImg[$idx]["idimagen"]=$rs->campos["idimagen"];
478                        $tbImg[$idx]["imagen"]=$rs->campos["imagen"];
479                        $tbImg[$idx]["numpar"]=$rs->campos["numpar"];                   
480                        $tbImg[$idx]["ordenadores"]=$rs->campos["ordenadores"];                 
481                        $idx++;
482                $rs->Siguiente();
483        }
484        $conImg=$idx; // Guarda contador
485        $rs->Cerrar();
486}
487/*________________________________________________________________________________________________________
488       
489                Toma sistema operativo común a los ordenadores pasados como parámetros
490________________________________________________________________________________________________________*/
491function tomaImagenes($numpar,$ordenadores)
492{
493        global $tbImg; // Tabla contenedora de ordenadores incluidos en la consulta
494        global $conImg; // Contador de elementos anteriores
495
496        for($k=0;$k<$conImg;$k++){
497                $pos = strpos($tbImg[$k]["ordenadores"], $ordenadores);
498                if ($pos !== false) { // Cadena encontrada
499                        if($tbImg[$k]["numpar"]==$numpar)
500                                return($tbImg[$k]["imagen"]);
501                }
502        }
503}
504/*________________________________________________________________________________________________________
505       
506        Selecciona los ordenadores que tienen el mismo sistema de ficheros en la misma partición
507________________________________________________________________________________________________________*/
508function cargaNombresSO($cmd,$idambito,$ambito)
509{
510        global $tbSO; // Tabla contenedora de ordenadores incluidos en la consulta
511        global $conSO; // Contador de elementos anteriores
512        global $AMBITO_AULAS;
513        global $AMBITO_GRUPOSORDENADORES;
514        global $AMBITO_ORDENADORES;
515       
516        $cmd->texto="SELECT count(*) as con,ordenadores_particiones.idnombreso,ordenadores_particiones.numpar,nombresos.nombreso,
517                                                                                        group_concat(cast(ordenadores_particiones.idordenador AS char( 11) )
518                                                                                         ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
519                                                        FROM    ordenadores
520                                                        INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
521                                                        INNER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso";
522
523        switch($ambito){
524                case $AMBITO_AULAS :
525                                $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula
526                                                                                                WHERE aulas.idaula =".$idambito;
527                                break;
528                case $AMBITO_GRUPOSORDENADORES :
529                                $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
530                                                                                                WHERE gruposordenadores.idgrupo =".$idambito;
531                        break;
532                case $AMBITO_ORDENADORES :
533                                $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito;
534                        break;
535        }       
536                $cmd->texto.=" GROUP BY ordenadores_particiones.numpar,ordenadores_particiones.idnombreso";
537        //echo "carga nombresos:".$cmd->texto;
538        $rs=new Recordset;
539        $rs->Comando=&$cmd;
540        if (!$rs->Abrir()) return; // Error al abrir recordset
541        $rs->Primero();
542        $idx=0;
543        while (!$rs->EOF){
544                        $tbSO[$idx]["idnombreso"]=$rs->campos["idnombreso"];
545                        $tbSO[$idx]["nombreso"]=$rs->campos["nombreso"];
546                        $tbSO[$idx]["numpar"]=$rs->campos["numpar"];                   
547                        $tbSO[$idx]["ordenadores"]=$rs->campos["ordenadores"];                 
548                        $idx++;
549                $rs->Siguiente();
550        }
551        $conSO=$idx; // Guarda contador
552        $rs->Cerrar();
553}
554/*________________________________________________________________________________________________________
555       
556                Toma sistema operativo común a los ordenadores pasados como parámetros
557________________________________________________________________________________________________________*/
558function tomaNombresSO($numpar,$ordenadores)
559{
560        global $tbSO; // Tabla contenedora de ordenadores incluidos en la consulta
561        global $conSO; // Contador de elementos anteriores
562
563        for($k=0;$k<$conSO;$k++){
564                $pos = strpos($tbSO[$k]["ordenadores"], $ordenadores);
565                if ($pos !== false) { // Cadena encontrada
566                        if($tbSO[$k]["numpar"]==$numpar)
567                                return($tbSO[$k]["nombreso"]);
568                }
569        }
570}
571/*________________________________________________________________________________________________________
572       
573        Selecciona los ordenadores que tienen el mismo tamaño para la misma partición
574________________________________________________________________________________________________________*/
575function cargaTamano($cmd,$idambito,$ambito)
576{
577        global $tbTam; // Tabla contenedora de ordenadores incluidos en la consulta
578        global $conTam; // Contador de elementos anteriores
579        global $AMBITO_AULAS;
580        global $AMBITO_GRUPOSORDENADORES;
581        global $AMBITO_ORDENADORES;
582       
583        $cmd->texto="SELECT count(*) as con,ordenadores_particiones.tamano,ordenadores_particiones.numpar,
584                                                                                        group_concat(cast(ordenadores_particiones.idordenador AS char( 11) )
585                                                                                         ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
586                                                        FROM    ordenadores
587                                                        INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador";
588
589        switch($ambito){
590                case $AMBITO_AULAS :
591                                $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula
592                                                                                                WHERE aulas.idaula =".$idambito;
593                                break;
594                case $AMBITO_GRUPOSORDENADORES :
595                                $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
596                                                                                                WHERE gruposordenadores.idgrupo =".$idambito;
597                        break;
598                case $AMBITO_ORDENADORES :
599                                $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito;
600                        break;
601        }       
602                $cmd->texto.=" GROUP BY ordenadores_particiones.numpar,ordenadores_particiones.tamano";
603        //echo "carga tamaños:".$cmd->texto;
604        $rs=new Recordset;
605        $rs->Comando=&$cmd;
606        if (!$rs->Abrir()) return; // Error al abrir recordset
607        $rs->Primero();
608        $idx=0;
609        while (!$rs->EOF){
610                        $tbTam[$idx]["tamano"]=$rs->campos["tamano"];
611                        $tbTam[$idx]["numpar"]=$rs->campos["numpar"];                   
612                        $tbTam[$idx]["ordenadores"]=$rs->campos["ordenadores"];                 
613                        $idx++;
614                $rs->Siguiente();
615        }
616        $conTam=$idx; // Guarda contador
617        $rs->Cerrar();
618}
619/*________________________________________________________________________________________________________
620       
621                Toma tamaño de partición común a los ordenadores pasados como parámetros
622________________________________________________________________________________________________________*/
623function tomaTamano($numpar,$ordenadores)
624{
625        global $tbTam; // Tabla contenedora de ordenadores incluidos en la consulta
626        global $conTam; // Contador de elementos anteriores
627
628        for($k=0;$k<$conTam;$k++){
629                $pos = strpos($tbTam[$k]["ordenadores"], $ordenadores);
630                if ($pos !== false) { // Cadena encontrada
631                        if($tbTam[$k]["numpar"]==$numpar)
632                                return($tbTam[$k]["tamano"]);
633                }
634        }
635}
636
637?>
Note: See TracBrowser for help on using the repository browser.