diff options
Diffstat (limited to 'admin/WebConsole/includes/ConfiguracionesParticiones.php')
-rw-r--r-- | admin/WebConsole/includes/ConfiguracionesParticiones.php | 161 |
1 files changed, 96 insertions, 65 deletions
diff --git a/admin/WebConsole/includes/ConfiguracionesParticiones.php b/admin/WebConsole/includes/ConfiguracionesParticiones.php index 8cdd669c..816843b5 100644 --- a/admin/WebConsole/includes/ConfiguracionesParticiones.php +++ b/admin/WebConsole/includes/ConfiguracionesParticiones.php @@ -64,16 +64,22 @@ function cargaCaves($cmd,$idambito,$ambito,$sws,$swr) global $msk_imagen; global $msk_perfil; global $msk_cache; - - $cmd->texto="SELECT CONCAT_WS( ';',ordenadores_particiones.numdisk,ordenadores_particiones.numpar, "; - if($sws & $msk_tamano) + // Comprobar modos SQL para hacer que la consulta sea compatible. + $cmd->texto="SELECT @@sql_mode AS mode"; + $cmd->ejecutar(); + @$mode=$cmd->Recordset->campos["mode"]; + + $cmd->texto="SELECT CONCAT_WS(';', LPAD(ordenadores_particiones.numdisk, 3, 0), + LPAD(ordenadores_particiones.numpar, 3, 0), "; + + if($sws & $msk_tamano) $cmd->texto.=" ordenadores_particiones.tamano,"; - if($sws & $msk_sysFi) + if($sws & $msk_sysFi) $cmd->texto.=" ordenadores_particiones.idsistemafichero, "; - - if($sws & $msk_nombreSO) + + if($sws & $msk_nombreSO) $cmd->texto.=" ordenadores_particiones.idnombreso, "; if($sws & $msk_imagen) @@ -83,60 +89,62 @@ function cargaCaves($cmd,$idambito,$ambito,$sws,$swr) $cmd->texto.=" ordenadores_particiones.idperfilsoft, "; if($sws & $msk_cache) - $cmd->texto.=" ordenadores_particiones.cache, "; + $cmd->texto.=" ordenadores_particiones.cache, "; $cmd->texto.=" ordenadores_particiones.codpar) AS configuracion, - ordenadores_particiones.numdisk, - ordenadores_particiones.numpar , - ordenadores_particiones.codpar , - IFNULL (tipospar.tipopar, ordenadores_particiones.codpar) AS 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.fechadespliegue, - ordenadores_particiones.idperfilsoft, - perfilessoft.descripcion AS perfilsoft - + ANY_VALUE(ordenadores_particiones.numdisk) AS numdisk, + ANY_VALUE(ordenadores_particiones.numpar) AS numpar, + ANY_VALUE(ordenadores_particiones.codpar) AS codpar, + IFNULL (ANY_VALUE(tipospar.tipopar), ANY_VALUE(ordenadores_particiones.codpar)) AS tipopar, + ANY_VALUE(tipospar.clonable) AS clonable, + ANY_VALUE(ordenadores_particiones.tamano) AS tamano, + ANY_VALUE(ordenadores_particiones.uso) AS uso, + ANY_VALUE(sistemasficheros.descripcion) AS sistemafichero, + ANY_VALUE(ordenadores_particiones.idnombreso) AS idnombreso, + ANY_VALUE(nombresos.nombreso) AS nombreso, + ANY_VALUE(imagenes.idimagen) AS idimagen, + ANY_VALUE(imagenes.descripcion) AS imagen, + (ANY_VALUE(imagenes.revision) - ANY_VALUE(ordenadores_particiones.revision)) AS difimagen, + ANY_VALUE(imagenes.nombreca) AS nombreca, + ANY_VALUE(imagenes.idrepositorio) AS repositorio, + ANY_VALUE(ordenadores_particiones.fechadespliegue) AS fechadespliegue, + ANY_VALUE(ordenadores_particiones.idperfilsoft) AS idperfilsoft, + ANY_VALUE(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 - LEFT OUTER 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"; - + INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador + LEFT OUTER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso + LEFT OUTER 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; + WHERE aulas.idaula=".$idambito; break; case $AMBITO_GRUPOSORDENADORES : $cmd->texto.=" INNER JOIN gruposordenadores ON gruposordenadores.idgrupo = ordenadores.grupoid - WHERE gruposordenadores.idgrupo =".$idambito; + WHERE gruposordenadores.idgrupo=".$idambito; break; case $AMBITO_ORDENADORES : - $cmd->texto.=" WHERE ordenadores.idordenador =".$idambito; + $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 AND ordenadores_particiones.numpar>0 "; - $cmd->texto.=" GROUP by configuracion"; + $cmd->texto.=" GROUP BY configuracion"; + // Comprobar compatiblidad de cláusula GROUP BY. + if (strpos($mode, 'ONLY_FULL_GROUP_BY') === false) + $cmd->texto=preg_replace('/ANY_VALUE/', '', $cmd->texto); - //echo "carga claves:".$cmd->texto; $rs=new Recordset; $rs->Comando=&$cmd; - if (!$rs->Abrir()) return($tablaHtml); // Error al abrir recordset + if (!$rs->Abrir()) return(false); // Error al abrir recordset $rs->Primero(); $idx=0; - //echo $cmd->texto; while (!$rs->EOF){ $tbKeys[$idx]["cfg"]=$rs->campos["configuracion"]; $tbKeys[$idx]["numdisk"]=$rs->campos["numdisk"]; @@ -145,6 +153,7 @@ function cargaCaves($cmd,$idambito,$ambito,$sws,$swr) $tbKeys[$idx]["tipopar"]=$rs->campos["tipopar"]; $tbKeys[$idx]["clonable"]=$rs->campos["clonable"]; $tbKeys[$idx]["tamano"]=$rs->campos["tamano"]; + $tbKeys[$idx]["uso"]=$rs->campos["uso"]; $tbKeys[$idx]["sistemafichero"]=$rs->campos["sistemafichero"]; $tbKeys[$idx]["idnombreso"]=$rs->campos["idnombreso"]; $tbKeys[$idx]["nombreso"]=$rs->campos["nombreso"]; @@ -153,6 +162,7 @@ function cargaCaves($cmd,$idambito,$ambito,$sws,$swr) $tbKeys[$idx]["nombreca"]=$rs->campos["nombreca"]; $tbKeys[$idx]["repositorio"]=$rs->campos["repositorio"]; $tbKeys[$idx]["fechadespliegue"]=$rs->campos["fechadespliegue"]; + $tbKeys[$idx]["difimagen"]=$rs->campos["difimagen"]; $tbKeys[$idx]["idperfilsoft"]=$rs->campos["idperfilsoft"]; $tbKeys[$idx]["perfilsoft"]=$rs->campos["perfilsoft"]; //$tbKeys[$idx]["cache"]=$rs->campos["cache"]; @@ -199,7 +209,6 @@ function pintaConfiguraciones($cmd,$idambito,$ambito,$colums,$sws,$swr,$pintaPar cargaNombresSO($cmd,$idambito,$ambito); cargaTamano($cmd,$idambito,$ambito); cargaCache($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 @@ -208,8 +217,8 @@ function pintaConfiguraciones($cmd,$idambito,$ambito,$colums,$sws,$swr,$pintaPar GROUP_CONCAT(CAST( temp1.configuracion AS CHAR(250) ) ORDER BY temp1.configuracion SEPARATOR '@' ) AS configuraciones FROM (SELECT ordenadores_particiones.idordenador,ordenadores_particiones.numdisk, ordenadores_particiones.numpar, - concat_WS( ';', ordenadores_particiones.numdisk, - ordenadores_particiones.numpar, "; + CONCAT_WS(';', LPAD(ordenadores_particiones.numdisk, 3, 0), + LPAD(ordenadores_particiones.numpar, 3, 0), "; if($sws & $msk_tamano) $cmd->texto.=" ordenadores_particiones.tamano,"; @@ -375,19 +384,18 @@ function cargaSistemasFicheros($cmd,$idambito,$ambito) break; } $cmd->texto.=" GROUP BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ordenadores_particiones.idsistemafichero"; - + $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]["numdisk"]=$rs->campos["numdisk"]; $tbSysFi[$idx]["numpar"]=$rs->campos["numpar"]; $tbSysFi[$idx]["sistemafichero"]=$rs->campos["sistemafichero"]; - $tbSysFi[$idx]["ordenadores"]=$rs->campos["ordenadores"]; + $tbSysFi[$idx]["ordenadores"]=$rs->campos["ordenadores"]; $idx++; $rs->Siguiente(); } @@ -407,8 +415,6 @@ function tomaSistemasFicheros($numpar,$ordenadores,$sw=false,$numdisk = 1) for ($k=0; $k<$conSysFi; $k++){ if ($tbSysFi[$k]["numdisk"] == $numdisk && $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) { @@ -459,7 +465,7 @@ function cargaPerfiles($cmd,$idambito,$ambito) break; } $cmd->texto.=" GROUP BY ordenadores_particiones.numdisk,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 @@ -488,9 +494,6 @@ function tomaPerfiles($numpar,$ordenadores,$numdisk = 1) 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]["numdisk"] == $numdisk && $tbPerfil[$k]["numpar"] == $numpar) { $pcs = explode (",", $ordenadores); $intersec = array_intersect (explode(",", $tbPerfil[$k]["ordenadores"]), $pcs); @@ -538,7 +541,7 @@ function cargaImagenes($cmd,$idambito,$ambito) break; } $cmd->texto.=" GROUP BY ordenadores_particiones.numdisk,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 @@ -567,9 +570,6 @@ function tomaImagenes($numpar,$ordenadores, $numdisk = 1) 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]["numdisk"] == $numdisk && $tbImg[$k]["numpar"] == $numpar) { $pcs = explode (",", $ordenadores); $intersec = array_intersect (explode(",", $tbImg[$k]["ordenadores"]), $pcs); @@ -615,7 +615,7 @@ function cargaNombresSO($cmd,$idambito,$ambito) break; } $cmd->texto.=" GROUP BY ordenadores_particiones.numdisk,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 @@ -668,10 +668,15 @@ function cargaTamano($cmd,$idambito,$ambito) global $AMBITO_GRUPOSORDENADORES; global $AMBITO_ORDENADORES; + // Comprobar modos SQL para hacer que la consulta sea compatible. + $cmd->texto="SELECT @@sql_mode AS mode"; + $cmd->ejecutar(); + @$mode=$cmd->Recordset->campos["mode"]; $cmd->texto="SELECT COUNT(*) AS con, - ordenadores_particiones.tamano, - ordenadores_particiones.numdisk, - ordenadores_particiones.numpar, + ANY_VALUE(ordenadores_particiones.tamano) AS tamano, + ANY_VALUE(ordenadores_particiones.uso) AS uso, + ANY_VALUE(ordenadores_particiones.numdisk) AS numdisk, + ANY_VALUE(ordenadores_particiones.numpar) AS numpar, GROUP_CONCAT(CAST(ordenadores_particiones.idordenador AS CHAR(11) ) ORDER BY ordenadores_particiones.idordenador SEPARATOR ',' ) AS ordenadores FROM ordenadores @@ -691,18 +696,22 @@ function cargaTamano($cmd,$idambito,$ambito) break; } $cmd->texto.=" GROUP BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ordenadores_particiones.tamano"; - //echo "carga tamaños:".$cmd->texto; + // Comprobar compatiblidad de cláusula GROUP BY. + if (strpos($mode, 'ONLY_FULL_GROUP_BY') === false) + $cmd->texto=preg_replace('/ANY_VALUE/', '', $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]["numdisk"]=$rs->campos["numdisk"]; - $tbTam[$idx]["numpar"]=$rs->campos["numpar"]; - $tbTam[$idx]["ordenadores"]=$rs->campos["ordenadores"]; - $idx++; + $tbTam[$idx]["tamano"]=$rs->campos["tamano"]; + $tbTam[$idx]["uso"]=$rs->campos["uso"]; + $tbTam[$idx]["numdisk"]=$rs->campos["numdisk"]; + $tbTam[$idx]["numpar"]=$rs->campos["numpar"]; + $tbTam[$idx]["ordenadores"]=$rs->campos["ordenadores"]; + $idx++; $rs->Siguiente(); } $conTam=$idx; // Guarda contador @@ -732,6 +741,27 @@ function tomaTamano($numpar,$ordenadores,$numdisk = 1) } /*________________________________________________________________________________________________________ + Toma porcentaje de uso de partición común a los ordenadores pasados como parámetros +________________________________________________________________________________________________________*/ +function tomaUso($numpar, $ordenadores, $numdisk=1) +{ + 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]["numdisk"] == $numdisk && $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]["uso"]); + } + } + } +} +/*________________________________________________________________________________________________________ + Selecciona los ordenadores que tienen el mismo Contenido de Cache para la misma partición UHU 2013/05/17 - Ahora se carga también el numero de disco en la consulta ________________________________________________________________________________________________________*/ @@ -766,6 +796,7 @@ function cargaCache($cmd,$idambito,$ambito) break; } $cmd->texto.=" GROUP BY ordenadores_particiones.numdisk,ordenadores_particiones.numpar, ordenadores_particiones.cache"; + $rs=new Recordset; $rs->Comando=&$cmd; if (!$rs->Abrir()) return; // Error al abrir recordset |