[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins-dist / svp / plugins / preparer_sql_paquet.php
index 287ba84..438273f 100644 (file)
@@ -7,68 +7,68 @@
  * @plugin SVP pour SPIP
  * @license GPL
  * @package SPIP\SVP\Plugins
-**/
-if (!defined('_ECRIRE_INC_VERSION')) return;
+ **/
+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 
+ * 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)
-{
+ **/
+function plugins_preparer_sql_paquet($plugin) {
        include_spip('inc/svp_outiller');
 
        $champs = array();
-       if (!$plugin)
+       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])
+                        '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'])
-                       : '';
+       $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);
+       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])
+                        '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], 'utf-8')
                        : '';
        }
 
@@ -76,33 +76,46 @@ function plugins_preparer_sql_paquet($plugin)
        // 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])
+                        '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'])
-                       : '';
-       
+       $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);
+       $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']);
+       }
 
        return $champs;
 }
-
-?>