valeurs de description du paquet
**/
function plugins_preparer_sql_plugin($plugin) {
include_spip('inc/svp_outiller');
$champs = array();
if (!$plugin) {
return $champs;
}
// On initialise les champs ne necessitant aucune transformation
$champs['categorie'] = (isset($plugin['categorie']) and $plugin['categorie']) ? $plugin['categorie'] : '';
$champs['etat'] = (isset($plugin['etat']) and $plugin['etat']) ? $plugin['etat'] : '';
$champs['version'] = $plugin['version'] ? normaliser_version($plugin['version']) : '';
$champs['version_base'] = (isset($plugin['schema']) and $plugin['schema']) ? $plugin['schema'] : '';
// Renommage de certains champs
$champs['logo'] = (isset($plugin['logo']) and $plugin['logo']) ? $plugin['logo'] : '';
$champs['lien_doc'] = (isset($plugin['documentation']) and $plugin['documentation']) ? normaliser_lien($plugin['documentation']) : '';
// 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($plugin['etat']) and isset($num[$plugin['etat']])) ? $num[$plugin['etat']] : 0;
// Tags : liste de mots-cles
$champs['tags'] = (isset($plugin['tags']) and $plugin['tags']) ? serialize($plugin['tags']) : '';
// On passe en utf-8 avec le bon charset les champs pouvant contenir des entites html
$champs['description'] = entite2charset($plugin['description'], 'utf-8');
// Traitement des auteurs, credits, licences et copyright
// -- on extrait les auteurs, licences et copyrights sous forme de tableaux
// -- depuis le commit 18294 du core la balise auteur est renvoyee sous forme de tableau mais
// contient toujours qu'un seul index
$balise_auteur = entite2charset($plugin['auteur'][0], 'utf-8');
$auteurs = normaliser_auteur_licence($balise_auteur, 'auteur');
$balise_licence = isset($plugin['licence'][0]) ? entite2charset($plugin['licence'][0], 'utf-8') : '';
$licences = normaliser_auteur_licence($balise_licence, 'licence');
// -- on merge les tableaux recuperes dans auteur et licence
$champs['auteur'] = $champs['licence'] = $champs['copyright'] = '';
if ($t = array_merge($auteurs['auteur'], $licences['auteur'])) {
$champs['auteur'] = serialize($t);
}
if ($t = array_merge($auteurs['licence'], $licences['licence'])) {
$champs['licence'] = serialize($t);
}
if ($t = array_merge($auteurs['copyright'], $licences['copyright'])) {
$champs['copyright'] = serialize($t);
}
// Extrait d'un nom et un slogan normalises
// Slogan : si vide on ne fait plus rien de special, on traitera ça a l'affichage
$champs['slogan'] = $plugin['slogan'] ? entite2charset($plugin['slogan'], 'utf-8') : '';
// Nom : on repere dans le nom du plugin un chiffre en fin de nom
// et on l'ampute de ce numero pour le normaliser
// et on passe tout en unicode avec le charset du site
$champs['nom'] = trim(entite2charset($plugin['nom'], 'utf-8'));
// Extraction de la compatibilite SPIP et construction de la liste des branches spip supportees
$champs['compatibilite_spip'] = ($plugin['compatibilite']) ? $plugin['compatibilite'] : '';
$champs['branches_spip'] = ($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);
// Calculer le champ 'procure' (tableau sérialisé prefixe => version)
$champs['procure'] = '';
if (!empty($plugin['procure'][0])) {
$champs['procure'] = array();
foreach ($plugin['procure'][0] as $procure) {
$p = strtoupper($procure['nom']);
if (
!isset($champs['procure'][$p])
or spip_version_compare($procure['version'], $champs['procure'][$p], '>')
) {
$champs['procure'][$p] = $procure['version'];
}
}
$champs['procure'] = serialize($champs['procure']);
}
// Champs non supportes par la DTD plugin et ne pouvant etre deduits d'autres balises
$champs['lien_demo'] = '';
$champs['lien_dev'] = '';
$champs['credit'] = '';
return $champs;
}
/**
* Normalise un nom issu d'un plugin.xml
*
* @todo Supprimer cette fonction qui ne sert nulle part ?
*
* @uses extraire_trads()
*
* @param string $nom
* Le nom
* @param string $langue
* La langue à extraire
* @param bool $supprimer_numero
* Supprimer les numéros ?
* @return string
* Le nom
**/
function normaliser_nom($nom, $langue = '', $supprimer_numero = true) {
include_spip('inc/texte');
// On extrait les traductions de l'eventuel multi
// Si le nom n'est pas un multi alors le tableau renvoye est de la forme '' => 'nom'
$noms = extraire_trads(str_replace(array('
)|