3 * Plugin Zen-Garden pour Spip 3.0
4 * Licence GPL (c) 2006-2013 Cedric Morin
6 * @package SPIP\Zen-Garden\Fonctions
9 if (!defined("_ECRIRE_INC_VERSION")) return;
12 function zengarden_affiche_version_compatible($intervalle){
13 if (!strlen($intervalle)) return '';
14 if (!preg_match(',^[\[\(]([0-9.a-zRC\s]*)[;]([0-9.a-zRC\s]*)[\]\)]$,',$intervalle,$regs)) return false;
17 $mineure_inc = $intervalle{0}=="[";
18 $majeure_inc = substr($intervalle,-1)=="]";
19 if (strlen($mineure)){
20 if (!strlen($majeure))
21 $version = _T('zengarden:intitule_version') . ($mineure_inc ?
' ≥ ' : ' > ') . $mineure;
23 $version = $mineure . ($mineure_inc ?
' ≤ ' : ' < ') . _T('zengarden:intitule_version') . ($majeure_inc ?
' ≤ ' : ' < ') . $majeure;
26 $version = _T('zengarden:intitule_version') . ($majeure_inc ?
' ≤ ' : ' < ') . $majeure;
35 * Les thèmes peuvent être présent dans :
36 * - themes/* à la racine (ou autre _DIR_THEMES défini);
37 * - squelettes/themes/*;
43 function zengarden_liste_themes($tous){
44 include_spip('inc/zengarden');
48 // charger les themes de themes/
49 if (is_dir(_DIR_THEMES
))
50 $themes = array_merge($themes,zengarden_charge_themes(_DIR_THEMES
,$tous));
52 // ceux de squelettes/themes/
53 if (is_dir($skels=_DIR_RACINE
."squelettes/themes/"))
54 $themes = array_merge($themes,zengarden_charge_themes($skels,$tous));
56 // ceux de chaque dossier_squelettes/themes/
57 if (strlen($GLOBALS['dossier_squelettes'])){
58 $s = explode(":",$GLOBALS['dossier_squelettes']);
60 if (_DIR_RACINE
AND strncmp($d,_DIR_RACINE
,strlen(_DIR_RACINE
))!==0)
61 $d = _DIR_RACINE
. $d;
62 if (is_dir($f="$d/themes/") AND $f!=$skels)
63 $themes = array_merge($themes,zengarden_charge_themes($f,$tous));
68 $themes = array_merge($themes,zengarden_charge_themes(_DIR_PLUGINS
,$tous));
71 * Recherche spécifique
72 * Invalider les thèmes incompatibles
74 * Si le squelette ou un plugin définit la constante _ZENGARDEN_FILTRE_THEMES,
75 * on ne prend que les thèmes compatibles
76 * Sinon, si on a le plugin zpip-dist, on ne liste que les thèmes compatibles avec zpip-dist
78 * Pour être compatible un thème doit avoir un <utilise...> du squelette en question dans son paquet.xml
81 if (defined('_ZENGARDEN_FILTRE_THEMES')) $search=_ZENGARDEN_FILTRE_THEMES
;
82 elseif (defined('_DIR_PLUGIN_ZPIP')) $search="zpip";
83 elseif (defined('_DIR_PLUGIN_Z')) $search="z";
86 foreach ($themes as $k => $theme){
88 foreach ($theme['utilise'] as $u){
89 if (strncasecmp($u['nom'],$search,max(strlen($u['nom']),strlen($search)))==0){
104 * Insertion dans le pipeline filter_liste_plugins (SPIP)
106 * Enlève les thèmes de la liste des plugins dans le privé
109 * Le tableau de la liste des plugins
110 * @return array $flux
111 * Le tableau de la liste des plugins modifié
113 function zengarden_filtrer_liste_plugins($flux){
114 foreach($flux['data'] as $d=>$info){
115 if ($info['categorie']=='theme'){
116 unset($flux['data'][$d]);