source: pmb4.1/trunk/fuentes/pmb/admin/connecteurs/in/dosync.php @ 478

Last change on this file since 478 was 478, checked in by mabarracus, 4 years ago

copy trusty code 4.1

  • Property svn:executable set to *
File size: 4.6 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: dosync.php,v 1.8 2014-01-30 16:28:16 dbellamy Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
8
9require_once($class_path."/connecteurs.class.php");
10
11set_time_limit(0);
12
13function show_progress($percent,$nlu,$ntotal) {
14        global $charset;
15        global $source_id;
16        print "pb = document.getElementById('progress_bar'); pb.removeAttribute('width'); pb.setAttribute('width',pb.width*".(round($percent*100)?round($percent*100):"100").");
17                document.getElementById('percent').innerHTML='".round($percent*100)."%';
18                document.getElementById('nlu').innerHTML='".htmlentities($nlu,ENT_QUOTES,$charset)."';
19                document.getElementById('ntotal').innerHTML='".htmlentities($ntotal,ENT_QUOTES,$charset)."';";
20        $requete="update source_sync set percent=".round($percent*100)." where source_id=$source_id";
21        $r=mysql_query($requete);
22    ob_flush();
23    flush();
24}
25
26function return_error($error_message) {
27        $result = "var erreur_div = document.createElement('div');
28                                erreur_div.setAttribute('class', 'erreur');
29                                erreur_div.setAttribute('id', 'red_erreur_message');
30                                erreur_div.innerHTML = 'Erreur: ".addslashes($error_message)."';
31                                if (document.getElementById('red_erreur_message'))
32                                        document.getElementById('erreurpos').removeChild(document.getElementById('red_erreur_message'));
33                                document.getElementById('erreurpos').appendChild(erreur_div);
34        ";
35        echo $result;
36        die();
37}
38
39if (isset($env)) {
40        $env = stripslashes($env);
41        $tenv = unserialize($env);
42        if (is_array($tenv)) {
43                foreach ($tenv as $aenv=>$aenvv) {
44                        $$aenv = $aenvv;
45                }
46        }
47}
48
49if ($id) {
50        $contrs=new connecteurs();
51        require_once($base_path."/admin/connecteurs/in/".$contrs->catalog[$id]["PATH"]."/".$contrs->catalog[$id]["NAME"].".class.php");
52        eval("\$conn=new ".$contrs->catalog[$id]["NAME"]."(\"".$base_path."/admin/connecteurs/in/".$contrs->catalog[$id]["PATH"]."\");");
53}
54else 
55        return_error("Missing ID!");
56
57if (!$source_id)
58        return_error("Missing source ID!");
59
60//Traitement en cas de requete d'annulation de synchro
61if ($cancel) {
62        if ($conn->cancel_maj($source_id)) {
63                $requete="delete from source_sync where source_id=".$source_id;
64        } else {
65                $requete="update source_sync set cancel=1 where source_id=".$source_id;
66        }
67        mysql_query($requete);
68        die();
69}
70       
71$conn->get_sources();
72//Vérification qu'il n'y a pas de synchronisation en cours...
73
74$is_already_sync=false;
75$recover_env="";
76$recover=false;
77$requete="select * from source_sync where source_id=$source_id";
78$resultat=mysql_query($requete);
79if (mysql_num_rows($resultat)) {
80        $rs_s=mysql_fetch_object($resultat);
81        if (!$rs_s->cancel) {
82                return_error($conn->msg["connecteurs_sync_currentexists"]);
83        } else {
84                $recover=true;
85                $recover_env=$rs_s->env;
86        }
87}
88
89flush();
90ob_flush();
91
92ini_set('display_errors', 0);
93
94function shutdown(){
95    $isError = false;
96    if ($error = error_get_last()){
97        switch($error['type']){
98            case E_ERROR:
99            case E_CORE_ERROR:
100            case E_COMPILE_ERROR:
101            case E_USER_ERROR:
102                $isError = true;
103                break;
104        }
105    }
106
107    if ($isError){
108        return_error($error['message']);
109    }
110}
111
112register_shutdown_function('shutdown');
113
114if (!$is_already_sync) {
115        if (!$recover) {
116                $requete="insert into source_sync (source_id,nrecu,ntotal,date_sync) values($source_id,0,0,now())";
117                $r=mysql_query($requete);
118        } 
119        else {
120                $requete="update source_sync set cancel=0 where source_id=$source_id";
121                $r=mysql_query($requete);
122        }
123        if ($r) {
124                $n_maj=$conn->maj_entrepot($source_id,"show_progress",$recover,$recover_env);
125                if (!$conn->error) {
126                        show_progress(1,$n_maj,$n_maj);
127                        print "document.getElementById('cancel_sync').style.visibility='hidden';";
128                        print "document.getElementById('get_back').style.visibility='visible';";
129                        print "document.getElementById('sync_message').innerHTML='".htmlentities($msg["connecteurs_sync_syncover"] ,ENT_QUOTES, $charset)."'";
130                        $requete="delete from source_sync where source_id=".$source_id;
131                        mysql_query($requete);
132                        $requete="update connectors_sources set last_sync_date=now() where source_id=".$source_id;
133                        mysql_query($requete);
134                } else {
135                        if ($conn->break_maj($source_id)) {
136                                $requete="delete from source_sync where source_id=".$source_id;
137                        } else {
138                                $requete="update source_sync set cancel=2 where source_id=".$source_id;
139                        }
140                        mysql_query($requete);
141                        return_error($conn->error_message);
142                }
143        } else return_error($msg["connecteurs_sync_currentexists"]);
144}
145
146
147?>
Note: See TracBrowser for help on using the repository browser.