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

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 d54a57d was 765826b, checked in by alonso <alonso@…>, 12 years ago

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

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