1 | <?php |
---|
2 | |
---|
3 | /***************************************************************************\ |
---|
4 | * SPIP, Systeme de publication pour l'internet * |
---|
5 | * * |
---|
6 | * Copyright (c) 2001-2011 * |
---|
7 | * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * |
---|
8 | * * |
---|
9 | * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * |
---|
10 | * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * |
---|
11 | \***************************************************************************/ |
---|
12 | |
---|
13 | if (!defined('_ECRIRE_INC_VERSION')) return; |
---|
14 | |
---|
15 | function plugins_preparer_sql_plugin($plugin) |
---|
16 | { |
---|
17 | $champs = array(); |
---|
18 | if (!$plugin) |
---|
19 | return $champs; |
---|
20 | |
---|
21 | // On initialise les champs ne necessitant aucune transformation |
---|
22 | $champs['categorie'] = $plugin['categorie'] ? $plugin['categorie'] : ''; |
---|
23 | $champs['etat'] = $plugin['etat'] ? $plugin['etat'] : ''; |
---|
24 | $champs['version'] = $plugin['version'] ? $plugin['version'] : ''; |
---|
25 | $champs['version_base'] = $plugin['version_base'] ? $plugin['version_base'] : ''; |
---|
26 | $champs['lien'] = $plugin['lien'] ? $plugin['lien'] : ''; |
---|
27 | |
---|
28 | // Renommage de certains champs |
---|
29 | $champs['logo'] = $plugin['icon'] ? $plugin['icon'] : ''; |
---|
30 | // On passe le prefixe en lettres majuscules comme ce qui est fait dans SPIP |
---|
31 | // Ainsi les valeurs dans la table spip_plugins coincideront avec celles de la meta plugin |
---|
32 | $champs['prefixe'] = strtoupper($plugin['prefix']); |
---|
33 | |
---|
34 | // Indicateurs d'etat numerique (pour simplifier la recherche des maj de STP) |
---|
35 | static $num = array('stable'=>4, 'test'=>3, 'dev'=>2, 'experimental'=>1); |
---|
36 | $champs['etatnum'] = isset($num[$plugin['etat']]) ? $num[$plugin['etat']] : 0; |
---|
37 | |
---|
38 | // Tags : liste de mots-cles |
---|
39 | $champs['tags'] = ($plugin['tags']) ? serialize($plugin['tags']) : ''; |
---|
40 | |
---|
41 | // On passe en utf-8 avec le bon charset les champs pouvant contenir des entites html |
---|
42 | $champs['description'] = unicode2charset(html2unicode($plugin['description'])); |
---|
43 | $champs['auteur'] = unicode2charset(html2unicode($plugin['auteur'])); |
---|
44 | $champs['licence'] = unicode2charset(html2unicode($plugin['licence'])); |
---|
45 | |
---|
46 | // Extrait d'un nom et un slogan normalises |
---|
47 | $plugin['slogan'] = unicode2charset(html2unicode($plugin['slogan'])); |
---|
48 | $plugin['nom'] = unicode2charset(html2unicode($plugin['nom'])); |
---|
49 | // Calcul *temporaire* de la nouvelles balise slogan si celle-ci n'est |
---|
50 | // pas renseignee et de la balise nom. Ceci devrait etre temporaire jusqu'a la nouvelle ere |
---|
51 | // glaciaire des plugins |
---|
52 | // - Slogan : si vide alors on prend la premiere phrase de la description limitee a 255 |
---|
53 | $champs['slogan'] = (!$plugin['slogan']) ? normaliser_slogan($champs['description']) : $plugin['slogan']; |
---|
54 | // - Nom : on repere dans le nom du plugin un chiffre en fin de nom |
---|
55 | // et on l'ampute de ce numero pour le normaliser |
---|
56 | // et on passe tout en unicode avec le charset du site |
---|
57 | $champs['nom'] = normaliser_nom($plugin['nom']); |
---|
58 | |
---|
59 | // Extraction de la compatibilite SPIP |
---|
60 | $champs['version_spip'] = ($plugin['compatible']) ? $plugin['compatible'] : ''; |
---|
61 | |
---|
62 | // Construction du tableau des dependances necessite, lib et utilise |
---|
63 | $dependances['necessite'] = $plugin['necessite']; |
---|
64 | $dependances['librairie'] = $plugin['lib']; |
---|
65 | $dependances['utilise'] = $plugin['utilise']; |
---|
66 | $champs['dependances'] = serialize($dependances); |
---|
67 | |
---|
68 | return $champs; |
---|
69 | } |
---|
70 | |
---|
71 | |
---|
72 | function normaliser_slogan($description) { |
---|
73 | include_spip('inc/texte'); |
---|
74 | |
---|
75 | // On extrait les traductions de l'eventuel multi |
---|
76 | // Si le nom n'est pas un multi alors le tableau renvoye est de la forme '' => 'nom' |
---|
77 | $descriptions = extraire_trads(str_replace(array('<multi>', '</multi>'), array(), $description, $nbr_replace)); |
---|
78 | $multi = ($nbr_replace > 0) ? true : false; |
---|
79 | |
---|
80 | // On boucle sur chaque multi ou sur la chaine elle-meme en extrayant le slogan |
---|
81 | // dans les differentes langues |
---|
82 | $slogan = ''; |
---|
83 | foreach ($descriptions as $_lang => $_descr) { |
---|
84 | $_descr = trim($_descr); |
---|
85 | if (!$_lang) |
---|
86 | $_lang = 'fr'; |
---|
87 | $nbr_matches = preg_match(',^(.+)[.!?\r\n\f],Um', $_descr, $matches); |
---|
88 | $slogan .= (($multi) ? '[' . $_lang . ']' : '') . |
---|
89 | (($nbr_matches > 0) ? trim($matches[1]) : couper($_descr, 150, '')); |
---|
90 | } |
---|
91 | |
---|
92 | if ($slogan) |
---|
93 | // On renvoie un nouveau slogan multi ou pas |
---|
94 | $slogan = (($multi) ? '<multi>' : '') . $slogan . (($multi) ? '</multi>' : ''); |
---|
95 | |
---|
96 | return $slogan; |
---|
97 | } |
---|
98 | |
---|
99 | |
---|
100 | function normaliser_nom($nom) { |
---|
101 | include_spip('inc/texte'); |
---|
102 | |
---|
103 | // On extrait les traductions de l'eventuel multi |
---|
104 | // Si le nom n'est pas un multi alors le tableau renvoye est de la forme '' => 'nom' |
---|
105 | $noms = extraire_trads(str_replace(array('<multi>', '</multi>'), array(), $nom, $nbr_replace)); |
---|
106 | $multi = ($nbr_replace > 0) ? true : false; |
---|
107 | |
---|
108 | $nouveau_nom = ''; |
---|
109 | foreach ($noms as $_lang => $_nom) { |
---|
110 | $_nom = trim($_nom); |
---|
111 | if (!$_lang) |
---|
112 | $_lang = 'fr'; |
---|
113 | $nbr_matches = preg_match(',(.+)(\s+[\d._]*)$,Um', $_nom, $matches); |
---|
114 | $nouveau_nom .= (($multi) ? '[' . $_lang . ']' : '') . |
---|
115 | (($nbr_matches > 0) ? trim($matches[1]) : $_nom); |
---|
116 | } |
---|
117 | |
---|
118 | if ($nouveau_nom) |
---|
119 | // On renvoie un nouveau nom multi ou pas sans la valeur de la branche |
---|
120 | $nouveau_nom = (($multi) ? '<multi>' : '') . $nouveau_nom . (($multi) ? '</multi>' : ''); |
---|
121 | |
---|
122 | return $nouveau_nom; |
---|
123 | } |
---|
124 | |
---|
125 | ?> |
---|