source: admin/WebConsole/gestores/gestor_colasacciones.php @ 3ca392f

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacion
Last change on this file since 3ca392f was dba299f, checked in by OpenGnSys Support Team <soporte-og@…>, 6 years ago

#915 Fix end date for gestor_colasacciones.php

This patch fixes an SQL query bug when trying to upate the end date in the
'acciones' table. The value of 'fechahorafin' cannot be NULL according to the
table definition.

This bug was introduced in 3ec149cb1 so it has been broken for 9 years.

  • Property mode set to 100644
File size: 7.2 KB
Line 
1<?php
2// *************************************************************************************************************************************************
3// Aplicación WEB: ogAdmWebCon
4// Autor: José Manuel Alonso (E.T.S.I.I.) Universidad de Sevilla
5// Fecha Creación: Año 2009-2010
6// Fecha Última modificación: Agosto-2010
7// Nombre del fichero: colasacciones.php
8// Descripción :
9//              Gestiona las operaciones realizadas sobre las acciones registradas
10// *************************************************************************************************************************************************
11
12include_once("../includes/ctrlacc.php");
13include_once("../includes/TomanDatos.php");
14include_once("../clases/AdoPhp.php");
15include_once("../includes/constantes.php");
16include_once("../includes/comunes.php");
17include_once("../includes/CreaComando.php");
18include_once("../clases/SockHidra.php");
19//________________________________________________________________________________________________________
20       
21$opcion=0; // Inicializa parametros
22$acciones="";
23
24if (isset($_POST["opcion"])) $opcion=$_POST["opcion"];
25if (isset($_POST["acciones"])) $acciones=$_POST["acciones"];
26
27$cmd=CreaComando($cadenaconexion); // Crea objeto comando
28$resul=false;
29if ($cmd){
30        $resul=gestiona($cmd,$opcion,$acciones);
31        $cmd->Conexion->Cerrar();
32}
33if($resul)
34        echo $opcion; // Proceso con éxito, devuelve la opción
35else
36        echo 0; // Proceso con algún error, devuelve cero
37//
38// *****************************************************************************************************************
39//
40function gestiona($cmd,$opcion,$acciones){
41
42        global $ACCION_EXITOSA;
43        global $ACCION_FALLIDA;
44        global $ACCION_SINRESULTADO;
45       
46        global $LITACCION_EXITOSA;
47        global $LITACCION_FALLIDA;
48       
49        global $ACCION_DETENIDA;
50        global $ACCION_INICIADA;
51        global $ACCION_FINALIZADA;
52
53        $tbAcciones=explode(";",$acciones);
54        for($i=0;$i<sizeof($tbAcciones)-1;$i++){
55                list($tipoaccion,$idtipoaccion,$sesion,$idaccion)=explode(",",$tbAcciones[$i]);
56                switch($opcion){
57               
58                        case 1: // Eliminar ============================================================
59                                $cmd->texto="DELETE  FROM  acciones ";
60                                if(!empty($idaccion))
61                                        $cmd->texto.=" WHERE idaccion=".$idaccion;
62                                else
63                                        $cmd->texto.=" WHERE tipoaccion=".$tipoaccion." AND idtipoaccion=".$idtipoaccion." AND sesion=".$sesion;
64                                $resul=$cmd->Ejecutar();
65                                break;
66                               
67                        case  2: // Reiniciar ============================================================
68                                /* Recordset para envío de comando actualizar */
69                                $cmd->texto="SELECT     count(*) as con,
70                                                                        group_concat(cast(ordenadores.idordenador AS char( 11 ) ) SEPARATOR ',' ) AS cadenaid,
71                                                                        group_concat(ordenadores.ip SEPARATOR ';' ) AS cadenaip
72                                                                FROM acciones
73                                                                INNER JOIN ordenadores ON ordenadores.idordenador=acciones.idordenador";
74                                if(!empty($idaccion))
75                                        $cmd->texto.=" WHERE idaccion=".$idaccion;
76                                else   
77                                        $cmd->texto.=" WHERE tipoaccion=".$tipoaccion." AND idtipoaccion=".$idtipoaccion."
78                                                                        AND sesion=".$sesion;
79                                                       
80                                $rs=new Recordset;
81                                $rs->Comando=&$cmd;
82                                if (!$rs->Abrir()) return(false); // Error al abrir recordset
83                                if ($rs->EOF) return(true); // No existen registros                     
84                                $aplicacion="ido=".$rs->campos["cadenaid"].chr(13)."iph=".$rs->campos["cadenaip"].chr(13);
85
86                                /* Update de la tabla */
87                                $cmd->texto="UPDATE acciones
88                                                SET estado=".$ACCION_INICIADA.",resultado=".$ACCION_SINRESULTADO.",descrinotificacion='',fechahorafin=DEFAULT";
89                                if(!empty($idaccion))
90                                        $cmd->texto.=" WHERE idaccion=".$idaccion;
91                                else   
92                                        $cmd->texto.=" WHERE tipoaccion=".$tipoaccion." AND idtipoaccion=".$idtipoaccion." AND sesion=".$sesion;
93                                $resul=$cmd->Ejecutar();
94                                if($resul)
95                                        $resul=enviaComandoActualizar($aplicacion);
96                                break; 
97                               
98                        case  3: // Para acciones ============================================================
99                                $cmd->texto="UPDATE acciones SET estado=".$ACCION_DETENIDA;
100                                if(!empty($idaccion))
101                                        $cmd->texto.=" WHERE idaccion=".$idaccion." AND estado=".$ACCION_INICIADA;
102                                else   
103                                        $cmd->texto.=" WHERE tipoaccion=".$tipoaccion." AND idtipoaccion=".$idtipoaccion." AND sesion=".$sesion." AND estado=".$ACCION_INICIADA;
104                                $resul=$cmd->Ejecutar();
105                                break; 
106                               
107                        case  4: // Reanuda acciones ============================================================
108                                $cmd->texto="UPDATE acciones SET estado=".$ACCION_INICIADA;
109                                if(!empty($idaccion))
110                                        $cmd->texto.=" WHERE idaccion=".$idaccion." AND estado=".$ACCION_DETENIDA;
111                                else
112                                        $cmd->texto.=" WHERE tipoaccion=".$tipoaccion." AND idtipoaccion=".$idtipoaccion." AND sesion=".$sesion." AND estado=".$ACCION_DETENIDA;
113                                $resul=$cmd->Ejecutar();
114                                break; 
115                               
116                        case  5: // Finalizar sin errores ============================================================
117                                $ahora=date("y/m/d H:i:s");
118                                $cmd->texto="UPDATE acciones SET estado=".$ACCION_FINALIZADA.",resultado=".$ACCION_EXITOSA.",
119                                                        fechahorafin='".$ahora."'".",descrinotificacion='".$LITACCION_EXITOSA."'";
120                                if(!empty($idaccion))
121                                        $cmd->texto.=" WHERE idaccion=".$idaccion." AND estado=".$ACCION_INICIADA;
122                                else
123                                        $cmd->texto.=" WHERE tipoaccion=".$tipoaccion." AND idtipoaccion=".$idtipoaccion." AND sesion=".$sesion." AND estado=".$ACCION_INICIADA;
124                                $resul=$cmd->Ejecutar();
125                                break; 
126                               
127                        case  6: // Finalizar con errores ============================================================
128                                $ahora=date("y/m/d H:i:s");
129                                $cmd->texto="UPDATE acciones SET estado=".$ACCION_FINALIZADA.",resultado=".$ACCION_FALLIDA.",
130                                                        fechahorafin='".$ahora."'".",descrinotificacion='".$LITACCION_FALLIDA."'";
131                                if(!empty($idaccion))
132                                        $cmd->texto.=" WHERE idaccion=".$idaccion." AND estado=".$ACCION_INICIADA;
133                                else
134                                        $cmd->texto.=" WHERE tipoaccion=".$tipoaccion." AND idtipoaccion=".$idtipoaccion." AND sesion=".$sesion." AND estado=".$ACCION_INICIADA;
135                                $resul=$cmd->Ejecutar();
136                                break;                                 
137                }
138                //echo $cmd->texto;
139        }
140        return($resul);
141}
142//      _________________________________________________________________________
143//
144// Envía un comando de actualizar a los ordenadores tras reinicio de acción
145//      _________________________________________________________________________
146
147function enviaComandoActualizar($aplicacion)
148{
149        global $servidorhidra;
150        global $hidraport;
151        global $LONCABECERA;
152        global $LONHEXPRM;
153       
154        $funcion="Actualizar"; // Nombre de la función que procesa la petición
155        //________________________________________________________________________________________________________
156        //
157        // Envio al servidor de la petición
158        //________________________________________________________________________________________________________
159        $trama="";
160        $shidra=new SockHidra($servidorhidra,$hidraport);
161        if ($shidra->conectar()){ // Se ha establecido la conexión con el servidor hidra
162                $parametros="nfn=".$funcion.chr(13);
163                $parametros.=$aplicacion;
164                $shidra->envia_comando($parametros);
165                $trama=$shidra->recibe_respuesta();
166                $shidra->desconectar();
167        }
168        else
169                return(false); // Error de actualización
170       
171        $hlonprm=hexdec(substr($trama,$LONCABECERA,$LONHEXPRM));
172        $parametros=substr($trama,$LONCABECERA+$LONHEXPRM,$hlonprm);
173        $ValorParametros=extrae_parametros($parametros,chr(13),'=');
174        $trama_notificacion=$ValorParametros["res"];
175        if($trama_notificacion==1) return(true); // Devuelve respuesta 
176        return(false); // Error de actualización
177}
178
Note: See TracBrowser for help on using the repository browser.