Changeset 48470 in spip-zone
- Timestamp:
- Jun 3, 2011, 7:10:38 PM (10 years ago)
- Location:
- _plugins_/svp
- Files:
-
- 1 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/svp/base/svp_declarer.php
r48293 r48470 39 39 "date_modif" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", // la plus recente des paquets du plugin 40 40 "compatibilite_spip" => "varchar(24) DEFAULT '' NOT NULL", // union des intervalles des paquets du plugin 41 "branches_spip" => "varchar(255) DEFAULT '' NOT NULL", // union des branches spip supportees par les paquets du plugin 41 42 ); 42 43 … … 57 58 "version_base" => "varchar(24) DEFAULT '' NOT NULL", 58 59 "compatibilite_spip" => "varchar(24) DEFAULT '' NOT NULL", 60 "branches_spip" => "varchar(255) DEFAULT '' NOT NULL", // branches spip supportees (cf meta) 59 61 "description" => "text DEFAULT '' NOT NULL", 60 62 "auteur" => "text DEFAULT '' NOT NULL", -
_plugins_/svp/inc/svp_depoter.php
r48293 r48470 509 509 // On finalise le plugin en cours et on passe au suivant 510 510 if ($plugin_en_cours != $paquet['id_plugin']) { 511 // On deduit maintenant les branches de la compatibilite globale 512 $complements['branches_spip'] = compiler_branches_spip($complements['compatibilite_spip']); 511 513 // On met a jour le plugin en cours 512 514 if ($plugin_en_cours != 0) … … 516 518 // On passe au plugin suivant 517 519 $plugin_en_cours = $paquet['id_plugin']; 518 $complements = array('compatibilite_spip' => '', ' date_crea' => 0, 'date_modif' => 0);520 $complements = array('compatibilite_spip' => '', 'branches_spip' => '', 'date_crea' => 0, 'date_modif' => 0); 519 521 } 520 522 521 // On compile les compléments du plugin avec le paquet courant 523 // On compile les compléments du plugin avec le paquet courant sauf les branches 524 // qui sont deduites en fin de compilation de la compatibilite 522 525 if ($paquet['date_modif'] > $complements['date_modif']) 523 526 $complements['date_modif'] = $paquet['date_modif']; … … 554 557 'version_base' => $champs_aplat['version_base'], 555 558 'compatibilite_spip' => $champs_aplat['compatibilite_spip'], 559 'branches_spip' => $champs_aplat['branches_spip'], 556 560 'etat' => $champs_aplat['etat'], 557 561 'etatnum' => $champs_aplat['etatnum'], -
_plugins_/svp/inc/svp_intervaller.php
r48126 r48470 35 35 } 36 36 37 function extraire_bornes($intervalle ) {37 function extraire_bornes($intervalle, $initialiser=false) { 38 38 static $borne_vide = array('valeur' => '', 'incluse' => false); 39 $bornes = array('min' => $borne_vide, 'max' => $borne_vide); 39 static $borne_inf_init = array('valeur' => _SVP_VERSION_SPIP_MIN, 'incluse' => true); 40 static $borne_sup_init = array('valeur' => _SVP_VERSION_SPIP_MAX, 'incluse' => true); 41 42 if ($initialiser) 43 $bornes = array('min' => $borne_inf_init, 'max' => $borne_sup_init); 44 else 45 $bornes = array('min' => $borne_vide, 'max' => $borne_vide); 40 46 41 47 if ($intervalle … … 50 56 } 51 57 } 58 52 59 53 60 return $bornes; … … 59 66 . ($bornes['max']['incluse'] ? ']' : ($dtd=='paquet' ? '[' : ')')); 60 67 } 68 69 70 function compiler_branches_spip($intervalle) { 71 global $infos_branches_spip; 72 $liste_branches_spip = array_keys($GLOBALS['infos_branches_spip']); 73 74 $bornes = extraire_bornes($intervalle, false); 75 // On traite d'abord les cas ou l'intervalle est : 76 // - vide 77 // - non vide mais avec les deux bornes vides 78 // Dans ces cas la compatibilite est totale, on renvoie toutes les branches 79 if (!$intervalle OR (!$bornes['min']['valeur'] AND !$bornes['max']['valeur'])) 80 return implode(',', $liste_branches_spip); 81 82 // On force l'initialisation des bornes et on les nettoie des suffixes d'etat 83 $bornes = extraire_bornes($intervalle, true); 84 $borne_inf = strtolower(preg_replace(',([0-9])[\s-.]?(dev|alpha|a|beta|b|rc|pl|p),i','\\1',$bornes['min']['valeur'])); 85 $borne_sup = strtolower(preg_replace(',([0-9])[\s-.]?(dev|alpha|a|beta|b|rc|pl|p),i','\\1',$bornes['max']['valeur'])); 86 87 // On determine les branches inf et sup issues du phrasage de l'intervalle 88 // -- on initialise la branche inf de l'intervalle que l'on va preciser ensuite 89 $t = explode('.', $borne_inf); 90 $branche_inf = $t[0] . '.' . $t[1]; 91 // -- pour eviter toutes erreur fatale on verifie que la branche est bien dans la liste des possibles 92 // -- -> si non, on renvoie vide 93 if (!in_array($branche_inf, $liste_branches_spip)) 94 return ''; 95 // -- on complete la borne inf de l'intervalle de x.y en x.y.z et on determine la vraie branche 96 if (!$t[2]) { 97 if ($bornes['min']['incluse']) 98 $borne_inf = $infos_branches_spip[$branche_inf][0]; 99 else { 100 $branche_inf = $liste_branches_spip[array_search($branche_inf, $liste_branches_spip)+1]; 101 $borne_inf = $infos_branches_spip[$branche_inf][0]; 102 } 103 } 104 105 // -- on initialise la branche sup de l'intervalle que l'on va preciser ensuite 106 $t = explode('.', $borne_sup); 107 $branche_sup = $t[0] . '.' . $t[1]; 108 // -- pour eviter toutes erreur fatale on verifie que la branche est bien dans la liste des possibles 109 // -- -> si non, on renvoie vide 110 if (!in_array($branche_sup, $liste_branches_spip)) 111 return ''; 112 // -- on complete la borne sup de l'intervalle de x.y en x.y.z et on determine la vraie branche 113 if (!$t[2]) { 114 if ($bornes['max']['incluse']) 115 $borne_sup = $infos_branches_spip[$branche_sup][1]; 116 else { 117 $branche_sup = $liste_branches_spip[array_search($branche_sup, $liste_branches_spip)-1]; 118 $borne_sup = $infos_branches_spip[$branche_sup][1]; 119 } 120 } 121 122 // -- on verifie que les bornes sont bien dans l'ordre : 123 // -> sinon on retourne la branche sup uniquement 124 if (spip_version_compare($borne_inf, $borne_sup, '>=')) 125 return $branche_sup; 126 127 // A ce stade, on a un intervalle ferme en bornes ou en branches 128 // Il suffit de trouver les branches qui y sont incluses, sachant que les branches inf et sup 129 // le sont a coup sur maintenant 130 $index_inf = array_search($branche_inf, $liste_branches_spip); 131 $index_sup = array_search($branche_sup, $liste_branches_spip); 132 $liste = array(); 133 for ($i = $index_inf; $i <= $index_sup; $i++) { 134 $liste[] = $liste_branches_spip[$i]; 135 } 136 137 return implode(',', $liste); 138 } 139 61 140 ?> -
_plugins_/svp/plugins/preparer_sql_plugin.php
r48411 r48470 15 15 function plugins_preparer_sql_plugin($plugin) 16 16 { 17 include_spip('inc/svp_intervaller'); 18 17 19 $champs = array(); 18 20 if (!$plugin) … … 70 72 $champs['nom'] = normaliser_nom($plugin['nom'], 'fr', false); 71 73 72 // Extraction de la compatibilite SPIP 74 // Extraction de la compatibilite SPIP et construction de la liste des branches spip supportees 73 75 $champs['compatibilite_spip'] = ($plugin['compatible']) ? $plugin['compatible'] : ''; 76 $champs['branches_spip'] = ($plugin['compatible']) ? compiler_branches_spip($plugin['compatible']) : ''; 74 77 75 78 // Construction du tableau des dependances necessite, lib et utilise -
_plugins_/svp/svp_options.php
r48145 r48470 34 34 define('_SVP_REGEXP_BALISE_PAQUET', '#<paquet[^>]*>(.*)</paquet>#Uims'); 35 35 36 // Liste des categories de plugin 37 // --> A METTRE DANS SPIP !!! 38 $GLOBALS['categories_plugin'] = array( 39 'auteur', 40 'communication', 41 'date', 42 'divers', 43 'edition', 44 'maintenance', 45 'multimedia', 46 'navigation', 47 'outil', 48 'performance', 49 'statistique', 50 'squelette', 51 'theme', 52 'aucune' 53 ); 54 36 55 // Version SPIP minimale quand un plugin ne le precise pas 56 // -- Version SPIP correspondant a l'apparition des plugins 37 57 define('_SVP_VERSION_SPIP_MIN', '1.9.0'); 38 // Intervalles de compatibilite SPIP 39 define('_SVP_COMPATIBILITE_SPIP_TOUT', '[1.9.0;['); 40 define('_SVP_COMPATIBILITE_SPIP_NA', '];['); 58 // -- Pour l'instant on ne connait pas la borne sup exacte 59 define('_SVP_VERSION_SPIP_MAX', '3.0.99'); 60 61 // Liste des branches significatives de SPIP et de leurs bornes (versions min et max) 62 // A mettre a jour en fonction des sorties 63 $GLOBALS['infos_branches_spip'] = array( 64 '1.9' => array(_SVP_VERSION_SPIP_MIN,'1.9.2'), 65 '2.0' => array('2.0.0','2.0.15'), 66 '2.1' => array('2.1.0','2.1.10'), 67 '3.0' => array('3.0.0',_SVP_VERSION_SPIP_MAX) 68 ); 41 69 42 70 ?>
Note: See TracChangeset
for help on using the changeset viewer.