source: admin/WebConsole/gestores/gestor_colasacciones.php @ 74c04a0

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 74c04a0 was a6b881e, checked in by alonso <alonso@…>, 16 years ago

primeros archivos de administración

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

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