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

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 8626306 was 92cf666, checked in by ramon <ramongomez@…>, 12 years ago

#601: Integrar código de revisión r3860 con mejoras en asistente de particionado para grupos de ordenadores.

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

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