source: admin/WebConsole/includes/ConfiguracionesParticiones.php @ 0ccb7c7

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 0ccb7c7 was e2c805a, checked in by ramon <ramongomez@…>, 13 years ago

Versión 1.0.5: Montaje correcto de la caché local y mejor presentación de su contenido en la configuración del cliente.

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

  • Property mode set to 100644
File size: 30.0 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                                                                00100000- No agrupar por Contenido Cache
45                                $swr: Indica  si se se tiene en cuenta las particiones no clonables (si:true o no:false)       
46________________________________________________________________________________________________________*/
47function cargaCaves($cmd,$idambito,$ambito,$sws,$swr)
48{
49        global $tbKeys; // Tabla contenedora de claves de configuración
50        global $conKeys; // Contador de claves de configuración
51        global $AMBITO_AULAS;
52        global $AMBITO_GRUPOSORDENADORES;
53        global $AMBITO_ORDENADORES;
54       
55        global $msk_sysFi;
56        global $msk_nombreSO;
57        global $msk_tamano;
58        global $msk_imagen;
59        global $msk_perfil;     
60        global $msk_cache;
61                               
62        $cmd->texto="SELECT CONCAT_WS( ';', ordenadores_particiones.numpar, ";
63
64        if($sws & $msk_tamano)                                         
65                $cmd->texto.="  ordenadores_particiones.tamano,";
66
67        if($sws & $msk_sysFi)                                           
68                $cmd->texto.="  ordenadores_particiones.idsistemafichero, ";   
69               
70        if($sws & $msk_nombreSO)                                               
71                $cmd->texto.="  ordenadores_particiones.idnombreso, ";
72
73        if($sws & $msk_imagen)
74                $cmd->texto.="  ordenadores_particiones.idimagen, ";
75
76        if($sws & $msk_perfil)
77                $cmd->texto.="  ordenadores_particiones.idperfilsoft, ";
78
79        if($sws & $msk_cache)
80                $cmd->texto.="  ordenadores_particiones.cache, ";
81
82        $cmd->texto.=" ordenadores_particiones.codpar) as configuracion,
83                                ordenadores_particiones.numdisk,
84                                ordenadores_particiones.numpar ,
85                                ordenadores_particiones.codpar ,
86                                tipospar.tipopar,
87                                tipospar.clonable,
88                                ordenadores_particiones.tamano,
89                                sistemasficheros.descripcion as sistemafichero,
90                                ordenadores_particiones.idnombreso,
91                                ordenadores_particiones.cache,
92                                nombresos.nombreso,
93                                imagenes.idimagen,
94                                imagenes.descripcion as imagen,
95                                imagenes.nombreca as nombreca,
96                                imagenes.idrepositorio as repositorio,
97                                ordenadores_particiones.idperfilsoft,
98                                perfilessoft.descripcion as perfilsoft
99
100                                FROM ordenadores
101                                        INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
102                                        LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso
103                                        INNER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar
104                                        LEFT OUTER JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen
105                                        LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft
106                                        LEFT OUTER JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero";
107                                       
108        switch($ambito){
109                case $AMBITO_AULAS :
110                        $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula
111                                        WHERE aulas.idaula =".$idambito;
112                        break;
113                case $AMBITO_GRUPOSORDENADORES :
114                        $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
115                                        WHERE gruposordenadores.idgrupo =".$idambito;
116                        break;
117                case $AMBITO_ORDENADORES :
118                        $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito;
119                        break;
120        }               
121        if($swr) // Si se trata de restauración no se tiene en cuenta las partciones no clonables
122                $cmd->texto.=" AND tipospar.clonable=1 ";
123
124        $cmd->texto.=" GROUP by configuracion";
125        //echo "carga claves:".$cmd->texto;
126        $rs=new Recordset;
127        $rs->Comando=&$cmd;
128        if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset
129        $rs->Primero();
130        $idx=0;
131        //echo $cmd->texto;
132        while (!$rs->EOF){
133                $tbKeys[$idx]["cfg"]=$rs->campos["configuracion"];
134                $tbKeys[$idx]["numdisk"]=$rs->campos["numdisk"];
135                $tbKeys[$idx]["numpar"]=$rs->campos["numpar"];
136                $tbKeys[$idx]["codpar"]=$rs->campos["codpar"];
137                $tbKeys[$idx]["tipopar"]=$rs->campos["tipopar"];
138                $tbKeys[$idx]["clonable"]=$rs->campos["clonable"];
139                $tbKeys[$idx]["tamano"]=$rs->campos["tamano"];
140                $tbKeys[$idx]["sistemafichero"]=$rs->campos["sistemafichero"];
141                $tbKeys[$idx]["idnombreso"]=$rs->campos["idnombreso"];
142                $tbKeys[$idx]["nombreso"]=$rs->campos["nombreso"];
143                $tbKeys[$idx]["idimagen"]=$rs->campos["idimagen"];
144                $tbKeys[$idx]["imagen"]=$rs->campos["imagen"];
145                $tbKeys[$idx]["nombreca"]=$rs->campos["nombreca"];
146                $tbKeys[$idx]["repositorio"]=$rs->campos["repositorio"];
147                $tbKeys[$idx]["idperfilsoft"]=$rs->campos["idperfilsoft"];
148                $tbKeys[$idx]["perfilsoft"]=$rs->campos["perfilsoft"];
149                $tbKeys[$idx]["cache"]=$rs->campos["cache"];
150                $idx++;
151                $rs->Siguiente();
152        }
153        $conKeys=$idx; // Guarda contador
154        $rs->Cerrar();
155}
156/*________________________________________________________________________________________________________
157                        Dibuja la tabla de configuración de las particiones de un grupo de ordenadores
158                       
159                        Parámetros de la función:
160                                $cmd: Objeto comando (Operativo)
161                                $idambito: Identificador del ámbito (identificador del Aula, grupo de ordenador u ordenador)                   
162                                $ambito: Tipo de ambito (Aulas, grupos de ordenadores u ordenadores)
163                                $sws: Switchs que indican el nivel de agrupamiento (ver comentarios de la función(cargaCaves)
164                                $swr: Indica  si se se tiene en cuenta las particiones no clonables (true:sólo conables , false:todas)
165                               
166                        Especificaciones:
167                                Esta función llama a pintaParticiones() que es realmente la encargada de mostrar o bien la
168                                configuración de los ordenadores o la pantalla de los comandos "Configurar" o "RestaurarImagen"
169                                para permitir introducir los    datos necesarios.               
170________________________________________________________________________________________________________*/
171function pintaConfiguraciones($cmd,$idambito,$ambito,$colums,$sws,$swr)
172{
173        global $AMBITO_AULAS;
174        global $AMBITO_GRUPOSORDENADORES;
175        global $AMBITO_ORDENADORES;
176        global $TbMsg;
177        global $msk_sysFi;
178        global $msk_nombreSO;
179        global $msk_tamano;
180        global $msk_imagen;
181        global $msk_perfil;     
182        global $msk_cache;
183
184        cargaCaves($cmd,$idambito,$ambito,$sws,$swr);
185        cargaSistemasFicheros($cmd,$idambito,$ambito);
186        cargaPerfiles($cmd,$idambito,$ambito);
187        cargaImagenes($cmd,$idambito,$ambito);
188        cargaNombresSO($cmd,$idambito,$ambito);
189        cargaTamano($cmd,$idambito,$ambito);
190        cargaCache($cmd,$idambito,$ambito);
191       
192        $cmd->texto="SELECT     COUNT(*) AS con,
193                                GROUP_CONCAT(CAST( temp2.idordenador AS CHAR(11) )  ORDER BY temp2.idordenador SEPARATOR ',' ) AS idordenadores,
194                                temp2.configuraciones
195                                FROM (SELECT
196                                        temp1.idordenador AS idordenador,
197                                        GROUP_CONCAT(CAST( temp1.configuracion AS CHAR(250) )  ORDER BY temp1.configuracion SEPARATOR '@' ) AS configuraciones
198                                        FROM (SELECT ordenadores_particiones.idordenador,
199                                                ordenadores_particiones.numpar,
200                                                concat_WS( ';',
201                                                ordenadores_particiones.numpar, ";
202
203        if($sws & $msk_tamano)
204                $cmd->texto.="  ordenadores_particiones.tamano,";
205
206        if($sws & $msk_sysFi)
207                $cmd->texto.="  ordenadores_particiones.idsistemafichero, ";   
208
209        if($sws & $msk_nombreSO)
210                $cmd->texto.="  ordenadores_particiones.idnombreso, ";
211
212        if($sws & $msk_imagen)
213                $cmd->texto.="  ordenadores_particiones.idimagen, ";   
214
215        if($sws & $msk_perfil)
216                $cmd->texto.="  ordenadores_particiones.idperfilsoft, ";
217               
218        if($sws & $msk_cache)
219                $cmd->texto.="  ordenadores_particiones.cache, ";
220                       
221        $cmd->texto.="          ordenadores_particiones.codpar) AS configuracion
222                                                FROM ordenadores
223                                                INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
224                                                LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso
225                                                INNER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar
226                                                LEFT OUTER JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen
227                                                LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft
228                                                LEFT OUTER JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero";
229
230        switch($ambito){
231                case $AMBITO_AULAS :
232                        $cmd->texto.="  INNER JOIN aulas ON aulas.idaula = ordenadores.idaula WHERE aulas.idaula =".$idambito;
233                        break;
234                case $AMBITO_GRUPOSORDENADORES :
235                        $cmd->texto.="  INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid WHERE gruposordenadores.idgrupo =".$idambito;
236                        break;
237                case $AMBITO_ORDENADORES :
238                        $cmd->texto.="  WHERE ordenadores.idordenador=".$idambito;
239                        break;
240        }                                       
241        if ($swr) // Si se trata de restauración no se tiene en cuenta las particiones no clonables
242                $cmd->texto.=" AND tipospar.clonable=1 ";
243       
244        $cmd->texto.="  ORDER BY ordenadores_particiones.idordenador, ordenadores_particiones.numpar) AS temp1
245                                        GROUP BY temp1.idordenador) AS temp2
246                                        GROUP BY temp2.configuraciones
247                                        ORDER BY con desc,idordenadores";
248                                                               
249        //echo  $cmd->texto;
250        $rs=new Recordset;
251        $rs->Comando=&$cmd;
252        if (!$rs->Abrir()) return; // Error al abrir recordset
253        $rs->Primero();
254        $cc=0; // Contador de configuraciones
255        echo '<table  id="tabla_conf" width="95%" class="tabla_listados_sin" align=center border=0 cellPadding=0 cellSpacing=1>';
256        while (!$rs->EOF){
257                $cc++;
258                //Muestra ordenadores
259                echo '<tr><td colspan='.$colums.' style="background-color: #ffffff;">';
260                echo pintaOrdenadores($cmd,$rs->campos["idordenadores"],10,$cc);
261                echo '</td></tr>';
262                //Muestra particiones y configuración
263
264                echo pintaParticiones($cmd,$rs->campos["configuraciones"],$rs->campos["idordenadores"],$cc,$ambito,$idambito);
265                $rs->Siguiente();
266        }
267        if ($cc == 0) {
268                echo '<tr><th>'.$TbMsg[43].'</th><tr>';  // Cliente sin configuración.
269        }
270        echo "</table>";
271        $rs->Cerrar();
272}
273//________________________________________________________________________________________________________
274//      Descripción:
275//              Muestra una taba html con el icono de ordenadores
276//      Parametros:
277//              $cmd: Objeto comando (operativo)               
278//              $idordenadores: Cadena con los identificadores de los ordenadores separados por ","
279//              $maxcontor: Número máximo de ordenadores por fila
280//              $cc: Identificador del bloque de configuración
281//________________________________________________________________________________________________________
282function pintaOrdenadores($cmd,$idordenadores,$maxcontor,$cc)
283{
284        $tablaHtml="";
285        $contor=0;
286        $maxcontor=10; // Número máximo de prodenadores por fila
287        $cmd->texto=" SELECT idordenador,nombreordenador,ip FROM ordenadores WHERE idordenador IN (".$idordenadores.") ORDER BY nombreordenador";
288        $rs=new Recordset;
289        $rs->Comando=&$cmd;
290        if (!$rs->Abrir()) return(""); // Error al abrir recordset
291        $tablaHtml.='<table align="left" border="0" id="tbOrd_'.$cc.'" value="'.$idordenadores.'"><tr>';
292        while (!$rs->EOF){
293                $contor++;
294                $tablaHtml.= '<td align="center" style="background-color: #ffffff;">
295                                <img src="../images/iconos/ordenador.gif" />
296                                <br /><span style="font-size:9px; color: #4f4f4f;">'.$rs->campos["nombreordenador"].'</span></td>';
297                if($contor>$maxcontor){
298                        $contor=0;
299                        $tablaHtml.='</tr><tr>';
300                }
301                $rs->Siguiente();
302        }
303        $tablaHtml.='</tr>';
304        $tablaHtml.= '</table>';
305        return($tablaHtml);
306}
307/*________________________________________________________________________________________________________
308       
309        Selecciona los ordenadores que tienen el mismo sistema de ficheros del ámbito elegido
310________________________________________________________________________________________________________*/
311function cargaSistemasFicheros($cmd,$idambito,$ambito)
312{
313        global $tbSysFi; // Tabla contenedora de ordenadores incluidos en la consulta
314        global $conSysFi; // Contador de elementos anteriores
315        global $AMBITO_AULAS;
316        global $AMBITO_GRUPOSORDENADORES;
317        global $AMBITO_ORDENADORES;
318       
319        $cmd->texto="SELECT     COUNT(*) AS con,
320                                ordenadores_particiones.idsistemafichero,
321                                ordenadores_particiones.numpar,
322                                sistemasficheros.descripcion AS sistemafichero,
323                                GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) )
324                                        ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
325                           FROM ordenadores
326                           JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
327                           JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero";
328
329        switch($ambito){
330                case $AMBITO_AULAS :
331                        $cmd->texto.="  JOIN aulas ON aulas.idaula = ordenadores.idaula
332                                        WHERE aulas.idaula =".$idambito;
333                        break;
334                case $AMBITO_GRUPOSORDENADORES :
335                        $cmd->texto.="  INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
336                                        WHERE gruposordenadores.idgrupo =".$idambito;
337                        break;
338                case $AMBITO_ORDENADORES :
339                        $cmd->texto.="  WHERE ordenadores.idordenador =".$idambito;
340                        break;
341        }       
342                $cmd->texto.="          GROUP BY ordenadores_particiones.numpar, ordenadores_particiones.idsistemafichero";
343        //echo "carga sistemas de ficheros:".$cmd->texto;
344        $rs=new Recordset;
345        $rs->Comando=&$cmd;
346        if (!$rs->Abrir()) return; // Error al abrir recordset
347        $rs->Primero();
348        $idx=0;
349        //echo $cmd->texto;
350        while (!$rs->EOF){
351                        $tbSysFi[$idx]["idsistemafichero"]=$rs->campos["idsistemafichero"];
352                        $tbSysFi[$idx]["numpar"]=$rs->campos["numpar"];                 
353                        $tbSysFi[$idx]["sistemafichero"]=$rs->campos["sistemafichero"];
354                        $tbSysFi[$idx]["ordenadores"]=$rs->campos["ordenadores"];                       
355                        $idx++;
356                $rs->Siguiente();
357        }
358        $conSysFi=$idx; // Guarda contador
359        $rs->Cerrar();
360}
361/*________________________________________________________________________________________________________
362       
363        Toma sistema de ficheros común a los ordenadores pasados como parámetros
364________________________________________________________________________________________________________*/
365function tomaSistemasFicheros($numpar,$ordenadores,$sw=false)
366{
367        global $tbSysFi;  // Tabla contenedora de ordenadores incluidos en la consulta
368        global $conSysFi; // Contador de elementos anteriores
369
370        for ($k=0; $k<$conSysFi; $k++){
371                if ($tbSysFi[$k]["numpar"] == $numpar){
372                        //$pos = strpos($tbSysFi[$k]["ordenadores"], $ordenadores);
373                        //if ($pos !== false) { // Cadena encontrada
374                        $pcs = explode (",", $ordenadores);
375                        $intersec = array_intersect (explode(",", $tbSysFi[$k]["ordenadores"]), $pcs);
376                        if (array_diff ($pcs, $intersec) == NULL) {
377                                if ($sw) {      // Retonar identificador
378                                        return ($tbSysFi[$k]["idsistemafichero"]);
379                                } else {
380                                        return ($tbSysFi[$k]["sistemafichero"]);
381                                }
382                        }
383                }
384        }
385}
386/*________________________________________________________________________________________________________
387       
388        Selecciona los ordenadores que tienen el mismo perfil software en la misma partición
389________________________________________________________________________________________________________*/
390function cargaPerfiles($cmd,$idambito,$ambito)
391{
392        global $tbPerfil;  // Tabla contenedora de ordenadores incluidos en la consulta
393        global $conPerfil; // Contador de elementos anteriores
394        global $AMBITO_AULAS;
395        global $AMBITO_GRUPOSORDENADORES;
396        global $AMBITO_ORDENADORES;
397       
398        $cmd->texto="SELECT count(*) AS con,
399                            ordenadores_particiones.idperfilsoft,
400                            ordenadores_particiones.numpar,
401                            perfilessoft.descripcion AS perfilsoft,
402                            GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) )
403                                ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
404                       FROM ordenadores
405                       JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
406                       JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft";
407
408        switch ($ambito) {
409                case $AMBITO_AULAS :
410                        $cmd->texto.="  JOIN aulas ON aulas.idaula = ordenadores.idaula
411                                        WHERE aulas.idaula =".$idambito;
412                        break;
413                case $AMBITO_GRUPOSORDENADORES :
414                        $cmd->texto.="  JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
415                                        WHERE gruposordenadores.idgrupo =".$idambito;
416                        break;
417                case $AMBITO_ORDENADORES :
418                        $cmd->texto.="  WHERE ordenadores.idordenador =".$idambito;
419                        break;
420        }       
421        $cmd->texto.="                  GROUP BY ordenadores_particiones.numpar, ordenadores_particiones.idperfilsoft";
422        //echo "carga perfiles:".$cmd->texto;
423        $rs=new Recordset;
424        $rs->Comando=&$cmd;
425        if (!$rs->Abrir()) return; // Error al abrir recordset
426        $rs->Primero();
427        $idx=0;
428        while (!$rs->EOF){
429                        $tbPerfil[$idx]["idperfilsoft"]=$rs->campos["idperfilsoft"];
430                        $tbPerfil[$idx]["perfilsoft"]=$rs->campos["perfilsoft"];
431                        $tbPerfil[$idx]["numpar"]=$rs->campos["numpar"];                                       
432                        $tbPerfil[$idx]["ordenadores"]=$rs->campos["ordenadores"];                     
433                        $idx++;
434                $rs->Siguiente();
435        }
436        $conPerfil=$idx; // Guarda contador
437        $rs->Cerrar();
438}
439/*________________________________________________________________________________________________________
440       
441                Toma perfilsoft común a los ordenadores pasados como parámetros
442________________________________________________________________________________________________________*/
443function tomaPerfiles($numpar,$ordenadores)
444{
445        global $tbPerfil;  // Tabla contenedora de ordenadores incluidos en la consulta
446        global $conPerfil; // Contador de elementos anteriores
447
448        for ($k=0; $k<$conPerfil; $k++){
449                //$pos = strpos($tbPerfil[$k]["ordenadores"], $ordenadores);
450                //if ($pos !== false) { // Cadena encontrada
451                        //if($tbPerfil[$k]["numpar"]==$numpar)
452                if ($tbPerfil[$k]["numpar"] == $numpar) {
453                        $pcs = explode (",", $ordenadores);
454                        $intersec = array_intersect (explode(",", $tbPerfil[$k]["ordenadores"]), $pcs);
455                        if (array_diff ($pcs, $intersec) == NULL) {
456                                return ($tbPerfil[$k]["perfilsoft"]);
457                        }
458                }
459        }
460}
461/*________________________________________________________________________________________________________
462       
463        Selecciona los ordenadores que tienen la misma imagen en la misma partición
464________________________________________________________________________________________________________*/
465function cargaImagenes($cmd,$idambito,$ambito)
466{
467        global $tbImg;  // Tabla contenedora de ordenadores incluidos en la consulta
468        global $conImg; // Contador de elementos anteriores
469        global $AMBITO_AULAS;
470        global $AMBITO_GRUPOSORDENADORES;
471        global $AMBITO_ORDENADORES;
472       
473        $cmd->texto="SELECT     count(*) as con,
474                                ordenadores_particiones.idimagen,
475                                ordenadores_particiones.numpar,
476                                imagenes.descripcion as imagen,
477                                GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) )
478                                        ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
479                           FROM ordenadores
480                           JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
481                           JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen";
482
483        switch($ambito){
484                case $AMBITO_AULAS :
485                        $cmd->texto.="  JOIN aulas ON aulas.idaula = ordenadores.idaula
486                                        WHERE aulas.idaula =".$idambito;
487                        break;
488                case $AMBITO_GRUPOSORDENADORES :
489                        $cmd->texto.="  JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
490                                        WHERE gruposordenadores.idgrupo =".$idambito;
491                        break;
492                case $AMBITO_ORDENADORES :
493                        $cmd->texto.="  WHERE ordenadores.idordenador =".$idambito;
494                        break;
495        }       
496        $cmd->texto.="                  GROUP BY ordenadores_particiones.numpar, ordenadores_particiones.idimagen";
497        //echo "carga imagenes:".$cmd->texto;
498        $rs=new Recordset;
499        $rs->Comando=&$cmd;
500        if (!$rs->Abrir()) return; // Error al abrir recordset
501        $rs->Primero();
502        $idx=0;
503        while (!$rs->EOF){
504                        $tbImg[$idx]["idimagen"]=$rs->campos["idimagen"];
505                        $tbImg[$idx]["imagen"]=$rs->campos["imagen"];
506                        $tbImg[$idx]["numpar"]=$rs->campos["numpar"];                   
507                        $tbImg[$idx]["ordenadores"]=$rs->campos["ordenadores"];                 
508                        $idx++;
509                $rs->Siguiente();
510        }
511        $conImg=$idx; // Guarda contador
512        $rs->Cerrar();
513}
514/*________________________________________________________________________________________________________
515       
516                Toma sistema operativo común a los ordenadores pasados como parámetros
517________________________________________________________________________________________________________*/
518function tomaImagenes($numpar,$ordenadores)
519{
520        global $tbImg;  // Tabla contenedora de ordenadores incluidos en la consulta
521        global $conImg; // Contador de elementos anteriores
522
523        for ($k=0; $k<$conImg; $k++) {
524                //$pos = strpos($tbImg[$k]["ordenadores"], $ordenadores);
525                //if ($pos !== false) { // Cadena encontrada
526                        //if($tbImg[$k]["numpar"]==$numpar){
527                if ($tbImg[$k]["numpar"] == $numpar) {
528                        $pcs = explode (",", $ordenadores);
529                        $intersec = array_intersect (explode(",", $tbImg[$k]["ordenadores"]), $pcs);
530                        if (array_diff ($pcs, $intersec) == NULL) {
531                                return ($tbImg[$k]["imagen"]);
532                        }
533                }
534        }
535}
536/*________________________________________________________________________________________________________
537       
538        Selecciona los ordenadores que tienen el mismo sistema de ficheros en la misma partición
539________________________________________________________________________________________________________*/
540function cargaNombresSO($cmd,$idambito,$ambito)
541{
542        global $tbSO;  // Tabla contenedora de ordenadores incluidos en la consulta
543        global $conSO; // Contador de elementos anteriores
544        global $AMBITO_AULAS;
545        global $AMBITO_GRUPOSORDENADORES;
546        global $AMBITO_ORDENADORES;
547       
548        $cmd->texto="SELECT     COUNT(*) AS con,
549                                ordenadores_particiones.idnombreso,
550                                ordenadores_particiones.numpar,nombresos.nombreso,
551                                GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) )
552                                        ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
553                           FROM ordenadores
554                           JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
555                           JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso";
556
557        switch($ambito){
558                case $AMBITO_AULAS :
559                        $cmd->texto.="  JOIN aulas ON aulas.idaula = ordenadores.idaula
560                                        WHERE aulas.idaula =".$idambito;
561                        break;
562                case $AMBITO_GRUPOSORDENADORES :
563                        $cmd->texto.="  JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
564                                        WHERE gruposordenadores.idgrupo =".$idambito;
565                        break;
566                case $AMBITO_ORDENADORES :
567                        $cmd->texto.="  WHERE ordenadores.idordenador =".$idambito;
568                        break;
569        }       
570        $cmd->texto.="                  GROUP BY ordenadores_particiones.numpar, ordenadores_particiones.idnombreso";
571        //echo "carga nombresos:".$cmd->texto;
572        $rs=new Recordset;
573        $rs->Comando=&$cmd;
574        if (!$rs->Abrir()) return; // Error al abrir recordset
575        $rs->Primero();
576        $idx=0;
577        while (!$rs->EOF){
578                        $tbSO[$idx]["idnombreso"]=$rs->campos["idnombreso"];
579                        $tbSO[$idx]["nombreso"]=$rs->campos["nombreso"];
580                        $tbSO[$idx]["numpar"]=$rs->campos["numpar"];                   
581                        $tbSO[$idx]["ordenadores"]=$rs->campos["ordenadores"];                 
582                        $idx++;
583                $rs->Siguiente();
584        }
585        $conSO=$idx; // Guarda contador
586        $rs->Cerrar();
587}
588/*________________________________________________________________________________________________________
589       
590                Toma sistema operativo común a los ordenadores pasados como parámetros
591________________________________________________________________________________________________________*/
592function tomaNombresSO($numpar,$ordenadores)
593{
594        global $tbSO;  // Tabla contenedora de ordenadores incluidos en la consulta
595        global $conSO; // Contador de elementos anteriores
596
597        for($k=0; $k<$conSO; $k++) {
598                if ($tbSO[$k]["numpar"]==$numpar) {
599                        //$pos = strpos($tbSO[$k]["ordenadores"], $ordenadores);
600                        //if ($pos !== false) { // Cadena encontrada
601                        $pcs = explode (",", $ordenadores);
602                        $intersec = array_intersect (explode(",", $tbSO[$k]["ordenadores"]), $pcs);
603                        if (array_diff ($pcs, $intersec) == NULL) {
604                                return ($tbSO[$k]["nombreso"]);
605                        }
606                }
607        }
608}
609/*________________________________________________________________________________________________________
610       
611        Selecciona los ordenadores que tienen el mismo tamaño para la misma partición
612________________________________________________________________________________________________________*/
613function cargaTamano($cmd,$idambito,$ambito)
614{
615        global $tbTam;  // Tabla contenedora de ordenadores incluidos en la consulta
616        global $conTam; // Contador de elementos anteriores
617        global $AMBITO_AULAS;
618        global $AMBITO_GRUPOSORDENADORES;
619        global $AMBITO_ORDENADORES;
620       
621        $cmd->texto="SELECT     COUNT(*) AS con,
622                                ordenadores_particiones.tamano,
623                                ordenadores_particiones.numpar,
624                                GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) )
625                                        ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
626                           FROM ordenadores
627                           JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador";
628
629        switch($ambito){
630                case $AMBITO_AULAS :
631                        $cmd->texto.="  JOIN aulas ON aulas.idaula = ordenadores.idaula
632                                        WHERE aulas.idaula =".$idambito;
633                        break;
634                case $AMBITO_GRUPOSORDENADORES :
635                        $cmd->texto.="  JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
636                                        WHERE gruposordenadores.idgrupo =".$idambito;
637                        break;
638                case $AMBITO_ORDENADORES :
639                        $cmd->texto.="  WHERE ordenadores.idordenador =".$idambito;
640                        break;
641        }       
642        $cmd->texto.="                  GROUP BY ordenadores_particiones.numpar, ordenadores_particiones.tamano";
643        //echo "carga tamaños:".$cmd->texto;
644        $rs=new Recordset;
645        $rs->Comando=&$cmd;
646        if (!$rs->Abrir()) return; // Error al abrir recordset
647        $rs->Primero();
648        $idx=0;
649        while (!$rs->EOF){
650                        $tbTam[$idx]["tamano"]=$rs->campos["tamano"];
651                        $tbTam[$idx]["numpar"]=$rs->campos["numpar"];                   
652                        $tbTam[$idx]["ordenadores"]=$rs->campos["ordenadores"];                 
653                        $idx++;
654                $rs->Siguiente();
655        }
656        $conTam=$idx; // Guarda contador
657        $rs->Cerrar();
658}
659/*________________________________________________________________________________________________________
660       
661                Toma tamaño de partición común a los ordenadores pasados como parámetros
662________________________________________________________________________________________________________*/
663function tomaTamano($numpar,$ordenadores)
664{
665        global $tbTam;  // Tabla contenedora de ordenadores incluidos en la consulta
666        global $conTam; // Contador de elementos anteriores
667
668        for ($k=0; $k<$conTam; $k++) {
669                if ($tbTam[$k]["numpar"] == $numpar) {
670//                      $pos = strpos ($tbTam[$k]["ordenadores"], $ordenadores);
671//                      if ($pos !== FALSE) { // Cadena encontrada
672                        $pcs = explode (",", $ordenadores);
673                        $intersec = array_intersect (explode(",", $tbTam[$k]["ordenadores"]), $pcs);
674                        if (array_diff ($pcs, $intersec) == NULL) {
675                                return ($tbTam[$k]["tamano"]);
676                        }
677                }
678        }
679}
680/*________________________________________________________________________________________________________
681       
682        Selecciona los ordenadores que tienen el mismo Contenido de Cache para la misma partición
683________________________________________________________________________________________________________*/
684function cargaCache($cmd,$idambito,$ambito)
685{
686        global $tbCac;  // Tabla contenedora de ordenadores incluidos en la consulta
687        global $conCac; // Contador de elementos anteriores
688        global $AMBITO_AULAS;
689        global $AMBITO_GRUPOSORDENADORES;
690        global $AMBITO_ORDENADORES;
691       
692        $cmd->texto="SELECT     COUNT(*) AS con,
693                                ordenadores_particiones.cache,
694                                ordenadores_particiones.numpar,
695                                GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) )
696                                        ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
697                           FROM ordenadores
698                           JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador";
699
700        switch($ambito){
701                case $AMBITO_AULAS :
702                        $cmd->texto.="  JOIN aulas ON aulas.idaula = ordenadores.idaula
703                                        WHERE aulas.idaula =".$idambito;
704                        break;
705                case $AMBITO_GRUPOSORDENADORES :
706                        $cmd->texto.="  JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
707                                        WHERE gruposordenadores.idgrupo =".$idambito;
708                        break;
709                case $AMBITO_ORDENADORES :
710                        $cmd->texto.="  WHERE ordenadores.idordenador =".$idambito;
711                        break;
712        }       
713        $cmd->texto.="                  GROUP BY ordenadores_particiones.numpar, ordenadores_particiones.cache";
714        $rs=new Recordset;
715        $rs->Comando=&$cmd;
716        if (!$rs->Abrir()) return; // Error al abrir recordset
717        $rs->Primero();
718        $idx=0;
719        while (!$rs->EOF){
720                        $tbCac[$idx]["cache"]=$rs->campos["cache"];
721                        $tbCac[$idx]["numpar"]=$rs->campos["numpar"];
722                        $tbCac[$idx]["ordenadores"]=$rs->campos["ordenadores"];
723                        $idx++;
724                $rs->Siguiente();
725        }
726        $conCac=$idx; // Guarda contador
727        $rs->Cerrar();
728}
729/*________________________________________________________________________________________________________
730       
731                Toma tamaño de partición común a los ordenadores pasados como parámetros
732________________________________________________________________________________________________________*/
733function tomaCache($numpar,$ordenadores)
734{
735        global $tbCac;  // Tabla contenedora de ordenadores incluidos en la consulta
736        global $conCac; // Contador de elementos anteriores
737
738        for ($k=0; $k<$conCac; $k++) {
739                if ($tbCac[$k]["numpar"] == $numpar) {
740                        $pcs = explode (",", $ordenadores);
741                        $intersec = array_intersect (explode(",", $tbCac[$k]["ordenadores"]), $pcs);
742                        if (array_diff ($pcs, $intersec) == NULL) {
743                                return ($tbCac[$k]["cache"]);
744                        }
745                }
746        }
747}
748?>
749
Note: See TracBrowser for help on using the repository browser.