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

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 0a735488 was f256817, checked in by ramon <ramongomez@…>, 10 years ago

#677: Actualizar BD y mostrar fecha de despliegue de una imagen. Corregir errata para registrar la imagen desplegada indicando nº de disco y de partición.

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

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