Changeset 100371 in spip-zone for _plugins_/isocode
- Timestamp:
- Nov 5, 2016, 2:33:43 PM (4 years ago)
- Location:
- _plugins_/isocode/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/isocode/trunk/base/isocode_declarations.php
r100330 r100371 160 160 'label_fr' => "varchar(255) DEFAULT '' NOT NULL", // french name 161 161 'capital' => "varchar(255) DEFAULT '' NOT NULL", // Capital name 162 'area' => 'int DEFAULT 0 NOT NULL', // Area in squared km163 'population' => 'int DEFAULT 0 NOT NULL', // Inhabitants count162 'area' => "int DEFAULT 0 NOT NULL", // Area in squared km 163 'population' => "int DEFAULT 0 NOT NULL", // Inhabitants count 164 164 'code_continent' => "char(2) DEFAULT '' NOT NULL", // Continent code alpha2 165 165 'tld' => "char(3) DEFAULT '' NOT NULL", // Tld - Top-Level Domain … … 185 185 'label_fr' => "varchar(255) DEFAULT '' NOT NULL", // french name 186 186 'symbol' => "char(8) DEFAULT '' NOT NULL", // Currency symbol 187 'minor_unit ' => 'int DEFAULT 0 NOT NULL', // Minor units187 'minor_units' => "int DEFAULT 0 NOT NULL", // Minor units 188 188 'maj' => 'timestamp' 189 189 ); -
_plugins_/isocode/trunk/formulaires/isocode_gerer_table.php
r100348 r100371 87 87 function formulaires_isocode_gerer_table_traiter() { 88 88 89 $retour = array();90 91 89 // Acquisition des saisies: comme elles sont obligatoires, il existe toujours une action et une 92 90 // table. -
_plugins_/isocode/trunk/services/iso/iso_api.php
r100367 r100371 105 105 ), 106 106 'loc' => array( 107 'Hierarchy' => 'hierarchy' 107 'Hierarchy' => 'hierarchy', 108 'parent' => 'parent' // Colonne est calculée à partir de la hiérarchie 108 109 ) 109 110 ), … … 154 155 'CcyNbr' => 'code_num', 155 156 'CcyNm' => 'label_en', 156 'CcyMnrUnts' => 'minor_unit ',157 'CcyMnrUnts' => 'minor_units', 157 158 ), 158 159 'addon_fields' => array( … … 175 176 function iso639families_completer_enregistrement($enregistrement, $config) { 176 177 177 // Initialisation des champs additionnels qui sont tous de type chaine dans l'enregistrement 178 // passé en argument (qui contient déjà les champs de base). 178 // Initialisation 179 static $enregistrement_sil_defaut = array(); 180 181 // Initialisation des champs additionnels dans l'enregistrement passé en argument 182 // (qui contient déjà les champs de base). 179 183 $config_champs_sil = $config['addon_fields']['sil']; 180 foreach ($config_champs_sil as $_champ) { 181 $enregistrement[$_champ] = ''; 182 } 184 if (!$enregistrement_sil_defaut) { 185 include_spip('inc/isocode_sourcer'); 186 $enregistrement_sil_defaut = initialiser_enregistrement('iso639families', $config_champs_sil); 187 } 188 $enregistrement = array_merge($enregistrement, $enregistrement_sil_defaut); 183 189 184 190 // On récupère la page de description de la famille sur le site SIL. … … 238 244 $hierarchies = array(); 239 245 $config_champs_loc = $config['addon_fields']['loc']; 246 include_spip('inc/isocode_sourcer'); 247 $enregistrement_loc_defaut = initialiser_enregistrement('iso639families', $config_champs_loc); 240 248 241 249 // On récupère la page de description de la famille sur le site SIL. … … 271 279 // dérivée parent qui ne contient que le code alpha-3 de la famille parente si elle existe. 272 280 foreach ($enregistrements as $_cle => $_enregistrement) { 281 $enregistrements[$_cle] = array_merge($enregistrements[$_cle], $enregistrement_loc_defaut); 273 282 $code = $_enregistrement['code_639_5']; 274 $enregistrements[$_cle]['parent'] = '';275 283 if (isset($hierarchies[$code])) { 276 284 $enregistrements[$_cle][$config_champs_loc['Hierarchy']] = $hierarchies[$code]; … … 280 288 if (count($parents) > 1) { 281 289 array_pop($parents); 282 $enregistrements[$_cle][ 'parent'] = array_pop($parents);290 $enregistrements[$_cle][$config_champs_loc['parent']] = array_pop($parents); 283 291 } 284 } else {285 $enregistrements[$_cle][$config_champs_loc['Hierarchy']] = '';286 292 } 287 293 } … … 296 302 $enregistrements_geo = array(); 297 303 $config_champs_geo = $config['addon_fields']['geonames']; 304 include_spip('inc/isocode_sourcer'); 305 $enregistrement_geo_defaut = initialiser_enregistrement('iso3166countries', $config_champs_geo); 298 306 299 307 // Lecture du fichier CSV geonames-countryInfo.txt pour récupérer les informations additionnelles. … … 305 313 $titres = array(); 306 314 $index_code_pays = null; 315 include_spip('inc/isocode_sourcer'); 307 316 foreach ($lignes as $_numero => $_ligne) { 308 317 $valeurs = explode($separateur, trim($_ligne, "\r\n")); … … 316 325 // qui servira d'index du tableau constitué. 317 326 // On ne sélectionne que les colonnes correspondant à des champs additionnels. 318 $enregistrement_geo = initialiser_enregistrement('iso3166countries', $config_champs_geo);327 $enregistrement_geo = $enregistrement_geo_defaut; 319 328 foreach ($titres as $_cle => $_titre) { 320 329 $titre = trim($_titre); … … 345 354 function iso4217currencies_completer_table($enregistrements, $config) { 346 355 356 // Initialisation des champs additionnels 357 $enregistrements_iota = array(); 358 $config_champs_iota = $config['addon_fields']['iota']; 359 include_spip('inc/isocode_sourcer'); 360 $enregistrement_iota_defaut = initialiser_enregistrement('iso4217currencies', $config_champs_iota); 361 362 // On récupère la page de description de la famille sur le site SIL. 363 include_spip('inc/distant'); 364 $url = _ISOCODE_IOTA_ISO4217_SYMBOL; 365 $flux = recuperer_url($url, array('transcoder' => true)); 366 367 include_spip('inc/filtres'); 368 $table = extraire_balise($flux['page'], 'table'); 369 if ($table) { 370 // On extrait la première table de la page qui contient les données voulues 371 $lignes = extraire_balises($table, 'tr'); 372 if ($lignes) { 373 $cles_iota = array(); 374 $index_code_devise = null; 375 foreach ($lignes as $_numero => $_ligne) { 376 $balise_colonne = $_numero == 0 ? 'th' : 'td'; 377 $colonnes = extraire_balises($_ligne, $balise_colonne); 378 $colonnes = array_map('supprimer_tags', $colonnes); 379 $colonnes = array_map('trim', $colonnes); 380 if ($_numero == 0) { 381 // La première ligne du tableau est celle des titres de colonnes. 382 // On détermine les index de colonnes correspondant aux champs additionnels configurés. 383 foreach ($colonnes as $_cle => $_titre) { 384 if (array_key_exists($_titre, $config_champs_iota)) { 385 $cles_iota[$_titre] = $_cle; 386 } 387 } 388 // On détermine l'index de la colonne qui porte le code alpha3 ISO-4217 nommé 389 $index_code_devise = array_search('ISO devise', $colonnes); 390 } else { 391 // Chaque ligne de la table est composée de plusieurs colonnes, la première étant le code alpha3 392 // de la devise selon l'ISO-4217 393 $enregistrement_iota = $enregistrement_iota_defaut; 394 foreach ($cles_iota as $_titre => $_cle) { 395 if ($colonnes[$_cle]) { 396 $enregistrement_iota[$config_champs_iota[$_titre]] = $colonnes[$_cle]; 397 } 398 } 399 $code = $colonnes[$index_code_devise]; 400 $enregistrements_iota[$code] = $enregistrement_iota; 401 } 402 } 403 } 404 } 405 406 // On complète maintenant le tableau des enregistrements avec les colonne additionnelles symbole 407 // et devise en français. 408 // Etant donné qu'il faut que tous les enregistrements possèdent la même structure, si une devise ne 409 // possède pas d'informations complémentaires IOTA on lui adjoint des colonnes par défaut. 410 foreach ($enregistrements as $_cle => $_enregistrement) { 411 $code = $_enregistrement['code_4217_3']; 412 if (isset($enregistrements_iota[$code])) { 413 $enregistrements[$_cle] = array_merge($enregistrements[$_cle], $enregistrements_iota[$code]); 414 } else { 415 $enregistrements[$_cle] = array_merge($enregistrements[$_cle], $enregistrement_iota_defaut); 416 } 417 } 347 418 348 419 return $enregistrements;
Note: See TracChangeset
for help on using the changeset viewer.