Changeset 92837 in spip-zone


Ignore:
Timestamp:
Nov 11, 2015, 4:46:40 PM (4 years ago)
Author:
eric@…
Message:

Renommage et phpdoc.
Mise au point du package cache.

Location:
_plugins_/taxonomie/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/taxonomie/trunk/demo/taxonomie.html

    r92818 r92837  
    1111<?php
    1212    include_spip('services/itis/itis_api');
    13 //    $tsn = itis_search_tsn('scientificname', 'Animalia');
     13    $tsn = itis_search_tsn('scientificname', 'Animalia');
    1414    echo "TSN = $tsn</br>";
    15 //    $tsn = itis_search_tsn('scientificname', 'panthera leo');
     15    $tsn = itis_search_tsn('scientificname', 'panthera leo');
    1616    echo "TSN = $tsn</br>";
    1717?>
     
    3434    <h2>Action : list_vernaculars</h2>
    3535<?php
    36     $tsns = itis_list_vernaculars('fr');
     36//    $tsns = itis_list_vernaculars('fr');
    3737    var_dump($tsns);
    3838?>
  • _plugins_/taxonomie/trunk/inc/cacher.php

    r92799 r92837  
    44 * les fichiers cache des services taxonomiques et les dossiers les contenant.
    55 *
    6  * @package SPIP\BOUSSOLE\Outils\Cache
     6 * @package SPIP\TAXONOMIE\CACHE
    77 */
    88
    99if (!defined("_ECRIRE_INC_VERSION")) return;
    1010
    11 if (!defined('_TAXONOMIE_NOMDIR_CACHE'))
     11if (!defined('_TAXONOMIE_CACHE_NOMDIR'))
    1212        /**
    1313         * Nom du dossier contenant les fichiers caches des éléments de taxonomie */
    14         define('_TAXONOMIE_NOMDIR_CACHE', 'cache-taxonomie/');
    15 if (!defined('_TAXONOMIE_DIR_CACHE'))
     14        define('_TAXONOMIE_CACHE_NOMDIR', 'cache-taxonomie/');
     15if (!defined('_TAXONOMIE_CACHE_DIR'))
    1616        /**
    1717         * Chemin du dossier contenant les fichiers caches des boussoles */
    18         define('_TAXONOMIE_DIR_CACHE', _DIR_VAR . _TAXONOMIE_NOMDIR_CACHE);
     18        define('_TAXONOMIE_CACHE_DIR', _DIR_VAR . _TAXONOMIE_CACHE_NOMDIR);
    1919
    2020
    2121/**
    22  * Ecriture des informations complètes d'une boussole dans un cache au format XML et de son SHA.
     22 * Ecriture d'un contenu issu d'un service web taxonomique dans un fichier texte afin d'optimiser le nombre
     23 * de requête adressée au service.
    2324 *
    2425 * @param string        $cache
    25  *              Contenu XML du fichier cache à créer.
    26  * @param string        $alias_boussole
    27  *              Alias de la boussole dont le cache va être créé.
     26 *              Contenu du fichier cache. Si le service appelant manipule un tableau il doit le sériliser avant
     27 *      d'appeler cette fonction.
     28 * @param string    $service
     29 * @param int       $tsn
     30 * @param string    $code_langue
     31 * @param string    $action
    2832 *
    2933 * @return boolean
     
    3236function ecrire_cache_taxonomie($cache, $service, $tsn, $code_langue='', $action='') {
    3337        // Création du dossier cache si besoin
    34         sous_repertoire(_DIR_VAR, trim(_TAXONOMIE_DIR_CACHE, '/'));
     38        sous_repertoire(_DIR_VAR, trim(_TAXONOMIE_CACHE_DIR, '/'));
    3539
    3640        // Ecriture du fichier cache
     
    4246
    4347
     48/**
     49 * @param $service
     50 * @param $tsn
     51 * @param string $code_langue
     52 * @param string $action
     53 * @return string
     54 */
    4455function nommer_cache_taxonomie($service, $tsn, $code_langue='', $action='') {
    45         // Ecriture du fichier cache
    46         $fichier_cache = _TAXONOMIE_DIR_CACHE
     56        // Construction du chemin complet d'un fichier cache
     57        $fichier_cache = _TAXONOMIE_CACHE_DIR
    4758                . $service
    4859                . ($action ? '_' . $action : '')
     
    5465
    5566/**
    56  * Vérifie l'existence du fichier cache d'une boussole et si oui retourne
    57  * son chemin complet.
     67 * Vérifie l'existence du fichier cache pour un taxon et un service donnés. Si le fichier existe
     68 * la fonction retourne son chemin complet.
    5869 *
    59  * @param string        $alias_boussole
    60  *              Alias de la boussole dont on teste l'existence du cache.
     70 * @param string    $service
     71 * @param int       $tsn
     72 * @param string    $code_langue
     73 * @param string    $action
    6174 *
    6275 * @return string
     
    8699        include_spip('inc/flock');
    87100
    88         if ($fichiers_cache = glob(_TAXONOMIE_DIR_CACHE . "*.*")) {
     101        if ($fichiers_cache = glob(_TAXONOMIE_CACHE_DIR . "*.*")) {
    89102                foreach ($fichiers_cache as $_fichier) {
    90103                        supprimer_fichier($_fichier);
  • _plugins_/taxonomie/trunk/services/itis/itis_api.php

    r92833 r92837  
    3737
    3838/**
    39  * Configuration de l'api des actions du service web ITIS
     39 * Configuration de la correspondance entre langue Wikipedia et code de langue SPIP.
     40 * La langue du service est l'index, le code SPIP est la valeur.
    4041 */
    4142$GLOBALS['itis_language'] = array(
     
    4445        'spanish' => 'es'
    4546);
     47/**
     48 * Configuration de l'api des actions du service web ITIS
     49 */
    4650$GLOBALS['itis_webservice'] = array(
    4751        'search' => array(
     
    144148        ),
    145149);
     150
    146151
    147152// -----------------------------------------------------------------------
  • _plugins_/taxonomie/trunk/services/wikipedia/wikipedia_api.php

    r92833 r92837  
    1111        /**
    1212         * Préfixe des URL du service web de WIKIPEDIA.
    13          * Le service fournit des données au format XML ou JSON
     13         * Le service fournit des données au format JSON
    1414         */
    15         define('_TAXONOMIE_WIKIPEDIA_ENDPOINT_BASE_URL', 'http://%langue%.wikipedia.org/w/api.php?');
    16 if (!defined('_TAXONOMIE_WIKIPEDIA_URL_CITATION'))
     15        define('_TAXONOMIE_WIKIPEDIA_ENDPOINT_BASE_URL', 'http://%langue%.wikipedia.org/w/api.php');
     16
     17if (!defined('_TAXONOMIE_WIKIPEDIA_PAGE_BASE_URL'))
    1718        /**
    18          * Préfixe des URL du service web de ITIS.
    19          * Le service fournit des données au format XML ou JSON
     19         * URL de base pour construire une page de Wikipedia dans une langue donnée
    2020         */
    21         define('_TAXONOMIE_WIKIPEDIA_URL_CITATION', 'http://fr.wikipedia.org');
    22 if (!defined('_TAXONOMIE_WIKIPEDIA_URL_BASE_PAGE'))
    23         /**
    24          * Préfixe des URL du service web de ITIS.
    25          * Le service fournit des données au format XML ou JSON
    26          */
    27         define('_TAXONOMIE_WIKIPEDIA_URL_BASE_PAGE', 'https://%langue%.wikipedia.org/wiki/');
    28 if (!defined('_TAXONOMIE_WIKIPEDIA_LANGUE_DEFAUT'))
    29         /**
    30          * Langue par défaut pour les api utilisant des noms communs
    31          */
    32         define('_TAXONOMIE_WIKIPEDIA_LANGUE_DEFAUT', 'en');
     21        define('_TAXONOMIE_WIKIPEDIA_PAGE_BASE_URL', 'https://%langue%.wikipedia.org/wiki/');
     22
     23/**
     24 * Configuration de la correspondance entre langue Wikipedia et code de langue SPIP.
     25 * La langue du service est l'index, le code SPIP est la valeur.
     26 */
     27$GLOBALS['wikipedia_language'] = array(
     28        'fr' => 'fr',
     29        'en' => 'en',
     30        'es' => 'es'
     31);
    3332
    3433
     34// ----------------------------------------------------------------------------
     35// ------------ API du web service WIKIPEDIA - Actions principales ------------
     36// ----------------------------------------------------------------------------
     37
    3538/**
     39 * Renvoie le texte de la page ou d'une section de la page à partir d'une phrase de recherche.
     40 * Dans le cas du plugin, cette recherche est généralement le nom scientifique du taxon.
    3641 *
    37  * @param $nom_commun
    38  * @return array
     42 * @api
     43 *
     44 * @param int       $tsn
     45 *      Identifiant ITIS (TSN) du taxon. Etant donné que ce service s'utilise toujours sur un taxon
     46 *      existant le TSN existe toujours. Il sert à créer le fichier cache.
     47 * @param string    $recherche
     48 *      Chaine de recherche qui est en généralement le nom scientifique du taxon.
     49 * @param string    $langue
     50 *      Langue au sens de Wikipedia qui préfixe l'url du endpoint. Vaut 'fr', 'en', 'es'...
     51 * @param int|null  $section
     52 *      Section de page dont le texte est à renvoyer. Entier supérieur ou égal à 0.
     53 *
     54 * @return string
     55 *      Texte trouvé rédigé en mediawiki ou chaine vide sinon. Pour traduire le texte en SPIP
     56 *      il est nécessaire d'utiliser le plugin Convertisseur. Néanmoins, le texte même traduit
     57 *      doit être remanié manuellement.
    3958 */
    40 function wikipedia_get($recherche, $section=null) {
    41         global $spip_lang;
    42         $information = '';
     59function wikipedia_get($tsn, $recherche, $langue, $section=null) {
     60        $information = array();
     61
    4362
    4463        // Normaliser la recherche: trim et mise en lettres minuscules
    4564        $recherche = strtolower(trim($recherche));
    4665
    47         // Construire l'URL de la function de recherche par nom vernaculaire
    48         $url = wikipedia_api2url('json', 'query', $spip_lang, $recherche, $section);
     66        // Construire l'URL de la function de recherche par nom vernaculaire.
     67        // L'encodage de la recherche est effectuée dans la fonction.
     68        $url = wikipedia_api2url('json', 'query', $langue, $recherche, $section);
    4969
    5070        // Acquisition des données spécifiées par l'url
     
    6181                AND !isset($page['missing'])
    6282                AND isset($page['revisions'][0]['*'])) {
    63                         $information = $page['revisions'][0]['*'];
     83                        $information['texte'] = $page['revisions'][0]['*'];
    6484                }
    6585        }
     
    6787        return $information;
    6888}
     89
     90
     91// --------------------------------------------------------------------------
     92// ------------ API du web service WIKIPEDIA - Fonctions annexes ------------
     93// --------------------------------------------------------------------------
     94
     95/**
     96 * Renvoie la langue telle que le service ITIS la désigne à partir du code de langue
     97 * de SPIP.
     98 *
     99 * @api
     100 *
     101 * @param string    $language_code
     102 *      Code de langue de SPIP. La variable globale $itis_language définit le transcodage langue Wikipedia
     103 *      vers code SPIP.
     104 *
     105 * @return string
     106 *      Langue au sens de Wikipedia ou chaine vide sinon.
     107 */
     108function wikipedia_spipcode2language($language_code) {
     109        global $wikipedia_language;
     110
     111        if (!$language = array_search($language_code,  $wikipedia_language)) {
     112                $language = '';
     113        }
     114
     115        return $language;
     116}
     117
    69118
    70119/**
     
    87136
    88137
     138// ----------------------------------------------------------------
     139// ------------ Fonctions internes utilisées par l'API ------------
     140// ----------------------------------------------------------------
     141
    89142/**
    90143 * @param $format
     
    98151
    99152        // Construire l'URL de l'api sollicitée
    100         $url = str_replace('%langue%', $langue, _TAXONOMIE_WIKIPEDIA_ENDPOINT_BASE_URL)
     153        $url = str_replace('%langue%', $langue, _TAXONOMIE_WIKIPEDIA_ENDPOINT_BASE_URL) . '?'
    101154                . 'action=' . $action
    102155                . '&meta=siteinfo|wikibase'
     
    110163}
    111164
    112 /**
    113  * @param $language_code
    114  *
    115  * @return string
    116  */
    117 function wikipedia_code2language($language_code) {
    118         static $itis_languages = array(
    119                 'fr' => 'french',
    120                 'en' => 'english');
    121 
    122         $language = _TAXONOMIE_ITIS_LANGUE_DEFAUT;
    123         if (array_key_exists($language_code,  $itis_languages)) {
    124                 $language = $itis_languages[$language_code];
    125         }
    126 
    127         return $language;
    128 }
    129 
    130165?>
Note: See TracChangeset for help on using the changeset viewer.