source: admin/WebConsole/includes/ConfiguracionesParticiones.php @ 91a3b4c

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 91a3b4c 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
RevLine 
[3ec149c]1<?php
[b2651a6]2include_once("pintaParticiones.php");
3
[3ec149c]4/*________________________________________________________________________________________________________
[b2651a6]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
[3ec149c]9               
10                Parámetros:
[b2651a6]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
[3ec149c]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     
[b2651a6]25                        1       1        NTFS   30000000        Windows NTFS    Windows XP profesional          NULL    Perfil Software (CUR-8, Part:1)
[3ec149c]26                Que indica:
[b2651a6]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
[3ec149c]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
[1873b9a]50                                                                00100000- No agrupar por Contenido Cache
[3ec149c]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;     
[1873b9a]66        global $msk_cache;
[3ec149c]67                               
[b2651a6]68        $cmd->texto="SELECT CONCAT_WS( ';',ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ";
[46af42e]69
[3ec149c]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)                                               
[46af42e]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, ";
[3ec149c]84
[46af42e]85        if($sws & $msk_cache)
86                $cmd->texto.="  ordenadores_particiones.cache, ";
87
[85286a2]88        $cmd->texto.="          ordenadores_particiones.codpar) AS configuracion,
[46af42e]89                                ordenadores_particiones.numdisk,
[3ec149c]90                                ordenadores_particiones.numpar ,
[b7b8b6f]91                                ordenadores_particiones.codpar ,
[85286a2]92                                IFNULL (tipospar.tipopar, ordenadores_particiones.codpar) AS tipopar,
[3ec149c]93                                tipospar.clonable,
94                                ordenadores_particiones.tamano,
[85286a2]95                                sistemasficheros.descripcion AS sistemafichero,
[3ec149c]96                                ordenadores_particiones.idnombreso,
97                                nombresos.nombreso,
98                                imagenes.idimagen,
[85286a2]99                                imagenes.descripcion AS imagen,
100                                imagenes.nombreca AS nombreca,
101                                imagenes.idrepositorio AS repositorio,
[3ec149c]102                                ordenadores_particiones.idperfilsoft,
[85286a2]103                                perfilessoft.descripcion AS perfilsoft
[3ec149c]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
[85286a2]108                                        LEFT OUTER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar
[3ec149c]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){
[46af42e]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;
[b2651a6]125        }
126       
[3ec149c]127        if($swr) // Si se trata de restauración no se tiene en cuenta las partciones no clonables
[591d551]128                $cmd->texto.=" AND tipospar.clonable=1 AND ordenadores_particiones.numpar>0 ";
[46af42e]129
[3ec149c]130        $cmd->texto.=" GROUP by configuracion";
[b2651a6]131
[3ec149c]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){
[46af42e]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"];
[df440ce]156                //$tbKeys[$idx]["cache"]=$rs->campos["cache"];
[46af42e]157                $idx++;
[3ec149c]158                $rs->Siguiente();
159        }
160        $conKeys=$idx; // Guarda contador
161        $rs->Cerrar();
162}
163/*________________________________________________________________________________________________________
[b2651a6]164                        UHU  - 2013/05/14 - Se añade la clave número de disco
[3ec149c]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________________________________________________________________________________________________________*/
[b2651a6]179function pintaConfiguraciones($cmd,$idambito,$ambito,$colums,$sws,$swr,$pintaParticionesFunction="pintaParticiones")
[3ec149c]180{
181        global $AMBITO_AULAS;
182        global $AMBITO_GRUPOSORDENADORES;
183        global $AMBITO_ORDENADORES;
[06c5e2e]184        global $TbMsg;
[3ec149c]185        global $msk_sysFi;
186        global $msk_nombreSO;
187        global $msk_tamano;
188        global $msk_imagen;
189        global $msk_perfil;     
[1873b9a]190        global $msk_cache;
[46af42e]191
[3ec149c]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);
[1873b9a]198        cargaCache($cmd,$idambito,$ambito);
[3ec149c]199       
[a57dbd8]200        $cmd->texto="SELECT     COUNT(*) AS con,
201                                GROUP_CONCAT(CAST( temp2.idordenador AS CHAR(11) )  ORDER BY temp2.idordenador SEPARATOR ',' ) AS idordenadores,
[b7b8b6f]202                                temp2.configuraciones
203                                FROM (SELECT
[a57dbd8]204                                        temp1.idordenador AS idordenador,
205                                        GROUP_CONCAT(CAST( temp1.configuracion AS CHAR(250) )  ORDER BY temp1.configuracion SEPARATOR '@' ) AS configuraciones
[b2651a6]206                                        FROM (SELECT ordenadores_particiones.idordenador,ordenadores_particiones.numdisk,
[b7b8b6f]207                                                ordenadores_particiones.numpar,
[b2651a6]208                                                concat_WS( ';', ordenadores_particiones.numdisk,
[b7b8b6f]209                                                ordenadores_particiones.numpar, ";
210
[a57dbd8]211        if($sws & $msk_tamano)
[3ec149c]212                $cmd->texto.="  ordenadores_particiones.tamano,";
[b7b8b6f]213
[a57dbd8]214        if($sws & $msk_sysFi)
[3ec149c]215                $cmd->texto.="  ordenadores_particiones.idsistemafichero, ";   
[b7b8b6f]216
[a57dbd8]217        if($sws & $msk_nombreSO)
[b7b8b6f]218                $cmd->texto.="  ordenadores_particiones.idnombreso, ";
219
[591d551]220
[a57dbd8]221        if($sws & $msk_imagen)
[3ec149c]222                $cmd->texto.="  ordenadores_particiones.idimagen, ";   
[b7b8b6f]223
[a57dbd8]224        if($sws & $msk_perfil)
[b7b8b6f]225                $cmd->texto.="  ordenadores_particiones.idperfilsoft, ";
[1873b9a]226               
227        if($sws & $msk_cache)
228                $cmd->texto.="  ordenadores_particiones.cache, ";
[3ec149c]229                       
[a57dbd8]230        $cmd->texto.="          ordenadores_particiones.codpar) AS configuracion
[b7b8b6f]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
[c5f993b]234                                                LEFT JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar
[b7b8b6f]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
[3ec149c]239        switch($ambito){
240                case $AMBITO_AULAS :
[a57dbd8]241                        $cmd->texto.="  INNER JOIN aulas ON aulas.idaula = ordenadores.idaula WHERE aulas.idaula =".$idambito;
242                        break;
[3ec149c]243                case $AMBITO_GRUPOSORDENADORES :
[591d551]244                        $cmd->texto.="  INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid WHERE                                                                                           gruposordenadores.idgrupo =".$idambito;
[3ec149c]245                        break;
246                case $AMBITO_ORDENADORES :
[a57dbd8]247                        $cmd->texto.="  WHERE ordenadores.idordenador=".$idambito;
[3ec149c]248                        break;
[b5523ac]249        }
[8db354e]250
[a57dbd8]251        if ($swr) // Si se trata de restauración no se tiene en cuenta las particiones no clonables
[b5523ac]252                $cmd->texto.=" AND tipospar.clonable=1 AND ordenadores_particiones.numpar>0";
[8db354e]253
[b2651a6]254        $cmd->texto.="  ORDER BY ordenadores_particiones.idordenador, ordenadores_particiones.numdisk, ordenadores_particiones.numpar) AS temp1
[a57dbd8]255                                        GROUP BY temp1.idordenador) AS temp2
[3ec149c]256                                        GROUP BY temp2.configuraciones
257                                        ORDER BY con desc,idordenadores";
[b5523ac]258
[3ec149c]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
[b5523ac]264        echo '<table id="tabla_conf" width="95%" class="tabla_listados_sin" align="center" border="0" cellpadding="0" cellspacing="1">';
[3ec149c]265        while (!$rs->EOF){
266                $cc++;
267                //Muestra ordenadores
[b5523ac]268                echo '<tr><td colspan="'.$colums.'" style="background-color: #ffffff;">';
[3ec149c]269                echo pintaOrdenadores($cmd,$rs->campos["idordenadores"],10,$cc);
[b7b8b6f]270                echo '</td></tr>';
[3ec149c]271                //Muestra particiones y configuración
272
[b2651a6]273                echo $pintaParticionesFunction($cmd,$rs->campos["configuraciones"],$rs->campos["idordenadores"],$cc,$ambito,$idambito);
[3ec149c]274                $rs->Siguiente();
275        }
[b7b8b6f]276        if ($cc == 0) {
[b2651a6]277                echo '<tr><th>'.$TbMsg["CONFIG_NOCONFIG"].'</th><tr>';  // Cliente sin configuración.
[49313a5]278        }
[b7b8b6f]279        echo "</table>";
[3ec149c]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{
[54909a3]293        $tablaHtml="";
[3ec149c]294        $contor=0;
295        $maxcontor=10; // Número máximo de prodenadores por fila
[a57dbd8]296        $cmd->texto=" SELECT idordenador,nombreordenador,ip FROM ordenadores WHERE idordenador IN (".$idordenadores.") ORDER BY nombreordenador";
[3ec149c]297        $rs=new Recordset;
298        $rs->Comando=&$cmd;
299        if (!$rs->Abrir()) return(""); // Error al abrir recordset
[a57dbd8]300        $tablaHtml.='<table align="left" border="0" id="tbOrd_'.$cc.'" value="'.$idordenadores.'"><tr>';
[3ec149c]301        while (!$rs->EOF){
302                $contor++;
[e79394e]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>';
[3ec149c]306                if($contor>$maxcontor){
307                        $contor=0;
[a57dbd8]308                        $tablaHtml.='</tr><tr>';
[3ec149c]309                }
310                $rs->Siguiente();
311        }
[a57dbd8]312        $tablaHtml.='</tr>';
313        $tablaHtml.= '</table>';
[3ec149c]314        return($tablaHtml);
315}
316/*________________________________________________________________________________________________________
317       
318        Selecciona los ordenadores que tienen el mismo sistema de ficheros del ámbito elegido
[b2651a6]319        UHU 2013/05/17 - Ahora se carga también el numero de disco en la consulta
[3ec149c]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       
[a57dbd8]329        $cmd->texto="SELECT     COUNT(*) AS con,
330                                ordenadores_particiones.idsistemafichero,
[b2651a6]331                                ordenadores_particiones.numdisk,
[a57dbd8]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";
[3ec149c]339
340        switch($ambito){
341                case $AMBITO_AULAS :
[a57dbd8]342                        $cmd->texto.="  JOIN aulas ON aulas.idaula = ordenadores.idaula
343                                        WHERE aulas.idaula =".$idambito;
344                        break;
[3ec149c]345                case $AMBITO_GRUPOSORDENADORES :
[a57dbd8]346                        $cmd->texto.="  INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
347                                        WHERE gruposordenadores.idgrupo =".$idambito;
[3ec149c]348                        break;
349                case $AMBITO_ORDENADORES :
[a57dbd8]350                        $cmd->texto.="  WHERE ordenadores.idordenador =".$idambito;
[3ec149c]351                        break;
352        }       
[b2651a6]353        $cmd->texto.="          GROUP BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ordenadores_particiones.idsistemafichero";
354       
[3ec149c]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"];
[b2651a6]363                        $tbSysFi[$idx]["numdisk"]=$rs->campos["numdisk"];                       
[3ec149c]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
[b2651a6]376        UHU 2013/05/17 - Ahora se tienen en cuenta el disco, sino se le pasa ningun parametro, se asigna 1
377
[3ec149c]378________________________________________________________________________________________________________*/
[b2651a6]379function tomaSistemasFicheros($numpar,$ordenadores,$sw=false,$numdisk = 1)
[3ec149c]380{
[a57dbd8]381        global $tbSysFi;  // Tabla contenedora de ordenadores incluidos en la consulta
[3ec149c]382        global $conSysFi; // Contador de elementos anteriores
383
[a57dbd8]384        for ($k=0; $k<$conSysFi; $k++){
[b2651a6]385                if ($tbSysFi[$k]["numdisk"] == $numdisk && $tbSysFi[$k]["numpar"] == $numpar) {
[a57dbd8]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                                }
[3ec149c]396                        }
397                }
398        }
399}
400/*________________________________________________________________________________________________________
401       
402        Selecciona los ordenadores que tienen el mismo perfil software en la misma partición
[b2651a6]403        UHU 2013/05/17 - Ahora se carga también el numero de disco en la consulta
[3ec149c]404________________________________________________________________________________________________________*/
405function cargaPerfiles($cmd,$idambito,$ambito)
406{
[a57dbd8]407        global $tbPerfil;  // Tabla contenedora de ordenadores incluidos en la consulta
[3ec149c]408        global $conPerfil; // Contador de elementos anteriores
409        global $AMBITO_AULAS;
410        global $AMBITO_GRUPOSORDENADORES;
411        global $AMBITO_ORDENADORES;
412       
[a57dbd8]413        $cmd->texto="SELECT count(*) AS con,
414                            ordenadores_particiones.idperfilsoft,
[b2651a6]415                            ordenadores_particiones.numdisk,
[a57dbd8]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";
[3ec149c]423
[a57dbd8]424        switch ($ambito) {
[3ec149c]425                case $AMBITO_AULAS :
[a57dbd8]426                        $cmd->texto.="  JOIN aulas ON aulas.idaula = ordenadores.idaula
427                                        WHERE aulas.idaula =".$idambito;
428                        break;
[3ec149c]429                case $AMBITO_GRUPOSORDENADORES :
[a57dbd8]430                        $cmd->texto.="  JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
431                                        WHERE gruposordenadores.idgrupo =".$idambito;
[3ec149c]432                        break;
433                case $AMBITO_ORDENADORES :
[a57dbd8]434                        $cmd->texto.="  WHERE ordenadores.idordenador =".$idambito;
[3ec149c]435                        break;
436        }       
[b2651a6]437        $cmd->texto.="                  GROUP BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ordenadores_particiones.idperfilsoft";
[3ec149c]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"];
[b2651a6]447                        $tbPerfil[$idx]["numdisk"]=$rs->campos["numdisk"];
[3ec149c]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
[b2651a6]459                UHU 2013/05/17 - Ahora se tienen en cuenta el disco, sino se le pasa ningun parametro, se asigna 1
[3ec149c]460________________________________________________________________________________________________________*/
[b2651a6]461function tomaPerfiles($numpar,$ordenadores,$numdisk = 1)
[3ec149c]462{
[a57dbd8]463        global $tbPerfil;  // Tabla contenedora de ordenadores incluidos en la consulta
[3ec149c]464        global $conPerfil; // Contador de elementos anteriores
465
[a57dbd8]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)
[b2651a6]470                if ($tbPerfil[$k]["numdisk"] == $numdisk && $tbPerfil[$k]["numpar"] == $numpar) {
[a57dbd8]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                        }
[3ec149c]476                }
477        }
478}
479/*________________________________________________________________________________________________________
480       
481        Selecciona los ordenadores que tienen la misma imagen en la misma partición
[b2651a6]482                UHU 2013/05/17 - Ahora se carga también el numero de disco en la consulta
[3ec149c]483________________________________________________________________________________________________________*/
484function cargaImagenes($cmd,$idambito,$ambito)
485{
[a57dbd8]486        global $tbImg;  // Tabla contenedora de ordenadores incluidos en la consulta
[3ec149c]487        global $conImg; // Contador de elementos anteriores
488        global $AMBITO_AULAS;
489        global $AMBITO_GRUPOSORDENADORES;
490        global $AMBITO_ORDENADORES;
491       
[a57dbd8]492        $cmd->texto="SELECT     count(*) as con,
493                                ordenadores_particiones.idimagen,
[b2651a6]494                                ordenadores_particiones.numdisk,
[a57dbd8]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";
[3ec149c]502
503        switch($ambito){
504                case $AMBITO_AULAS :
[a57dbd8]505                        $cmd->texto.="  JOIN aulas ON aulas.idaula = ordenadores.idaula
506                                        WHERE aulas.idaula =".$idambito;
507                        break;
[3ec149c]508                case $AMBITO_GRUPOSORDENADORES :
[a57dbd8]509                        $cmd->texto.="  JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
510                                        WHERE gruposordenadores.idgrupo =".$idambito;
[3ec149c]511                        break;
512                case $AMBITO_ORDENADORES :
[a57dbd8]513                        $cmd->texto.="  WHERE ordenadores.idordenador =".$idambito;
[3ec149c]514                        break;
515        }       
[b2651a6]516        $cmd->texto.="                  GROUP BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ordenadores_particiones.idimagen";
[3ec149c]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"];
[b2651a6]526                        $tbImg[$idx]["numdisk"]=$rs->campos["numdisk"];                 
[3ec149c]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
[b2651a6]538                UHU 2013/05/17 - Ahora se tienen en cuenta el disco, sino se le pasa ningun parametro, se asigna 1
[3ec149c]539________________________________________________________________________________________________________*/
[b2651a6]540function tomaImagenes($numpar,$ordenadores, $numdisk = 1)
[3ec149c]541{
[a57dbd8]542        global $tbImg;  // Tabla contenedora de ordenadores incluidos en la consulta
[3ec149c]543        global $conImg; // Contador de elementos anteriores
544
[a57dbd8]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){
[b2651a6]549                if ($tbImg[$k]["numdisk"] == $numdisk && $tbImg[$k]["numpar"] == $numpar) {
[a57dbd8]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                        }
[3ec149c]555                }
556        }
557}
558/*________________________________________________________________________________________________________
559       
560        Selecciona los ordenadores que tienen el mismo sistema de ficheros en la misma partición
[b2651a6]561        UHU 2013/05/17 - Ahora se carga también el numero de disco en la consulta
[3ec149c]562________________________________________________________________________________________________________*/
563function cargaNombresSO($cmd,$idambito,$ambito)
564{
[a57dbd8]565        global $tbSO;  // Tabla contenedora de ordenadores incluidos en la consulta
[3ec149c]566        global $conSO; // Contador de elementos anteriores
567        global $AMBITO_AULAS;
568        global $AMBITO_GRUPOSORDENADORES;
569        global $AMBITO_ORDENADORES;
570       
[a57dbd8]571        $cmd->texto="SELECT     COUNT(*) AS con,
572                                ordenadores_particiones.idnombreso,
[b2651a6]573                                ordenadores_particiones.numdisk,ordenadores_particiones.numpar,nombresos.nombreso,
[a57dbd8]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";
[3ec149c]579
580        switch($ambito){
581                case $AMBITO_AULAS :
[a57dbd8]582                        $cmd->texto.="  JOIN aulas ON aulas.idaula = ordenadores.idaula
583                                        WHERE aulas.idaula =".$idambito;
584                        break;
[3ec149c]585                case $AMBITO_GRUPOSORDENADORES :
[a57dbd8]586                        $cmd->texto.="  JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
587                                        WHERE gruposordenadores.idgrupo =".$idambito;
[3ec149c]588                        break;
589                case $AMBITO_ORDENADORES :
[a57dbd8]590                        $cmd->texto.="  WHERE ordenadores.idordenador =".$idambito;
[3ec149c]591                        break;
592        }       
[b2651a6]593        $cmd->texto.="                  GROUP BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ordenadores_particiones.idnombreso";
[3ec149c]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"];
[b2651a6]603                        $tbSO[$idx]["numdisk"]=$rs->campos["numdisk"];                 
[3ec149c]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
[b2651a6]615                UHU 2013/05/17 - Ahora se tienen en cuenta el disco, sino se le pasa ningun parametro, se asigna 1
[3ec149c]616________________________________________________________________________________________________________*/
[b2651a6]617function tomaNombresSO($numpar,$ordenadores,$numdisk = 1)
[3ec149c]618{
[a57dbd8]619        global $tbSO;  // Tabla contenedora de ordenadores incluidos en la consulta
[3ec149c]620        global $conSO; // Contador de elementos anteriores
621
[a57dbd8]622        for($k=0; $k<$conSO; $k++) {
[b2651a6]623                if ($tbSO[$k]["numdisk"] == $numdisk && $tbSO[$k]["numpar"] == $numpar) {
[a57dbd8]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                        }
[3ec149c]631                }
632        }
633}
634/*________________________________________________________________________________________________________
635       
636        Selecciona los ordenadores que tienen el mismo tamaño para la misma partición
[b2651a6]637        UHU 2013/05/17 - Ahora se carga también el numero de disco en la consulta
[3ec149c]638________________________________________________________________________________________________________*/
639function cargaTamano($cmd,$idambito,$ambito)
640{
[a57dbd8]641        global $tbTam;  // Tabla contenedora de ordenadores incluidos en la consulta
[3ec149c]642        global $conTam; // Contador de elementos anteriores
643        global $AMBITO_AULAS;
644        global $AMBITO_GRUPOSORDENADORES;
645        global $AMBITO_ORDENADORES;
646       
[a57dbd8]647        $cmd->texto="SELECT     COUNT(*) AS con,
648                                ordenadores_particiones.tamano,
[b2651a6]649                                ordenadores_particiones.numdisk,
[a57dbd8]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";
[3ec149c]655
656        switch($ambito){
657                case $AMBITO_AULAS :
[a57dbd8]658                        $cmd->texto.="  JOIN aulas ON aulas.idaula = ordenadores.idaula
659                                        WHERE aulas.idaula =".$idambito;
660                        break;
[3ec149c]661                case $AMBITO_GRUPOSORDENADORES :
[a57dbd8]662                        $cmd->texto.="  JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid
663                                        WHERE gruposordenadores.idgrupo =".$idambito;
[3ec149c]664                        break;
665                case $AMBITO_ORDENADORES :
[a57dbd8]666                        $cmd->texto.="  WHERE ordenadores.idordenador =".$idambito;
[3ec149c]667                        break;
668        }       
[b2651a6]669        $cmd->texto.="                  GROUP BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ordenadores_particiones.tamano";
[3ec149c]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"];
[b2651a6]678            $tbTam[$idx]["numdisk"]=$rs->campos["numdisk"];
[3ec149c]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
[b2651a6]690                UHU 2013/05/17 - Ahora se tienen en cuenta el disco, sino se le pasa ningun parametro, se asigna 1
[3ec149c]691________________________________________________________________________________________________________*/
[b2651a6]692function tomaTamano($numpar,$ordenadores,$numdisk = 1)
[3ec149c]693{
[a57dbd8]694        global $tbTam;  // Tabla contenedora de ordenadores incluidos en la consulta
[3ec149c]695        global $conTam; // Contador de elementos anteriores
696
[a57dbd8]697        for ($k=0; $k<$conTam; $k++) {
[b2651a6]698                if ($tbTam[$k]["numdisk"] == $numdisk && $tbTam[$k]["numpar"] == $numpar) {
[a57dbd8]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                        }
[3ec149c]706                }
707        }
708}
[1873b9a]709/*________________________________________________________________________________________________________
710       
711        Selecciona los ordenadores que tienen el mismo Contenido de Cache para la misma partición
[b2651a6]712        UHU 2013/05/17 - Ahora se carga también el numero de disco en la consulta
[1873b9a]713________________________________________________________________________________________________________*/
714function cargaCache($cmd,$idambito,$ambito)
715{
[a603c1a]716        global $tbCac;  // Tabla contenedora de ordenadores incluidos en la consulta
717        global $conCac; // Contador de elementos anteriores
[1873b9a]718        global $AMBITO_AULAS;
719        global $AMBITO_GRUPOSORDENADORES;
720        global $AMBITO_ORDENADORES;
721       
722        $cmd->texto="SELECT     COUNT(*) AS con,
723                                ordenadores_particiones.cache,
[b2651a6]724                                ordenadores_particiones.numdisk,
725                                ordenadores_particiones.numpar,
[1873b9a]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";
[3ec149c]730
[1873b9a]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        }       
[b2651a6]744        $cmd->texto.="                  GROUP BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ordenadores_particiones.cache";
[1873b9a]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){
[a603c1a]751                        $tbCac[$idx]["cache"]=$rs->campos["cache"];
[b2651a6]752                        $tbCac[$idx]["numdisk"]=$rs->campos["numdisk"];
[a603c1a]753                        $tbCac[$idx]["numpar"]=$rs->campos["numpar"];
754                        $tbCac[$idx]["ordenadores"]=$rs->campos["ordenadores"];
[1873b9a]755                        $idx++;
756                $rs->Siguiente();
757        }
[a603c1a]758        $conCac=$idx; // Guarda contador
[1873b9a]759        $rs->Cerrar();
760}
761/*________________________________________________________________________________________________________
762       
763                Toma tamaño de partición común a los ordenadores pasados como parámetros
[b2651a6]764                UHU 2013/05/17 - Ahora se tienen en cuenta el disco, sino se le pasa ningun parametro, se asigna 1
[1873b9a]765________________________________________________________________________________________________________*/
[b2651a6]766function tomaCache($numpar,$ordenadores,$numdisk = 1)
[1873b9a]767{
[a603c1a]768        global $tbCac;  // Tabla contenedora de ordenadores incluidos en la consulta
769        global $conCac; // Contador de elementos anteriores
[1873b9a]770
[a603c1a]771        for ($k=0; $k<$conCac; $k++) {
[b2651a6]772                if ($tbCac[$k]["numdisk"] == $numdisk && $tbCac[$k]["numpar"] == $numpar) {
[1873b9a]773                        $pcs = explode (",", $ordenadores);
[a603c1a]774                        $intersec = array_intersect (explode(",", $tbCac[$k]["ordenadores"]), $pcs);
[1873b9a]775                        if (array_diff ($pcs, $intersec) == NULL) {
[a603c1a]776                                return ($tbCac[$k]["cache"]);
[1873b9a]777                        }
778                }
779        }
780}
[3ec149c]781?>
[a57dbd8]782
Note: See TracBrowser for help on using the repository browser.