source: admin/WebConsole/includes/ConfiguracionesParticiones.php @ b584da5

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 b584da5 was 9405c35, checked in by irina <irinagomez@…>, 10 years ago

#721 Consola restaurar image: se corrige el filtro de los equipos cuando están agrupados según particiones

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

  • Property mode set to 100644
File size: 33.7 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                                ordenadores_particiones.uso,
96                                sistemasficheros.descripcion AS sistemafichero,
97                                ordenadores_particiones.idnombreso,
98                                nombresos.nombreso,
99                                imagenes.idimagen,
100                                imagenes.descripcion AS imagen,
101                                imagenes.nombreca AS nombreca,
102                                imagenes.idrepositorio AS repositorio,
103                                ordenadores_particiones.fechadespliegue,
104                                ordenadores_particiones.idperfilsoft,
105                                perfilessoft.descripcion AS perfilsoft
106
107                                FROM ordenadores
108                                        INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
109                                        LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso
110                                        LEFT OUTER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar
111                                        LEFT OUTER JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen
112                                        LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft
113                                        LEFT OUTER JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero";
114                                       
115        switch($ambito){
116                case $AMBITO_AULAS :
117                        $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula
118                                        WHERE aulas.idaula =".$idambito;
119                        break;
120                case $AMBITO_GRUPOSORDENADORES :
121                        $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
122                                        WHERE gruposordenadores.idgrupo =".$idambito;
123                        break;
124                case $AMBITO_ORDENADORES :
125                        $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito;
126                        break;
127        }
128       
129        if($swr) // Si se trata de restauración no se tiene en cuenta las partciones no clonables
130                $cmd->texto.=" AND tipospar.clonable=1 AND ordenadores_particiones.numpar>0 ";
131
132        $cmd->texto.=" GROUP by configuracion";
133
134        //echo "carga claves:".$cmd->texto;
135        $rs=new Recordset;
136        $rs->Comando=&$cmd;
137        if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset
138        $rs->Primero();
139        $idx=0;
140        //echo $cmd->texto;
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]["idperfilsoft"]=$rs->campos["idperfilsoft"];
159                $tbKeys[$idx]["perfilsoft"]=$rs->campos["perfilsoft"];
160                //$tbKeys[$idx]["cache"]=$rs->campos["cache"];
161                $idx++;
162                $rs->Siguiente();
163        }
164        $conKeys=$idx; // Guarda contador
165        $rs->Cerrar();
166}
167/*________________________________________________________________________________________________________
168                        UHU  - 2013/05/14 - Se añade la clave número de disco
169                        UHU - 2013/06/06 - Se añade un return de las configuraciones detectadas
170                        Dibuja la tabla de configuración de las particiones de un grupo de ordenadores
171                       
172                        Parámetros de la función:
173                                $cmd: Objeto comando (Operativo)
174                                $idambito: Identificador del ámbito (identificador del Aula, grupo de ordenador u ordenador)                   
175                                $ambito: Tipo de ambito (Aulas, grupos de ordenadores u ordenadores)
176                                $sws: Switchs que indican el nivel de agrupamiento (ver comentarios de la función(cargaCaves)
177                                $swr: Indica  si se se tiene en cuenta las particiones no clonables (true:sólo conables , false:todas)
178                               
179                        Especificaciones:
180                                Esta función llama a pintaParticiones() que es realmente la encargada de mostrar o bien la
181                                configuración de los ordenadores o la pantalla de los comandos "Configurar" o "RestaurarImagen"
182                                para permitir introducir los    datos necesarios.               
183________________________________________________________________________________________________________*/
184function pintaConfiguraciones($cmd,$idambito,$ambito,$colums,$sws,$swr,$pintaParticionesFunction="pintaParticiones",$tipoid="idordenador")
185{
186        global $AMBITO_AULAS;
187        global $AMBITO_GRUPOSORDENADORES;
188        global $AMBITO_ORDENADORES;
189        global $TbMsg;
190        global $msk_sysFi;
191        global $msk_nombreSO;
192        global $msk_tamano;
193        global $msk_imagen;
194        global $msk_perfil;     
195        global $msk_cache;
196
197        cargaCaves($cmd,$idambito,$ambito,$sws,$swr);
198        cargaSistemasFicheros($cmd,$idambito,$ambito);
199        cargaPerfiles($cmd,$idambito,$ambito);
200        cargaImagenes($cmd,$idambito,$ambito);
201        cargaNombresSO($cmd,$idambito,$ambito);
202        cargaTamano($cmd,$idambito,$ambito);
203        cargaCache($cmd,$idambito,$ambito);
204       
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( ';', ordenadores_particiones.numdisk,
214                                                ordenadores_particiones.numpar, ";
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        //echo $cmd->texto;
387        while (!$rs->EOF){
388                        $tbSysFi[$idx]["idsistemafichero"]=$rs->campos["idsistemafichero"];
389                        $tbSysFi[$idx]["numdisk"]=$rs->campos["numdisk"];                       
390                        $tbSysFi[$idx]["numpar"]=$rs->campos["numpar"];                 
391                        $tbSysFi[$idx]["sistemafichero"]=$rs->campos["sistemafichero"];
392                        $tbSysFi[$idx]["ordenadores"]=$rs->campos["ordenadores"];                       
393                        $idx++;
394                $rs->Siguiente();
395        }
396        $conSysFi=$idx; // Guarda contador
397        $rs->Cerrar();
398}
399/*________________________________________________________________________________________________________
400       
401        Toma sistema de ficheros común a los ordenadores pasados como parámetros
402        UHU 2013/05/17 - Ahora se tienen en cuenta el disco, sino se le pasa ningun parametro, se asigna 1
403
404________________________________________________________________________________________________________*/
405function tomaSistemasFicheros($numpar,$ordenadores,$sw=false,$numdisk = 1)
406{
407        global $tbSysFi;  // Tabla contenedora de ordenadores incluidos en la consulta
408        global $conSysFi; // Contador de elementos anteriores
409
410        for ($k=0; $k<$conSysFi; $k++){
411                if ($tbSysFi[$k]["numdisk"] == $numdisk && $tbSysFi[$k]["numpar"] == $numpar) {
412                        //$pos = strpos($tbSysFi[$k]["ordenadores"], $ordenadores);
413                        //if ($pos !== false) { // Cadena encontrada
414                        $pcs = explode (",", $ordenadores);
415                        $intersec = array_intersect (explode(",", $tbSysFi[$k]["ordenadores"]), $pcs);
416                        if (array_diff ($pcs, $intersec) == NULL) {
417                                if ($sw) {      // Retonar identificador
418                                        return ($tbSysFi[$k]["idsistemafichero"]);
419                                } else {
420                                        return ($tbSysFi[$k]["sistemafichero"]);
421                                }
422                        }
423                }
424        }
425}
426/*________________________________________________________________________________________________________
427       
428        Selecciona los ordenadores que tienen el mismo perfil software en la misma partición
429        UHU 2013/05/17 - Ahora se carga también el numero de disco en la consulta
430________________________________________________________________________________________________________*/
431function cargaPerfiles($cmd,$idambito,$ambito)
432{
433        global $tbPerfil;  // Tabla contenedora de ordenadores incluidos en la consulta
434        global $conPerfil; // Contador de elementos anteriores
435        global $AMBITO_AULAS;
436        global $AMBITO_GRUPOSORDENADORES;
437        global $AMBITO_ORDENADORES;
438       
439        $cmd->texto="SELECT count(*) AS con,
440                            ordenadores_particiones.idperfilsoft,
441                            ordenadores_particiones.numdisk,
442                            ordenadores_particiones.numpar,
443                            perfilessoft.descripcion AS perfilsoft,
444                            GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) )
445                                ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
446                       FROM ordenadores
447                       JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
448                       JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft";
449
450        switch ($ambito) {
451                case $AMBITO_AULAS :
452                        $cmd->texto.="  JOIN aulas ON aulas.idaula = ordenadores.idaula
453                                        WHERE aulas.idaula =".$idambito;
454                        break;
455                case $AMBITO_GRUPOSORDENADORES :
456                        $cmd->texto.="  JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
457                                        WHERE gruposordenadores.idgrupo =".$idambito;
458                        break;
459                case $AMBITO_ORDENADORES :
460                        $cmd->texto.="  WHERE ordenadores.idordenador =".$idambito;
461                        break;
462        }       
463        $cmd->texto.="                  GROUP BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ordenadores_particiones.idperfilsoft";
464        //echo "carga perfiles:".$cmd->texto;
465        $rs=new Recordset;
466        $rs->Comando=&$cmd;
467        if (!$rs->Abrir()) return; // Error al abrir recordset
468        $rs->Primero();
469        $idx=0;
470        while (!$rs->EOF){
471                        $tbPerfil[$idx]["idperfilsoft"]=$rs->campos["idperfilsoft"];
472                        $tbPerfil[$idx]["perfilsoft"]=$rs->campos["perfilsoft"];
473                        $tbPerfil[$idx]["numdisk"]=$rs->campos["numdisk"];
474                        $tbPerfil[$idx]["numpar"]=$rs->campos["numpar"];                                       
475                        $tbPerfil[$idx]["ordenadores"]=$rs->campos["ordenadores"];                     
476                        $idx++;
477                $rs->Siguiente();
478        }
479        $conPerfil=$idx; // Guarda contador
480        $rs->Cerrar();
481}
482/*________________________________________________________________________________________________________
483       
484                Toma perfilsoft común a los ordenadores pasados como parámetros
485                UHU 2013/05/17 - Ahora se tienen en cuenta el disco, sino se le pasa ningun parametro, se asigna 1
486________________________________________________________________________________________________________*/
487function tomaPerfiles($numpar,$ordenadores,$numdisk = 1)
488{
489        global $tbPerfil;  // Tabla contenedora de ordenadores incluidos en la consulta
490        global $conPerfil; // Contador de elementos anteriores
491
492        for ($k=0; $k<$conPerfil; $k++){
493                //$pos = strpos($tbPerfil[$k]["ordenadores"], $ordenadores);
494                //if ($pos !== false) { // Cadena encontrada
495                        //if($tbPerfil[$k]["numpar"]==$numpar)
496                if ($tbPerfil[$k]["numdisk"] == $numdisk && $tbPerfil[$k]["numpar"] == $numpar) {
497                        $pcs = explode (",", $ordenadores);
498                        $intersec = array_intersect (explode(",", $tbPerfil[$k]["ordenadores"]), $pcs);
499                        if (array_diff ($pcs, $intersec) == NULL) {
500                                return ($tbPerfil[$k]["perfilsoft"]);
501                        }
502                }
503        }
504}
505/*________________________________________________________________________________________________________
506       
507        Selecciona los ordenadores que tienen la misma imagen en la misma partición
508                UHU 2013/05/17 - Ahora se carga también el numero de disco en la consulta
509________________________________________________________________________________________________________*/
510function cargaImagenes($cmd,$idambito,$ambito)
511{
512        global $tbImg;  // Tabla contenedora de ordenadores incluidos en la consulta
513        global $conImg; // Contador de elementos anteriores
514        global $AMBITO_AULAS;
515        global $AMBITO_GRUPOSORDENADORES;
516        global $AMBITO_ORDENADORES;
517       
518        $cmd->texto="SELECT     count(*) as con,
519                                ordenadores_particiones.idimagen,
520                                ordenadores_particiones.numdisk,
521                                ordenadores_particiones.numpar,
522                                imagenes.descripcion as imagen,
523                                GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) )
524                                        ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
525                           FROM ordenadores
526                           JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
527                           JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen";
528
529        switch($ambito){
530                case $AMBITO_AULAS :
531                        $cmd->texto.="  JOIN aulas ON aulas.idaula = ordenadores.idaula
532                                        WHERE aulas.idaula =".$idambito;
533                        break;
534                case $AMBITO_GRUPOSORDENADORES :
535                        $cmd->texto.="  JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
536                                        WHERE gruposordenadores.idgrupo =".$idambito;
537                        break;
538                case $AMBITO_ORDENADORES :
539                        $cmd->texto.="  WHERE ordenadores.idordenador =".$idambito;
540                        break;
541        }       
542        $cmd->texto.="                  GROUP BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ordenadores_particiones.idimagen";
543        //echo "carga imagenes:".$cmd->texto;
544        $rs=new Recordset;
545        $rs->Comando=&$cmd;
546        if (!$rs->Abrir()) return; // Error al abrir recordset
547        $rs->Primero();
548        $idx=0;
549        while (!$rs->EOF){
550                        $tbImg[$idx]["idimagen"]=$rs->campos["idimagen"];
551                        $tbImg[$idx]["imagen"]=$rs->campos["imagen"];
552                        $tbImg[$idx]["numdisk"]=$rs->campos["numdisk"];                 
553                        $tbImg[$idx]["numpar"]=$rs->campos["numpar"];                   
554                        $tbImg[$idx]["ordenadores"]=$rs->campos["ordenadores"];                 
555                        $idx++;
556                $rs->Siguiente();
557        }
558        $conImg=$idx; // Guarda contador
559        $rs->Cerrar();
560}
561/*________________________________________________________________________________________________________
562       
563                Toma sistema operativo común a los ordenadores pasados como parámetros
564                UHU 2013/05/17 - Ahora se tienen en cuenta el disco, sino se le pasa ningun parametro, se asigna 1
565________________________________________________________________________________________________________*/
566function tomaImagenes($numpar,$ordenadores, $numdisk = 1)
567{
568        global $tbImg;  // Tabla contenedora de ordenadores incluidos en la consulta
569        global $conImg; // Contador de elementos anteriores
570
571        for ($k=0; $k<$conImg; $k++) {
572                //$pos = strpos($tbImg[$k]["ordenadores"], $ordenadores);
573                //if ($pos !== false) { // Cadena encontrada
574                        //if($tbImg[$k]["numpar"]==$numpar){
575                if ($tbImg[$k]["numdisk"] == $numdisk && $tbImg[$k]["numpar"] == $numpar) {
576                        $pcs = explode (",", $ordenadores);
577                        $intersec = array_intersect (explode(",", $tbImg[$k]["ordenadores"]), $pcs);
578                        if (array_diff ($pcs, $intersec) == NULL) {
579                                return ($tbImg[$k]["imagen"]);
580                        }
581                }
582        }
583}
584/*________________________________________________________________________________________________________
585       
586        Selecciona los ordenadores que tienen el mismo sistema de ficheros en la misma partición
587        UHU 2013/05/17 - Ahora se carga también el numero de disco en la consulta
588________________________________________________________________________________________________________*/
589function cargaNombresSO($cmd,$idambito,$ambito)
590{
591        global $tbSO;  // Tabla contenedora de ordenadores incluidos en la consulta
592        global $conSO; // Contador de elementos anteriores
593        global $AMBITO_AULAS;
594        global $AMBITO_GRUPOSORDENADORES;
595        global $AMBITO_ORDENADORES;
596       
597        $cmd->texto="SELECT     COUNT(*) AS con,
598                                ordenadores_particiones.idnombreso,
599                                ordenadores_particiones.numdisk,ordenadores_particiones.numpar,nombresos.nombreso,
600                                GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) )
601                                        ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
602                           FROM ordenadores
603                           JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador
604                           JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso";
605
606        switch($ambito){
607                case $AMBITO_AULAS :
608                        $cmd->texto.="  JOIN aulas ON aulas.idaula = ordenadores.idaula
609                                        WHERE aulas.idaula =".$idambito;
610                        break;
611                case $AMBITO_GRUPOSORDENADORES :
612                        $cmd->texto.="  JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
613                                        WHERE gruposordenadores.idgrupo =".$idambito;
614                        break;
615                case $AMBITO_ORDENADORES :
616                        $cmd->texto.="  WHERE ordenadores.idordenador =".$idambito;
617                        break;
618        }       
619        $cmd->texto.="                  GROUP BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ordenadores_particiones.idnombreso";
620        //echo "carga nombresos:".$cmd->texto;
621        $rs=new Recordset;
622        $rs->Comando=&$cmd;
623        if (!$rs->Abrir()) return; // Error al abrir recordset
624        $rs->Primero();
625        $idx=0;
626        while (!$rs->EOF){
627                        $tbSO[$idx]["idnombreso"]=$rs->campos["idnombreso"];
628                        $tbSO[$idx]["nombreso"]=$rs->campos["nombreso"];
629                        $tbSO[$idx]["numdisk"]=$rs->campos["numdisk"];                 
630                        $tbSO[$idx]["numpar"]=$rs->campos["numpar"];                   
631                        $tbSO[$idx]["ordenadores"]=$rs->campos["ordenadores"];                 
632                        $idx++;
633                $rs->Siguiente();
634        }
635        $conSO=$idx; // Guarda contador
636        $rs->Cerrar();
637}
638/*________________________________________________________________________________________________________
639       
640                Toma sistema operativo común a los ordenadores pasados como parámetros
641                UHU 2013/05/17 - Ahora se tienen en cuenta el disco, sino se le pasa ningun parametro, se asigna 1
642________________________________________________________________________________________________________*/
643function tomaNombresSO($numpar,$ordenadores,$numdisk = 1)
644{
645        global $tbSO;  // Tabla contenedora de ordenadores incluidos en la consulta
646        global $conSO; // Contador de elementos anteriores
647
648        for($k=0; $k<$conSO; $k++) {
649                if ($tbSO[$k]["numdisk"] == $numdisk && $tbSO[$k]["numpar"] == $numpar) {
650                        //$pos = strpos($tbSO[$k]["ordenadores"], $ordenadores);
651                        //if ($pos !== false) { // Cadena encontrada
652                        $pcs = explode (",", $ordenadores);
653                        $intersec = array_intersect (explode(",", $tbSO[$k]["ordenadores"]), $pcs);
654                        if (array_diff ($pcs, $intersec) == NULL) {
655                                return ($tbSO[$k]["nombreso"]);
656                        }
657                }
658        }
659}
660/*________________________________________________________________________________________________________
661       
662        Selecciona los ordenadores que tienen el mismo tamaño para la misma partición
663        UHU 2013/05/17 - Ahora se carga también el numero de disco en la consulta
664________________________________________________________________________________________________________*/
665function cargaTamano($cmd,$idambito,$ambito)
666{
667        global $tbTam;  // Tabla contenedora de ordenadores incluidos en la consulta
668        global $conTam; // Contador de elementos anteriores
669        global $AMBITO_AULAS;
670        global $AMBITO_GRUPOSORDENADORES;
671        global $AMBITO_ORDENADORES;
672       
673        $cmd->texto="SELECT     COUNT(*) AS con,
674                                ordenadores_particiones.tamano,
675                                ordenadores_particiones.numdisk,
676                                ordenadores_particiones.numpar,
677                                GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) )
678                                        ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
679                           FROM ordenadores
680                           JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador";
681
682        switch($ambito){
683                case $AMBITO_AULAS :
684                        $cmd->texto.="  JOIN aulas ON aulas.idaula = ordenadores.idaula
685                                        WHERE aulas.idaula =".$idambito;
686                        break;
687                case $AMBITO_GRUPOSORDENADORES :
688                        $cmd->texto.="  JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
689                                        WHERE gruposordenadores.idgrupo =".$idambito;
690                        break;
691                case $AMBITO_ORDENADORES :
692                        $cmd->texto.="  WHERE ordenadores.idordenador =".$idambito;
693                        break;
694        }       
695        $cmd->texto.="                  GROUP BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ordenadores_particiones.tamano";
696        //echo "carga tamaños:".$cmd->texto;
697        $rs=new Recordset;
698        $rs->Comando=&$cmd;
699        if (!$rs->Abrir()) return; // Error al abrir recordset
700        $rs->Primero();
701        $idx=0;
702        while (!$rs->EOF){
703                        $tbTam[$idx]["tamano"]=$rs->campos["tamano"];
704            $tbTam[$idx]["numdisk"]=$rs->campos["numdisk"];
705                        $tbTam[$idx]["numpar"]=$rs->campos["numpar"];                   
706                        $tbTam[$idx]["ordenadores"]=$rs->campos["ordenadores"];                 
707                        $idx++;
708                $rs->Siguiente();
709        }
710        $conTam=$idx; // Guarda contador
711        $rs->Cerrar();
712}
713/*________________________________________________________________________________________________________
714       
715                Toma tamaño de partición común a los ordenadores pasados como parámetros
716                UHU 2013/05/17 - Ahora se tienen en cuenta el disco, sino se le pasa ningun parametro, se asigna 1
717________________________________________________________________________________________________________*/
718function tomaTamano($numpar,$ordenadores,$numdisk = 1)
719{
720        global $tbTam;  // Tabla contenedora de ordenadores incluidos en la consulta
721        global $conTam; // Contador de elementos anteriores
722
723        for ($k=0; $k<$conTam; $k++) {
724                if ($tbTam[$k]["numdisk"] == $numdisk && $tbTam[$k]["numpar"] == $numpar) {
725//                      $pos = strpos ($tbTam[$k]["ordenadores"], $ordenadores);
726//                      if ($pos !== FALSE) { // Cadena encontrada
727                        $pcs = explode (",", $ordenadores);
728                        $intersec = array_intersect (explode(",", $tbTam[$k]["ordenadores"]), $pcs);
729                        if (array_diff ($pcs, $intersec) == NULL) {
730                                return ($tbTam[$k]["tamano"]);
731                        }
732                }
733        }
734}
735/*________________________________________________________________________________________________________
736       
737        Selecciona los ordenadores que tienen el mismo Contenido de Cache para la misma partición
738        UHU 2013/05/17 - Ahora se carga también el numero de disco en la consulta
739________________________________________________________________________________________________________*/
740function cargaCache($cmd,$idambito,$ambito)
741{
742        global $tbCac;  // Tabla contenedora de ordenadores incluidos en la consulta
743        global $conCac; // Contador de elementos anteriores
744        global $AMBITO_AULAS;
745        global $AMBITO_GRUPOSORDENADORES;
746        global $AMBITO_ORDENADORES;
747       
748        $cmd->texto="SELECT     COUNT(*) AS con,
749                                ordenadores_particiones.cache,
750                                ordenadores_particiones.numdisk,
751                                ordenadores_particiones.numpar,
752                                GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) )
753                                        ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores
754                           FROM ordenadores
755                           JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador";
756
757        switch($ambito){
758                case $AMBITO_AULAS :
759                        $cmd->texto.="  JOIN aulas ON aulas.idaula = ordenadores.idaula
760                                        WHERE aulas.idaula =".$idambito;
761                        break;
762                case $AMBITO_GRUPOSORDENADORES :
763                        $cmd->texto.="  JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
764                                        WHERE gruposordenadores.idgrupo =".$idambito;
765                        break;
766                case $AMBITO_ORDENADORES :
767                        $cmd->texto.="  WHERE ordenadores.idordenador =".$idambito;
768                        break;
769        }       
770        $cmd->texto.="                  GROUP BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ordenadores_particiones.cache";
771        $rs=new Recordset;
772        $rs->Comando=&$cmd;
773        if (!$rs->Abrir()) return; // Error al abrir recordset
774        $rs->Primero();
775        $idx=0;
776        while (!$rs->EOF){
777                        $tbCac[$idx]["cache"]=$rs->campos["cache"];
778                        $tbCac[$idx]["numdisk"]=$rs->campos["numdisk"];
779                        $tbCac[$idx]["numpar"]=$rs->campos["numpar"];
780                        $tbCac[$idx]["ordenadores"]=$rs->campos["ordenadores"];
781                        $idx++;
782                $rs->Siguiente();
783        }
784        $conCac=$idx; // Guarda contador
785        $rs->Cerrar();
786}
787/*________________________________________________________________________________________________________
788       
789                Toma tamaño de partición común a los ordenadores pasados como parámetros
790                UHU 2013/05/17 - Ahora se tienen en cuenta el disco, sino se le pasa ningun parametro, se asigna 1
791________________________________________________________________________________________________________*/
792function tomaCache($numpar,$ordenadores,$numdisk = 1)
793{
794        global $tbCac;  // Tabla contenedora de ordenadores incluidos en la consulta
795        global $conCac; // Contador de elementos anteriores
796
797        for ($k=0; $k<$conCac; $k++) {
798                if ($tbCac[$k]["numdisk"] == $numdisk && $tbCac[$k]["numpar"] == $numpar) {
799                        $pcs = explode (",", $ordenadores);
800                        $intersec = array_intersect (explode(",", $tbCac[$k]["ordenadores"]), $pcs);
801                        if (array_diff ($pcs, $intersec) == NULL) {
802                                return ($tbCac[$k]["cache"]);
803                        }
804                }
805        }
806}
807?>
808
Note: See TracBrowser for help on using the repository browser.