[PLUGINS] +set de base
[lhc/web/www.git] / www / plugins / zen-garden-2 / zengarden_fonctions.php
1 <?php
2 /**
3 * Plugin Zen-Garden pour Spip 3.0
4 * Licence GPL (c) 2006-2013 Cedric Morin
5 *
6 * @package SPIP\Zen-Garden\Fonctions
7 */
8
9 if (!defined("_ECRIRE_INC_VERSION")) return;
10
11
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;
15 $mineure = $regs[1];
16 $majeure = $regs[2];
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 ? ' &ge; ' : ' &gt; ') . $mineure;
22 else
23 $version = $mineure . ($mineure_inc ? ' &le; ' : ' &lt; ') . _T('zengarden:intitule_version') . ($majeure_inc ? ' &le; ' : ' &lt; ') . $majeure;
24 }
25 else {
26 $version = _T('zengarden:intitule_version') . ($majeure_inc ? ' &le; ' : ' &lt; ') . $majeure;
27 }
28
29 return $version;
30 }
31
32 /**
33 * Lister les thèmes
34 *
35 * Les thèmes peuvent être présent dans :
36 * - themes/* à la racine (ou autre _DIR_THEMES défini);
37 * - squelettes/themes/*;
38 * - plugins/*;
39 *
40 * @param bool $tous
41 * @return array
42 */
43 function zengarden_liste_themes($tous){
44 include_spip('inc/zengarden');
45
46 $themes = array();
47
48 // charger les themes de themes/
49 if (is_dir(_DIR_THEMES))
50 $themes = array_merge($themes,zengarden_charge_themes(_DIR_THEMES,$tous));
51
52 // ceux de squelettes/themes/
53 if (is_dir($skels=_DIR_RACINE."squelettes/themes/"))
54 $themes = array_merge($themes,zengarden_charge_themes($skels,$tous));
55
56 // ceux de chaque dossier_squelettes/themes/
57 if (strlen($GLOBALS['dossier_squelettes'])){
58 $s = explode(":",$GLOBALS['dossier_squelettes']);
59 foreach($s as $d){
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));
64 }
65 }
66
67 // ceux de plugins/
68 $themes = array_merge($themes,zengarden_charge_themes(_DIR_PLUGINS,$tous));
69
70 /**
71 * Recherche spécifique
72 * Invalider les thèmes incompatibles
73 *
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
77 *
78 * Pour être compatible un thème doit avoir un <utilise...> du squelette en question dans son paquet.xml
79 */
80 $search = "";
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";
84
85 if ($search){
86 foreach ($themes as $k => $theme){
87 $keep = false;
88 foreach ($theme['utilise'] as $u){
89 if (strncasecmp($u['nom'],$search,max(strlen($u['nom']),strlen($search)))==0){
90 $keep = true;
91 continue;
92 }
93 }
94 if (!$keep)
95 unset($themes[$k]);
96 }
97 }
98
99 // et voila
100 return $themes;
101 }
102
103 /**
104 * Insertion dans le pipeline filter_liste_plugins (SPIP)
105 *
106 * Enlève les thèmes de la liste des plugins dans le privé
107 *
108 * @param array $flux
109 * Le tableau de la liste des plugins
110 * @return array $flux
111 * Le tableau de la liste des plugins modifié
112 */
113 function zengarden_filtrer_liste_plugins($flux){
114 foreach($flux['data'] as $d=>$info){
115 if ($info['categorie']=='theme'){
116 unset($flux['data'][$d]);
117 }
118 }
119 return $flux;
120 }
121
122 ?>