[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / zen-garden / spip20 / plugins / get_infos.php
1 <?php
2 /*
3 * Plugin xxx
4 * (c) 2009 cedric
5 * Distribue sous licence GPL
6 *
7 */
8
9 if (!defined("_ECRIRE_INC_VERSION")) return;
10
11 // lecture du fichier de configuration d'un plugin
12 // http://doc.spip.org/@plugin_get_infos
13 function plugins_get_infos_dist($plug, $force_reload=false, $dir_plugins = _DIR_PLUGINS){
14 include_spip('inc/xml');
15 static $infos=array();
16 static $plugin_xml_cache=NULL;
17 if (!isset($infos[$dir_plugins][$plug]) OR $force_reload){
18 if ($plugin_xml_cache==NULL){
19 $plugin_xml_cache = array();
20 if (is_file($f=_DIR_TMP."plugin_xml.cache")){
21 lire_fichier($f,$contenu);
22 $plugin_xml_cache = unserialize($contenu);
23 if (!is_array($plugin_xml_cache)) $plugin_xml_cache = array();
24 }
25 }
26 $ret = array();
27 if (isset($plugin_xml_cache[$dir_plugins][$plug])){
28 $info = $plugin_xml_cache[$dir_plugins][$plug];
29 if (!$force_reload
30 AND isset($info['filemtime'])
31 AND @file_exists($f = $dir_plugins."$plug/plugin.xml")
32 AND (@filemtime($f)<=$info['filemtime']))
33 $ret = $info;
34 }
35 if (!count($ret)){
36 if ((@file_exists($dir_plugins))&&(is_dir($dir_plugins))){
37 if (@file_exists($f = $dir_plugins."$plug/plugin.xml")) {
38 $arbre = spip_xml_load($f);
39 if (!$arbre OR !isset($arbre['plugin']) OR !is_array($arbre['plugin']))
40 $arbre = array('erreur' => array(_T('erreur_plugin_fichier_def_incorrect')." : $plug/plugin.xml"));
41 }
42 else {
43 // pour arriver ici on l'a vraiment cherche...
44 $arbre = array('erreur' => array(_T('erreur_plugin_fichier_def_absent')." : $plug/plugin.xml"));
45 }
46 $verifie_conformite = charger_fonction('verifie_conformite','plugins');
47 $verifie_conformite($plug,$arbre,$dir_plugins);
48
49 include_spip('inc/charsets');
50 $ret['nom'] = charset2unicode(spip_xml_aplatit($arbre['nom']));
51 $ret['version'] = trim(end($arbre['version']));
52 if (isset($arbre['auteur']))
53 $ret['auteur'] = spip_xml_aplatit($arbre['auteur']);
54 if (isset($arbre['icon']))
55 $ret['icon'] = spip_xml_aplatit($arbre['icon']);
56 if (isset($arbre['description']))
57 $ret['description'] = spip_xml_aplatit($arbre['description']);
58 if (isset($arbre['lien']))
59 $ret['lien'] = join(' ',$arbre['lien']);
60 if (isset($arbre['etat']))
61 $ret['etat'] = trim(end($arbre['etat']));
62 if (isset($arbre['options']))
63 $ret['options'] = $arbre['options'];
64 if (isset($arbre['licence']))
65 $ret['licence'] = spip_xml_aplatit($arbre['licence']);
66 if (isset($arbre['install']))
67 $ret['install'] = $arbre['install'];
68 if (isset($arbre['fonctions']))
69 $ret['fonctions'] = $arbre['fonctions'];
70 $ret['prefix'] = trim(array_pop($arbre['prefix']));
71 if (isset($arbre['pipeline']))
72 $ret['pipeline'] = $arbre['pipeline'];
73 if (isset($arbre['erreur']))
74 $ret['erreur'] = $arbre['erreur'];
75 if (isset($arbre['version_base']))
76 $ret['version_base'] = trim(end($arbre['version_base']));
77 $ret['necessite'] = $arbre['necessite'];
78 $ret['utilise'] = $arbre['utilise'];
79 $ret['path'] = $arbre['path'];
80 if (isset($arbre['noisette']))
81 $ret['noisette'] = $arbre['noisette'];
82
83 include_spip('inc/bandeau');
84 $les_boutons = boutons_parse($arbre);
85 $ret['bouton'] = $les_boutons['bouton'];
86 $ret['onglet'] = $les_boutons['onglet'];
87
88 if ($t=@filemtime($f)){
89 $ret['filemtime'] = $t;
90 $plugin_xml_cache[$plug]=$ret;
91 ecrire_fichier(_DIR_TMP."plugin_xml.cache",serialize($plugin_xml_cache));
92 }
93 }
94 }
95 $infos[$dir_plugins][$plug] = $ret;
96 }
97 return $infos[$dir_plugins][$plug];
98 }
99
100
101 include_spip('inc/bandeau');
102 if (!function_exists('boutons_parse')){
103 function boutons_parse($arbre){
104 $ret = array('bouton'=>array(),'onglet'=>array());
105 // recuperer les boutons et onglets si necessaire
106 spip_xml_match_nodes(",^(bouton|onglet)\s,",$arbre,$les_boutons);
107 if (is_array($les_boutons) && count($les_boutons)){
108 $ret['bouton'] = array();
109 $ret['onglet'] = array();
110 foreach($les_boutons as $bouton => $val) {
111 $bouton = spip_xml_decompose_tag($bouton);
112 $type = reset($bouton);
113 $bouton = end($bouton);
114 if (isset($bouton['id'])){
115 $id = $bouton['id'];
116 $val = reset($val);
117 if(is_array($val)){
118 $ret[$type][$id]['parent'] = isset($bouton['parent'])?$bouton['parent']:'';
119 $ret[$type][$id]['position'] = isset($bouton['position'])?$bouton['position']:'';
120 $ret[$type][$id]['titre'] = isset($val['titre'])?trim(spip_xml_aplatit($val['titre'])):'';
121 $ret[$type][$id]['icone'] = isset($val['icone'])?trim(end($val['icone'])):'';
122 $ret[$type][$id]['url'] = isset($val['url'])?trim(end($val['url'])):'';
123 $ret[$type][$id]['args'] = isset($val['args'])?trim(end($val['args'])):'';
124 }
125 }
126 }
127 }
128 return $ret;
129 }
130 }
131
132 ?>