1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/spip_ynh.git synced 2024-09-03 20:25:59 +02:00
spip_ynh/sources/plugins-dist/svp/plugins/preparer_sql_paquet.php
2015-04-28 17:10:23 +02:00

108 lines
3.4 KiB
PHP

<?php
/**
* Fichier permettant de transformer les données d'un arbre de description
* originaire d'un paquet.xml dans un format compatible avec la base de données
*
* @plugin SVP pour SPIP
* @license GPL
* @package SPIP\SVP\Plugins
**/
if (!defined('_ECRIRE_INC_VERSION')) return;
/**
* Pour une description de plugin donnée (issue de la dtd de paquet.xml),
* prépare les données à installer en bdd
*
* Les données sont parfois sérialisées, parfois compilées
* pour tenir compte des spécificités de cette DTD et du stockage en bdd.
*
* @param array $plugin
* Description de plugin
* @return array
* Couples clés => valeurs de description du paquet
**/
function plugins_preparer_sql_paquet($plugin)
{
include_spip('inc/svp_outiller');
$champs = array();
if (!$plugin)
return $champs;
// On initialise les champs ne necessitant aucune transformation
foreach (array(
'categorie' => 'categorie',
'etat' => 'etat',
'version_base' => 'schema',
'logo' => 'logo',
'lien_doc' => 'documentation',
'lien_demo' => 'demonstration',
'lien_dev' => 'developpement'
) as $cle_champ => $cle_plugin)
{
$champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
? $plugin[$cle_plugin]
: '';
}
// on normalise la version 1.3.12 => 001.003.012
$champs['version'] = (isset($plugin['version']) AND $plugin['version'])
? normaliser_version($plugin['version'])
: '';
// On passe le prefixe en lettres majuscules comme ce qui est fait dans SPIP
// Ainsi les valeurs dans la table spip_plugins coincideront avec celles de la meta plugin
$champs['prefixe'] = strtoupper($plugin['prefix']);
// Indicateurs d'etat numerique (pour simplifier la recherche des maj de STP)
static $num = array('stable'=>4, 'test'=>3, 'dev'=>2, 'experimental'=>1);
$champs['etatnum'] = isset($num[$plugin['etat']]) ? $num[$plugin['etat']] : 0;
// On passe en utf-8 avec le bon charset les champs pouvant contenir des entites html
foreach (array(
'nom' => 'nom',
'description' => 'description',
'slogan' => 'slogan'
) as $cle_champ => $cle_plugin)
{
$champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
? entite2charset($plugin[$cle_plugin])
: '';
}
// Cles necessitant d'etre serialisees
// Tags : liste de mots-cles
// Traitement des auteurs, credits, licences et copyright
foreach (array(
'tags' => 'tags',
'auteur' => 'auteur',
'credit' => 'credit',
'licence' => 'licence',
'copyright' => 'copyright',
) as $cle_champ => $cle_plugin)
{
$champs[$cle_champ] = (isset($plugin[$cle_plugin]) and $plugin[$cle_plugin])
? serialize($plugin[$cle_plugin])
: '';
}
// Extraction de la compatibilite SPIP et construction de la liste des branches spip supportees
$champs['compatibilite_spip'] = (isset($plugin['compatibilite']) AND $plugin['compatibilite'])
? $plugin['compatibilite']
: '';
$champs['branches_spip'] = (isset($plugin['compatibilite']) AND $plugin['compatibilite'])
? compiler_branches_spip($plugin['compatibilite'])
: '';
// Construction du tableau des dependances necessite, lib et utilise
$dependances['necessite'] = $plugin['necessite'];
$dependances['librairie'] = $plugin['lib'];
$dependances['utilise'] = $plugin['utilise'];
$champs['dependances'] = serialize($dependances);
return $champs;
}
?>