source: admin/WebConsole/includes/ConfiguracionesParticiones.php @ 5e7555d

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 5e7555d was e0e571d, checked in by ramon <ramongomez@…>, 8 years ago

#730: Modificar consulta de configuraciones de clientes para evitar la restricción del modo ONLY_FULL_GROUP_BY activado en MySQL 5.7

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

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