source: spip-zone/_plugins_/taxonomie/trunk/action/taxonomie_get_wikipedia.php @ 96992

Last change on this file since 96992 was 96992, checked in by eric@…, 3 years ago

Phpdoc et formatage PSR SPIP

  • Property svn:eol-style set to native
File size: 3.4 KB
Line 
1<?php
2/**
3 * Ce fichier contient l'action `taxonomie_get_wikipedia` qui permet d'appeler l'api Wikipedia pour remplir
4 * un champ de taxon.
5 *
6 * @package SPIP\TAXONOMIE\SERVICES\WIKIPEDIA
7 */
8if (!defined('_ECRIRE_INC_VERSION')) {
9        return;
10}
11
12/**
13 * Cette action permet à un utilisateur d'insérer dans le champ d'un taxon (principalement le descriptif)
14 * le texte d'une section de page Wikipedia.
15 *
16 * Cette action est réservée aux utilisateurs ayant le droit de modifier un taxon.
17 * Elle nécessite plusieurs arguments, à savoir, l'id du taxon, son nom scientifique, le code de langue SPIP,
18 * le champ de taxon concerné par l'insertion et la section de page Wikipedia à insérer ou `*`
19 * si toute la page est requise.
20 *
21 * @uses wikipedia_spipcode2language()
22 * @uses wikipedia_get()
23 * @uses taxon_merger_traductions()
24 *
25 * @return void
26 */
27function action_taxonomie_get_wikipedia_dist() {
28
29        // Securisation et autorisation car c'est une action auteur:
30        // -> argument attendu est l'alias du serveur
31        $securiser_action = charger_fonction('securiser_action', 'inc');
32        $arguments = $securiser_action();
33
34        // Verification des autorisations
35        if (!autoriser('modifier', 'taxon')) {
36                include_spip('inc/minipres');
37                echo minipres();
38                exit();
39        }
40
41        // Insertion pour le taxon donné du texte Wikipedia récupéré.
42        // Le texte Wikipédia est inséré dans le champ précisé.
43        // Si le champ n'est pas vide, son contenu est écrasé.
44        if ($arguments) {
45                // Détermination des arguments de l'action
46                list($id_taxon, $nom_scientifique, $spip_langue, $champ, $section) = explode(':', $arguments);
47                $section = ($section == '*') ? null : $section;
48                if (intval($id_taxon)) {
49                        // Récupération des informations tsn, source et edite du taxon
50                        $taxon = sql_fetsel(array('tsn', 'sources', 'edite', $champ), 'spip_taxons', 'id_taxon=' . sql_quote($id_taxon));
51
52                        // Appel du service query de Wikipedia
53                        include_spip('services/wikipedia/wikipedia_api');
54                        $langue = wikipedia_spipcode2language($spip_langue); // TODO : attention à gérer la langue en amont
55                        $information = wikipedia_get($taxon['tsn'], $nom_scientifique, $langue, $section);
56                        if ($information['texte']) {
57                                // Si le plugin Convertisseur est actif, conversion du texte mediawiki vers SPIP.
58                                // Mise en format multi systématique.
59                                include_spip('inc/filtres');
60                                $convertir = chercher_filtre('convertisseur_texte_spip');
61                                $texte_converti = '<multi>'
62                                                                  . '[' . $spip_langue . ']'
63                                                                  . ($convertir ? $convertir($information['texte'], 'MediaWiki_SPIP') : $information['texte'])
64                                                                  . '</multi>';
65
66                                // Mise à jour pour le taxon du descriptif et des champs connexes en base de données
67                                $maj = array();
68                                // - le texte du descriptif est inséré dans la langue choisie en mergeant avec l'existant
69                                //   si besoin
70                                include_spip('inc/taxonomer');
71                                $maj[$champ] = taxon_merger_traductions($texte_converti, $taxon[$champ]);
72                                // - l'indicateur d'édition est positionné à oui
73                                if ($taxon['edite']) {
74                                        $maj['edite'] = 'oui';
75                                }
76                                // - la source wikipédia est ajoutée (ou écrasée si elle existe déjà)
77                                $maj['sources'] = array('wikipedia' => array('champs' => array($champ)));
78                                if ($sources = unserialize($taxon['sources'])) {
79                                        $maj['sources'] = array_merge($maj['sources'], $sources);
80                                }
81                                $maj['sources'] = serialize($maj['sources']);
82                                // - Mise à jour
83                                sql_updateq('spip_taxons', $maj, 'id_taxon=' . sql_quote($id_taxon));
84                        }
85                }
86        }
87}
Note: See TracBrowser for help on using the repository browser.