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")) {
13 function zengarden_affiche_version_compatible($intervalle){
14 if (!strlen($intervalle)) return '';
15 if (!preg_match(',^[\[\(]([0-9.a-zRC\s]*)[;]([0-9.a-zRC\s]*)[\]\)]$,',$intervalle,$regs)) return false;
18 $mineure_inc = $intervalle{0}=="[";
19 $majeure_inc = substr($intervalle,-1)=="]";
20 if (strlen($mineure)){
21 if (!strlen($majeure))
22 $version = _T('zengarden:intitule_version') . ($mineure_inc ?
' ≥ ' : ' > ') . $mineure;
24 $version = $mineure . ($mineure_inc ?
' ≤ ' : ' < ') . _T('zengarden:intitule_version') . ($majeure_inc ?
' ≤ ' : ' < ') . $majeure;
27 $version = _T('zengarden:intitule_version') . ($majeure_inc ?
' ≤ ' : ' < ') . $majeure;
36 * Les thèmes peuvent être présent dans :
37 * - themes/* à la racine (ou autre _DIR_THEMES défini);
38 * - squelettes/themes/*;
44 function zengarden_liste_themes($tous){
45 include_spip('inc/zengarden');
49 // charger les themes de themes-dist/
50 if (is_dir(_DIR_THEMES_DIST
))
51 $themes = array_merge($themes, zengarden_charge_themes(_DIR_THEMES_DIST
, $tous));
53 // charger les themes de themes/
54 if (is_dir(_DIR_THEMES
))
55 $themes = array_merge($themes, zengarden_charge_themes(_DIR_THEMES
, $tous));
57 // ceux de squelettes/themes/
58 if (is_dir($skels=_DIR_RACINE
."squelettes/themes/"))
59 $themes = array_merge($themes,zengarden_charge_themes($skels,$tous));
61 // ceux de chaque dossier_squelettes/themes/
62 if (strlen($GLOBALS['dossier_squelettes'])){
63 $s = explode(":",$GLOBALS['dossier_squelettes']);
65 if (_DIR_RACINE
AND strncmp($d,_DIR_RACINE
,strlen(_DIR_RACINE
))!==0)
66 $d = _DIR_RACINE
. $d;
67 if (is_dir($f="$d/themes/") AND $f!=$skels)
68 $themes = array_merge($themes,zengarden_charge_themes($f,$tous));
73 $themes = array_merge($themes,zengarden_charge_themes(_DIR_PLUGINS
,$tous));
76 * Recherche spécifique
77 * Invalider les thèmes incompatibles
79 * Si le squelette ou un plugin définit la constante _ZENGARDEN_FILTRE_THEMES,
80 * on ne prend que les thèmes compatibles
81 * Sinon, si on a le plugin zpip-dist, on ne liste que les thèmes compatibles avec zpip-dist
83 * Pour être compatible un thème doit avoir un <utilise...> du squelette en question dans son paquet.xml
86 if (defined('_ZENGARDEN_FILTRE_THEMES')) $search=_ZENGARDEN_FILTRE_THEMES
;
87 elseif (defined('_DIR_PLUGIN_ZPIP')) $search="zpip";
88 elseif (defined('_DIR_PLUGIN_Z')) $search="z";
91 foreach ($themes as $k => $theme){
93 foreach ($theme['utilise'] as $u){
94 if (strncasecmp($u['nom'],$search,max(strlen($u['nom']),strlen($search)))==0){
109 * Insertion dans le pipeline filter_liste_plugins (SPIP)
111 * Enlève les thèmes de la liste des plugins dans le privé
114 * Le tableau de la liste des plugins
115 * @return array $flux
116 * Le tableau de la liste des plugins modifié
118 function zengarden_filtrer_liste_plugins($flux){
119 foreach($flux['data'] as $d=>$info){
120 if ($info['categorie']=='theme'){
121 unset($flux['data'][$d]);
130 * Afficher les auteurs ou licences
132 * Vient de plugin.xml ou paquet.xml
134 * @param array $donnees
137 function zengarden_affiche_info($donnees) {
138 if (is_array($donnees) AND count($donnees)) {
140 foreach ($donnees as $d) {
144 $liste[] = $d['nom'];
147 return implode(',', $liste);