source: admin/WebConsole/includes/ConfiguracionesParticiones.php @ 97f45b1

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 97f45b1 was 8db354e, checked in by alonso <alonso@…>, 12 years ago

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

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