source: admin/WebConsole/includes/ConfiguracionesParticiones.php @ 1c69be8

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 1c69be8 was 591d551, checked in by alonso <alonso@…>, 12 years ago

Alguas mejoras enla visualización de aulas y ordenadores

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

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