source: admin/WebConsole/includes/ConfiguracionesParticiones.php @ 0390d46

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 0390d46 was c5f993b, checked in by ramon <ramongomez@…>, 12 years ago

#601: Mostrar tamaño de discos GPT en configuraciones y no mostrar datos del disco en comando Particionar y Formatear.

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

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