source: spip-zone/_plugins_/tourinfrance/tourinfrance_fonctions.php @ 117558

Last change on this file since 117558 was 46754, checked in by gmichard@…, 9 years ago

Tous les textes en chaines de langues.
Lors du premier mappage, un message d'information s'affiche.
Retour des erreurs sur les champs.
Tentative de CSS dans l'espace privé : echec... (à corriger)

File size: 6.1 KB
Line 
1<?php
2function traiter_donnees_tourinfrance($url_flux, $id_flux, $infos_flux, $update_flux=false) {
3
4        if (file_exists($url_flux)) {
5
6                $xml = simplexml_load_file($url_flux);
7               
8                $tab_infos_flux = unserialize($infos_flux);
9               
10               
11               
12                /*****  PARCOURS DES OFFRES : <LISTING>  *****/
13                $offres = $xml->xpath('//child::LISTING');
14               
15               
16               
17                $exec = "<b>" . _T('tourinfrance:message_flux_propose') . "</b><br />";
18                $exec .= "URL : <i>$url_flux</i><br /><ul class='liste_maj_base'>";
19               
20                $retour_exec = "";
21               
22               
23                for($i=0; $i<count($offres); $i++){
24                       
25                        /*****  VALEURS des ELEMENTS DES OFFRES  *****/
26                        $commun = array();
27                        $extra = array();
28                       
29                        foreach( $offres[$i] as $element => $valeur ){
30               
31                                $contenu = trim(strip_tags($valeur->asXML()));
32                               
33                                if(in_array($element, $tab_infos_flux)){
34                                        $commun[array_search($element, $tab_infos_flux)] = $contenu;
35                                }
36                                else{
37                                        $extra[$element] = $contenu;
38                                }
39                               
40                        }
41                       
42                       
43                        /*****  DONNEES FORMATEES  *****/
44                        $commun_srlz = serialize($commun);
45                        $extra_srlz = serialize($extra);
46                       
47                       
48                        /*****  MODIFICATION DU FLUX DEPUIS ESPACE PRIVE *****/
49                        if($i==0 && $update_flux==true){
50                                //On change les DATEMAJ pour forcer la mise à jour.
51                                $bordereau = strtolower($commun["id_type"]);
52                                $nom_table_tourinfrance = "spip_tourinfrance_" . $bordereau;
53                                sql_updateq($nom_table_tourinfrance, array('datemaj'=>'00000000000001'), "id_flux=$id_flux");
54                        }
55                       
56                       
57                        /*****  INSERER LES DONNEES  *****/     
58                        $retour_exec .= inserer_donnees_tourinfrance($id_flux, $commun_srlz, $extra_srlz);
59                       
60                }
61               
62                if($retour_exec == ""){
63                        $retour_exec = _T('tourinfrance:message_flux_maj_aucune');
64                }
65               
66                $exec .= $retour_exec . "</ul><br />";
67                               
68            return $exec;
69        }
70        else{
71                return "$url_flux " . _T('tourinfrance:message_fichier_introuvable');
72        }
73       
74}
75function inserer_donnees_tourinfrance($id_flux, $commun_srlz, $extra_srlz) {
76
77        $commun = unserialize($commun_srlz);
78        $extra = unserialize($extra_srlz);
79       
80        $id_offre = $commun["id_offre"];
81        $nom_offre = $commun["nom_offre"];
82        $nom_commune = $commun["commune"];
83        $datemaj = formater_date($commun["datemaj"]);
84        $bordereau = strtolower($commun["id_type"]); //Bordereau
85
86        //RUBRIQUES : Recupere le TYPE D'OFFRE / BORDEREAU
87        if ($req = sql_select("id_rubrique", "spip_rubriques", "titre=" . sql_quote($bordereau))) {
88            while ($res = sql_fetch($req)) {
89                $id_rubrique = $res['id_rubrique'];
90            }
91        }
92       
93        //GROUPES_MOTS : Recupere ID du GROUPE "COMMUNES"
94        if ($req = sql_select("id_groupe", "spip_groupes_mots", "titre='communes'")) {
95            while ($res = sql_fetch($req)) {
96                $id_gp_mot_communes = $res['id_groupe'];
97            }
98        }
99       
100        //MOTS_CLES : Test existance de la COMMUNE en MOT-CLE
101        if ($req = sql_select("id_mot", "spip_mots", "titre=" . sql_quote($nom_commune))) {
102            if ($res = sql_fetch($req)) {
103                $id_mot = $res['id_mot'];
104            }
105            else{       //INSERTION SPIP_MOTS : Si la COMMUNE n'est pas en MOT CLE, on l'ajoute.
106                        $id_mot = sql_insertq("spip_mots", array(
107                                'titre'=>$nom_commune,
108                                'id_groupe'=>$id_gp_mot_communes,
109                                'type'=>'communes'
110                        ));
111            }
112        }
113       
114        //INSERER un ARTICLE dans la table SPIP_ARTICLES (bon id_rubrique)
115        $champ_article = array(
116                "id_rubrique" => $id_rubrique,
117                "id_secteur" => $id_rubrique,
118                "titre" => $commun["nom_offre"],
119                "descriptif" => $commun["description_offre"],
120                "texte" => $commun["description_offre"],
121                "statut" => "publie"
122                );
123       
124        //INSERER dans la bonne table SPIP_TOURINFRANCE
125        $nom_table_tourinfrance = "spip_tourinfrance_" . $bordereau;
126       
127        $champ_tourinfrance_type = $commun;
128        $champ_tourinfrance_type["id_flux"] = $id_flux;
129        $champ_tourinfrance_type["extra"] = $extra_srlz;
130       
131       
132       
133        //Test l'EXISTANCE de l'offre, et si MISE A JOUR.
134        $update = false;
135        $exist = false;
136        if ($req = sql_select("*", $nom_table_tourinfrance, "id_offre=" . sql_quote($id_offre))) {
137            while ($res = sql_fetch($req)) {
138                $exist = true;
139                $id_article = $res['id_article'];
140               
141                $update = comparer_date($datemaj, $res['datemaj']); //true si MAJ
142            }
143        }
144       
145        /***********  IF !UPDATE  id_offre n'existe pas deja  ***************/
146        if(!$exist){
147       
148                //MODIFICATION : Mise a jour statut de la rubrique si c'est le premier ajout.
149                if (!sql_countsel('spip_articles', "id_rubrique=$id_rubrique")) {
150                        sql_updateq('spip_rubriques', array('statut'=>'publie'), "id_rubrique=$id_rubrique");
151                }
152       
153                //INSERTION ARTICLE
154                $id_article = sql_insertq("spip_articles", $champ_article);
155               
156                //INSERTION AUTEURS_ARTICLES (liaison)
157                $liaison_auteur_article = sql_insertq("spip_auteurs_articles", array(
158                        'id_auteur'=>'1', 
159                        'id_article'=>$id_article
160                ));
161               
162                //INSERTION MOTS_ARTICLES (liaison)
163                $liaison_mot_article = sql_insertq("spip_mots_articles", array(
164                        'id_mot'=>$id_mot, 
165                        'id_article'=>$id_article
166                ));
167               
168                $champ_tourinfrance_type["id_article"] = $id_article;
169               
170                //INSERTION TOURINFRANCE
171                $id_tourinfrance = sql_insertq($nom_table_tourinfrance, $champ_tourinfrance_type);
172               
173                $retour = "<li>" . _T('tourinfrance:message_ajoute') . " : <b>" . _T('article') . " n°" . $id_article . "</b> : " . $id_offre . " - " . $nom_offre . "</li>";
174
175        }
176       
177        /***********  IF UPDATE  id_offre existe deja  ***************/
178        else if($update){
179       
180                //MODIFICATION ARTICLE
181                sql_updateq("spip_articles", $champ_article, "id_article=" . intval($id_article));
182               
183                //MODIFICATION MOTS_ARTICLES (liaison)
184                sql_updateq("spip_mots_articles", array('id_mot'=>$id_mot), "id_article='" . $id_article . "'");
185               
186                $champ_tourinfrance_type["id_article"] = $id_article;
187               
188                //MODIFICATION TOURINFRANCE
189                sql_updateq($nom_table_tourinfrance, $champ_tourinfrance_type, "id_offre='" . $id_offre . "'");
190               
191                $retour = "<li>" . _T('tourinfrance:message_modifie') . " : <b>" . _T('article') . " n°" . $id_article . "</b> : " . $id_offre . " - " . $nom_offre . "</li>";
192
193        }
194
195        return $retour;
196       
197}
198function formater_date($date) {
199        $date = str_replace('T', ' ', $date);
200        return (substr($date,0,19));
201}
202function comparer_date($newdate, $exdate) {
203
204        $search = array('-', ' ', ':');
205       
206        $newdate = str_replace($search, '', $newdate);
207        $exdate = str_replace($search, '', $exdate);
208       
209        $up = false;
210        if($exdate!="00000000000000" && $newdate>$exdate){
211                $up = true;
212        }
213       
214        return $up;
215}
216?>
Note: See TracBrowser for help on using the repository browser.