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

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

Versión 1.0.5, #453: Integrar código del ticket:453, autenticación para acceso a clientes.

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

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