source: admin/WebConsole/includes/ConfiguracionesParticiones.php @ 53fba30

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 53fba30 was a57dbd8, checked in by ramon <ramongomez@…>, 13 years ago

Datos más exactos en tabla de presentación de configuración de equipos; formato más cómodo de leeer para el código y las consultas.

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

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