source: spip-zone/_plugins_/liste_imc/inc/listeimc_functions.php @ 35715

Last change on this file since 35715 was 35715, checked in by edd@…, 10 years ago

un caractere qui passe pas w3c, remplacer par &amp

File size: 4.6 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5$groupe_imc = array();
6$liste_imc = array();
7
8$cities_html="";
9$value="";
10$current_key="";
11$current_cat="";
12$dict_i=0;
13
14/*
15 * récupére et lit le contenu du fichier cities.xml
16 * Place ces infos dans les tables spip-listeimc-imc et spip-listeimc-groupe
17 * Mettre en place une gestion des erreurs
18 */
19function generer_cities_html() {
20
21        global $groupe_imc, $liste_imc;
22
23        include_spip('inc/distant');
24       
25        if (!$cities_xml = recuperer_page("http://www.indymedia.org/cities.xml"))
26        {
27                $erreur = "Impossible de récuperer cities.xml : le fichier n'existe pas";
28                return;
29        }
30                             
31        /*if (!$cities_array = spip_xml_parse($cities_xml))
32        {
33                $erreur = "Impossible de traiter le contenu de cities.xml.";
34                return;
35        }*/
36
37        // le parseur de spip ne fonctionne pas correctement
38        // du coup ecriture d'un parseur perso
39                           
40        //global $cities_html;
41                                         
42        $xml_parse = xml_parser_create("UTF-8");
43        xml_set_element_handler($xml_parse,"cities_debut_element","cities_fin_element");
44        xml_set_character_data_handler($xml_parse,"cities_element");
45
46        if (!xml_parse($xml_parse,$cities_xml,false))
47        {
48                die(sprintf("erreur XML : %s à  la ligne %d",
49                xml_error_string(xml_get_error_code($xml_parser)),
50                xml_get_current_line_number($xml_parser)));
51        }
52
53        xml_parser_free($xml_parse);
54       
55        // il faut maintenant alimenter les tables avec les infos du fichier
56        foreach($groupe_imc as $id_groupe => $groupe)
57        {
58                sql_insertq(
59                        'spip_listeimc_groupe',
60                        array(
61                                'id_groupe' => $id_groupe,
62                                'libelle' => $groupe
63                        )
64                );
65        }
66       
67        //print_r($liste_imc);
68        foreach($liste_imc as $id_imc => $imc)
69        {
70               
71                sql_insertq(
72                        'spip_listeimc_imc',
73                        array(
74                                'id_imc' => $id_imc,
75                                'id_groupe' => $imc['id_groupe'],
76                                'libelle' => str_replace('&','&amp;',$imc['libelle']),
77                                'url' => $imc['url']
78                        )
79                );
80        }
81        return;                                                                                                                     
82}
83
84
85
86
87function cities_debut_element($parser,$name,$attrs)
88{
89        global $groupe_imc, $liste_imc;
90        global $id_groupe, $id_imc;
91
92        global $value;
93        global $dict_i;
94        global $current_key, $current_cat;
95       
96        switch ($name) {
97                case "PLIST": // debut du document
98                        //." version du fichier : ".$attrs['VERSION']."-->\n";
99                        $id_groupe  = 0;
100                        $id_imc = 1;
101                        break;
102
103                case "DICT": // ensemble de valeur
104                        $dict_i++;
105                        break;
106
107                case "KEY" : // cle de la valeur
108                        $current_key="";
109                        break;
110
111                case "STRING" : // url de l'imc
112                        break;
113
114                case "ARRAY": // debut de tableau (contenant des ensembles de valeur)
115                        break;
116        }                                   
117}
118
119function cities_fin_element($parser,$name)
120{
121        global $groupe_imc, $liste_imc;
122        global $id_groupe, $id_imc;
123
124        global $dict_i;
125        global $value; 
126        global $current_key, $current_cat;
127         
128        switch($name) {
129                case "PLIST": // fin du document
130                        //$cities_html .= "<!-- FIN CITIES.HTML -->\n";
131                        break;
132
133                case "DICT": // fin d'ensemble de valeur
134                        $dict_i--;
135                        break;
136
137                case "KEY" : // fin cle de valeur
138                        $value = trim($value);
139                        if ($dict_i == 1)       // indique dans quelle catégorie on ce trouve
140                        {
141                                /*
142                                        null : la liste des imcs
143                                        process :  la liste des sites process
144                                        projects : la liste des sites projets
145                                        regions : la liste des sites regions
146                                        topics : la liste des sites topics
147                                */
148                                $current_cat = $value;
149                                if ($current_cat != 'NULL')
150                                {
151                                        $groupe_imc[++$id_groupe] = $value;
152                                }
153                               
154                               
155                        }
156                        else if ($dict_i == 2)  // une catégorie, faut alimenter la table groupe
157                        {
158                                if (strcmp("NULL",$value)!=0 && $current_cat == 'NULL')
159                                {
160                                        $groupe_imc[++$id_groupe] = $value;
161                                }
162                        }
163                        else if ($dict_i == 3) // un imc
164                        { 
165                                $current_key = $value;
166                        }
167
168                        $value="";
169                        break;
170
171                case "STRING" : // fin valeur
172
173                        $value = trim($value);
174                        if ($current_key != 'www.indymedia.org')
175                        {
176                                $liste_imc[$id_imc++] = array(
177                                        'libelle' => $current_key,
178                                        'url' => $value,
179                                        'id_groupe' => $id_groupe
180                                );
181                        }
182
183                        $value="";
184                        break;
185
186        }                                                                                                       
187} 
188                                                                                                                                                       
189function cities_element($parser,$data) 
190{
191        global $value;
192        $value .= $data;
193}
194                                                                                                                                                                                                                                                                             
195?>
Note: See TracBrowser for help on using the repository browser.