source: admin/ogAdmSources/ogAdmWebCon/gestores/gestor_colasacciones.php @ e42f34e

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-instalacionwebconsole3
Last change on this file since e42f34e was 8964f9b, checked in by ramon <ramongomez@…>, 16 years ago

Resstructuración de trunk.

git-svn-id: https://opengnsys.es/svn/trunk@390 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100644
File size: 24.8 KB
Line 
1<?
2include_once("../includes/ctrlacc.php");
3include_once("../includes/TomanDatos.php");
4include_once("../clases/AdoPhp.php");
5include_once("../includes/constantes.php");
6include_once("../includes/comunes.php");
7include_once("../includes/CreaComando.php");
8include_once("../includes/TomaDato.php");
9
10$opcion=0; // Inicializa parametros
11$resultado="";
12$estado="";
13$idaccion=0;
14
15$idnotificacion=0;
16$resultadoNot="";
17$idnotificador=0;
18
19if (isset($_GET["opcion"])) $opcion=$_GET["opcion"]; // Recoge parametros
20if (isset($_GET["resultado"])) $resultado=$_GET["resultado"];
21if (isset($_GET["estado"])) $estado=$_GET["estado"];
22if (isset($_GET["idaccion"])) $idaccion=$_GET["idaccion"];
23
24if (isset($_GET["idnotificacion"])) $idnotificacion=$_GET["idnotificacion"];
25if (isset($_GET["resultadoNot"])) $resultadoNot=$_GET["resultadoNot"];
26if (isset($_GET["idnotificador"])) $idnotificador=$_GET["idnotificador"];
27
28$mulaccion="";
29if (isset($_GET["mulaccion"])) $mulaccion=$_GET["mulaccion"];
30
31$op_modificar_resultado=1;
32$op_modificar_estado=2;
33$op_reiniciar_accion=3;
34$op_eliminar_accion=4;
35$op_modificar_resultado_notificacion=5;
36$op_reiniciar_notificacion=6;
37
38$opcion_multiple=0;
39$op_eliminar_mulaccion=7;
40$op_modificar_mulresultado=8;
41$op_modificar_mulestado=9;
42$op_reiniciar_mulaccion=10;
43
44$cmd=CreaComando($cadenaconexion); // Crea objeto comando
45$resul=false;
46if ($cmd){
47        if(empty($mulaccion))
48                $resul=Gestiona($opcion);
49        else
50                $resul=GestionaMultiple($opcion);
51        $cmd->Conexion->Cerrar();
52}
53// ************************************************************************************************
54?>
55<HTML>
56<HEAD>
57<BODY>
58<?
59        $literal="";
60        switch($opcion){
61                case $op_modificar_resultado :
62                        $literal="resultado_modificar_resultado";
63                        break;
64                case $op_modificar_estado:
65                        $literal="resultado_modificar_estado";
66                        break;
67                case $op_reiniciar_accion :
68                        $literal="resultado_reiniciar_accion";
69                        break;
70                case $op_eliminar_accion :
71                        $literal="resultado_eliminar_accion";
72                        break;
73                case $op_modificar_resultado_notificacion :
74                        $literal="resultado_modificar_resultado_notificacion";
75                        break;
76                case $op_reiniciar_notificacion :
77                        $literal="resultado_reiniciar_notificacion";
78                        break;
79                default :
80                        $literal="resultado_multipleaccion";
81                        break;
82        }
83if(empty($mulaccion)){
84        if ($resul){
85                echo '<SCRIPT language="javascript">';
86                echo "  window.parent.".$literal."(1,'".$cmd->DescripUltimoError()."',".$idaccion.")";
87                echo '</SCRIPT>';
88        }
89        else{
90                echo '<SCRIPT language="javascript">';
91                echo "  window.parent.".$literal."(0,'".$cmd->DescripUltimoError()."',".$idaccion.")";
92                echo '</SCRIPT>';
93        }
94}
95else{
96        if ($resul){
97                echo '<SCRIPT language="javascript">';
98                echo "  window.parent.".$literal."(1,'".$cmd->DescripUltimoError()."')";
99                echo '</SCRIPT>';
100        }
101        else{
102                echo '<SCRIPT language="javascript">';
103                echo "  window.parent.".$literal."(0,' " .$cmd->DescripUltimoError()."')";
104                echo '</SCRIPT>';
105        }
106}
107
108?>
109</BODY>
110</HTML>
111<?
112/* -------------------------------------------------------------------------------------------
113        Inserta, modifica o elimina un grupo de servidores dhcp de la base de datos
114---------------------------------------------------------------------------------------------*/
115function GestionaMultiple($opcion){
116
117        global  $idaccion;
118        global  $mulaccion;
119        global  $estado;
120        global  $resultado;
121
122        global $op_modificar_resultado;
123        global $op_modificar_estado;
124        global $op_reiniciar_accion;
125        global $op_eliminar_accion;
126        global $opcion_multiple;
127        global $op_modificar_mulresultado;
128        global $op_modificar_mulestado;
129        global $op_reiniciar_mulaccion;
130        global $op_eliminar_mulaccion;
131       
132        global $ACCION_DETENIDA;
133        global $ACCION_INICIADA;
134        global $ACCION_FINALIZADA;
135
136        global $ACCION_TERMINADA; // Finalizada manualmente con indicacion de exito
137        global $ACCION_ABORTADA; // Finalizada manualmente con indicacion de errores
138
139        $resul=true;
140        $auxsplit=split(";",$mulaccion);
141        for ($i=0;$i<sizeof($auxsplit)-1;$i++){
142                $triada=split(":",$auxsplit[$i]);
143                $idaccion=$triada[0];
144       
145                switch($opcion){
146                                case $op_modificar_mulresultado:
147                                                $acestado=$triada[1];
148                                                $acresultado=$triada[2];
149                                                if($acestado==$ACCION_INICIADA || $acestado==$ACCION_DETENIDA)
150                                                                $resul=Gestiona($op_modificar_resultado);
151                                                /*if($acestado==$ACCION_FINALIZADA){
152                                                        if($acresultado==$ACCION_TERMINADA && $resultado==$ACCION_ABORTADA)
153                                                                $resul=Gestiona($op_modificar_resultado);
154                                                        if($acresultado==$ACCION_ABORTADA && $resultado==$ACCION_TERMINADA)
155                                                                $resul=Gestiona($op_modificar_resultado);
156                                                }
157                                                */
158                                                break;
159                                case $op_modificar_mulestado:
160                                                $acestado=$triada[1];
161                                                if($acestado==$ACCION_INICIADA && $estado==$ACCION_DETENIDA)
162                                                        $resul=Gestiona($op_modificar_estado);
163                                                if($acestado==$ACCION_DETENIDA && $estado==$ACCION_INICIADA)
164                                                        $resul=Gestiona($op_modificar_estado);
165                                                break;
166                                case $op_reiniciar_mulaccion :
167                                                $resul=Gestiona($op_reiniciar_accion);
168                                                break;
169                                case $op_eliminar_mulaccion :
170                                                $resul=Gestiona($op_eliminar_accion);
171                                                break;
172                }
173                if(!$resul) return(false);
174        }
175        $opcion=$opcion_multiple;
176        return(true);
177}
178/* -------------------------------------------------------------------------------------------
179        Inserta, modifica o elimina un grupo de servidores dhcp de la base de datos
180---------------------------------------------------------------------------------------------*/
181function Gestiona($opcion){
182
183        global $ACCION_EXITOSA; // Finalizada con exito
184        global $ACCION_FALLIDA; // Finalizada con errores
185        global $ACCION_TERMINADA; // Finalizada manualmente con indicacion de exito
186        global $ACCION_ABORTADA; // Finalizada manualmente con indicacion de errores
187        global $ACCION_SINERRORES; // Activa y con algún error
188        global $ACCION_CONERRORES; // Activa y sin error
189
190        global $ACCION_DETENIDA;
191        global $ACCION_INICIADA;
192        global $ACCION_FINALIZADA;
193
194        global  $cmd;
195        global  $idaccion;
196        global  $resultado;
197        global  $estado;
198
199        global  $idnotificacion;
200        global  $resultadoNot;
201
202        global $op_modificar_resultado;
203        global $op_modificar_estado;
204        global $op_reiniciar_accion;
205        global $op_eliminar_accion;
206
207        global $op_modificar_resultado_notificacion;
208        global $op_reiniciar_notificacion;
209
210        $cmd->CreaParametro("@idaccion",$idaccion,1);
211        $cmd->CreaParametro("@idnotificacion",$idnotificacion,1);
212
213        switch($opcion){
214
215                case $op_modificar_resultado:
216                                $resul=modificar_resultado($cmd,$resultado,$idaccion);
217                                break;
218                case $op_modificar_estado:
219                                $resul=modificar_estado($cmd,$estado,$idaccion);
220                                break;
221                case $op_reiniciar_accion :
222                                $resul=reinicia_notificaciones($cmd,$idaccion); // Actualizaciones hacia abajo
223                                if($resul)
224                                        $resul=reinicia_notificadores($cmd,$idaccion,0); // Actualizaciones hacia arriba
225                                break;
226                case $op_eliminar_accion :
227                                $resul=delete_notificaciones($cmd,$idaccion); // Eliminaciones hacia abajo
228                                if ($resul){
229                                        $resul=reinicia_notificadores($cmd,$idaccion,0); // Actualizaciones hacia arriba
230                                        if($resul){
231                                                $cmd->texto="DELETE  FROM  acciones WHERE idaccion=".$idaccion;
232                                                $resul=$cmd->Ejecutar();
233                                        }
234                                }
235                                break;
236                case $op_modificar_resultado_notificacion:
237                                $cmd->texto="UPDATE notificaciones SET resultado=".$resultadoNot." WHERE idnotificacion=".$idnotificacion;
238                                $resul=$cmd->Ejecutar();
239                                if($resul){
240                                        $resul=modificar_resultado_notificacion($cmd,$idaccion); // Actualizaciones hacia arriba
241                                        if ($resul)
242                                                $resul=modificar_resultado_notificadores($cmd,$resultadoNot,$idnotificacion); // Actualizaciones hacia abajo
243                                }
244                        break;
245                case $op_reiniciar_notificacion:
246                                $nwidaccion=TomaDato($cmd,0,'notificaciones',$idnotificacion,'idnotificacion','idaccion');
247                                if(!empty($nwidaccion)){
248                                        $resul=reinicia_notificaciones($cmd,$nwidaccion); // Actualizaciones hacia abajo
249                                        if($resul)
250                                                $resul=reinicia_notificadores($cmd,$nwidaccion,0); // Actualizaciones hacia arriba
251                                }
252                                else{
253                                        $resul=reinicia_notificadores($cmd,0,$idnotificacion); // Actualizaciones hacia arriba
254                                }
255                                break;
256        }
257        return($resul);
258}
259/* -------------------------------------------------------------------------------------------
260        Consecuencias de modificar el resultado de una notificación a Exitosa
261                Parametros:
262                - cmd:Una comando ya operativo (con conexión abierta) 
263---------------------------------------------------------------------------------------------*/
264function modificar_resultado($cmd,$resultado,$idaccion){
265
266        global $ACCION_FINALIZADA;
267        global $ACCION_TERMINADA;
268        global $ACCION_ABORTADA;
269
270        $nombreliterales[0]="estado";
271        $nombreliterales[1]="resultado";
272        $nombreliterales[2]="idnotificador";
273        $nombreliterales[3]="accionid";
274        $Datos=TomanDatos($cmd,"acciones",$idaccion,"idaccion",$nombreliterales);
275        $nwestado=$Datos["estado"];
276        $nwresultado=$Datos["resultado"];
277        $nwidnotificador=$Datos["idnotificador"];
278        $nwaccionid=$Datos["accionid"];
279
280        if($nwestado<>$ACCION_FINALIZADA || $nwresultado==$ACCION_TERMINADA || $nwresultado==$ACCION_ABORTADA){
281                $cmd->texto="UPDATE acciones SET resultado='".$resultado."',estado='".$ACCION_FINALIZADA."' ,fechahorafin='".date("y/m/d h:i:s")."' WHERE idaccion=".$idaccion; // Actualiza resultado y estado de la acción
282                $resul=$cmd->Ejecutar();
283                if($resul && $nwaccionid>0)
284                        $resul=cuestion_raizernotificacion($cmd,$idaccion,$nwidnotificador,$nwaccionid,$resultado);
285        }
286        else
287                $resul=false;
288        if(!$resul) return(false);
289
290        $rs=new Recordset; // Recupero acciones anidadas
291        $cmd->texto="SELECT idaccion FROM acciones WHERE accionid=".$idaccion." AND     (estado<>'".$ACCION_FINALIZADA."' OR resultado='".$ACCION_TERMINADA."' OR resultado='".$ACCION_ABORTADA."')";
292        $rs->Comando=&$cmd;
293        if (!$rs->Abrir()) return(false); // Error al abrir recordset
294        while (!$rs->EOF){
295                $resul=modificar_resultado($cmd,$resultado,$rs->campos["idaccion"]);
296                if(!$resul) return(false);
297                $rs->Siguiente();
298        }
299        return(true);
300}
301/* -------------------------------------------------------------------------------------------
302        Consecuencias de modificar el resultado de una notificación a Exitosa
303                Parametros:
304                - cmd:Una comando ya operativo (con conexión abierta) 
305---------------------------------------------------------------------------------------------*/
306function cuestion_raizernotificacion($cmd,$idaccion,$idnotificador,$accionid,$resultado){
307
308        global $ACCION_EXITOSA;
309        global $ACCION_FALLIDA;
310        global $ACCION_TERMINADA;
311        global $ACCION_ABORTADA;
312
313        $nombreliterales[0]="idnotificacion";
314        $Datos=TomanDatos($cmd,"notificaciones",$idaccion,"idaccion",$nombreliterales);
315
316        if (empty($Datos)) // No existe notificación
317                $resul=InsertaNotificaciones($cmd,$idaccion,$idnotificador,$accionid,$resultado);
318        else{ // Existe modificacion y hay que modificar su resultado
319                $LITTERMINADA="¡¡ Acción terminada manualmente !!";
320                $LITABORTADA="¡¡ Acción abortada manualmente !!";
321
322                if($resultado==$ACCION_TERMINADA){
323                        $nwresultado=$ACCION_EXITOSA;
324                        $nwdescrinotificacion=$LITTERMINADA;
325                }
326                else{
327                        $nwresultado=$ACCION_FALLIDA;
328                        $nwdescrinotificacion=$LITABORTADA;
329                }
330                $cmd->texto="UPDATE notificaciones SET resultado=".$nwresultado.",descrinotificacion='".$nwdescrinotificacion."'  WHERE idaccion=".$idaccion;
331                $resul=$cmd->Ejecutar();
332        }
333        if($resul)
334                $resul=comprueba_resultados($cmd,$accionid,$resultado);
335       
336        return($resul);
337}
338/* -------------------------------------------------------------------------------------------
339        Consecuencias de modificar el resultado de una notificación a Exitosa
340                Parametros:
341                - cmd:Una comando ya operativo (con conexión abierta) 
342---------------------------------------------------------------------------------------------*/
343function InsertaNotificaciones($cmd,$idaccion,$idnotificador,$accionid,$resultado){
344
345        global $ACCION_EXITOSA;
346        global $ACCION_FALLIDA;
347        global $ACCION_TERMINADA;
348        global $ACCION_ABORTADA;
349
350        $LITTERMINADA="¡¡ Acción terminada manualmente !!";
351        $LITABORTADA="¡¡ Acción abortada manualmente !!";
352
353        if($resultado==$ACCION_TERMINADA){
354                $nwresultado=$ACCION_EXITOSA;
355                $nwdescrinotificacion=$LITTERMINADA;
356        }
357        else{
358                $nwresultado=$ACCION_FALLIDA;
359                $nwdescrinotificacion=$LITABORTADA;
360        }
361
362        $ntaccionid=$accionid;
363        $ntidnotificador=$idnotificador;
364        $ntfechahorareg=date("y/m/d h:i:s");
365        $ntresultado=$nwresultado;
366        $ntdescrinotificacion=$nwdescrinotificacion;
367        $ntidaccion=$idaccion;
368
369        $cmd->texto="INSERT INTO notificaciones (accionid,idnotificador,fechahorareg,resultado,descrinotificacion,idaccion) VALUES (";
370        $cmd->texto.=$ntaccionid.",".$ntidnotificador.",'".$ntfechahorareg."','".$ntresultado."','".$ntdescrinotificacion."',".$ntidaccion;
371        $cmd->texto.=")";
372
373        $resul=$cmd->Ejecutar();
374        return($resul);
375}
376/* -------------------------------------------------------------------------------------------
377        Consecuencias de eliminar una notificación de una Acción
378        Parametros:
379                - cmd:Una comando ya operativo (con conexión abierta) 
380---------------------------------------------------------------------------------------------*/
381function comprueba_resultados($cmd,$idaccion,$resultado){
382       
383        global $ACCION_FINALIZADA;
384        global $ACCION_EXITOSA;
385        global $ACCION_FALLIDA;
386        global $ACCION_SINERRORES;
387        global $ACCION_CONERRORES;
388
389        //if($idaccion==0) return(true); // Se ha llegado a la raiz
390        $rs=new Recordset;
391        $cmd->texto="SELECT COUNT(*) as numfallidas FROM notificaciones WHERE resultado='".$ACCION_FALLIDA."' AND accionid=".$idaccion;
392        $rs->Comando=&$cmd;
393        if (!$rs->Abrir()) return(false); // Error al abrir recordset
394        if($rs->EOF) return(false);
395        $numfallidas=$rs->campos["numfallidas"];
396
397        $nombreliterales[0]="estado";
398        $nombreliterales[1]="resultado";
399        $nombreliterales[2]="accionid";
400        $Datos=TomanDatos($cmd,"acciones",$idaccion,"idaccion",$nombreliterales);
401        $nwestado=$Datos["estado"];
402        $nwresultado=$Datos["resultado"];
403        $nwaccionid=$Datos["accionid"];
404
405        // Si el nuevo resultado es el mismo y la acción había finalizado ya, el evento se corta aquí
406        if($nwresultado==$resultado && $nwestado==$ACCION_FINALIZADA) return(true);
407               
408        if($nwestado==$ACCION_FINALIZADA){ // La acción había finalizado
409                if($numfallidas>0)
410                        $finalaccion=$ACCION_FALLIDA;
411                else
412                        $finalaccion=$ACCION_EXITOSA;
413        }
414        else{ // La acción NO había finalizado luego se convierte en sinerrores
415                if($numfallidas>0)
416                        $finalaccion=$ACCION_CONERRORES;
417                else
418                        $finalaccion=$ACCION_SINERRORES;
419        }
420
421        // Actualiza acción
422        $cmd->texto="UPDATE acciones SET resultado='".$finalaccion."' WHERE idaccion=".$idaccion;
423        $resul=$cmd->Ejecutar();
424        if (!$resul) return(false);
425
426        // Si ya existía notificación, se modifica su estado
427        if($nwestado==$ACCION_FINALIZADA){
428                if($numfallidas>0)
429                        $cmd->texto="UPDATE notificaciones SET resultado='".$ACCION_FALLIDA."' WHERE idaccion=".$idaccion;
430                else
431                        $cmd->texto="UPDATE notificaciones SET resultado='".$ACCION_EXITOSA."' WHERE idaccion=".$idaccion;
432                $resul=$cmd->Ejecutar();
433                if($resul && $nwaccionid>0 )
434                        return(comprueba_resultados($cmd,$nwaccionid,$resultado));
435        }
436        else{
437                // Comprueba si ha finalizado esta acción e inserta su notificador correspondiente
438                $resul=comprueba_finalizada($cmd,$idaccion,$nwaccionid,$resultado);
439        }
440        return($resul);
441}
442/* -------------------------------------------------------------------------------------------
443        Consecuencias de modificar el resultado de una notificación a Exitosa
444                Parametros:
445                - cmd:Una comando ya operativo (con conexión abierta) 
446---------------------------------------------------------------------------------------------*/
447function comprueba_finalizada($cmd,$idaccion,$accionid,$resultado){
448
449        global $EJECUCION_COMANDO;
450        global $EJECUCION_TAREA;
451        global $EJECUCION_TRABAJO;
452
453        global $ACCION_FINALIZADA;
454        global $ACCION_EXITOSA;
455        global $ACCION_FALLIDA;
456        global $ACCION_TERMINADA;
457        global $ACCION_ABORTADA;
458        global $ACCION_SINERRORES;
459        global $ACCION_CONERRORES;
460
461        $rs=new Recordset;
462        $cmd->texto="SELECT COUNT(*) as numnotificaciones FROM notificaciones WHERE accionid=".$idaccion;
463        $rs->Comando=&$cmd;
464        if (!$rs->Abrir()) return(false); // Error al abrir recordset
465        if($rs->EOF) return(false);
466        $numnotificaciones=$rs->campos["numnotificaciones"];
467
468        $nombreliterales[0]="tipoaccion";
469        $nombreliterales[1]="parametros";
470        $nombreliterales[2]="idnotificador";
471        $Datos=TomanDatos($cmd,"acciones",$idaccion,"idaccion",$nombreliterales);
472        $nwtipoaccion=$Datos["tipoaccion"];
473        $nwparametros=$Datos["parametros"];
474        $nwidnotificador=$Datos["idnotificador"];
475
476        $ValorParametros=extrae_parametros($nwparametros,chr(13),'=');
477        switch($nwtipoaccion){
478                case $EJECUCION_COMANDO :
479                        $cadenanot=$ValorParametros["iph"];
480                        break;
481                case $EJECUCION_TAREA :
482                        $cadenanot=$ValorParametros["cmd"];
483                        break;
484                case $EJECUCION_TRABAJO :
485                        $cadenanot=$ValorParametros["tsk"];
486                        break;
487                default:
488                        return(false);
489        }
490        $cont=1;
491        for($i=0;$i<strlen($cadenanot);$i++){
492                if(substr($cadenanot,$i,1)==';') $cont++;
493        }
494
495        if($numnotificaciones==$cont){
496                if($resultado==$ACCION_ABORTADA)
497                        $cmd->texto="UPDATE acciones SET resultado='".$ACCION_FALLIDA."', estado='".$ACCION_FINALIZADA."' ,fechahorafin='".date("y/m/d h:i:s")."'  WHERE idaccion=".$idaccion;
498                else
499                        $cmd->texto="UPDATE acciones SET resultado='".$ACCION_EXITOSA."', estado='".$ACCION_FINALIZADA."' ,fechahorafin='".date("y/m/d h:i:s")."'  WHERE idaccion=".$idaccion;
500
501                $resul=$cmd->Ejecutar();
502                if ($resul){
503                        if($accionid>0){
504                                $resul=InsertaNotificaciones($cmd,$idaccion,$nwidnotificador,$accionid,$resultado);
505                                if($resul)
506                                        return(comprueba_resultados($cmd,$accionid,$resultado));
507                        }
508                }
509        }
510        else
511                $resul=true;
512
513        return($resul);
514}
515/* -------------------------------------------------------------------------------------------
516        Consecuencias de modificar el resultado de una notificación a Exitosa
517                Parametros:
518                - cmd:Una comando ya operativo (con conexión abierta) 
519---------------------------------------------------------------------------------------------*/
520function modificar_estado($cmd,$estado,$idaccion){
521
522        global $ACCION_FINALIZADA;
523
524        $cmd->texto="UPDATE acciones SET estado='".$estado."' WHERE idaccion=".$idaccion." AND estado<>'".$ACCION_FINALIZADA."'"; // Actualiza estado de la acción
525        $resul=$cmd->Ejecutar();
526        if(!$resul) return(false);
527
528        $rs=new Recordset; // Recupero acciones anidadas
529        $cmd->texto="SELECT idaccion FROM acciones WHERE accionid=".$idaccion." AND estado<>'".$ACCION_FINALIZADA."'";
530        $rs->Comando=&$cmd;
531        if (!$rs->Abrir()) return(false); // Error al abrir recordset
532        while (!$rs->EOF){
533                $resul=modificar_estado($cmd,$estado,$rs->campos["idaccion"]);
534                if(!$resul) return(false);
535                $rs->Siguiente();
536        }
537        return(true);
538}
539/* -------------------------------------------------------------------------------------------
540        Consecuencias de eliminar una notificación de una Acción
541        Parametros:
542                - cmd:Una comando ya operativo (con conexión abierta) 
543---------------------------------------------------------------------------------------------*/
544function reinicia_notificaciones($cmd,$idaccion){
545
546        global $ACCION_SINERRORES;
547        global $ACCION_INICIADA;
548
549        $cmd->texto="DELETE  FROM notificaciones WHERE accionid=".$idaccion; // Elimina notificación
550        $resul=$cmd->Ejecutar();
551        if($resul){
552                $cmd->texto="UPDATE acciones SET resultado=".$ACCION_SINERRORES.",estado=".$ACCION_INICIADA." ,fechahorafin=null WHERE idaccion=".$idaccion; // Actualiza resultado y estado de la acción como consecuencia de la eliminación de la notificación
553                $resul=$cmd->Ejecutar();
554        }
555        if(!$resul) return(false);
556
557        $rs=new Recordset;
558        $cmd->texto="SELECT idaccion FROM acciones WHERE accionid=".$idaccion;
559        $rs->Comando=&$cmd;
560        if (!$rs->Abrir()) return(false); // Error al abrir recordset
561        while (!$rs->EOF){
562                $resul=reinicia_notificaciones($cmd,$rs->campos["idaccion"]); // Eliminación recursiva
563                if(!$resul) return($resul);
564                $rs->Siguiente();
565        }
566        return(true);
567}
568/* -------------------------------------------------------------------------------------------
569        Consecuencias de eliminar una notificación de una Acción
570        Parametros:
571                - cmd:Un comando ya operativo (con conexión abierta) 
572---------------------------------------------------------------------------------------------*/
573function reinicia_notificadores($cmd,$idaccion,$idnotificacion){
574       
575        global $ACCION_INICIADA;
576        global $ACCION_SINERRORES;
577        global $ACCION_CONERRORES;
578        global $ACCION_FALLIDA;
579
580        if($idaccion>0){
581                $cmd->texto="DELETE FROM notificaciones WHERE idaccion=".$idaccion;
582                $resul=$cmd->Ejecutar();
583                if(!$resul) return(false);
584                $nwidaccion=TomaDato($cmd,0,'acciones',$idaccion,'idaccion','accionid');
585        }
586        else{   
587                $nwidaccion=TomaDato($cmd,0,'notificaciones',$idnotificacion,'idnotificacion','accionid');
588                $cmd->texto="DELETE FROM notificaciones WHERE idnotificacion=".$idnotificacion;
589                $resul=$cmd->Ejecutar();
590                if(!$resul) return(false);
591        }
592        if (empty($nwidaccion)) return(true);
593        $rs=new Recordset;
594        $cmd->texto="SELECT COUNT(*) as numfallidas FROM notificaciones WHERE resultado='".$ACCION_FALLIDA."' AND accionid=".$nwidaccion;
595        $rs->Comando=&$cmd;
596        if (!$rs->Abrir()) return(false); // Error al abrir recordset
597        if($rs->EOF) return(true);
598        if($rs->campos["numfallidas"]>0)
599                $nwresultado=$ACCION_CONERRORES;
600        else
601                $nwresultado=$ACCION_SINERRORES;
602        $rs->Cerrar();
603        $cmd->texto="UPDATE acciones SET resultado='".$nwresultado."',estado='".$ACCION_INICIADA."' ,fechahorafin=null WHERE idaccion=".$nwidaccion;
604        $resul=$cmd->Ejecutar();
605        if (!$resul) return(false);
606
607        return(reinicia_notificadores($cmd,$nwidaccion,0));
608}
609/* -------------------------------------------------------------------------------------------
610        Consecuencias de eliminar una notificación de una Acción
611        Parametros:
612                - cmd:Una comando ya operativo (con conexión abierta) 
613---------------------------------------------------------------------------------------------*/
614function delete_notificaciones($cmd,$idaccion){
615
616        global $ACCION_SINERRORES;
617        global $ACCION_INICIADA;
618
619        $cmd->texto="DELETE  FROM  notificaciones WHERE accionid=".$idaccion; // Elimina notificación
620        $resul=$cmd->Ejecutar();
621        if(!$resul) return(false);
622
623        $rs=new Recordset;
624        $cmd->texto="SELECT idaccion FROM acciones WHERE accionid=".$idaccion;
625        $rs->Comando=&$cmd;
626        if (!$rs->Abrir()) return(false); // Error al abrir recordset
627        if($rs->EOF) return(true);
628
629        while (!$rs->EOF){
630                $resul=delete_notificaciones($cmd,$rs->campos["idaccion"]); // Eliminación recursiva
631                if(!$resul) return($resul);
632                $rs->Siguiente();
633        }
634        if($resul){
635                        $cmd->texto="DELETE FROM acciones WHERE accionid=".$idaccion; // Elimina acciones
636                        $resul=$cmd->Ejecutar();
637        }
638        return($resul);
639}
640/* -------------------------------------------------------------------------------------------
641        Consecuencias de eliminar una notificación de una Acción
642        Parametros:
643                - cmd:Una comando ya operativo (con conexión abierta) 
644---------------------------------------------------------------------------------------------*/
645function modificar_resultado_notificacion($cmd,$idaccion){
646
647        global $ACCION_FINALIZADA;
648        global $ACCION_EXITOSA;
649        global $ACCION_FALLIDA;
650        global $ACCION_SINERRORES;
651        global $ACCION_CONERRORES;
652
653        $rs=new Recordset;
654        $cmd->texto="SELECT COUNT(*) as numfallidas FROM notificaciones WHERE resultado='".$ACCION_FALLIDA."' AND accionid=".$idaccion;
655        $rs->Comando=&$cmd;
656        if (!$rs->Abrir()) return(false); // Error al abrir recordset
657        if($rs->EOF) return(true);
658        $numfallidas=$rs->campos["numfallidas"];
659
660        $nombreliterales[0]="estado";
661        $nombreliterales[1]="accionid";
662        $Datos=TomanDatos($cmd,"acciones",$idaccion,"idaccion",$nombreliterales);
663        $nwestado=$Datos["estado"];
664        $nwaccionid=$Datos["accionid"];
665
666        if($nwestado==$ACCION_FINALIZADA){ // La acción había finalizado
667                if($numfallidas>0)
668                        $cmd->texto="UPDATE acciones SET resultado='".$ACCION_FALLIDA."' WHERE idaccion=".$idaccion;
669                else
670                        $cmd->texto="UPDATE acciones SET resultado='".$ACCION_EXITOSA."' WHERE idaccion=".$idaccion;
671        }
672        else{ // La acción NO había finalizado luego se convierte en sinerrores
673                if($numfallidas>0)
674                        $cmd->texto="UPDATE acciones SET resultado='".$ACCION_CONERRORES."' WHERE idaccion=".$idaccion;
675                else
676                        $cmd->texto="UPDATE acciones SET resultado='".$ACCION_SINERRORES."' WHERE idaccion=".$idaccion;
677        }
678        $resul=$cmd->Ejecutar();
679        if (!$resul) return(false);
680
681        if($nwestado==$ACCION_FINALIZADA){
682                if($numfallidas>0)
683                        $cmd->texto="UPDATE notificaciones SET resultado='".$ACCION_FALLIDA."' ,fechahorareg='".date("y/m/d h:i:s")."' WHERE idaccion=".$idaccion;
684                else
685                        $cmd->texto="UPDATE notificaciones SET resultado='".$ACCION_EXITOSA."' ,fechahorareg='".date("y/m/d h:i:s")."' WHERE idaccion=".$idaccion;
686                $resul=modificar_resultado_notificacion($cmd,$nwaccionid);
687        }
688        return($resul);
689}
690/* -------------------------------------------------------------------------------------------
691        Consecuencias de eliminar una notificación de una Acción
692        Parametros:
693                - cmd:Una comando ya operativo (con conexión abierta) 
694---------------------------------------------------------------------------------------------*/
695function modificar_resultado_notificadores($cmd,$resultadoNot,$idnotificacion){
696
697        global $ACCION_EXITOSA;
698        global $ACCION_TERMINADA;
699        global $ACCION_ABORTADA;
700
701        if($resultadoNot==$ACCION_EXITOSA)
702                $resultado=$ACCION_TERMINADA;
703        else
704                $resultado=$ACCION_ABORTADA;
705
706        $nwidaccion=TomaDato($cmd,0,'notificaciones',$idnotificacion,'idnotificacion','idaccion');
707        if (!empty($nwidaccion))
708                return(modificar_resultado($cmd,$resultado,$nwidaccion));
709
710        return(true);
711
712}
713?>
Note: See TracBrowser for help on using the repository browser.