source: admin/WebConsole/includes/ConfiguracionesParticiones.php @ 43b6d0b

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 43b6d0b was 476d1a0f, checked in by ramon <ramongomez@…>, 9 years ago

#737 #730: Mostrar diferencia entre versión de imagen creada y restaurada; actualizar lista de tickets cerrados.

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

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