texto="SELECT concat_WS( ';', ordenadores_particiones.numpar, "; if($sws & $msk_tamano) $cmd->texto.=" ordenadores_particiones.tamano,"; if($sws & $msk_sysFi) $cmd->texto.=" ordenadores_particiones.idsistemafichero, "; if($sws & $msk_nombreSO) $cmd->texto.=" ordenadores_particiones.idnombreso, "; if($sws & $msk_imagen) $cmd->texto.=" ordenadores_particiones.idimagen, "; if($sws & $msk_perfil) $cmd->texto.=" ordenadores_particiones.idperfilsoft, "; $cmd->texto.=" ordenadores_particiones.codpar) as configuracion, ordenadores_particiones.numpar , ordenadores_particiones.codpar , tipospar.tipopar, tipospar.clonable, ordenadores_particiones.tamano, sistemasficheros.descripcion as sistemafichero, ordenadores_particiones.idnombreso, nombresos.nombreso, imagenes.idimagen, imagenes.descripcion as imagen, imagenes.nombreca as nombreca, imagenes.idrepositorio as repositorio, ordenadores_particiones.idperfilsoft, perfilessoft.descripcion as perfilsoft FROM ordenadores INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso INNER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar LEFT OUTER JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft LEFT OUTER JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero"; switch($ambito){ case $AMBITO_AULAS : $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula WHERE aulas.idaula =".$idambito; break; case $AMBITO_GRUPOSORDENADORES : $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid WHERE gruposordenadores.idgrupo =".$idambito; break; case $AMBITO_ORDENADORES : $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito; break; } if($swr) // Si se trata de restauración no se tiene en cuenta las partciones no clonables $cmd->texto.=" AND tipospar.clonable=1 "; $cmd->texto.=" GROUP by configuracion"; //echo "carga claves:".$cmd->texto; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset $rs->Primero(); $idx=0; //echo $cmd->texto; while (!$rs->EOF){ $tbKeys[$idx]["cfg"]=$rs->campos["configuracion"]; $tbKeys[$idx]["numpar"]=$rs->campos["numpar"]; $tbKeys[$idx]["codpar"]=$rs->campos["codpar"]; $tbKeys[$idx]["tipopar"]=$rs->campos["tipopar"]; $tbKeys[$idx]["clonable"]=$rs->campos["clonable"]; $tbKeys[$idx]["tamano"]=$rs->campos["tamano"]; $tbKeys[$idx]["sistemafichero"]=$rs->campos["sistemafichero"]; $tbKeys[$idx]["idnombreso"]=$rs->campos["idnombreso"]; $tbKeys[$idx]["nombreso"]=$rs->campos["nombreso"]; $tbKeys[$idx]["idimagen"]=$rs->campos["idimagen"]; $tbKeys[$idx]["imagen"]=$rs->campos["imagen"]; $tbKeys[$idx]["nombreca"]=$rs->campos["nombreca"]; $tbKeys[$idx]["repositorio"]=$rs->campos["repositorio"]; $tbKeys[$idx]["idperfilsoft"]=$rs->campos["idperfilsoft"]; $tbKeys[$idx]["perfilsoft"]=$rs->campos["perfilsoft"]; $idx++; $rs->Siguiente(); } $conKeys=$idx; // Guarda contador $rs->Cerrar(); } /*________________________________________________________________________________________________________ Dibuja la tabla de configuración de las particiones de un grupo de ordenadores Parámetros de la función: $cmd: Objeto comando (Operativo) $idambito: Identificador del ámbito (identificador del Aula, grupo de ordenador u ordenador) $ambito: Tipo de ambito (Aulas, grupos de ordenadores u ordenadores) $sws: Switchs que indican el nivel de agrupamiento (ver comentarios de la función(cargaCaves) $swr: Indica si se se tiene en cuenta las particiones no clonables (true:sólo conables , false:todas) Especificaciones: Esta función llama a pintaParticiones() que es realmente la encargada de mostrar o bien la configuración de los ordenadores o la pantalla de los comandos "Configurar" o "RestaurarImagen" para permitir introducir los datos necesarios. ________________________________________________________________________________________________________*/ function pintaConfiguraciones($cmd,$idambito,$ambito,$colums,$sws,$swr) { global $AMBITO_AULAS; global $AMBITO_GRUPOSORDENADORES; global $AMBITO_ORDENADORES; global $msk_sysFi; global $msk_nombreSO; global $msk_tamano; global $msk_imagen; global $msk_perfil; cargaCaves($cmd,$idambito,$ambito,$sws,$swr); cargaSistemasFicheros($cmd,$idambito,$ambito); cargaPerfiles($cmd,$idambito,$ambito); cargaImagenes($cmd,$idambito,$ambito); cargaNombresSO($cmd,$idambito,$ambito); cargaTamano($cmd,$idambito,$ambito); $cmd->texto="SELECT COUNT(*) AS con, GROUP_CONCAT(CAST( temp2.idordenador AS CHAR(11) ) ORDER BY temp2.idordenador SEPARATOR ',' ) AS idordenadores, temp2.configuraciones FROM (SELECT temp1.idordenador AS idordenador, GROUP_CONCAT(CAST( temp1.configuracion AS CHAR(250) ) ORDER BY temp1.configuracion SEPARATOR '@' ) AS configuraciones FROM (SELECT ordenadores_particiones.idordenador, ordenadores_particiones.numpar, concat_WS( ';', ordenadores_particiones.numpar, "; if($sws & $msk_tamano) $cmd->texto.=" ordenadores_particiones.tamano,"; if($sws & $msk_sysFi) $cmd->texto.=" ordenadores_particiones.idsistemafichero, "; if($sws & $msk_nombreSO) $cmd->texto.=" ordenadores_particiones.idnombreso, "; if($sws & $msk_imagen) $cmd->texto.=" ordenadores_particiones.idimagen, "; if($sws & $msk_perfil) $cmd->texto.=" ordenadores_particiones.idperfilsoft, "; $cmd->texto.=" ordenadores_particiones.codpar) AS configuracion FROM ordenadores INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso INNER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar LEFT OUTER JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft LEFT OUTER JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero"; switch($ambito){ case $AMBITO_AULAS : $cmd->texto.=" INNER JOIN aulas ON aulas.idaula = ordenadores.idaula WHERE aulas.idaula =".$idambito; break; case $AMBITO_GRUPOSORDENADORES : $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid WHERE gruposordenadores.idgrupo =".$idambito; break; case $AMBITO_ORDENADORES : $cmd->texto.=" WHERE ordenadores.idordenador=".$idambito; break; } if ($swr) // Si se trata de restauración no se tiene en cuenta las particiones no clonables $cmd->texto.=" AND tipospar.clonable=1 "; $cmd->texto.=" ORDER BY ordenadores_particiones.idordenador, ordenadores_particiones.numpar) AS temp1 GROUP BY temp1.idordenador) AS temp2 GROUP BY temp2.configuraciones ORDER BY con desc,idordenadores"; //echo $cmd->texto; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return; // Error al abrir recordset $rs->Primero(); $cc=0; // Contador de configuraciones echo ''; while (!$rs->EOF){ $cc++; //Muestra ordenadores echo ''; //Muestra particiones y configuración echo pintaParticiones($cmd,$rs->campos["configuraciones"],$rs->campos["idordenadores"],$cc,$ambito,$idambito); $rs->Siguiente(); } if ($cc == 0) { echo ''; // Cliente sin configuración. } echo "
'; echo pintaOrdenadores($cmd,$rs->campos["idordenadores"],10,$cc); echo '
'.$TbMsg[43].'
"; $rs->Cerrar(); } //________________________________________________________________________________________________________ // Descripción: // Muestra una taba html con el icono de ordenadores // Parametros: // $cmd: Objeto comando (operativo) // $idordenadores: Cadena con los identificadores de los ordenadores separados por "," // $maxcontor: Número máximo de ordenadores por fila // $cc: Identificador del bloque de configuración //________________________________________________________________________________________________________ function pintaOrdenadores($cmd,$idordenadores,$maxcontor,$cc) { $tablaHtml.=""; $contor=0; $maxcontor=10; // Número máximo de prodenadores por fila $cmd->texto=" SELECT idordenador,nombreordenador,ip FROM ordenadores WHERE idordenador IN (".$idordenadores.") ORDER BY nombreordenador"; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return(""); // Error al abrir recordset $tablaHtml.=''; while (!$rs->EOF){ $contor++; $tablaHtml.= ''; if($contor>$maxcontor){ $contor=0; $tablaHtml.=''; } $rs->Siguiente(); } $tablaHtml.=''; $tablaHtml.= '

'.$rs->campos["nombreordenador"].'
'; return($tablaHtml); } /*________________________________________________________________________________________________________ Selecciona los ordenadores que tienen el mismo sistema de ficheros del ámbito elegido ________________________________________________________________________________________________________*/ function cargaSistemasFicheros($cmd,$idambito,$ambito) { global $tbSysFi; // Tabla contenedora de ordenadores incluidos en la consulta global $conSysFi; // Contador de elementos anteriores global $AMBITO_AULAS; global $AMBITO_GRUPOSORDENADORES; global $AMBITO_ORDENADORES; $cmd->texto="SELECT COUNT(*) AS con, ordenadores_particiones.idsistemafichero, ordenadores_particiones.numpar, sistemasficheros.descripcion AS sistemafichero, GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) ) ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores FROM ordenadores JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador JOIN sistemasficheros ON sistemasficheros.idsistemafichero=ordenadores_particiones.idsistemafichero"; switch($ambito){ case $AMBITO_AULAS : $cmd->texto.=" JOIN aulas ON aulas.idaula = ordenadores.idaula WHERE aulas.idaula =".$idambito; break; case $AMBITO_GRUPOSORDENADORES : $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid WHERE gruposordenadores.idgrupo =".$idambito; break; case $AMBITO_ORDENADORES : $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito; break; } $cmd->texto.=" GROUP BY ordenadores_particiones.numpar, ordenadores_particiones.idsistemafichero"; //echo "carga sistemas de ficheros:".$cmd->texto; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return; // Error al abrir recordset $rs->Primero(); $idx=0; //echo $cmd->texto; while (!$rs->EOF){ $tbSysFi[$idx]["idsistemafichero"]=$rs->campos["idsistemafichero"]; $tbSysFi[$idx]["numpar"]=$rs->campos["numpar"]; $tbSysFi[$idx]["sistemafichero"]=$rs->campos["sistemafichero"]; $tbSysFi[$idx]["ordenadores"]=$rs->campos["ordenadores"]; $idx++; $rs->Siguiente(); } $conSysFi=$idx; // Guarda contador $rs->Cerrar(); } /*________________________________________________________________________________________________________ Toma sistema de ficheros común a los ordenadores pasados como parámetros ________________________________________________________________________________________________________*/ function tomaSistemasFicheros($numpar,$ordenadores,$sw=false) { global $tbSysFi; // Tabla contenedora de ordenadores incluidos en la consulta global $conSysFi; // Contador de elementos anteriores for ($k=0; $k<$conSysFi; $k++){ if ($tbSysFi[$k]["numpar"] == $numpar){ //$pos = strpos($tbSysFi[$k]["ordenadores"], $ordenadores); //if ($pos !== false) { // Cadena encontrada $pcs = explode (",", $ordenadores); $intersec = array_intersect (explode(",", $tbSysFi[$k]["ordenadores"]), $pcs); if (array_diff ($pcs, $intersec) == NULL) { if ($sw) { // Retonar identificador return ($tbSysFi[$k]["idsistemafichero"]); } else { return ($tbSysFi[$k]["sistemafichero"]); } } } } } /*________________________________________________________________________________________________________ Selecciona los ordenadores que tienen el mismo perfil software en la misma partición ________________________________________________________________________________________________________*/ function cargaPerfiles($cmd,$idambito,$ambito) { global $tbPerfil; // Tabla contenedora de ordenadores incluidos en la consulta global $conPerfil; // Contador de elementos anteriores global $AMBITO_AULAS; global $AMBITO_GRUPOSORDENADORES; global $AMBITO_ORDENADORES; $cmd->texto="SELECT count(*) AS con, ordenadores_particiones.idperfilsoft, ordenadores_particiones.numpar, perfilessoft.descripcion AS perfilsoft, GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) ) ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores FROM ordenadores JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft"; switch ($ambito) { case $AMBITO_AULAS : $cmd->texto.=" JOIN aulas ON aulas.idaula = ordenadores.idaula WHERE aulas.idaula =".$idambito; break; case $AMBITO_GRUPOSORDENADORES : $cmd->texto.=" JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid WHERE gruposordenadores.idgrupo =".$idambito; break; case $AMBITO_ORDENADORES : $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito; break; } $cmd->texto.=" GROUP BY ordenadores_particiones.numpar, ordenadores_particiones.idperfilsoft"; //echo "carga perfiles:".$cmd->texto; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return; // Error al abrir recordset $rs->Primero(); $idx=0; while (!$rs->EOF){ $tbPerfil[$idx]["idperfilsoft"]=$rs->campos["idperfilsoft"]; $tbPerfil[$idx]["perfilsoft"]=$rs->campos["perfilsoft"]; $tbPerfil[$idx]["numpar"]=$rs->campos["numpar"]; $tbPerfil[$idx]["ordenadores"]=$rs->campos["ordenadores"]; $idx++; $rs->Siguiente(); } $conPerfil=$idx; // Guarda contador $rs->Cerrar(); } /*________________________________________________________________________________________________________ Toma perfilsoft común a los ordenadores pasados como parámetros ________________________________________________________________________________________________________*/ function tomaPerfiles($numpar,$ordenadores) { global $tbPerfil; // Tabla contenedora de ordenadores incluidos en la consulta global $conPerfil; // Contador de elementos anteriores for ($k=0; $k<$conPerfil; $k++){ //$pos = strpos($tbPerfil[$k]["ordenadores"], $ordenadores); //if ($pos !== false) { // Cadena encontrada //if($tbPerfil[$k]["numpar"]==$numpar) if ($tbPerfil[$k]["numpar"] == $numpar) { $pcs = explode (",", $ordenadores); $intersec = array_intersect (explode(",", $tbPerfil[$k]["ordenadores"]), $pcs); if (array_diff ($pcs, $intersec) == NULL) { return ($tbPerfil[$k]["perfilsoft"]); } } } } /*________________________________________________________________________________________________________ Selecciona los ordenadores que tienen la misma imagen en la misma partición ________________________________________________________________________________________________________*/ function cargaImagenes($cmd,$idambito,$ambito) { global $tbImg; // Tabla contenedora de ordenadores incluidos en la consulta global $conImg; // Contador de elementos anteriores global $AMBITO_AULAS; global $AMBITO_GRUPOSORDENADORES; global $AMBITO_ORDENADORES; $cmd->texto="SELECT count(*) as con, ordenadores_particiones.idimagen, ordenadores_particiones.numpar, imagenes.descripcion as imagen, GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) ) ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores FROM ordenadores JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen"; switch($ambito){ case $AMBITO_AULAS : $cmd->texto.=" JOIN aulas ON aulas.idaula = ordenadores.idaula WHERE aulas.idaula =".$idambito; break; case $AMBITO_GRUPOSORDENADORES : $cmd->texto.=" JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid WHERE gruposordenadores.idgrupo =".$idambito; break; case $AMBITO_ORDENADORES : $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito; break; } $cmd->texto.=" GROUP BY ordenadores_particiones.numpar, ordenadores_particiones.idimagen"; //echo "carga imagenes:".$cmd->texto; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return; // Error al abrir recordset $rs->Primero(); $idx=0; while (!$rs->EOF){ $tbImg[$idx]["idimagen"]=$rs->campos["idimagen"]; $tbImg[$idx]["imagen"]=$rs->campos["imagen"]; $tbImg[$idx]["numpar"]=$rs->campos["numpar"]; $tbImg[$idx]["ordenadores"]=$rs->campos["ordenadores"]; $idx++; $rs->Siguiente(); } $conImg=$idx; // Guarda contador $rs->Cerrar(); } /*________________________________________________________________________________________________________ Toma sistema operativo común a los ordenadores pasados como parámetros ________________________________________________________________________________________________________*/ function tomaImagenes($numpar,$ordenadores) { global $tbImg; // Tabla contenedora de ordenadores incluidos en la consulta global $conImg; // Contador de elementos anteriores for ($k=0; $k<$conImg; $k++) { //$pos = strpos($tbImg[$k]["ordenadores"], $ordenadores); //if ($pos !== false) { // Cadena encontrada //if($tbImg[$k]["numpar"]==$numpar){ if ($tbImg[$k]["numpar"] == $numpar) { $pcs = explode (",", $ordenadores); $intersec = array_intersect (explode(",", $tbImg[$k]["ordenadores"]), $pcs); if (array_diff ($pcs, $intersec) == NULL) { return ($tbImg[$k]["imagen"]); } } } } /*________________________________________________________________________________________________________ Selecciona los ordenadores que tienen el mismo sistema de ficheros en la misma partición ________________________________________________________________________________________________________*/ function cargaNombresSO($cmd,$idambito,$ambito) { global $tbSO; // Tabla contenedora de ordenadores incluidos en la consulta global $conSO; // Contador de elementos anteriores global $AMBITO_AULAS; global $AMBITO_GRUPOSORDENADORES; global $AMBITO_ORDENADORES; $cmd->texto="SELECT COUNT(*) AS con, ordenadores_particiones.idnombreso, ordenadores_particiones.numpar,nombresos.nombreso, GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) ) ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores FROM ordenadores JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso"; switch($ambito){ case $AMBITO_AULAS : $cmd->texto.=" JOIN aulas ON aulas.idaula = ordenadores.idaula WHERE aulas.idaula =".$idambito; break; case $AMBITO_GRUPOSORDENADORES : $cmd->texto.=" JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid WHERE gruposordenadores.idgrupo =".$idambito; break; case $AMBITO_ORDENADORES : $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito; break; } $cmd->texto.=" GROUP BY ordenadores_particiones.numpar, ordenadores_particiones.idnombreso"; //echo "carga nombresos:".$cmd->texto; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return; // Error al abrir recordset $rs->Primero(); $idx=0; while (!$rs->EOF){ $tbSO[$idx]["idnombreso"]=$rs->campos["idnombreso"]; $tbSO[$idx]["nombreso"]=$rs->campos["nombreso"]; $tbSO[$idx]["numpar"]=$rs->campos["numpar"]; $tbSO[$idx]["ordenadores"]=$rs->campos["ordenadores"]; $idx++; $rs->Siguiente(); } $conSO=$idx; // Guarda contador $rs->Cerrar(); } /*________________________________________________________________________________________________________ Toma sistema operativo común a los ordenadores pasados como parámetros ________________________________________________________________________________________________________*/ function tomaNombresSO($numpar,$ordenadores) { global $tbSO; // Tabla contenedora de ordenadores incluidos en la consulta global $conSO; // Contador de elementos anteriores for($k=0; $k<$conSO; $k++) { if ($tbSO[$k]["numpar"]==$numpar) { //$pos = strpos($tbSO[$k]["ordenadores"], $ordenadores); //if ($pos !== false) { // Cadena encontrada $pcs = explode (",", $ordenadores); $intersec = array_intersect (explode(",", $tbSO[$k]["ordenadores"]), $pcs); if (array_diff ($pcs, $intersec) == NULL) { return ($tbSO[$k]["nombreso"]); } } } } /*________________________________________________________________________________________________________ Selecciona los ordenadores que tienen el mismo tamaño para la misma partición ________________________________________________________________________________________________________*/ function cargaTamano($cmd,$idambito,$ambito) { global $tbTam; // Tabla contenedora de ordenadores incluidos en la consulta global $conTam; // Contador de elementos anteriores global $AMBITO_AULAS; global $AMBITO_GRUPOSORDENADORES; global $AMBITO_ORDENADORES; $cmd->texto="SELECT COUNT(*) AS con, ordenadores_particiones.tamano, ordenadores_particiones.numpar, GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) ) ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores FROM ordenadores JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador"; switch($ambito){ case $AMBITO_AULAS : $cmd->texto.=" JOIN aulas ON aulas.idaula = ordenadores.idaula WHERE aulas.idaula =".$idambito; break; case $AMBITO_GRUPOSORDENADORES : $cmd->texto.=" JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid WHERE gruposordenadores.idgrupo =".$idambito; break; case $AMBITO_ORDENADORES : $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito; break; } $cmd->texto.=" GROUP BY ordenadores_particiones.numpar, ordenadores_particiones.tamano"; //echo "carga tamaños:".$cmd->texto; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return; // Error al abrir recordset $rs->Primero(); $idx=0; while (!$rs->EOF){ $tbTam[$idx]["tamano"]=$rs->campos["tamano"]; $tbTam[$idx]["numpar"]=$rs->campos["numpar"]; $tbTam[$idx]["ordenadores"]=$rs->campos["ordenadores"]; $idx++; $rs->Siguiente(); } $conTam=$idx; // Guarda contador $rs->Cerrar(); } /*________________________________________________________________________________________________________ Toma tamaño de partición común a los ordenadores pasados como parámetros ________________________________________________________________________________________________________*/ function tomaTamano($numpar,$ordenadores) { global $tbTam; // Tabla contenedora de ordenadores incluidos en la consulta global $conTam; // Contador de elementos anteriores for ($k=0; $k<$conTam; $k++) { if ($tbTam[$k]["numpar"] == $numpar) { // $pos = strpos ($tbTam[$k]["ordenadores"], $ordenadores); // if ($pos !== FALSE) { // Cadena encontrada $pcs = explode (",", $ordenadores); $intersec = array_intersect (explode(",", $tbTam[$k]["ordenadores"]), $pcs); if (array_diff ($pcs, $intersec) == NULL) { return ($tbTam[$k]["tamano"]); } } } } ?>