5 global $TbMsg; global $idcentro; global $AMBITO_AULAS; global $AMBITO_GRUPOSORDENADORES; global $AMBITO_ORDENADORES; global $msk_nombreSO; // array: identificadores y nombres sistemas operativos en BD; $sistOperativo= SistemaOperativoBD($cmd); // Identificador del "sistema operativo" DATA. $sistData= array_search ('DATA', $sistOperativo); $tablaHtml=''; // Incluimos primera linea de la tabla para todos los equipos. $inicioTabla=''.chr(13); // Cabecera información sistemas operativos. $cabeceraTabla=''.chr(13); $cabeceraTabla.=''.chr(13); $cabeceraTabla.=''.chr(13); $cabeceraTabla.=''.chr(13); $cabeceraTabla.=''.chr(13); // Mensaje si no existen datos en la base de datos. $tablaSinConfiguracion='
   Partición  Nombre del S.O. 
'.chr(13); $tablaSinConfiguracion.=''.chr(13).'
'.$TbMsg["CONFIG_NOOS"].'
'.chr(13); // CONSULTA BD: grupo de equipos con iguales sistemas operativos: idordenadores,configuracion $cmd->texto=""; // agrupamos equipos con igual conf de disco. $cmd->texto="SELECT GROUP_CONCAT(pcconf.idordenador SEPARATOR ',') AS idordenadores, pcconf.configuraciones FROM ("; // partconf agrupa la configuracion de todas las part: idordenador | configuracionTodasPart $cmd->texto.=" SELECT partconf.idordenador, GROUP_CONCAT(partconf.configuracion ORDER BY partconf.configuracion ASC SEPARATOR '@') AS configuraciones FROM ("; // particion conf: idordenador, numdisk, configuracion (numdisk;numpar;idnombreso) $cmd->texto.="SELECT ordenadores_particiones.idordenador,ordenadores_particiones.numdisk, CONCAT_WS(';',ordenadores_particiones.numdisk, ordenadores_particiones.numpar, ordenadores_particiones.idnombreso) AS configuracion FROM ordenadores_particiones "; switch($ambito){ case $AMBITO_AULAS : $cmd->texto.=" INNER JOIN ordenadores ON ordenadores_particiones.idordenador=ordenadores.idordenador INNER JOIN aulas ON aulas.idaula = ordenadores.idaula WHERE aulas.idaula =".$idambito; break; case $AMBITO_GRUPOSORDENADORES : $cmd->texto.=" INNER JOIN ordenadores ON ordenadores_particiones.idordenador=ordenadores.idordenador INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid WHERE gruposordenadores.idgrupo =".$idambito; break; case $AMBITO_ORDENADORES : $cmd->texto.=" WHERE ordenadores_particiones.idordenador =".$idambito; break; } $cmd->texto.=" AND ordenadores_particiones.idnombreso <> 0 "; // Si existen particiones de datos no las mostramos. if ($sistData != '') $cmd->texto.=" AND ordenadores_particiones.idnombreso <> ".$sistData; $cmd->texto.=" ORDER BY ordenadores_particiones.idordenador, idordenador,ordenadores_particiones.numdisk, ordenadores_particiones.numpar"; // fin consulta basica -> partcion conf $cmd->texto.=") AS partconf GROUP BY partconf.idordenador"; // fin consulta partconf. $cmd->texto.=" ) AS pcconf GROUP BY pcconf.configuraciones " ; // Muestro datos de la consulta en tabla. $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset $rs->Primero(); $columns = 3; $cc=0; echo $inicioTabla; // Si no hay datos pinto mensaje informativo. if($rs->EOF) echo $tablaSinConfiguracion; // Para cada grupo de pc con iguales Sist. Operativo pinto una tabla. while (!$rs->EOF){ $cc++; echo ''; echo pintaOrdenadores($cmd,$rs->campos["idordenadores"],10,$cc,'ipordenador'); echo ""; $configuraciones=explode("@",$rs->campos["configuraciones"]); echo $cabeceraTabla; // Una fila para cada particion. $actualDisk = 0; $tablaHtml=''; foreach ( $configuraciones as $particiones) { $datos= explode (';', $particiones); // Si es inicio de disco if($actualDisk != $datos[0]){ $actualDisk = $datos[0]; $tablaHtml.=' '.$TbMsg["DISK"].' '.$actualDisk.''.chr(13); } $tablaHtml.=''.chr(13); $tablaHtml.=' '.$datos[1].' '.chr(13); $tablaHtml.=' '.$sistOperativo[$datos[2]].''.chr(13); } echo $tablaHtml; $rs->Siguiente(); } $rs->Cerrar(); echo "".chr(13); } function tablaConfiguracionesInventarioSoftware($cmd,$idordenador){ global $TbMsg; global $idcentro; $tablaHtml=""; $cmd->texto="SELECT ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ordenadores_particiones.tamano, ordenadores_particiones.idnombreso, nombresos.nombreso, tipospar.tipopar, imagenes.descripcion AS imagen, perfilessoft.descripcion AS perfilsoft, sistemasficheros.descripcion AS sistemafichero 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 WHERE ordenadores.idordenador=".$idordenador." AND nombresos.nombreso!='DATA' ORDER BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar"; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset $rs->Primero(); $actualDisk = 0; $columns = 3; while (!$rs->EOF){ if($actualDisk != $rs->campos["numdisk"]){ $actualDisk = $rs->campos["numdisk"]; $tablaHtml.=' '.$TbMsg["DISK"].' '.$actualDisk.''.chr(13); } if(!empty($rs->campos["idnombreso"])){ $tablaHtml.=''.chr(13); $tablaHtml.=''.chr(13); $tablaHtml.=' '.$rs->campos["numpar"].' '.chr(13); $tablaHtml.=' '.$rs->campos["nombreso"].' '.chr(13); $tablaHtml.=''.chr(13); } $rs->Siguiente(); } $rs->Cerrar(); if ( $tablaHtml == "" ) { // Equipo sin configuracion en base de datos. $tablaHtml=''.chr(13); $tablaHtml.=''.chr(13); } else { // Equipo con configuracion en BD // Incluimos primera linea de la tabla. $inicioTabla='
'.$TbMsg["CONFIG_NOOS"].'
'.chr(13); $inicioTabla.=' '.chr(13); $inicioTabla.=' '.chr(13); $inicioTabla.=' '.chr(13); $inicioTabla.=' '.chr(13); $inicioTabla.=' '.chr(13); $tablaHtml=$inicioTabla.$tablaHtml; } $tablaHtml.="
   '. $TbMsg["PARTITION"] .'  '. $TbMsg["SO_NAME"] .' 
".chr(13); return($tablaHtml); } /** * Crea la tabla de configuraciones y perfiles a crear * * @version 1.2 - Permite crear imágenes de disco. * @author Irina Gomez, ETSII Universidad de Sevilla * @date 2020/06/19 */ function tablaConfiguracionesCrearImagen($cmd,$idordenador,$idrepositorio) { global $idcentro; global $TbMsg; $tablaHtml=""; // Lista de selección de imágenes de disco. $select_imagenes_disco=HTMLSELECT_imagenes_disco($cmd,$idordenador); // Tipos de tabla de particionesa (índice codpar) $disktable[1]="MSDOS"; $disktable[2]="GPT"; $disktable[3]="LVM"; $disktable[4]="ZPOOL"; $cmd->texto="SELECT ordenadores.ip AS masterip,ordenadores_particiones.numdisk, ordenadores_particiones.numpar,ordenadores_particiones.codpar,ordenadores_particiones.tamano, ordenadores_particiones.idnombreso,nombresos.nombreso,tipospar.tipopar,tipospar.clonable, ordenadores_particiones.idimagen, imagenes.nombreca,imagenes.descripcion as imagen,perfilessoft.idperfilsoft, perfilessoft.descripcion as perfilsoft,sistemasficheros.descripcion as sistemafichero 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 WHERE ordenadores.idordenador=".$idordenador." ORDER BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar"; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return($tablaHtml.""); // Error al abrir recordset $rs->Primero(); $columns = 6; $diskcodpar = ""; $disktamano = ""; while (!$rs->EOF){ $disk=$rs->campos["numdisk"]; if($rs->campos["numpar"] == 0){ // Información del disco anterior. if ($diskcodpar != ""){ $infodisk =''.chr(13); $infodisk.=' '.chr(13); $infodisk.=' '.$diskcodpar.' '.chr(13); $infodisk.=' '.chr(13); $infodisk.=' '.chr(13); $infodisk.=' '.$disktamano.' '.chr(13); $infodisk.=' '.chr(13); $infodisk.=''.chr(13); $tablaHtml.=$infodisk; } $tablaHtml.=''.chr(13); $tablaHtml.= ''; $tablaHtml.=' '.$TbMsg["DISK"].' '.$disk.chr(13).''; // Incluimos lista se selección de las imágenes de disco // con los identificadores del disco y la imagen actual en el disco seleccionada. $tablaHtml.='
'.$TbMsg["IMAGE_REPOSITORY"].' '; $tablaHtml.=str_replace(array("despleimagen_", 'value="'.$rs->campos["idimagen"]), array("despleimagen_".$disk."_0", ' selected value="'.$rs->campos["idimagen"]) , $select_imagenes_disco); $tablaHtml.='
'.chr(13); // Tipo de tabla de particiones $diskcodpar=isset($disktable[$rs->campos["codpar"]]) ? $disktable[$rs->campos["codpar"]] : ""; $disktamano=$rs->campos["tamano"]; } else { // si tipo partitiones EMPTY no la mostramos if ($rs->campos["tipopar"] == "EMPTY"){ $rs->Siguiente(); continue; } // Compruebo si la partición es clonable $swcc=$rs->campos["clonable"] && !empty($rs->campos["idnombreso"]); $swc=$rs->campos["idperfilsoft"]>0; // Una partición es clonable si posee un identificador de perfil software $swccc=$swcc && $swcc; // Si no existe descripción del S.O. muestro mensaje. $nombreso=(empty($rs->campos["nombreso"]) && !empty($rs->campos["idnombreso"])) ? ''.$TbMsg[12].'': $rs->campos["nombreso"]; $tablaHtml.=''.chr(13); // Si es clonable muestro input radio para seleccionarlo. $tablaHtml.=''; if($swccc) $tablaHtml.='campos["numpar"]."_".$rs->campos["codpar"].'">'; $tablaHtml.= ''.chr(13); $tablaHtml.=' '.$rs->campos["numpar"].' '.chr(13); $tablaHtml.=' '.$rs->campos["tipopar"].' '.chr(13); $tablaHtml.=' '.$nombreso.''.chr(13); $tablaHtml.=' '.$rs->campos["tamano"].' '.chr(13); // Si es clonable muestro lista de selección de imágenes. $tablaHtml.=' '; if($swccc) $tablaHtml.=HTMLSELECT_imagenes($cmd,$idrepositorio,$rs->campos["idperfilsoft"],$rs->campos["numdisk"],$rs->campos["numpar"],$rs->campos["masterip"]); $tablaHtml.=' '; $tablaHtml.=''.chr(13); } $rs->Siguiente(); } $rs->Cerrar(); // Info del último disco if ($diskcodpar != "") $tablaHtml.=$infodisk; if ( $tablaHtml == "" ) { // Equipo sin configuracion en base de datos. $tablaHtml=''.chr(13); $tablaHtml.=''.chr(13); } else { // Equipo con configuracion en BD // Incluimos primera linea de la tabla. $inicioTabla='
'.$TbMsg["CONFIG_NOCONFIG"].'
'.chr(13); $inicioTabla.=' '.chr(13); $inicioTabla.=' '.chr(13); $inicioTabla.=' '.chr(13); $inicioTabla.=' '.chr(13); $inicioTabla.=' '.chr(13); $inicioTabla.=' '.chr(13); $inicioTabla.=' '.chr(13); $inicioTabla.=' '.chr(13); $tablaHtml=$inicioTabla.$tablaHtml; } $tablaHtml.="
   '. $TbMsg["PARTITION"] .'  '. $TbMsg["PARTITION_TYPE"] .'  '. $TbMsg["SO_NAME"] .'  '. $TbMsg["SIZE"] .'  '. $TbMsg["IMAGE_TO_CREATE"].' -- '.$TbMsg["DESTINATION_REPOSITORY"] .' 
"; return($tablaHtml); } /*---------------------------------------------------------------------------------------------- Dibuja una tabla con los datos de particiones y parametros a elegir Parametros: - idordenador: El identificador del ordenador ----------------------------------------------------------------------------------------------*/ function tablaConfiguracionesSincronizacion1($idordenador) { global $idcentro; global $TbMsg; global $cmd; $tablaHtml=""; $cmd->texto="SELECT DISTINCT ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ordenadores_particiones.idnombreso, nombresos.nombreso, ordenadores_particiones.idimagen, ordenadores_particiones.codpar, tipospar.clonable, perfilessoft.idperfilsoft, nombresos.idnombreso, nombresos.nombreso FROM ordenadores_particiones INNER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft WHERE ordenadores_particiones.idordenador=".$idordenador." ORDER BY ordenadores_particiones.numdisk, ordenadores_particiones.numpar"; //echo $cmd->texto; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset $rs->Primero(); $tbPAR=""; $actualDisk = 0; $columns = 9; while (!$rs->EOF){ if($actualDisk != $rs->campos["numdisk"]){ $actualDisk = $rs->campos["numdisk"]; $tablaHtml.=' '.$TbMsg["DISK"].' '.$actualDisk.''.chr(13); } //$swcc=$rs->campos["clonable"] && !empty($rs->campos["idnombreso"]) && !empty($rs->campos["idperfilsoft"]); $sw=$rs->campos["clonable"] && !empty($rs->campos["idnombreso"]); if($sw){// Una partici�n es clonable si es cierta esta variable $tbPAR.=$rs->campos["numpar"].";"; // Cadena con las particiones a procesar $tablaHtml.=''; $tablaHtml.=''; $tablaHtml.=' '.$rs->campos["numpar"].' '; // N�mero de partici�n $tablaHtml.=' '.$rs->campos["nombreso"].' '; // Nombre sistema operativo $tablaHtml.=''.HTMLSELECT_imagenes($rs->campos["idimagen"]).''; $metodos="SYNC0="." ".chr(13); $metodos.="SYNC1=".$TbMsg["SYNC1_DIR"].chr(13); $metodos.="SYNC2=".$TbMsg["SYNC2_FILE"]; $tablaHtml.= ''.HTMLCTESELECT($metodos,"desplesync_".$rs->campos["numpar"],"estilodesple","",1,100).''; $tablaHtml.=''; $tablaHtml.=''; $tablaHtml.=''; $tablaHtml.=''; } $rs->Siguiente(); } $rs->Cerrar(); echo $tablaHtml; return($tbPAR); } /** * La funcion tablaConfiguracionesSincronizacion1 sustituye a las funciones tablaConfiguracionesCrearImagenBasica y * tablaConfiguracionesCrearSoftIncremental que eran llamadas desde comandos/CrearImagenBasica.php y comandos/CrearSoftIncremental.php * Ahora en ambos ficheros se llama a la misma función ya que pintaban lo mismo en pantalla * /*---------------------------------------------------------------------------------------------- Dibuja una tabla con los datos de particiones y parametros a elegir Parametros: - idordenador: El identificador del ordenador ----------------------------------------------------------------------------------------------* function tablaConfiguracionesCrearImagenBasica($idordenador) { global $idcentro; global $TbMsg; global $cmd; $tablaHtml=""; $cmd->texto="SELECT DISTINCT ordenadores_particiones.numpar, ordenadores_particiones.idnombreso, nombresos.nombreso, ordenadores_particiones.idimagen, ordenadores_particiones.codpar, tipospar.clonable, perfilessoft.idperfilsoft, nombresos.idnombreso, nombresos.nombreso FROM ordenadores_particiones INNER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft WHERE ordenadores_particiones.idordenador=$idordenador ORDER BY ordenadores_particiones.numpar"; //echo $cmd->texto; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset $rs->Primero(); $tbPAR=""; while (!$rs->EOF){ //$swcc=$rs->campos["clonable"] && !empty($rs->campos["idnombreso"]) && !empty($rs->campos["idperfilsoft"]); $sw=$rs->campos["clonable"] && !empty($rs->campos["idnombreso"]); if($sw){// Una partici�n es clonable si es cierta esta variable $tbPAR.=$rs->campos["numpar"].";"; // Cadena con las particiones a procesar $tablaHtml.=''; $tablaHtml.=''; $tablaHtml.=' '.$rs->campos["numpar"].' '; // N�mero de partici�n $tablaHtml.=' '.$rs->campos["nombreso"].' '; // Nombre sistema operativo $tablaHtml.=''.HTMLSELECT_imagenes($rs->campos["idimagen"]).''; $tablaHtml.=''; $tablaHtml.=''; $tablaHtml.=''; $tablaHtml.=''; } $rs->Siguiente(); } $rs->Cerrar(); echo $tablaHtml; return($tbPAR); } /*---------------------------------------------------------------------------------------------- Dibuja una tabla con los datos de particiones y parametros a elegir Parametros: - idordenador: El identificador del ordenador ----------------------------------------------------------------------------------------------* function tablaConfiguracionesCrearSoftIncremental($idordenador) { global $idcentro; global $TbMsg; global $cmd; $tablaHtml=""; $cmd->texto="SELECT DISTINCT ordenadores_particiones.numpar, ordenadores_particiones.idnombreso, nombresos.nombreso, ordenadores_particiones.idimagen, tipospar.clonable, perfilessoft.idperfilsoft, nombresos.idnombreso, nombresos.nombreso FROM ordenadores_particiones INNER JOIN tipospar ON tipospar.codpar=ordenadores_particiones.codpar LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso LEFT OUTER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft WHERE ordenadores_particiones.idordenador=$idordenador ORDER BY ordenadores_particiones.numpar"; //echo $cmd->texto; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset $rs->Primero(); $tbPAR=""; while (!$rs->EOF){ //$swcc=$rs->campos["clonable"] && !empty($rs->campos["idnombreso"]) && !empty($rs->campos["idperfilsoft"]); $sw=$rs->campos["clonable"] && !empty($rs->campos["idnombreso"]); if($sw){// Una partici�n es clonable si es cierta esta variable $tbPAR.=$rs->campos["numpar"].";"; // Cadena con las particiones a procesar $tablaHtml.=''; $tablaHtml.=''; $tablaHtml.=' '.$rs->campos["numpar"].' '; // N�mero de partici�n $tablaHtml.=' '.$rs->campos["nombreso"].' '; // Nombre sistema operativo $tablaHtml.=''.HTMLSELECT_imagenes($rs->campos["idimagen"]).''; $tablaHtml.=''; $tablaHtml.=''; $tablaHtml.=''; $tablaHtml.=''; } $rs->Siguiente(); } $rs->Cerrar(); echo $tablaHtml; return($tbPAR); } <<<<<<< .mine /**/ // Devuelve un Array nombres de los sistemas operativos en BD con sus identificadores. function SistemaOperativoBD ($cmd) { $idSistOperativo = array(); // Array nombres de los sistemas operativos $cmd->texto="select idnombreso, nombreso from nombresos"; $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return; // Error al abrir recordset $rs->Primero(); while (!$rs->EOF){ $idSistOperativo[ $rs->campos["idnombreso"] ] = $rs->campos["nombreso"]; $rs->Siguiente(); } return $idSistOperativo; }