='".InvFecha($fechainicio).' ' .$horainicio."'";
if($fechafin!="")
$WhereFechaFin.=" acciones.fechahorareg<='".InvFecha($fechafin).' ' .$horafin."'";
if($WhereFechaInicio!=""){
if($WhereFechaFin!="")
$WhereFechaReg=" (".$WhereFechaInicio." AND ".$WhereFechaFin.") ";
else
$WhereFechaReg=" (".$WhereFechaInicio.") ";
}
else{
if($WhereFechaFin!="")
$WhereFechaReg=" (".$WhereFechaFin.") ";
}
$ClausulaWhere.=$WhereFechaReg;
// Cuestion tipos de acciones
if(!empty($tipoaccion)) $ClausulaWhere.=" AND acciones.tipoaccion=".$tipoaccion;
// Cuestion identificador del Centro que ha ejecutado la acción
$WhereCentroAccion="";
$WhereCentroAccion='acciones.idcentro='.$idcentro;
$ClausulaWhere.=" AND (".$WhereCentroAccion.")";
//________________________________________________________________________________________________________
?>
Administración web de aulas
'?>
'.$TbMsg[0].' ';
echo ''; // Fin formulario de criterios de busquedas
/* Cabeceras */
tomaAmbito($ambito,$urlimg,$textambito);
echo '
CreaMenuContextual($XMLcontextual);
$XMLcontextual=ContextualXMLNotificaciones(); // Crea contextual de las acciones
echo $flotante->CreaMenuContextual($XMLcontextual);
?>
';
$html.='
';
$html.='
R
';
$html.='
'.$TbMsg[19].'
';
$html.='
'.$TbMsg[20].'
';
$html.='
'.$TbMsg[21].'
';
$html.='
'.$TbMsg[22].'
';
$html.='
';
$html.='
'.$TbMsg[23].'
';
$html.='
'.$TbMsg[57].'
';
$html.='
S
';
$html.='
%
';
$html.='';
echo $html;
}
// _________________________________________________________________________
function listaAcciones($ambito,$idambito)
{
global $cmd;
global $ClausulaWhere;
global $cadenaid;
global $cadenaip;
global $cadenamac;
global $EJECUCION_COMANDO;
global $EJECUCION_PROCEDIMIENTO;
global $EJECUCION_TAREA;
global $ACCION_PROGRAMADA;
global $acciones;
global $sesion;
global $estado;
$cadenaid="";
$cadenaip="";
$cadenamac="";
RecopilaIpesMacs($cmd,$ambito,$idambito); // Recopila Ipes del ámbito
$cadenasesion="(SELECT DISTINCT sesion FROM acciones WHERE idordenador NOT IN (".$cadenaid."))";
$cmd->texto="SELECT acciones.*, comandos.descripcion AS comando, acciones.parametros,
comandos.visuparametros, ordenadores.nombreordenador,
procedimientos.descripcion AS procedimiento,
tareas.descripcion AS tarea, programaciones.sesion AS sesionprog
FROM acciones
INNER JOIN comandos ON comandos.idcomando=acciones.idcomando
INNER JOIN ordenadores ON ordenadores.idordenador=acciones.idordenador
LEFT OUTER JOIN procedimientos ON procedimientos.idprocedimiento=acciones.idprocedimiento
LEFT OUTER JOIN tareas ON tareas.idtarea=acciones.idtarea
LEFT OUTER JOIN programaciones ON programaciones.sesion=acciones.sesion";
if(!empty($sesion)) // Filtro por acción
$cmd->texto.=" WHERE acciones.sesion =".$sesion;
else
$cmd->texto.=" WHERE acciones.sesion NOT IN (".$cadenasesion.")";
if($estado==$ACCION_PROGRAMADA)
$cmd->texto.=" AND (acciones.idprogramacion=0 AND programaciones.sesion>0)"; // Comando programado
else{
if(!empty($ClausulaWhere))
$cmd->texto.=" AND (".$ClausulaWhere.")";
}
$cmd->texto.=" ORDER BY acciones.idaccion DESC, acciones.sesion DESC";
$rs=new Recordset;
$rs->Comando=&$cmd;
if (!$rs->Abrir()) return; // Error al abrir recordset
$acciones=""; // Variable que recogerá las acciones que cumplan los criterios
// con formato "ambito,idambito" concadenando con ";" a otro identificador
// Esta variable se usara para las operaciones globales de Eliminar, etc...
// Recorre acciones
$html="";
while (!$rs->EOF){
switch($rs->campos["tipoaccion"]){
case $EJECUCION_COMANDO:
$html.=listaComado($rs,$rs->campos["sesion"]);
break;
case $EJECUCION_PROCEDIMIENTO:
$html.=listaProcedimiento($rs,$rs->campos["sesion"]);
break;
case $EJECUCION_TAREA:
$html.=listaTarea($rs,$rs->campos["sesion"]);
break;
}
}
echo $html;
}
// _________________________________________________________________________
function listaTarea($rs,$sesion)
{
global $acciones;
$oA=new clsAccion; // Crea objeto acción para procesar comandos
iniAccion($rs,$oA);
$html=recorreTarea($rs,$sesion,$oA);
if(cumpleCriterios($oA)){
$acciones.=$oA->tipoaccion.",".$oA->idtipoaccion.",".$oA->sesion.",0;"; // Concadena identificador
$html=cabeceraSesion($oA).$html; // Escribe la cabecera del comando
}
else
$html=""; // No cumple con los criterios
return($html);
}
// _________________________________________________________________________
function recorreTarea($rs,$sesion,$oA)
{
$html="";
do{
$html.=listaProcedimiento($rs,$sesion,$rs->campos["idtarea"],$oA);
}while(!$rs->EOF
&& $rs->campos["sesion"]==$sesion);
return($html);
}
// _________________________________________________________________________
function listaProcedimiento($rs,$sesion,$idtarea=0,$oA=null)
{
global $acciones;
if($oA!=null){ // Si la función es invocada por una tarea ...
$html=recorreProcedimiento($rs,$sesion,$idtarea,$oA);
}
else{
$oA=new clsAccion; // Crea objeto acción para procesar comandos
iniAccion($rs,$oA);
$html=recorreProcedimiento($rs,$sesion,$idtarea,$oA);
if(cumpleCriterios($oA)){
$acciones.=$oA->tipoaccion.",".$oA->idtipoaccion.",".$oA->sesion.",0;"; // Concadena identificador
if($rs->campos["sesion"]!=$sesion
|| $rs->campos["idtarea"]!=$idtarea
|| $rs->EOF)
$html=cabeceraSesion($oA).$html; // Escribe la cabecera del procedimiento
}
else
$html=""; // No cumple con los criterios
}
return($html);
}
// _________________________________________________________________________
function recorreProcedimiento($rs,$sesion,$idtarea,$oA)
{
$html="";
do{
$html.=listaComado($rs,$sesion,$idtarea,$rs->campos["idprocedimiento"],$oA);
}while(!$rs->EOF
&& $rs->campos["sesion"]==$sesion
&& $rs->campos["idtarea"]==$idtarea);
return($html);
}
// _________________________________________________________________________
function listaComado($rs,$sesion,$idtarea=0,$idprocedimiento=0,$oA=null)
{
global $acciones;
global $visupro;
if($oA!=null){ // Si la función es invocada por un procedimiento...
$html=recorreComando($rs,$sesion,$idtarea,$idprocedimiento,$oA);
}
else{
$oA=new clsAccion; // Crea objeto acción para procesar comandos
iniAccion($rs,$oA);
$html=recorreComando($rs,$sesion,$idtarea,$idprocedimiento,$oA);
$acciones.=$oA->tipoaccion.",".$oA->idtipoaccion.",".$oA->sesion.",0;"; // Concadena identificador
if($rs->campos["sesion"]!=$sesion
|| $rs->campos["idtarea"]!=$idtarea
|| $rs->campos["idprocedimiento"]!=$idprocedimiento
|| $rs->EOF)
if($oA->linot>0)
$html=cabeceraSesion($oA).$html; // Escribe la cabecera del comando
}
return($html);
}
// _________________________________________________________________________
function recorreComando($rs,$sesion,$idtarea,$idprocedimiento,$oA)
{
$html="";
do{
$html.=listaNotificacion($rs,$sesion,$idtarea,$idprocedimiento,$rs->campos["idcomando"],$oA);
}while(!$rs->EOF
&& $rs->campos["sesion"]==$sesion
&& $rs->campos["idtarea"]==$idtarea
&& $rs->campos["idprocedimiento"]==$idprocedimiento);
return($html);
}
// _________________________________________________________________________
//
// Recorre todas las notificaciones de un mismo comando registrando
// los datos que servirán para resumen de la Acción
// _________________________________________________________________________
function listaNotificacion($rs,$sesion,$idtarea,$idprocedimiento,$idcomando,$oA)
{
global $ACCION_EXITOSA;
global $ACCION_FALLIDA;
global $ACCION_SINRESULTADO;
global $ACCION_DETENIDA;
global $ACCION_INICIADA;
global $ACCION_FINALIZADA;
global $EJECUCION_TAREA;
global $visuprm;
global $visucmd;
global $visupro;
$html="";
if($visupro==1)
$html.=cambiaAmbito($rs,$oA); // Escribe cambio de ámbito
if($visuprm==1)
$html.=escribeParametros($rs->campos["comando"],$rs->campos["parametros"],$rs->campos["visuparametros"],$oA);
do{
if(cumpleCriteriosNot($rs,$oA)){
if($visucmd==1){
$html.=escribeNotificacion($rs,$oA);
$oA->linot++; // Contador de lineas de notificaciones escritas cumpliendo criterios
}
}
/* Fechas y horas */
$fechahorareg=strtotime($rs->campos["fechahorareg"]);
if($fechahorareg>0)
if($oA->fechahorareg>$fechahorareg) $oA->fechahorareg=$fechahorareg;
$fechahorafin=strtotime($rs->campos["fechahorafin"]);
if($fechahorafin>0)
if($oA->fechahorafin<$fechahorafin) $oA->fechahorafin=$fechahorafin;
$oA->notif++; // Contador de notificaciones en el comando
switch($rs->campos["estado"]){
case $ACCION_INICIADA:
$oA->notini++; // Incrementa contador de comandos con estado de finalizado
break;
case $ACCION_DETENIDA:
$oA->notdet++; // Incrementa contador de comandos con estado de finalizado
break;
case $ACCION_FINALIZADA:
$oA->noter++; // Incrementa contador de comandos con estado de finalizado
break;
}
/* Cuestión resultados */
/* Si existe al menos una notificación de error, la acción tiene ya resultado de error */
if($rs->campos["resultado"]==$ACCION_FALLIDA){
$oA->resultado=$ACCION_FALLIDA;
}
/* Si existe aún alguna notificación pendiente, la acción no tiene resultado global */
if($rs->campos["resultado"]==$ACCION_SINRESULTADO){
if($oA->resultado==$ACCION_EXITOSA)
$oA->resultado=$ACCION_SINRESULTADO;
}
$rs->Siguiente();
}while(!$rs->EOF
&& $rs->campos["sesion"]==$sesion
&& $rs->campos["idtarea"]==$idtarea
&& $rs->campos["idprocedimiento"]==$idprocedimiento
&& $rs->campos["idcomando"]==$idcomando);
if($oA->notif>0)
$oA->porcen=floor($oA->noter*100/$oA->notif); // Calcula porcentaje de finalización
if($oA->notif==$oA->noter)
$oA->estado=$ACCION_FINALIZADA; // Todas las acciones finalizadas
else{
if($oA->notif==$oA->notdet)
$oA->estado=$ACCION_DETENIDA; // Todas las acciones detenidas
else
$oA->estado=$ACCION_INICIADA;
}
if(cumpleCriterios($oA)){
if($rs->campos["sesion"]!=$sesion && !$rs->EOF ) // Separación entre sesiones distintas
$html.='
';
}
return($html);
}
// _________________________________________________________________________
function escribeNotificacion($rs,$oA)
{
global $ACCION_EXITOSA;
global $ACCION_FALLIDA;
global $ACCION_SINRESULTADO;
global $ACCION_DETENIDA;
global $ACCION_INICIADA;
global $ACCION_FINALIZADA;
global $TbMsg;
global $visupro;
global $visuprm;
$html="";
$html.='
';
if($visupro==0 )
$html.='
'.$rs->campos["comando"].'
';
else
$html.='
';
/* Resultado */
switch($rs->campos["resultado"]){
case $ACCION_EXITOSA:
$html.='
';
return($html);
}
// _________________________________________________________________________
function escribeResumen($oA)
{
global $cmd;
global $TbMsg;
global $ACCION_EXITOSA;
global $ACCION_FALLIDA;
global $ACCION_SINRESULTADO;
global $EJECUCION_TAREA;
$html="";
if($oA->swcp){ // Comando programado
$html.='
';
$html.='
';
$html.='
';
$html.='
';
$html.='
';
/* Ámbito de aplicación */
tomaAmbito($oA->ambito,$urlimg,$textambito);
$html.='
';
}
/* Descripción de la notificación (Descripción del error si se ha producido alguno) */
$html.='
'.@$rs->campos["descrinotificacion"].'
';
/* Estado */
$html.='
';
/* Porcentaje */
$html.='
'.$oA->porcen.'%
';
return($html);
}
// _________________________________________________________________________
function cambiaAmbito($rs,$oA)
{
global $cmd;
global $TbMsg;
$bgcolor="#f6c8f5";
$html="";
$html.='
';
return($html);
}
// _________________________________________________________________________
//
// Comprueba si se cumplen los criterios para visualizar la acción
// _________________________________________________________________________
function cumpleCriterios($oA)
{
global $porcendesde;
global $porcenhasta;
global $estado;
global $resultado;
global $ACCION_PROGRAMADA;
if($estado==$ACCION_PROGRAMADA){
if(!$oA->swcp)
return(false); // Comandos programados
else
return(true);
}
if($oA->swcp){
if($estado!=$ACCION_PROGRAMADA && $estado>0)
return(false); // Comandos programados
else
return(true);
}
// Cuestion estados
if(!empty($estado))
if($oA->estado!=$estado) return(false);
if(!empty($resultado))
if($oA->resultado!=$resultado) return(false);
if($oA->porcen<$porcendesde || $oA->porcen>$porcenhasta) return(false);
return(true);
}
// _________________________________________________________________________
//
// Comprueba si se cumplen los criterios para visualizar la notificación
// _________________________________________________________________________
function cumpleCriteriosNot($rs,$oA)
{
global $porcendesde;
global $porcenhasta;
global $estado;
global $resultado;
global $ACCION_PROGRAMADA;
if($estado==$ACCION_PROGRAMADA){
if(!$oA->swcp)
return(false); // Comandos programados
else
return(true);
}
if($oA->swcp){
if($estado!=$ACCION_PROGRAMADA && $estado>0)
return(false); // Comandos programados
else
return(true);
}
// Cuestion estados
if(!empty($estado))
if($rs->campos["estado"]!=$estado) return(false);
if(!empty($resultado))
if($rs->campos["resultado"]!=$resultado) return(false);
return(true);
}
// _________________________________________________________________________
//
// Clase para procesar las acciones
// _________________________________________________________________________
class clsAccion
{
var $ambito;
var $idambito;
var $tipoaccion;
var $idtipoaccion;
var $descriaccion;
var $sesion;
var $fechahorafin;
var $fechahorareg;
var $estado;
var $resultado;
var $porcen;
var $notif;
var $noter;
var $notdet;
var $notini;
var $linot;
var $swcp;
function __construct(){ // Constructor
}
}
//________________________________________________________________________________________________________
function escribeParametros($comando,$parametros,$visuparametros,$oA)
{
global $cmd;
global $visupro;
global $visupro;
global $visucmd;
$html="";
$tbParametrosValor=array();
ParametrosValor($cmd,$parametros,$tbParametrosValor); // Toma valores de cada parámetro
$vprm=explode(";",$visuparametros);
if($visupro==1 || ($visupro=0 && $visucmd==0)) $comando=" "; // No se muestra el nombre del comando
for($i=0;$i2)
$valor=$tbParametrosValor[$nemo][$j]["valor"];
else
$valor=$tbParametrosValor[$nemo]["valor"];
$html.=escribiendoParametros($comando,$descripcion,$valor,$oA);
}
}
}
if(empty($visuparametros)){ // Sin parametros
$bgcolor="#cedcec";
$html.='