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

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 b6de0f0 was 2ff31f9, checked in by ramon <ramongomez@…>, 9 years ago

#711: Mostrar disco y partición en orden númerico (evitar que se muestre la partición 10 antes que la 1).

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