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
7 * @plugin SVP pour SPIP
9 * @package SPIP\SVP\Plugins
11 if (!defined('_ECRIRE_INC_VERSION')) return;
14 * Pour une description de plugin donnée (issue de la dtd de paquet.xml),
15 * prépare les données à installer en bdd
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.
20 * @param array $plugin
21 * Description de plugin
23 * Couples clés => valeurs de description du paquet
25 function plugins_preparer_sql_paquet($plugin)
27 include_spip('inc/svp_outiller');
33 // On initialise les champs ne necessitant aucune transformation
35 'categorie' => 'categorie',
37 'version_base' => 'schema',
39 'lien_doc' => 'documentation',
40 'lien_demo' => 'demonstration',
41 'lien_dev' => 'developpement'
42 ) as $cle_champ => $cle_plugin)
44 $champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
45 ?
$plugin[$cle_plugin]
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'])
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']);
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;
63 // On passe en utf-8 avec le bon charset les champs pouvant contenir des entites html
66 'description' => 'description',
68 ) as $cle_champ => $cle_plugin)
70 $champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
71 ?
entite2charset($plugin[$cle_plugin])
75 // Cles necessitant d'etre serialisees
76 // Tags : liste de mots-cles
77 // Traitement des auteurs, credits, licences et copyright
82 'licence' => 'licence',
83 'copyright' => 'copyright',
84 ) as $cle_champ => $cle_plugin)
86 $champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
87 ?
serialize($plugin[$cle_plugin])
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']
95 $champs['branches_spip'] = (isset($plugin['compatibilite']) AND $plugin['compatibilite'])
96 ?
compiler_branches_spip($plugin['compatibilite'])
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);