diff options
author | alonso <alonso@us.es> | 2010-10-23 09:34:04 +0000 |
---|---|---|
committer | alonso <alonso@us.es> | 2010-10-23 09:34:04 +0000 |
commit | 3ec149cb19165453434984c88e8ba03f648e578e (patch) | |
tree | 9d315751684c2c27ed66ad645aeea52ce9027859 /admin/WebConsole/includes | |
parent | 550b680d176cbccfecfe35fad440dd570d90ba5b (diff) |
git-svn-id: https://opengnsys.es/svn/trunk@1314 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'admin/WebConsole/includes')
21 files changed, 1944 insertions, 0 deletions
diff --git a/admin/WebConsole/includes/ConfiguracionesParticiones.php b/admin/WebConsole/includes/ConfiguracionesParticiones.php new file mode 100644 index 00000000..30ee490e --- /dev/null +++ b/admin/WebConsole/includes/ConfiguracionesParticiones.php @@ -0,0 +1,639 @@ +<?php +/*________________________________________________________________________________________________________ + La clave de configuración está formada por una serie de valores separados por ";" + Ejemplo:1;7;30000000;3;3;0;11 + + Parámetros: + 1) Número de partición + 2) Código de la partición + 3) Tamaño + 4) Identificador del sistema de ficheros instalado en la partición + 5) Identificador del nombre del sistema operativo instalado en la partición + 6) Identificador de la imagen restaurada en la partición + 7) Identificador del perfil software que contiene el S.O. instalado en la partición + + Además de este campo, la consulta almacena la descripción de los identificadores que forman parte + de esta clave compuesta de manera que el tiempo de acceso para recuperlarlos sean corto + ya que están en memoria y no en tablas. + + En el ejempo anterior podríamos tener datos + 1 NTFS 30000000 Windows NTFS Windows XP profesional NULL Perfil Software (CUR-8, Part:1) + Que indica: + 1) Número de partición + 2) Código de la partición + 3) Tamaño + 4) Descripción del sistema de ficheros instalado en la partición + 5) Descripción del nombre del sistema operativo instalado en la partición + 6) Descripción de la imagen restaurada en la partición + 7) Descripción del perfil software que contiene el S.O. instalado en la partición + + Estos datos se guardan en la misma tabla de claves que será una matriz asociativa. + + 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 de los ordenadores para ser tratados + Se trata de un octeto de manera que si tiene un "1" en la posición determinada + indica que se requiere desplegar por ese parámetro: + 00000001- No agrupar por Sistema de ficheros + 00000010- No agrupar por Nombre de sistema Operativo + 00000100- No agrupar por Tamaño de partición + 00001000- No agrupar por Imagen instalada + 00010000- No agrupar por Perfil software contenido + $swr: Indica si se se tiene en cuenta las particiones no clonables (si:true o no:false) +________________________________________________________________________________________________________*/ +function cargaCaves($cmd,$idambito,$ambito,$sws,$swr) +{ + global $tbKeys; // Tabla contenedora de claves de configuración + global $conKeys; // Contador de claves de configuración + global $AMBITO_AULAS; + global $AMBITO_GRUPOSORDENADORES; + global $AMBITO_ORDENADORES; + + global $msk_sysFi; + global $msk_nombreSO; + global $msk_tamano; + global $msk_imagen; + global $msk_perfil; + + $cmd->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 '<TABLE id="tabla_conf" width="95%" class="tabla_listados_sin" align=center border=0 cellPadding=0 cellSpacing=1>'; + while (!$rs->EOF){ + $cc++; + //Muestra ordenadores + echo '<TR><TD colspan='.$colums.' style="BACKGROUND-COLOR: #FFFFFF;">'; + echo pintaOrdenadores($cmd,$rs->campos["idordenadores"],10,$cc); + echo '</TD></TR>'; + //Muestra particiones y configuración + + echo pintaParticiones($cmd,$rs->campos["configuraciones"],$rs->campos["idordenadores"],$cc); + $rs->Siguiente(); + } + echo "</TABLE>"; + $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.='<TABLE align=left border="0" id="tbOrd_'.$cc.'" value="'.$idordenadores.'"><TR>'; + while (!$rs->EOF){ + $contor++; + $tablaHtml.= '<TD align=center style="BACKGROUND-COLOR: #FFFFFF;"> + <IMG src="../images/iconos/ordenador.gif" > + <br><span style="FONT-SIZE:9px; COLOR: #4f4f4f;" >'.$rs->campos["nombreordenador"].'</span> + </TD>'; + if($contor>$maxcontor){ + $contor=0; + $tablaHtml.='</TR><TR>'; + } + $rs->Siguiente(); + } + $tablaHtml.='</TR>'; + $tablaHtml.= '</TABLE>'; + 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 + INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador + INNER 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; + } + $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++){ + $pos = strpos($tbSysFi[$k]["ordenadores"], $ordenadores); + if ($pos !== false) { // Cadena encontrada + if($tbSysFi[$k]["numpar"]==$numpar){ + 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 + INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador + INNER JOIN perfilessoft ON perfilessoft.idperfilsoft=ordenadores_particiones.idperfilsoft"; + + 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; + } + $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) + 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 + INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador + INNER JOIN imagenes ON imagenes.idimagen=ordenadores_particiones.idimagen"; + + 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; + } + $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) + 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 + INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador + INNER JOIN nombresos ON nombresos.idnombreso=ordenadores_particiones.idnombreso"; + + 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; + } + $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++){ + $pos = strpos($tbSO[$k]["ordenadores"], $ordenadores); + if ($pos !== false) { // Cadena encontrada + if($tbSO[$k]["numpar"]==$numpar) + 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 + INNER JOIN ordenadores_particiones ON ordenadores_particiones.idordenador=ordenadores.idordenador"; + + 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; + } + $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++){ + $pos = strpos($tbTam[$k]["ordenadores"], $ordenadores); + if ($pos !== false) { // Cadena encontrada + if($tbTam[$k]["numpar"]==$numpar) + return($tbTam[$k]["tamano"]); + } + } +} + +?> diff --git a/admin/WebConsole/includes/CreaComando.php b/admin/WebConsole/includes/CreaComando.php new file mode 100644 index 00000000..06bce0bb --- /dev/null +++ b/admin/WebConsole/includes/CreaComando.php @@ -0,0 +1,24 @@ +<? +// ************************************************************************************************************************************************* +// Aplicación WEB: ogAdmWebCon. +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: 2009-2010 +// Fecha Última modificación: Agosto-2010 +// Nombre del fichero: CreaComando.php +// Descripción : +// Devuelve una objeto comando totalmente operativo (con la conexión abierta) +// Parametros: +// - cadenaconexion: Una cadena con los datos necesarios para la conexión: nombre del servidor +// usuario,password,base de datos,etc separados por coma +// ************************************************************************************************************************************************* +function CreaComando($cadenaconexion){ + $strcn=split(";",$cadenaconexion); + $cn=new Conexion; + $cmd=new Comando; + $cn->CadenaConexion($strcn[0],$strcn[1],$strcn[2],$strcn[3],$strcn[4]); + if (!$cn->Abrir()) return (false); + $cn->SetUtf8(); + $cmd->Conexion=&$cn; + return($cmd); +} +?>
\ No newline at end of file diff --git a/admin/WebConsole/includes/CreaTablaParametros.php b/admin/WebConsole/includes/CreaTablaParametros.php new file mode 100644 index 00000000..53757345 --- /dev/null +++ b/admin/WebConsole/includes/CreaTablaParametros.php @@ -0,0 +1,50 @@ +<?
+// *************************************************************************************************************************************************
+// Aplicación WEB: ogAdmWebCon.
+// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
+// Fecha Creación: 2009-2010
+// Fecha Última modificación: Agosto-2010
+// Nombre del fichero: CreaTablaParametros.php
+// Descripción :
+// Crea una tabla en memoria con especificaciones sobre los parámetros de cada comando
+// Parametros:
+// - cmd: Un comando ya operativo (con conexión abierta)
+// - tabla_parametros: Referencia a la tabla donde se guardarán las especificaciones
+// - cont_parametros: Referencia a la variable que contendrá el número de elementos totales de la tabla
+// *************************************************************************************************************************************************
+function CreaTablaParametros($cmd,$tabla_parametros,$cont_parametros){
+ $rs=new Recordset;
+ $cmd->texto="SELECT * FROM parametros";
+ $rs->Comando=&$cmd;
+ if (!$rs->Abrir()) return; // Error al abrir recordset
+ $rs->Primero();
+ $cont=0;
+ while (!$rs->EOF){
+ $auxtabla_parametros="";
+ $auxtabla_parametros["nemonico"]=$rs->campos["nemonico"];
+ $auxtabla_parametros["descripcion"]=$rs->campos["descripcion"];
+ $auxtabla_parametros["nomidentificador"]=$rs->campos["nomidentificador"];
+ $auxtabla_parametros["nomtabla"]=$rs->campos["nomtabla"];
+ $auxtabla_parametros["nomliteral"]=$rs->campos["nomliteral"];
+ $tabla_parametros[$cont][0]=$auxtabla_parametros["nemonico"];
+ $tabla_parametros[$cont][1]=$auxtabla_parametros;
+ $cont++;
+ $rs->Siguiente();
+ }
+ $auxnemonico="";
+ // Ordena según el nemonico
+ for ($i=0;$i<$cont-1;$i++){
+ for ($j=$i+1;$j<$cont;$j++){
+ if($tabla_parametros[$i][0]>$tabla_parametros[$j][0]){
+ $auxnemonico=$tabla_parametros[$i][0];
+ $tabla_parametros[$i][0]=$tabla_parametros[$j][0];
+ $tabla_parametros[$j][0]=$auxnemonico;
+ $auxtabla_parametros=$tabla_parametros[$i][1];
+ $tabla_parametros[$i][1]=$tabla_parametros[$j][1];
+ $tabla_parametros[$j][1]=$auxtabla_parametros;
+ }
+ }
+ }
+ $cont_parametros=$cont;
+}
+?> diff --git a/admin/WebConsole/includes/FicherosPost.php b/admin/WebConsole/includes/FicherosPost.php new file mode 100644 index 00000000..41858981 --- /dev/null +++ b/admin/WebConsole/includes/FicherosPost.php @@ -0,0 +1,51 @@ +<? +//________________________________________________________________________________________ +// +// Salva un fichero enviado por POST +// Parámetros: +// - $UrlPagina: Url de la página que carga el fichero +// - $NombreFicheroPost: Nombre temporal que le da php al fichero post +// - $NombreFichero: Nombre definitivo que tendrá el fichero +//________________________________________________________________________________________ +function SalvaFichero_POST($UrlPagina,$NombreFicheroPost,$NombreFichero,$UrlFichero){ + + $UrlCarpetaPagina=dirname($UrlPagina); + $UrlFichero=$UrlCarpetaPagina."/iconos/".$NombreFichero; + + $PathFisicoFichero=TomaPathFIsico($UrlPagina,$NombreFichero); + + if (file_exists($PathFisicoFichero)) // Borra el fichero si existe + unlink($PathFisicoFichero); + $resul=move_uploaded_file($NombreFicheroPost,$PathFisicoFichero); // salva el fichero + return($resul); +} +//________________________________________________________________________________________ +// +// Elimina un fichero en el servidor +// Parámetros: +// - $UrlPagina: Url de la página que carga el fichero +// - $NombreFichero: Nombre definitivo que tendrá el fichero +//________________________________________________________________________________________ +function EliminaFichero($UrlPagina,$NombreFichero){ + $PathFisicoFichero=TomaPathFIsico($UrlPagina,$NombreFichero); + $resul=false; + if (file_exists($PathFisicoFichero)) // Borra el fichero si existe + $resul=unlink($PathFisicoFichero); + return($resul); +} +//________________________________________________________________________________________ +// +// Toma el path físico de un fichero +// Parámetros: +// - $UrlPagina: Url de la página que carga el fichero +// - $NombreFichero: Nombre definitivo que tendrá el fichero +//________________________________________________________________________________________ +function TomaPathFisico($UrlPagina,$NombreFichero){ + $Nombrepagina=basename($UrlPagina); + $PathFisicoPagina=realpath($Nombrepagina); + $PathFisicoCarpetaPagina=dirname($PathFisicoPagina); + $PathFisicoCarpetaFichero=$PathFisicoCarpetaPagina."/iconos"; + $PathFisicoFichero=$PathFisicoCarpetaPagina."/iconos/".$NombreFichero; + return($PathFisicoFichero); +} +?>
\ No newline at end of file diff --git a/admin/WebConsole/includes/HTMLCTEMULSELECT.php b/admin/WebConsole/includes/HTMLCTEMULSELECT.php new file mode 100644 index 00000000..6c4f479f --- /dev/null +++ b/admin/WebConsole/includes/HTMLCTEMULSELECT.php @@ -0,0 +1,37 @@ +<? +// ************************************************************************************************************************************************* +// Aplicación WEB: ogAdmWebCon. +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: 2009-2010 +// Fecha Última modificación: Agosto-2010 +// Nombre del fichero: HTMLCTEMULSELECT.php +// Descripción : +// Crea la etiqueta html <SELECT> multiselección, de valores constantes +// Parametros: +// - parametros: Una cadena con la forma valor=literal separada por un caracter INTRO +// - nombreid: Nombre del desplegable (atributo HTML name) +// - tbvalor: Array con los valores de las opciones que aparecerán seleccionadas +// - clase: Clase que define su estilo +// - eventochg: Nombre de la función que se ejecutará en respuesta al evento onchange( por defecto: ninguna) +// - ancho: Anchura del desplegable +// - alto: Altura del desplegable +// ************************************************************************************************************************************************* +function HTMLCTEMULSELECT($parametros,$nombreid,$tbvalor,$clase,$eventochg,$ancho,$alto){ + if (!empty($eventochg)) $eventochg='onchange="'.$eventochg.'(this);"'; + if (empty($clase)) $clase='formulariodatos'; + $x=0; + $opciones=split(chr(13),$parametros); + $SelectHtml= '<SELECT '.$eventochg.' class="'.$clase.'" name="'.$nombreid.'" multiple size='.$alto.' style="WIDTH: '.$ancho.'">'; + for($i=0;$i<sizeof($opciones);$i++){ + $item=split("=",$opciones[$i]); + $SelectHtml.= '<OPTION value="'.$item[0].'"'; + if (isset($tbvalor[$x])){ + if($tbvalor[$x]==$item[0]) { + $SelectHtml.=" selected "; + $x++; + } + } + $SelectHtml.= '>'.$item[1].'</OPTION>'; + } + return($SelectHtml); +}
\ No newline at end of file diff --git a/admin/WebConsole/includes/HTMLCTESELECT.php b/admin/WebConsole/includes/HTMLCTESELECT.php new file mode 100644 index 00000000..bd07d085 --- /dev/null +++ b/admin/WebConsole/includes/HTMLCTESELECT.php @@ -0,0 +1,31 @@ +<? +// ************************************************************************************************************************************************* +// Aplicación WEB: ogAdmWebCon. +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: 2009-2010 +// Fecha Última modificación: Agosto-2010 +// Nombre del fichero: HTMLCTESELECT.php +// Descripción : +// Crea la etiqueta html <SELECT> de valores constantes +// Parametros: +// - parametros:Una cadena con la forma valor=literal separada por un caracter INTRO +// - nombreid: Nombre del desplegable (atributo HTML name) +// - clase: Clase que define su estilo +// - defaultlit: Literal de la primera opción cuyo valor es siempre 0 +// - valorselec: Valor del item que saldrá seleccionado por defecto +// - ancho: Anchura del desplegable +// - eventochg: Nombre de la función que se ejecutará en respuesta al evento onchange +// ************************************************************************************************************************************************* +function HTMLCTESELECT($parametros,$nombreid,$clase,$defaultlit,$valorselec,$ancho,$eventochg=""){ + if (!empty($eventochg)) $eventochg='onchange="'.$eventochg.'(this);"'; + $opciones=split(chr(13),$parametros); + $SelectHtml= '<SELECT '.$eventochg.' class= "'.$clase.'" id='.$nombreid.' name="'.$nombreid.'" style="WIDTH: '.$ancho.'">'; + if (!empty($defaultlit)) $SelectHtml.= '<OPTION value="0">'.$defaultlit.'</OPTION>'; + for($i=0;$i<sizeof($opciones);$i++){ + $item=split("=",$opciones[$i]); + $SelectHtml.= '<OPTION value="'.$item[0].'"'; + if($valorselec==$item[0]) $SelectHtml.=" selected "; + $SelectHtml.= '>'.$item[1].'</OPTION>'; + } + return($SelectHtml); +}
\ No newline at end of file diff --git a/admin/WebConsole/includes/HTMLMULSELECT.php b/admin/WebConsole/includes/HTMLMULSELECT.php new file mode 100644 index 00000000..e6844b03 --- /dev/null +++ b/admin/WebConsole/includes/HTMLMULSELECT.php @@ -0,0 +1,52 @@ +<? +// ************************************************************************************************************************************************* +// Aplicación WEB: ogAdmWebCon. +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: 2009-2010 +// Fecha Última modificación: Agosto-2010 +// Nombre del fichero: HTMLSELECT.php +// Descripción : +// Crea la etiqueta html <SELECT> con valores procedentes de una tabla ( eleccciones multiples) +// Parametros: +// - cmd:Un comando ya operativo (con conexión abierta) +// - idcentro:Centro al que pertene el registro donde se encuentra el dato a recuperar, será 0 para no contemplar este dato +// - nombretabla: Nombre de la tabla origen de los datos +// - identificador: Valor del campo identificador del registro +// - nombreid: Nombre del campo identificador del registro +// - nombreliteral: Nombre del campo de la tabla que mostrará el desplegable +// - ancho: Anchura del desplegable +// - eventochg: Nombre de la función que se ejecutará en respuesta al evento onchange( por defecto: ninguna) +// - clase: Clase que define su estilo (por defecto: formulariodatos) +// - clausulawhere: Clausula Where adicional +// ************************************************************************************************************************************************* +function HTMLMULSELECT($cmd,$idcentro,$nombretabla,$identificador,$nombreid,$nombreliteral,$ancho,$eventochg = "",$clase="",$clausulawhere=""){ + if (!empty($eventochg)) $eventochg='onchange="'.$eventochg.'(this);"'; + if (empty($clase)) $clase='formulariodatos'; + $SelectHtml=""; + $rs=new Recordset; + if ($idcentro>0){ + $cmd->texto='SELECT * FROM '.$nombretabla.' WHERE idcentro='.$idcentro; + if(!empty($clausulawhere)) + $cmd->texto.=" AND (".$clausulawhere.")"; + } + else{ + $cmd->texto='SELECT * FROM '.$nombretabla; + if(!empty($clausulawhere)) + $cmd->texto.=" WHERE (".$clausulawhere.")"; + } + $cmd->texto.=' ORDER BY '.$nombreliteral; + + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return(""); // Error al abrir recordset + $SelectHtml.= '<SELECT '.$eventochg.' class="'.$clase.'" multiple name="'.$nombreid.'" style="WIDTH: '.$ancho.'">'; + $SelectHtml.= ' <OPTION value="0"></OPTION>'; + $rs->Primero(); + while (!$rs->EOF){ + $SelectHtml.='<OPTION value="'.$rs->campos[$nombreid].'"'; + If ($rs->campos[$nombreid]==$identificador) $SelectHtml.= ' selected ' ; + $SelectHtml.= '>'.$rs->campos[$nombreliteral].'</OPTION>'; + $rs->Siguiente(); + }$SelectHtml.= '</SELECT>'; + $rs->Cerrar(); + return($SelectHtml); +}
\ No newline at end of file diff --git a/admin/WebConsole/includes/HTMLSELECT.php b/admin/WebConsole/includes/HTMLSELECT.php new file mode 100644 index 00000000..077e7680 --- /dev/null +++ b/admin/WebConsole/includes/HTMLSELECT.php @@ -0,0 +1,52 @@ +<? +// ************************************************************************************************************************************************* +// Aplicación WEB: ogAdmWebCon. +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: 2009-2010 +// Fecha Última modificación: Agosto-2010 +// Nombre del fichero: HTMLSELECT.php +// Descripción : +// Crea la etiqueta html <SELECT> con valores procedentes de una tabla +// Parametros: +// - cmd:Un comando ya operativo (con conexión abierta) +// - idcentro:Centro al que pertene el registro donde se encuentra el dato a recuperar, será 0 para no contemplar este dato +// - nombretabla: Nombre de la tabla origen de los datos +// - identificador: Valor del campo identificador del registro +// - nombreid: Nombre del campo identificador del registro +// - nombreliteral: Nombre del campo de la tabla que mostrará el desplegable +// - ancho: Anchura del desplegable +// - eventochg: Nombre de la función que se ejecutará en respuesta al evento onchange( por defecto: ninguna) +// - clase: Clase que define su estilo (por defecto: formulariodatos) +// - clausulawhere: Clausula Where adicional +// ************************************************************************************************************************************************* +function HTMLSELECT($cmd,$idcentro,$nombretabla,$identificador,$nombreid,$nombreliteral,$ancho,$eventochg = "",$clase="",$clausulawhere=""){ + if (!empty($eventochg)) $eventochg='onchange="'.$eventochg.'(this);"'; + if (empty($clase)) $clase='formulariodatos'; + $SelectHtml=""; + $rs=new Recordset; + if ($idcentro>0){ + $cmd->texto='SELECT * FROM '.$nombretabla.' WHERE idcentro='.$idcentro; + if(!empty($clausulawhere)) + $cmd->texto.=" AND (".$clausulawhere.")"; + } + else{ + $cmd->texto='SELECT * FROM '.$nombretabla; + if(!empty($clausulawhere)) + $cmd->texto.=" WHERE (".$clausulawhere.")"; + } + $cmd->texto.=' ORDER BY '.$nombreliteral; + //echo "<br>".$cmd->texto; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return(""); // Error al abrir recordset + $SelectHtml.= '<SELECT '.$eventochg.' class="'.$clase.'" name="'.$nombreid.'" style="WIDTH: '.$ancho.'">'; + $SelectHtml.= ' <OPTION value="0"></OPTION>'; + $rs->Primero(); + while (!$rs->EOF){ + $SelectHtml.='<OPTION value="'.$rs->campos[$nombreid].'"'; + If ($rs->campos[$nombreid]==$identificador) $SelectHtml.= ' selected ' ; + $SelectHtml.= '>'.$rs->campos[$nombreliteral].'</OPTION>'; + $rs->Siguiente(); + }$SelectHtml.= '</SELECT>'; + $rs->Cerrar(); + return($SelectHtml); +}
\ No newline at end of file diff --git a/admin/WebConsole/includes/InvFecha.php b/admin/WebConsole/includes/InvFecha.php new file mode 100644 index 00000000..5bc46c4a --- /dev/null +++ b/admin/WebConsole/includes/InvFecha.php @@ -0,0 +1,37 @@ +<? +/*______________________________________________________________________ + Cambia de posicion los extremos de una fecha. Devuelve una fecha con formato + dd-mm-aaaa si el formato de entrada es aaaa-mm-dd y viseversa + Parametros: + - fecha: Una cadena con los datos de una fecha +_______________________________________________________________________*/ +function InvFecha($fecha){ + if ($fecha=="0000-00-00")return(""); + + $auxsplit=split(" ",$fecha); + list($anno_p,$mes_p,$dia_p)=split("[/-]",$auxsplit[0]); + $fecha_p=$dia_p.'-'.$mes_p.'-'.$anno_p; + return($fecha_p); +} +//////////////////////////////////////////////////// +//Convierte fecha de mysql a normal +//////////////////////////////////////////////////// +function sacafechaDB($fecha){ + ereg( "([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})", $fecha, $mifecha); + $lafecha=$mifecha[3]."/".$mifecha[2]."/".$mifecha[1]; + return $lafecha; +} + +//////////////////////////////////////////////////// +//Convierte fecha de normal a mysql +//////////////////////////////////////////////////// + +function metefechaDB($fecha){ + ereg( "([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})", $fecha, $mifecha); + $lafecha=$mifecha[3]."-".$mifecha[2]."-".$mifecha[1]; + return $lafecha; +} +function HoraValida($hora){ + if ($hora=="00:00:00")return(""); +} +?>
\ No newline at end of file diff --git a/admin/WebConsole/includes/RecopilaIpesMacs.php b/admin/WebConsole/includes/RecopilaIpesMacs.php new file mode 100644 index 00000000..67bc5145 --- /dev/null +++ b/admin/WebConsole/includes/RecopilaIpesMacs.php @@ -0,0 +1,149 @@ +<? +// ************************************************************************************************************************************************* +// Aplicación WEB: ogAdmWebCon +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: Año 2009-2010 +// Fecha Última modificación: Agosto-2010 +// Nombre del fichero: RecopilaIpesMacs.php +// Descripción : +// Recopila las IPes, las Macs y los identificadores de ordenadores de un ámbito determinado +// +// Especificaciones: +// Esta Función recibe tres parámatros: +// cmd : Un objeto comando totalmente operativo +// ambito: Ámbito +// idambito: Identificador del ámbito +// +// Devuelve: +// Todas los identificadores de ordenadores , las ipes y las macs de los ordenadores que componen el ámbito +// Para ellos habrá que tener declarada tres variables globales : +// $cadenaid, $cadenaip y $cadenamac +// ************************************************************************************************************************************************* +function RecopilaIpesMacs($cmd,$ambito,$idambito){ + global $cadenaid; + global $cadenaip; + global $cadenamac; + + global $AMBITO_CENTROS; + global $AMBITO_GRUPOSAULAS; + global $AMBITO_AULAS; + global $AMBITO_GRUPOSORDENADORES; + global $AMBITO_ORDENADORES; + + $cadenaid=""; + $cadenaip=""; + $cadenamac=""; + + $rs=new Recordset; + switch($ambito){ + case $AMBITO_CENTROS : + $cmd->texto="SELECT idcentro,nombrecentro FROM centros WHERE idcentro=".$idambito; + RecorreCentro($cmd); + break; + case $AMBITO_GRUPOSAULAS : + $cmd->texto="SELECT idgrupo,nombregrupo FROM grupos WHERE idgrupo=".$idambito." AND tipo=".$AMBITO_GRUPOSAULAS; + RecorreGruposAulas($cmd); + break; + case $AMBITO_AULAS : + $cmd->texto="SELECT idaula,nombreaula FROM aulas WHERE idaula=".$idambito; + RecorreAulas($cmd); + break; + case $AMBITO_GRUPOSORDENADORES : + $cmd->texto="SELECT idgrupo,nombregrupoordenador FROM gruposordenadores WHERE idgrupo=".$idambito; + RecorreGruposOrdenadores($cmd); + break; + case $AMBITO_ORDENADORES : + $cmd->texto="SELECT ip,mac,nombreordenador,idordenador FROM ordenadores WHERE idordenador=".$idambito; + RecorreOrdenadores($cmd); + break; + default: // Se trata de un conjunto aleatorio de ordenadores + $cmd->texto="SELECT ip,mac,nombreordenador,idordenador FROM ordenadores WHERE idordenador IN (".$idambito.")"; + RecorreOrdenadores($cmd); + + } + $cadenaid=substr($cadenaid,0,strlen($cadenaid)-1); // Quita la coma + $cadenaip=substr($cadenaip,0,strlen($cadenaip)-1); // Quita la coma + $cadenamac=substr($cadenamac,0,strlen($cadenamac)-1); // Quita la coma +} +//________________________________________________________________________________________________________ +function RecorreCentro($cmd){ + global $AMBITO_GRUPOSAULAS; + $rs=new Recordset; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return; // Error al abrir recordset + $rs->Primero(); + if(!$rs->EOF){ + $idcentro=$rs->campos["idcentro"]; + $cmd->texto="SELECT idgrupo,nombregrupo FROM grupos WHERE idcentro=".$idcentro." AND grupoid=0 AND tipo=".$AMBITO_GRUPOSAULAS; + RecorreGruposAulas($cmd); + $cmd->texto="SELECT idaula,nombreaula FROM aulas WHERE idcentro=".$idcentro." AND grupoid=0"; + RecorreAulas($cmd); + } + $rs->Cerrar(); +} +//________________________________________________________________________________________________________ +function RecorreGruposAulas($cmd){ + global $AMBITO_GRUPOSAULAS; + $rs=new Recordset; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return; // Error al abrir recordset + $rs->Primero(); + while (!$rs->EOF){ + $idgrupo=$rs->campos["idgrupo"]; + $cmd->texto="SELECT idgrupo,nombregrupo FROM grupos WHERE grupoid=".$idgrupo. " AND tipo=".$AMBITO_GRUPOSAULAS; + RecorreGruposAulas($cmd); + $cmd->texto="SELECT idaula,nombreaula FROM aulas WHERE grupoid=".$idgrupo; + RecorreAulas($cmd); + $rs->Siguiente(); + } + $rs->Cerrar(); +} +//________________________________________________________________________________________________________ +function RecorreAulas($cmd){ + $rs=new Recordset; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return; // Error al abrir recordset + $rs->Primero(); + while (!$rs->EOF){ + $idaula=$rs->campos["idaula"]; + $cmd->texto="SELECT idgrupo,nombregrupoordenador FROM gruposordenadores WHERE idaula=".$idaula." AND grupoid=0"; + RecorreGruposOrdenadores($cmd); + $cmd->texto="SELECT ip,mac,nombreordenador,idordenador FROM ordenadores WHERE idaula=".$idaula." AND grupoid=0"; + RecorreOrdenadores($cmd); + $rs->Siguiente(); + } + $rs->Cerrar(); +} +//________________________________________________________________________________________________________ +function RecorreGruposOrdenadores($cmd){ + $rs=new Recordset; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return; // Error al abrir recordset + $rs->Primero(); + while (!$rs->EOF){ + $idgrupo=$rs->campos["idgrupo"]; + $cmd->texto="SELECT idgrupo,nombregrupoordenador FROM gruposordenadores WHERE grupoid=".$idgrupo; + RecorreGruposOrdenadores($cmd); + $cmd->texto="SELECT ip,mac,nombreordenador,idordenador FROM ordenadores WHERE grupoid=".$idgrupo; + RecorreOrdenadores($cmd); + $rs->Siguiente(); + } + $rs->Cerrar(); +} +//________________________________________________________________________________________________________ +function RecorreOrdenadores($cmd){ + global $cadenaid; + global $cadenaip; + global $cadenamac; + $rs=new Recordset; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return; // Error al abrir recordset + while (!$rs->EOF){ + $cadenaid.=$rs->campos["idordenador"].","; + $cadenaip.=$rs->campos["ip"].";"; + $cadenamac.=$rs->campos["mac"].";"; + $rs->Siguiente(); + } + $rs->Cerrar(); +} +?> diff --git a/admin/WebConsole/includes/RedireccionaError.php b/admin/WebConsole/includes/RedireccionaError.php new file mode 100644 index 00000000..92a6cd4c --- /dev/null +++ b/admin/WebConsole/includes/RedireccionaError.php @@ -0,0 +1,13 @@ +<? +/*______________________________________________________________________ + Redirecciona a la página de error + Parametros: + - Literal del error +_______________________________________________________________________*/ +function RedireccionaError($herror){ + + $urlerror=urlencode($herror); + $wurl="../seguridad/logerror.php?herror=".$urlerror; + Header('Location: '.$wurl); +} +?>
\ No newline at end of file diff --git a/admin/WebConsole/includes/TomaDato.php b/admin/WebConsole/includes/TomaDato.php new file mode 100644 index 00000000..b20278d8 --- /dev/null +++ b/admin/WebConsole/includes/TomaDato.php @@ -0,0 +1,41 @@ +<? +// ************************************************************************************************************************************************* +// Aplicación WEB: ogAdmWebCon. +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: 2009-2010 +// Fecha Última modificación: Agosto-2010 +// Nombre del fichero: TomaDato.php +// Descripción : +// Recupera un dato de una tabla +// Parametros: +// - cmd:Un comando ya operativo (con conexión abierta) +// - idcentro:Centro al que pertene el registro donde se encuentra el dato a recuperar, será 0 para no contemplar este dato +// - nombretabla: Nombre de la tabla origen de los datos +// - identificador: Valor del campo identificador del registro (cadena separada por comas si hay varios) +// - nombreid: Nombre del campo identificador del registro (cadena separada por comas si hay varios) +// - nombreliteral: Nombre del campo que se quiere recuperar +// - swid: Indica 0= El identificador es tipo alfanumérico 1= EI identificador es tipo numérico ( valor por defecto) +// (*) En el caso de haber varios identificadores todos deben ser del mismo tipo ( numérico o alfanumérico) +//************************************************************************************************************************************************* +function TomaDato($cmd,$idcentro,$nombretabla,$identificador,$nombreid,$nombreliteral,$swid=0){ + $Dato=""; + if (empty($identificador)) return($Dato); + + if($swid==0) $ch='"'; else $ch=""; // Caracter comillas para campos alfanuméricos + $auxidentificador=split(";",$identificador); + $auxnombreid=split(";",$nombreid); + + $clausulaWhere=" WHERE ".$auxnombreid[0]."=".$ch.$auxidentificador[0].$ch; + for ($i=1;$i<sizeof($auxidentificador);$i++) + $clausulaWhere.=" AND ".$auxnombreid[$i]."=".$ch.$auxidentificador[$i].$ch; + $cmd->texto="SELECT * FROM ".$nombretabla.$clausulaWhere; + if (!empty($idcentro)) + $cmd->texto.=" AND idcentro=".$idcentro; + $rs=new Recordset; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return(""); // Error al abrir recordset + if (!$rs->EOF) + $Dato.=$rs->campos[$nombreliteral]; + $rs->Cerrar(); + return($Dato); +} diff --git a/admin/WebConsole/includes/TomanDatos.php b/admin/WebConsole/includes/TomanDatos.php new file mode 100644 index 00000000..07c96a3c --- /dev/null +++ b/admin/WebConsole/includes/TomanDatos.php @@ -0,0 +1,36 @@ +<? +// ************************************************************************************************************************************************* +// Aplicación WEB: ogAdmWebCon. +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: 2009-2010 +// Fecha Última modificación: Agosto-2010 +// Nombre del fichero: TomanDatos.php +// Descripción : +// Recupera datos de una tabla +// Parametros: +// - cmd:Un comando ya operativo (con conexión abierta) +// - idcentro:Centro al que pertene el registro donde se encuentra el dato a recuperar, será 0 para no contemplar este dato +// - nombretabla: Nombre de la tabla origen de los datos +// - identificador: Valor del campo identificador del registro +// - nombreid: Nombre del campo identificador del registro +// - nombreliteral: Array asosiativa con los nombres de los campo que se quieren recuperar +// - swid: Indica 0= El identificador es tipo alfanumérico 1= EI identificador es tipo numérico (valor por defecto) +// ************************************************************************************************************************************************* +function TomanDatos($cmd,$nombretabla,$identificador,$nombreid,$nombreliterales,$swid=1){ + $Dato=""; + if (empty($identificador)) $identificador=0; + $rs=new Recordset; + if($swid==0) + $cmd->texto="SELECT * FROM ".$nombretabla." WHERE ".$nombreid."='".$identificador."'"; + else + $cmd->texto='SELECT * FROM '.$nombretabla.' WHERE '.$nombreid.'='.$identificador; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return(""); // Error al abrir recordset + if (!$rs->EOF){ + for($x=0;$x<sizeof($nombreliterales);$x++){ + $Dato[$nombreliterales[$x]]=$rs->campos[$nombreliterales[$x]]; + } + } + $rs->Cerrar(); + return($Dato); +}
\ No newline at end of file diff --git a/admin/WebConsole/includes/comunes.php b/admin/WebConsole/includes/comunes.php new file mode 100644 index 00000000..b3e81e82 --- /dev/null +++ b/admin/WebConsole/includes/comunes.php @@ -0,0 +1,378 @@ +<? + //________________________________________________________________________________________ + // + // Trocea en elementos de una matriz la cadena enviada como parametro separando por parametros + // Parámetros: + // - trama: La trama + // Devuelve: + // Una matriz con las parejas de paramertos "nombre=valor" + //________________________________________________________________________________________ + function extrae_parametros($parametros,$chsep,$chval){ + $ParametrosCadena=""; + $auxP=split($chsep,$parametros); + for ($i=0;$i<sizeof($auxP);$i++){ + $dualparam=split($chval,$auxP[$i]); + + if (isset($dualparam[0]) && isset($dualparam[1])){ + $streval='$ParametrosCadena["'.$dualparam[0].'"]="'.$dualparam[1].'";'; + eval($streval); + } + } + return($ParametrosCadena); + } + //________________________________________________________________________________________ + // + // Trocea en elementos de una matriz la cadena enviada como parametro separando por parametros + // y devolviendo el elegido + // Parámetros: + // Devuelve: + //________________________________________________________________________________________ + function extrae_parametro($parametros,$chsep,$chval,$chr){ + $ParametrosCadena=""; + $auxP=split($chsep,$parametros); + for ($i=0;$i<sizeof($auxP);$i++){ + $dualparam=split($chval,$auxP[$i]); + if (isset($dualparam[0]) && isset($dualparam[1])){ + if($dualparam[0]==$chr) + return($dualparam[1]); + } + } + return(""); + } + //________________________________________________________________________________________ + // + // Busca una cadena dentro de otra. + // Especificaciones: + // Puede ser sensible a las mayúsculas + // Parametros: + // cadena; cadena donde se va a buscar + // subcadena; cadena a buscar + // swsensible; si es sensible o no a las mayúsculas y minúsculas + // Devuelve: + // La posición de comienzo de la subcadena dentro de la cadena, o (-1) en caso de no estar dentro + //________________________________________________________________________________________ + function EnCadena($cadena,$subcadena,$swsensible = false) { + $i=0; + while (strlen($cadena)>=$i) { + unset($substring); + if ($swsensible) { + $subcadena=strtolower($subcadena); + $cadena=strtolower($cadena); + } + $substring=substr($cadena,$i,strlen($subcadena)); + if ($substring==$subcadena) return$i; + $i++; + } + return -1; + } + //_____________________________________________________________________________________________ + // Búsqueda binaria o dicotómica en una tabla y devuelve el índice del elemento buscado tabla de una dimension + //_____________________________________________________________________________________________ + function busca_indicebinario($dato,$tabla,$cont){ + if (empty($tabla)) return(-1); + $a=0; + $b=$cont-1; + do{ + $p=round(($a+$b)/2,0); + if ($tabla[$p]==$dato) + return($p); + + else{ + if ($tabla[$p]<$dato){ + $a=$p+1; + } + else + $b=$p-1; + } + }while($b>=$a); + return(-1); + } + //_____________________________________________________________________________________________ + // Búsqueda binaria o dicotómica en una tabla y devuelve el índice del elemento buscado tabla de dos dimensiones + //_____________________________________________________________________________________________ + function busca_indicebinariodual($dato,$tabla,$cont){ + $a=0; + $b=$cont-1; + do{ + $p=round(($a+$b)/2,0); + if ($tabla[$p][0]==$dato) + return($p); + + else{ + if ($tabla[$p][0]<$dato){ + $a=$p+1; + } + else + $b=$p-1; + } + }while($b>=$a); + return(-1); + } + //___________________________________________________________________________________ + // + // Crea un Array con las especificaciones de los parámetros de los comandos + //___________________________________________________________________________________ + function CreaTablaParametros($cmd) + { + $cmd->texto="SELECT * FROM parametros ORDER BY nemonico"; + $rs=new Recordset; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return(false); // Error al abrir recordset + $cont=0; + while (!$rs->EOF){ + $nemo=$rs->campos["nemonico"]; + $auxtabla_parametros=""; + $auxtabla_parametros["nemonico"]=$nemo; + $auxtabla_parametros["descripcion"]=$rs->campos["descripcion"]; + $auxtabla_parametros["nomidentificador"]=$rs->campos["nomidentificador"]; + $auxtabla_parametros["nomtabla"]=$rs->campos["nomtabla"]; + $auxtabla_parametros["nomliteral"]=$rs->campos["nomliteral"]; + $auxtabla_parametros["tipopa"]=$rs->campos["tipopa"]; + $auxtabla_parametros["visual"]=$rs->campos["visual"]; + $tabla_parametros[$nemo]=$auxtabla_parametros; + $cont++; + $rs->Siguiente(); + } + return($tabla_parametros); + } + //___________________________________________________________________________________ + // + // Crea una tabla en memoria con los valores reales de los parámetros enviados + // + // Parámetros: + // $cmd: Objeto comando (Operativo) + // $parámetros: El formato de parámetros que viaje en las trama y que es el mismo + // que se almacenan en las tablas de procedimientos_acciones o acciones + //___________________________________________________________________________________ + + function ParametrosValor($cmd,$parametros,$tbParametrosValor,$ch="\r") + { + global $tbParametros; + $html=""; + $auxprm=split($ch,$parametros); + for($i=0;$i<sizeof($auxprm);$i++){ + list($nemonico,$valor)=split("=",$auxprm[$i]); + if(isset($tbParametros[$nemonico])){ + if($tbParametros[$nemonico]["visual"]==1){ + $tbParametrosValor[$nemonico]["descripcion"]=$tbParametros[$nemonico]["descripcion"]; + switch($tbParametros[$nemonico]["tipopa"]){ + case 0: // El valor lo toma directamente + $tbParametrosValor[$nemonico]["valor"]=$valor; + break; + case 1: // El valor lo toma de una tabla */ + $tbParametrosValor[$nemonico]["valor"]=TomaDato($cmd,0,$tbParametros[$nemonico]["nomtabla"],$valor,$tbParametros[$nemonico]["nomidentificador"],$tbParametros[$nemonico]["nomliteral"]); + break; + case 2: // El parámetro es compuesto de otros parametros + $blkprm=split(chr(10),substr($auxprm[$i],4)); + for($j=0;$j<sizeof($blkprm);$j++){ + $tbSubParametrosValor=array(); + ParametrosValor($cmd,$blkprm[$j],&$tbSubParametrosValor,chr(9)); + for($k=0;$k<sizeof($tbSubParametrosValor);$k++){ + $elem=current($tbSubParametrosValor); + $tbParametrosValor[$nemonico][$j]["valor"].=$elem["descripcion"]; + $tbParametrosValor[$nemonico][$j]["valor"].=": ".$elem["valor"]; + $tbParametrosValor[$nemonico][$j]["valor"].=", "; + next($tbSubParametrosValor); + } + } + break; + case 3: // El valor lo toma de una array + $tbcte=split($tbParametros[$nemonico]["nomidentificador"],$tbParametros[$nemonico]["nomliteral"]); + $tbParametrosValor[$nemonico]["valor"]=$tbcte[$valor]; + break; + case 4: // El valor lo toma directamente pero está codificado con urlencode + $tbParametrosValor[$nemonico]["valor"]='<PRE>'.urldecode($valor).'</PRE>'; + + } + } + } + } + } + /*______________________________________________________________________ + Redirecciona a la página de error + Parametros: + - Literal del error + _______________________________________________________________________*/ + function RedireccionaError($herror){ + + $urlerror=urldecode($herror); + $wurl="../seguridad/logerror.php?herror=".$urlerror; + Header('Location: '.$wurl); + } + + /*______________________________________________________________________ + Elimina de la cadena de parametros, el parametro iph ( que debe ser el ultimo) + Parametros: + - cadena de parametros de un comando + Devuelve: + - la cadena sin el parametro iph y su valor + _______________________________________________________________________*/ + function Sin_iph($cadena){ + + $pos=EnCadena($cadena,"iph=") ; + if($pos==-1) return($cadena); + return(substr($cadena,0,$pos)); + } + /*______________________________________________________________________ + Elimina de la cadena de parametros, el parametro mac ( que debe ser el ultimo) + Parametros: + - cadena de parametros de un comando + Devuelve: + - la cadena sin el parametro iph y su valor + _______________________________________________________________________*/ + function Sin_mac($cadena){ + + $pos=EnCadena($cadena,"mac=") ; + if($pos==-1) return($cadena); + return(substr($cadena,0,$pos)); + } + /*______________________________________________________________________ + Formatea un campo númerico con los puntos de las unidades de millar + Parametros: + - cadena con el valor del campo + Devuelve: + - la cadena con los puntos de los miles + ________________________________________________________________________*/ + function formatomiles($cadena){ + $len=strlen($cadena); + $cadenafinal=""; + $m=1; + for($i=$len-1;$i>=0;$i--){ + $cadenafinal=substr($cadena,$i,1).$cadenafinal; + if($m%3==0 && $i>0){ + $cadenafinal=".".$cadenafinal; + $m=0; + } + $m++; + } + return($cadenafinal); + } + /*______________________________________________________________________ + Devuelve la url de la imagen y la descripción de un ámbito + Parametros: + - ambito: Identificador del ambito + - urlimg: Por referencia. Es donde se devuelve la url de la imagen + - textambito: Por referencia. Es donde se devuelve la descripción + + Devuelve: + - Los dos parámetros pasados por referencia + ________________________________________________________________________*/ + function tomaAmbito($ambito,$urlimg,$textambito) + { + global $AMBITO_CENTROS; + global $AMBITO_GRUPOSAULAS; + global $AMBITO_AULAS; + global $AMBITO_GRUPOSORDENADORES; + global $AMBITO_ORDENADORES; + + switch($ambito){ + case $AMBITO_CENTROS : + $urlimg='../images/iconos/centros.gif'; + $textambito="Centros"; + break; + case $AMBITO_GRUPOSAULAS : + $urlimg='../images/iconos/carpeta.gif'; + $textambito="Grupos de aulas"; + break; + case $AMBITO_AULAS : + $urlimg='../images/iconos/aula.gif'; + $textambito="Aulas"; + break; + case $AMBITO_GRUPOSORDENADORES : + $urlimg='../images/iconos/carpeta.gif'; + $textambito="Grupos de ordenadores"; + break; + case $AMBITO_ORDENADORES : + $urlimg='../images/iconos/ordenador.gif'; + $textambito="Ordenadores"; + break; + default: + $urlimg='../images/iconos/ordenador.gif'; + $textambito="Ordenadores"; + break; + } + } + /*______________________________________________________________________ + + Devuelve la descripción de un ambito + Parametros: + - cmd: Objeto comando (Operativo) + - ambito: tipo de ambito + - idambito: Identificador del ambito + - textambito: Por referencia. Es donde se devuelve la descripción + + Devuelve: + - Los dos parámetros pasados por referencia + ________________________________________________________________________*/ + + function tomaDescriAmbito($cmd,$ambito,$idambito,$textambito) + { + global $AMBITO_CENTROS; + global $AMBITO_GRUPOSAULAS; + global $AMBITO_AULAS; + global $AMBITO_GRUPOSORDENADORES; + global $AMBITO_ORDENADORES; + + switch($ambito){ + case $AMBITO_CENTROS : + $textambito=TomaDato($cmd,0,'centros',$idambito,'idcentro','nombrecentro'); + break; + case $AMBITO_GRUPOSAULAS : + $textambito=TomaDato($cmd,0,'grupos',$idambito,'idgrupo','nombregrupo'); + break; + case $AMBITO_AULAS : + $textambito=TomaDato($cmd,0,'aulas',$idambito,'idaula','nombreaula'); + break; + case $AMBITO_GRUPOSORDENADORES : + $textambito=TomaDato($cmd,0,'gruposordenadores',$idambito,'idgrupo','nombregrupoordenador'); + break; + case $AMBITO_ORDENADORES : + $textambito=TomaDato($cmd,0,'ordenadores',$idambito,'idordenador','nombreordenador'); + break; + default: + $textambito; + } + } + /*______________________________________________________________________ + + Devuelve el código html de una etiqueta SELECT para un ámbito concreto + Parametros: + - cmd: Objeto comando (Operativo) + - ambito: tipo de ambito + - idambito: Identificador del ambito + - $idcentro: Centro donde pertenecen o 0 para todos + - $wdth: Ancho del desplegable + Devuelve: + - Los dos parámetros pasados por referencia + ________________________________________________________________________*/ + + function tomaSelectAmbito($cmd,$ambito,$idambito,$idcentro,$wdth) + { + global $AMBITO_CENTROS; + global $AMBITO_GRUPOSAULAS; + global $AMBITO_AULAS; + global $AMBITO_GRUPOSORDENADORES; + global $AMBITO_ORDENADORES; + + switch($ambito){ + case $AMBITO_CENTROS : + $selecHtml=HTMLSELECT($cmd,1,'centros',$idcentro,'idcentro','nombrecentro',$wdth); + break; + case $AMBITO_GRUPOSAULAS : + $selecHtml=HTMLSELECT($cmd,$idcentro,'grupos',$idambito,'idgrupo','nombregrupo',$wdth,"","","tipo=".$AMBITO_GRUPOSAULAS); + break; + case $AMBITO_AULAS : + $selecHtml=HTMLSELECT($cmd,$idcentro,'aulas',$idambito,'idaula','nombreaula',$wdth); + break; + case $AMBITO_GRUPOSORDENADORES : + $selecHtml=HTMLSELECT($cmd,0,'gruposordenadores',$idambito,'idgrupo ','nombregrupoordenador',$wdth); + break; + case $AMBITO_ORDENADORES : + $clsWhere=" idaula IN (SELECT idaula FROM aulas WHERE idcentro=".$idcentro.")"; + $selecHtml=HTMLSELECT($cmd,0,'ordenadores',$idambito,'idordenador','nombreordenador',$wdth,"","",$clsWhere); + break; + default: + $selecHtml=""; + } + return($selecHtml); + }
\ No newline at end of file diff --git a/admin/WebConsole/includes/constantes.php b/admin/WebConsole/includes/constantes.php new file mode 100644 index 00000000..b069cd1b --- /dev/null +++ b/admin/WebConsole/includes/constantes.php @@ -0,0 +1,172 @@ +<?php + +// Código de los ambitos para comandos +$AMBITO_CENTROS=0x01; +$AMBITO_GRUPOSAULAS=0x02; +$AMBITO_AULAS=0x04; +$AMBITO_GRUPOSORDENADORES=0x08; +$AMBITO_ORDENADORES=0x10; + + +// Código del resto de �bitos +$AMBITO_IMAGENES=0x20; +$AMBITO_PROCEDIMIENTOS=0x21; +$AMBITO_TAREAS=0x22; +$AMBITO_COMANDOS=0x23; + +$AMBITO_COMPONENTESHARD=0x24; +$AMBITO_COMPONENTESSOFT=0x25; +$AMBITO_PERFILESHARD=0x26; +$AMBITO_PERFILESSOFT=0x27; +$AMBITO_MENUS=0x28; +$AMBITO_REPOSITORIOS=0x29; +$AMBITO_RESERVAS=0x32; + +// Código del resto de ambitos( grupos ) +$AMBITO_GRUPOSIMAGENES=0x32; +$AMBITO_GRUPOSPROCEDIMIENTOS=0x33; +$AMBITO_GRUPOSTAREAS=0x34; + +$AMBITO_GRUPOSCOMPONENTESHARD=0x36; +$AMBITO_GRUPOSCOMPONENTESSOFT=0x37; +$AMBITO_GRUPOSPERFILESHARD=0x38; +$AMBITO_GRUPOSPERFILESSOFT=0x39; +$AMBITO_GRUPOSMENUS=0x40; +$AMBITO_GRUPOSREPOSITORIOS=0x41; +$AMBITO_GRUPOSRESERVAS=0x44; +$AMBITO_GRUPOSENTIDADES=0x45; + +// Literales de los ambitos +$LITAMBITO_CENTROS="centros"; +$LITAMBITO_AULAS="aulas"; +$LITAMBITO_ORDENADORES="ordenadores"; +$LITAMBITO_IMAGENES="imagenes"; +$LITAMBITO_PROCEDIMIENTOS="procedimientos"; +$LITAMBITO_TAREAS="tareas"; + +$LITAMBITO_TIPOHARDWARES="tipohardwares"; +$LITAMBITO_COMPONENTESHARD="componeneteshard"; +$LITAMBITO_COMPONENTESSOFT="componenetessoft"; +$LITAMBITO_PERFILESHARD="perfileshard"; +$LITAMBITO_PERFILESSOFT="perfilessoft"; +$LITAMBITO_MENUS="menus"; +$LITAMBITO_REPOSITORIOS="repositorios"; + + +$LITAMBITO_RESERVAS="reservas"; +$LITAMBITO_ADMINISTRACION="administracion"; +$LITAMBITO_UNIVERSIDADES="universidades"; +$LITAMBITO_ENTIDADES="entidades"; +$LITAMBITO_USUARIOS="usuarios"; +// Literales de los ambitos ( Grupos ) +$LITAMBITO_GRUPOSAULAS="gruposaulas"; +$LITAMBITO_GRUPOSORDENADORES="gruposordenadores"; +$LITAMBITO_GRUPOSIMAGENES="gruposimagenes"; +$LITAMBITO_GRUPOSPROCEDIMIENTOS="gruposprocedimientos"; +$LITAMBITO_GRUPOSTAREAS="grupostareas"; + +$LITAMBITO_GRUPOSCOMPONENTESHARD="gruposcomponenteshard"; +$LITAMBITO_GRUPOSCOMPONENTESSOFT="gruposcomponentessoft"; +$LITAMBITO_GRUPOSPERFILESHARD="gruposperfileshard"; +$LITAMBITO_GRUPOSPERFILESSOFT="gruposperfilessoft"; +$LITAMBITO_GRUPOSMENUS="gruposmenus"; +$LITAMBITO_GRUPOSREPOSITORIOS="gruporepositorio"; +$LITAMBITO_GRUPOSRESERVAS="gruposreservas"; +$LITAMBITO_GRUPOSENTIDADES="gruposentidades"; + +// Código de los tipo de acciones + +$EJECUCION_COMANDO=0x0001; +$EJECUCION_PROCEDIMIENTO=0x0002; +$EJECUCION_TAREA=0x0003; +$EJECUCION_RESERVA=0x0004; +$EJECUCION_AUTOEXEC=0x0005; + +// Código de los tipo de notificadores +$NOTIFICADOR_ORDENADOR=0x0001; +$NOTIFICADOR_COMANDO=0x0002; +$NOTIFICADOR_TAREA=0x0003; + +// Categorias de sucesos +$PROCESOS=0x01; +$INFORMACIONES=0x02; +$NOTIFICACIONES=0x03; + +// Código de los tipos de mensajes +$MSG_COMANDO=0x01; // Mensaje del tipo comando +$MSG_NOTIFICACION=0x02; // Respuesta a la ejecución un comando +$MSG_PETICION=0x03; // Petición de cualquier actuación +$MSG_RESPUESTA=0x04; // Respuesta a una petición +$MSG_INFORMACION=0x05; // Envío de cualquier información sin espera de confirmación o respuesta + + +$RESPUESTA_EJECUCION_COMANDO=0x0001; +$RESPUESTA_EJECUCION_TAREA=0x0002; +$RESPUESTA_EJECUCION_TRABAJO=0x0003; +$RESPUESTA_EJECUCION_PETICION=0x0004; + +// Código de los tipos de items de los mens de clientes +$ITEM_PUBLICO=0x0001; +$ITEM_PRIVADO=0x0002; + +//Codificaci� de los resultados de las acciones + +$ACCION_SINRESULTADO=0; // Sin resultado +$ACCION_EXITOSA=1; // Finalizada con éxito +$ACCION_FALLIDA=2; // Finalizada con errores +$LITACCION_FALLIDA="Acción CANCELADA manualmente"; +$LITACCION_EXITOSA="Acción TERMINADA manualmente"; + +//Codificaci� de los estados de las acciones + +$ACCION_INICIADA=1; // Acci� activa +$ACCION_DETENIDA=2; // Acci� momentanemente parada +$ACCION_FINALIZADA=3; // Acci� finalizada +$ACCION_PROGRAMADA=4; // Acción programada + +// Nombrey path del fichero de intercambio de parametros entre páginas +// Ha sido necesario porque cuando los parametros enviados execed�n de cierta longitud +// ocurria una excepci� al llamar a la p�ina por GET. + +$fileparam="../includes/PRM_".$usuario; +$pathfileco="/opt/opengnsys/log/clients"; // Path del fichero de eco de consola + +// M�ima longitud de los parametros enviados entre páginas +$MAXLONPRM=16000; +$MAXLONVISUSCRIPT =1024; // longitud Maxima de visualizaci� del script en las colas de acciones +$MAXSIZEFILERBC=100000; // longitud Maxima de los fichero de script enviados como comandos ejecuci� de script + +$LONHEXPRM=5; // Longitud de la cadena hexdecimal que contiene la longitud total de la trama +$LONCABECERA=16; // Longitud de la cabecera de las tramas +$LONBLK=512; // Longitud de los paquetes de tramas leidos cada vez + +$tbTiposParticiones=""; +$tbTiposParticiones[0]="EMPTY"; +$tbTiposParticiones[1]="BIGDOS"; +$tbTiposParticiones[2]="FAT32"; +$tbTiposParticiones[3]="NTFS"; +$tbTiposParticiones[4]="EXT2"; +$tbTiposParticiones[5]="EXT3"; +$tbTiposParticiones[6]="EXT4"; +$tbTiposParticiones[7]="LINUX-SWAP"; +$tbTiposParticiones[8]="CACHE"; +$tbTiposParticiones[9]="VFAT"; +$tbTiposParticiones[10]="UNKNOW"; + + +//Codificaci� de los estados de las reservas +$RESERVA_CONFIRMADA=1; // Reserva confirmada +$RESERVA_PENDIENTE=2; // Reserva pendiente +$RESERVA_DENEGADA=3; // Reserva denegada + +$SUPERADMINISTRADOR=1; // administrador de la Aplicación +$ADMINISTRADOR=2; // administrador de Centro +$OPERADOR=3; // operador de aula + +$msk_sysFi=0x01; +$msk_nombreSO=0x02; +$msk_tamano=0x04; +$msk_imagen=0x08; +$msk_perfil=0x10; + +?> diff --git a/admin/WebConsole/includes/ctrlacc.php b/admin/WebConsole/includes/ctrlacc.php new file mode 100644 index 00000000..cf3c830c --- /dev/null +++ b/admin/WebConsole/includes/ctrlacc.php @@ -0,0 +1,48 @@ +<? +// ************************************************************************************************************************************************* +// Aplicación WEB: ogAdmWebCon +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación: Agosto-2010 +// Fecha Última modificación: Agosto-2010 +// Nombre del fichero: controlacceso.php +// Descripción :Este fichero implementa el control de acceso a la Aplicación en todas las páginas +// ************************************************************************************************************************************************* +session_start(); // Activa variables de sesi� +$idcentro=""; +$nombrecentro=""; +$usuario=""; +$idtipousuario=0; +$idioma=""; +$cadenaconexion=""; +$servidorhidra=""; +$hidraport=""; +$pagerror=""; +$urlacceso=""; + +if (isset($_SESSION["widcentro"])) $idcentro = $_SESSION["widcentro"]; +if (isset($_SESSION["wnombrecentro"])) $nombrecentro = $_SESSION["wnombrecentro"]; +if (isset($_SESSION["wusuario"])) $usuario = $_SESSION["wusuario"]; +if (isset($_SESSION["widtipousuario"])) $idtipousuario = $_SESSION["widtipousuario"]; +if (isset($_SESSION["widioma"])) $idioma = $_SESSION["widioma"]; +if (isset($_SESSION["wcadenaconexion"])) $cadenaconexion = $_SESSION["wcadenaconexion"]; +if (isset($_SESSION["wservidorhidra"])) $servidorhidra = $_SESSION["wservidorhidra"]; +if (isset($_SESSION["whidraport"])) $hidraport = $_SESSION["whidraport"]; +if (isset($_SESSION["wpagerror"])) $pagerror = $_SESSION["wpagerror"]; +if (isset($_SESSION["wurlacceso"])) $urlacceso = $_SESSION["wurlacceso"]; +/* +echo "<BR>Cadena=".$_SESSION["wcadenaconexion"]; +echo "<BR>servidorhidra=".$_SESSION["wservidorhidra"]; +echo "<BR>hidraport=".$_SESSION["whidraport"]; +echo "<BR>usuario=".$_SESSION["wusuario"]; +echo "<BR>idtipousuario=".$_SESSION["widtipousuario"]; +echo "<BR>urlacceso=".$_SESSION["wurlacceso"]; +*/ +// Comprueba el valor de las variables de sesión +$swacc=empty($cadenaconexion) || empty($servidorhidra) || empty($hidraport) || empty($usuario) || empty($idtipousuario); + +//=============================================================================================== +if ($swacc){ // Error en alguna variable de sesión + die("***Error de acceso"); +} +//=============================================================================================== +?> diff --git a/admin/WebConsole/includes/cuestionacciones.php b/admin/WebConsole/includes/cuestionacciones.php new file mode 100644 index 00000000..5cb87b8c --- /dev/null +++ b/admin/WebConsole/includes/cuestionacciones.php @@ -0,0 +1,79 @@ +<? +/* ------------------------------------------------------------------------------------------- + Inserta, modifica o elimina un grupo de servidores dhcp de la base de datos +---------------------------------------------------------------------------------------------*/ +function CuestionAcciones($cmd,$shidra,$parametros){ + + global $sw_ejya; + global $sw_seguimiento; + + global $sw_mktarea; + global $nwidtarea; + global $nwdescritarea; + + global $sw_mkprocedimiento; + global $nwidprocedimiento; + global $nwdescriprocedimiento; + + global $identificador; + + if($sw_ejya=='true' ){ // switch de ejecución inmediata ---------------------------------------------------------------------- + if($sw_seguimiento=='true' ){ // switch de ejecución con seguimiento + $cmd->texto="INSERT INTO acciones (tipoaccion,idtipoaccion,cateaccion,ambito,idambito,fechahorareg,estado,resultado,idcentro,parametros,accionid,idnotificador) VALUES (@tipoaccion,@idtipoaccion,@cateaccion,@ambito,@idambito,@fechahorareg,@estado,@resultado,@idcentro,@parametros,0,0)"; + $resul=$cmd->Ejecutar(); + if($resul){ + $parametros.="ids=".$cmd->Autonumerico().chr(13); + } + } + // Envio al servidor hidra + if ($shidra->conectar()){ // Se ha establecido la conexión con el servidor hidra + $shidra->envia_comando($parametros); + $shidra->desconectar(); + } + else + return(false); + } + // Fin ejecución inmediata ------------------------------------------------------------------------------------------------------------- + + if($sw_mkprocedimiento=='true'){ // switch de creación o inclusión en procedimiento --------------------------------------------------------- + if($nwidprocedimiento==0){ + $cmd->ParamSetValor("@descripcion",$nwdescriprocedimiento,0); + $cmd->texto="INSERT INTO procedimientos(descripcion,idcentro) VALUES (@descripcion,@idcentro)"; + $resul=$cmd->Ejecutar(); + if($resul) + $nwidprocedimiento=$cmd->Autonumerico(); + else + return(false); + } + if($nwidprocedimiento>0){ // inclusión en procedimiento existente + $cmd->ParamSetValor("@idprocedimiento",$nwidprocedimiento,1); + $cmd->ParamSetValor("@idcomando",$identificador,1); + $cmd->ParamSetValor("@parametros",Sin_iph($parametros),0); + $cmd->texto="INSERT INTO procedimientos_comandos(idprocedimiento,orden,idcomando,parametros) VALUES (@idprocedimiento,0,@idcomando,@parametros)"; + $resul=$cmd->Ejecutar(); + $cmd->ParamSetValor("@parametros",$parametros); + if(!$resul) return(false); + } + } + + if($sw_mktarea=='true'){ // switch de creación o inclusión en tarea ----------------------------------------------------------- + if($nwidtarea==0){ // Nueva tarea + $cmd->ParamSetValor("@descripcion",$nwdescritarea); + $cmd->texto="INSERT INTO tareas(descripcion,idcentro) VALUES (@descripcion,@idcentro)"; + $resul=$cmd->Ejecutar(); + if($resul) + $nwidtarea=$cmd->Autonumerico(); + else + return(false); + } + if($nwidtarea>0){ // inclusión en tarea existente + $cmd->ParamSetValor("@idtarea",$nwidtarea); + $cmd->ParamSetValor("@idcomando",$identificador); + $cmd->texto="INSERT INTO tareas_comandos(idtarea,orden,idcomando,ambito,idambito,parametros) VALUES (@idtarea,0,@idcomando,@ambito,@idambito,@parametros)"; + $resul=$cmd->Ejecutar(); + if(!$resul) return(false); + } + } + return(true); +} + ?> diff --git a/admin/WebConsole/includes/cuestionaccionescab.php b/admin/WebConsole/includes/cuestionaccionescab.php new file mode 100644 index 00000000..e9523eba --- /dev/null +++ b/admin/WebConsole/includes/cuestionaccionescab.php @@ -0,0 +1,23 @@ +<? +$sw_ejya=""; +$sw_seguimiento=""; + +$sw_mktarea=""; +$nwidtarea=""; +$nwdescritarea=""; + +$sw_mkprocedimiento=""; +$nwidprocedimiento=""; +$nwdescriprocedimiento=""; + +if (isset($_POST["sw_ejya"])) $sw_ejya=$_POST["sw_ejya"]; +if (isset($_POST["sw_seguimiento"])) $sw_seguimiento=$_POST["sw_seguimiento"]; + +if (isset($_POST["sw_mktarea"])) $sw_mktarea=$_POST["sw_mktarea"]; +if (isset($_POST["nwidtarea"])) $nwidtarea=$_POST["nwidtarea"]; +if (isset($_POST["nwdescritarea"])) $nwdescritarea=$_POST["nwdescritarea"]; + +if (isset($_POST["sw_mkprocedimiento"])) $sw_mkprocedimiento=$_POST["sw_mkprocedimiento"]; +if (isset($_POST["nwidprocedimiento"])) $nwidprocedimiento=$_POST["nwidprocedimiento"]; +if (isset($_POST["nwdescriprocedimiento"])) $nwdescriprocedimiento=$_POST["nwdescriprocedimiento"]; +?> diff --git a/admin/WebConsole/includes/opciones.php b/admin/WebConsole/includes/opciones.php new file mode 100644 index 00000000..fe1740f3 --- /dev/null +++ b/admin/WebConsole/includes/opciones.php @@ -0,0 +1,16 @@ +<? +// ************************************************************************************************************************************************* +// Aplicación WEB: ogAdmWebCon. +// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla +// Fecha Creación:Agosto-2010 +// Fecha Última modificación: Agosto-2010 +// Nombre del fichero: opciones.php +// Descripción : +// Variables de ámbito común +// ************************************************************************************************************************************************* +$op_alta=1; +$op_modificacion=2; +$op_eliminacion=3; +$op_movida=4; +$op_ejecucion=5; +?>
\ No newline at end of file diff --git a/admin/WebConsole/includes/opcionesbotones.php b/admin/WebConsole/includes/opcionesbotones.php new file mode 100644 index 00000000..0fabefa4 --- /dev/null +++ b/admin/WebConsole/includes/opcionesbotones.php @@ -0,0 +1,7 @@ +<TABLE align=center> + <TR> + <TD><A href=#><IMG border=0 src="../images/boton_cancelar.gif" onclick="javascript:cancelar()"></A></TD> + <TD width=20></TD> + <TD><A href=#><IMG border=0 src="../images/boton_confirmar.gif" onclick="javascript:confirmar()" ></A></TD> + </TR> +</TABLE> diff --git a/admin/WebConsole/includes/opcionesbotonesop.php b/admin/WebConsole/includes/opcionesbotonesop.php new file mode 100644 index 00000000..d86755d7 --- /dev/null +++ b/admin/WebConsole/includes/opcionesbotonesop.php @@ -0,0 +1,9 @@ +<? +echo '<TABLE align=center>'; +echo '<TR>'; +echo '<TD><A href=#><IMG border=0 src="../images/boton_cancelar.gif" onclick="cancelar()"></A></TD>'; +echo '<TD width=20></TD>'; +echo '<TD><A href=#><IMG border=0 src="../images/boton_confirmar.gif" onclick="confirmar('.$opcion.')" ></A></TD>'; +echo '</TR>'; +echo '</TABLE>'; +?> |