source: admin/WebConsole/includes/ConfiguracionesParticiones.php @ 7c02acc

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

#551 #555: Mejoras en el formulario de propiedades de ordenador:

  • Mostrar aviso indicando que no se introduzca un nombre de equipo con más de 15 caracteres si dicho PC va a tener un sistema operativo Windows.
  • Ocultar cajas de selección de datos en la operación de eliminación de ordenador.
  • Centrar mensaje de ordenador aún no conectado cuando se añade un cliente nuevo.
  • Asegurar que por defecto no se incluye validación en un nuevo cliente.
  • Evirar avisos PHP y mejorar el código HTML.

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