source: spip-zone/_plugins_/isocode/trunk/demo/isocode_fonctions.php @ 111409

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

Correction de l'initialisation du code de langue

  • Property svn:eol-style set to native
File size: 4.2 KB
Line 
1<?php
2/**
3 * Ce fichier contient l'ensemble des fonctions implémentant l'API du plugin.
4 *
5 * @package SPIP\ISOCODE\API
6 */
7if (!defined('_ECRIRE_INC_VERSION')) {
8        return;
9}
10
11
12/**
13 * @return array
14 */
15function isocode_erreur_codes_spip() {
16
17        $codes_verifies = array();
18
19        include_spip('inc/lang_liste');
20        if ($GLOBALS['codes_langues']) {
21                foreach ($GLOBALS['codes_langues'] as $_code => $_nom) {
22                        $from = array('spip_iso639codes');
23                        $select = array('*');
24                        if (strlen($_code) == 2) {
25                                // Si le code a une taille de 2 caractères on recherche de suite dans la table iso639codes
26                                // un élément dont le code ISO639-1 est égal.
27                                $where = array('code_639_1=' . sql_quote($_code));
28                                $codes_iso = sql_fetsel($select, $from, $where);
29                                if ($codes_iso) {
30                                        $codes_verifies['ok']['iso6391'][$_code] = $codes_iso;
31                                } else {
32                                        $codes_verifies['nok']['iso6391'][$_code] = array('nom_spip' => $_nom);
33                                }
34                        } elseif (strlen($_code) == 3) {
35                                // Si le code a une taille de 3 caractères on recherche :
36                                // - dans la table iso639codes un élément dont le code ISO639-3 est égal.
37                                // - et sinon dans la table iso639families un élément dont le code ISO639-5 est égal.
38                                $where = array('code_639_3=' . sql_quote($_code));
39                                $codes_iso = sql_allfetsel($select, $from, $where);
40                                if ($codes_iso) {
41                                        $codes_verifies['ok']['iso6393'][$_code] = $codes_iso;
42                                } else {
43                                        $where = array('code_639_5=' . sql_quote($_code));
44                                        $code_famille = sql_fetsel($select, array('spip_iso639families'), $where);
45                                        if ($code_famille) {
46                                                $codes_verifies['ok']['iso6395'][$_code] = array('nom_spip' => $_nom);
47                                        } else {
48                                                $codes_verifies['nok']['iso6393'][$_code] = array('nom_spip' => $_nom);
49                                        }
50                                }
51                        } else {
52                                $codes_verifies['nok']['spip'][$_code] = array('nom_spip' => $_nom);
53                        }
54                }
55        }
56
57        return $codes_verifies;
58}
59
60/**
61 * @return array
62 */
63function isocode_verifier_codes_spip() {
64
65        $codes_verifies = array();
66
67        include_spip('inc/lang_liste');
68        if ($GLOBALS['codes_langues']) {
69                foreach ($GLOBALS['codes_langues'] as $_code => $_nom) {
70                        $from = array('spip_iso639codes');
71                        $select = array('*');
72                        $codes_verifies[$_code] = array('nom_spip' => $_nom, 'type_code' => '', 'erreur' => false);
73                        if (strlen($_code) == 2) {
74                                // Si le code a une taille de 2 caractères on recherche de suite dans la table iso639codes
75                                // un élément dont le code ISO639-1 est égal.
76                                $where = array('code_639_1=' . sql_quote($_code));
77                                $codes_iso = sql_fetsel($select, $from, $where);
78                                if ($codes_iso) {
79                                        $codes_verifies[$_code] = array_merge($codes_verifies[$_code], $codes_iso);
80                                        $codes_verifies[$_code]['type_code'] = '639-1';
81                                } else {
82                                        $codes_verifies[$_code]['erreur'] = true;
83                                }
84                        } elseif (strlen($_code) == 3) {
85                                // Si le code a une taille de 3 caractères on recherche :
86                                // - dans la table iso639codes un élément dont le code ISO639-3 est égal.
87                                // - et sinon dans la table iso639families un élément dont le code ISO639-5 est égal.
88                                $where = array('code_639_3=' . sql_quote($_code));
89                                $codes_iso = sql_fetsel($select, $from, $where);
90                                if ($codes_iso) {
91                                        $codes_verifies[$_code] = array_merge($codes_verifies[$_code], $codes_iso);
92                                        $codes_verifies[$_code]['type_code'] = '639-3';
93                                } else {
94                                        $where = array('code_639_5=' . sql_quote($_code));
95                                        $code_famille = sql_fetsel($select, array('spip_iso639families'), $where);
96                                        if ($code_famille) {
97                                                $codes_verifies[$_code] = array_merge($codes_verifies[$_code], $code_famille);
98                                                $codes_verifies[$_code]['type_code'] = '639-5';
99                                        } else {
100                                                $codes_verifies[$_code]['erreur'] = true;
101                                        }
102                                }
103                        } else {
104                                $codes_verifies[$_code]['erreur'] = true;
105                        }
106                }
107        }
108
109        return $codes_verifies;
110}
111
112
113/**
114 * @return array
115 */
116function isocode_verifier_iso639_5() {
117
118        $codes_verifies = array();
119
120        $codes_639_5 = sql_allfetsel('*', 'spip_iso639families');
121        if ($codes_639_5) {
122                foreach ($codes_639_5 as $_code) {
123                        if (sql_countsel('spip_iso639macros', 'code_639_3=' . sql_quote($_code['code_639_5']))) {
124                                $codes_verifies['ok'][] = $_code['code_639_5'];
125                        } else {
126                                $codes_verifies['nok'][] = $_code['code_639_5'];
127                        }
128                }
129        }
130
131        return $codes_verifies;
132}
Note: See TracBrowser for help on using the repository browser.