[SPIP] +spip v3.0.17
[lhc/web/clavette_www.git] / www / plugins-dist / svp / plugins / preparer_sql_paquet.php
1 <?php
2
3 /**
4 * Fichier permettant de transformer les données d'un arbre de description
5 * originaire d'un paquet.xml dans un format compatible avec la base de données
6 *
7 * @plugin SVP pour SPIP
8 * @license GPL
9 * @package SPIP\SVP\Plugins
10 **/
11 if (!defined('_ECRIRE_INC_VERSION')) return;
12
13 /**
14 * Pour une description de plugin donnée (issue de la dtd de paquet.xml),
15 * prépare les données à installer en bdd
16 *
17 * Les données sont parfois sérialisées, parfois compilées
18 * pour tenir compte des spécificités de cette DTD et du stockage en bdd.
19 *
20 * @param array $plugin
21 * Description de plugin
22 * @return array
23 * Couples clés => valeurs de description du paquet
24 **/
25 function plugins_preparer_sql_paquet($plugin)
26 {
27 include_spip('inc/svp_outiller');
28
29 $champs = array();
30 if (!$plugin)
31 return $champs;
32
33 // On initialise les champs ne necessitant aucune transformation
34 foreach (array(
35 'categorie' => 'categorie',
36 'etat' => 'etat',
37 'version_base' => 'schema',
38 'logo' => 'logo',
39 'lien_doc' => 'documentation',
40 'lien_demo' => 'demonstration',
41 'lien_dev' => 'developpement'
42 ) as $cle_champ => $cle_plugin)
43 {
44 $champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
45 ? $plugin[$cle_plugin]
46 : '';
47 }
48
49 // on normalise la version 1.3.12 => 001.003.012
50 $champs['version'] = (isset($plugin['version']) AND $plugin['version'])
51 ? normaliser_version($plugin['version'])
52 : '';
53
54 // On passe le prefixe en lettres majuscules comme ce qui est fait dans SPIP
55 // Ainsi les valeurs dans la table spip_plugins coincideront avec celles de la meta plugin
56 $champs['prefixe'] = strtoupper($plugin['prefix']);
57
58 // Indicateurs d'etat numerique (pour simplifier la recherche des maj de STP)
59 static $num = array('stable'=>4, 'test'=>3, 'dev'=>2, 'experimental'=>1);
60 $champs['etatnum'] = isset($num[$plugin['etat']]) ? $num[$plugin['etat']] : 0;
61
62
63 // On passe en utf-8 avec le bon charset les champs pouvant contenir des entites html
64 foreach (array(
65 'nom' => 'nom',
66 'description' => 'description',
67 'slogan' => 'slogan'
68 ) as $cle_champ => $cle_plugin)
69 {
70 $champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
71 ? entite2charset($plugin[$cle_plugin])
72 : '';
73 }
74
75 // Cles necessitant d'etre serialisees
76 // Tags : liste de mots-cles
77 // Traitement des auteurs, credits, licences et copyright
78 foreach (array(
79 'tags' => 'tags',
80 'auteur' => 'auteur',
81 'credit' => 'credit',
82 'licence' => 'licence',
83 'copyright' => 'copyright',
84 ) as $cle_champ => $cle_plugin)
85 {
86 $champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
87 ? serialize($plugin[$cle_plugin])
88 : '';
89 }
90
91 // Extraction de la compatibilite SPIP et construction de la liste des branches spip supportees
92 $champs['compatibilite_spip'] = (isset($plugin['compatibilite']) AND $plugin['compatibilite'])
93 ? $plugin['compatibilite']
94 : '';
95 $champs['branches_spip'] = (isset($plugin['compatibilite']) AND $plugin['compatibilite'])
96 ? compiler_branches_spip($plugin['compatibilite'])
97 : '';
98
99 // Construction du tableau des dependances necessite, lib et utilise
100 $dependances['necessite'] = $plugin['necessite'];
101 $dependances['librairie'] = $plugin['lib'];
102 $dependances['utilise'] = $plugin['utilise'];
103 $champs['dependances'] = serialize($dependances);
104
105 return $champs;
106 }
107
108 ?>