summaryrefslogtreecommitdiffstats
path: root/admin/WebConsole/includes/ConfiguracionesParticiones.php
diff options
context:
space:
mode:
Diffstat (limited to 'admin/WebConsole/includes/ConfiguracionesParticiones.php')
-rw-r--r--admin/WebConsole/includes/ConfiguracionesParticiones.php161
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