source: spip-zone/_plugins_/svp/plugins/preparer_sql_plugin.php @ 48005

Last change on this file since 48005 was 48005, checked in by brunobergot@…, 10 years ago

Pour tonton qui ne peut pas commiter depuis son palace : suppression du traitement particulier sur les thèmes maintenant que le préfixe est unique + ajout des statistiques d'utilisation des plugins (stats.spip.org) avec mise à jour automatique possible

  • Property svn:eol-style set to native
File size: 5.1 KB
Line 
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
13if (!defined('_ECRIRE_INC_VERSION')) return;
14
15function 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
72function 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
100function 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?>
Note: See TracBrowser for help on using the repository browser.