source: spip-zone/_plugins_/taxonomie/trunk/inc/taxonomer.php @ 87600

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

Gestion du rang phylum ou division.
Ajout d'un champ edite pour indiquer une modification manuelle du taxon et mise à jour lors d'une modification.

  • Property svn:eol-style set to native
File size: 3.9 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5if (!defined('_TAXONOMIE_REGNE_ANIMAL'))
6        define('_TAXONOMIE_REGNE_ANIMAL', 'animalia');
7if (!defined('_TAXONOMIE_REGNE_VEGETAL'))
8        define('_TAXONOMIE_REGNE_VEGETAL', 'plantae');
9if (!defined('_TAXONOMIE_REGNE_FONGIQUE'))
10        define('_TAXONOMIE_REGNE_FONGIQUE', 'fungi');
11
12if (!defined('_TAXONOMIE_LISTE_REGNES'))
13        define('_TAXONOMIE_LISTE_REGNES',
14                implode(':', array(
15                        _TAXONOMIE_REGNE_ANIMAL,
16                        _TAXONOMIE_REGNE_VEGETAL,
17                        _TAXONOMIE_REGNE_FONGIQUE
18                )));
19
20if (!defined('_TAXONOMIE_RANG_REGNE'))
21        define('_TAXONOMIE_RANG_REGNE', 'kingdom');
22// Suivant le règne l'embranchement se nomme phylum (animalia) ou division (fungi, plantae).
23// Néanmoins, le terme phylum est souvent accepté pour l'ensemble des règnes
24if (!defined('_TAXONOMIE_RANG_PHYLUM'))
25        define('_TAXONOMIE_RANG_PHYLUM', 'phylum');
26if (!defined('_TAXONOMIE_RANG_DIVISION'))
27        define('_TAXONOMIE_RANG_DIVISION', 'division');
28if (!defined('_TAXONOMIE_RANG_CLASSE'))
29        define('_TAXONOMIE_RANG_CLASSE', 'class');
30if (!defined('_TAXONOMIE_RANG_ORDRE'))
31        define('_TAXONOMIE_RANG_ORDRE', 'order');
32if (!defined('_TAXONOMIE_RANG_FAMILLE'))
33        define('_TAXONOMIE_RANG_FAMILLE', 'family');
34if (!defined('_TAXONOMIE_RANG_GENRE'))
35        define('_TAXONOMIE_RANG_GENRE', 'genus');
36if (!defined('_TAXONOMIE_RANG_ESPECE'))
37        define('_TAXONOMIE_RANG_ESPECE', 'specie');
38
39// Pour la liste des rangs on utilise par défaut au niveau 2 le terme phylum
40if (!defined('_TAXONOMIE_LISTE_RANGS'))
41        define('_TAXONOMIE_LISTE_RANGS',
42                implode(':', array(
43                        _TAXONOMIE_RANG_REGNE,
44                        _TAXONOMIE_RANG_PHYLUM,
45                        _TAXONOMIE_RANG_CLASSE,
46                        _TAXONOMIE_RANG_ORDRE,
47                        _TAXONOMIE_RANG_FAMILLE,
48                        _TAXONOMIE_RANG_GENRE,
49                        _TAXONOMIE_RANG_ESPECE
50                )));
51
52
53/**
54 * Renvoie, à partir de l'url du service, le tableau des données demandées.
55 * Le service utilise dans ce cas une chaine JSON qui est décodée pour fournir
56 * le tableau de sortie.
57 *
58 *@param string $url
59 *              URL complète du service web.
60 *
61*@return array
62 */
63function url2json_data($url) {
64        // Acquisition des données spécifiées par l'url
65        include_spip('inc/distant');
66        $flux = recuperer_page($url);
67
68        // Tranformation de la chaine json reçue en tableau associatif
69        $data = json_decode($flux, true);
70
71        return $data;
72}
73
74
75/**
76 * Liste dans un tableau les règnes supportés par le plugin, à savoir: animalia,
77 * plantae et fungi.
78 * Les règnes sont exprimés avec leur nom scientifique en lettres minuscules.
79 *
80 * @return array
81 */
82function lister_regnes() {
83        return explode(':', _TAXONOMIE_LISTE_REGNES);
84}
85
86
87/**
88 * Liste dans un tableau les rangs taxonomiques supportés par le plugin, à savoir:
89 * kingdom, phylum, class, order, family, genus et specie.
90 * Les règnes sont exprimés en anglais et écrits en lettres minuscules.
91 * La fonction permet d'exclure de la liste les rangs extrêmes kingdom et specie et de choisir
92 * entre le rang phylum et son synonyme division.
93 *
94 * @param bool $exclure_regne
95 *              Demande d'exclusion du règne de la liste des rangs
96 * @param bool $exclure_espece
97 *              Demande d'exclusion de l'espèce de la liste des rangs
98 * @param string        $regne
99 *              Nom scientifque du règne pour lequel la liste des rangs est demandée.
100 *              Cet argument permet de remplacer le rang phylum par division qui est son synonyme
101 *              pour les règnes fongique et végétal
102 *
103 * @return array
104 */
105function lister_rangs($exclure_regne=true, $exclure_espece=true, $regne=_TAXONOMIE_REGNE_ANIMAL) {
106        $exclusions = array();
107
108        $rangs = explode(':', _TAXONOMIE_LISTE_RANGS);
109        if ($exclure_regne)
110                $exclusions[] = _TAXONOMIE_RANG_REGNE;
111        if ($exclure_espece)
112                $exclusions[] = _TAXONOMIE_RANG_ESPECE;
113        $rangs = array_diff($rangs, $exclusions);
114
115        if (($regne == _TAXONOMIE_REGNE_FONGIQUE)
116        OR  ($regne == _TAXONOMIE_REGNE_VEGETAL)) {
117                if ($index_phylum = array_search(_TAXONOMIE_RANG_PHYLUM, $rangs))
118                        $rangs[$index_phylum] = _TAXONOMIE_RANG_DIVISION;
119        }
120
121        return $rangs;
122}
123
124?>
Note: See TracBrowser for help on using the repository browser.