source: spip-zone/_plugins_/apropos/trunk/apropos_fonctions - copie.php @ 53793

Last change on this file since 53793 was 53793, checked in by jp.GUIHARD@…, 9 years ago

Version de travail exclusivement pour Spip 3

File size: 8.7 KB
Line 
1<?php
2/*
3 * Plugin A propos des plugins pour SPIP 2
4 * Liste les plugins actifs avec affichage icon, nom, version, etat, short description
5 * Utilisation intensive des fonctions faisant cela dans le code de SPIP
6 * Auteur Jean-Philippe Guihard
7 * version 0.2 du 06 janvier 2011, 23h40
8 * ajout de la possibilite de n'afficher que le nombre de plugin et extension 
9 * code emprunte dans le code source de SPIP
10 */
11/*
12include_spip('inc/texte');
13include_spip('inc/plugin');
14include_spip('exec/admin_plugin');
15include_spip('inc/charsets');
16*/
17
18include_spip('inc/charsets');
19include_spip('inc/texte');
20include_spip('inc/plugin'); // pour plugin_est_installe
21include_spip('inc/xml');
22
23//Creation de la balise #APROPOS
24function balise_APROPOS_dist($p) {
25        //recupere un eventuel argument
26        $premier = interprete_argument_balise(1, $p);
27        //s'il y en a 1, on traite la chose
28        if ($premier != ''){
29        $p->code = 'calcul_info_apropos(' . $premier . ')';
30        }else{
31        //si pas d\'argument, on affiche la liste des plugins
32        $p->code = 'calcul_info_apropos("liste")';
33        }
34        $p->interdire_scripts = false;
35        return $p;
36}
37
38// fait l tri dans l'argument passé avec la balise : apropos|liste, apropos|nombre, apropos|plugins, apropos|extensions
39// liste pour afficher la totale,
40// nombre pour afficher le nombre total plugin et extensions
41// plugins pour afficher le nombre de plugins
42// extensions pour afficher le nombre d'extensions
43
44function calcul_info_apropos($params){
45// si parametre liste, alors tout afficher
46if ($params == "liste"){
47$affiche = charger_fonction('admin_plugin','exec');
48$lcpa = liste_chemin_plugin_actifs();
49$lpf = liste_plugin_files();
50
51/* on s'occupe de la liste des extensions */
52$liste_extensions_actives = apropos_affiche_les_extension(_DIR_EXTENSIONS);
53// liste les plugins
54$liste_des_pgI_actifs = apropos_affiche_les_PiG($lcpa,$lpf);
55return $liste_des_pgI_actifs.$liste_extensions_actives;
56}
57
58// si parametre nombre, alors afficher que le nombre de plugins et extensions
59if ($params == "nombre"){
60$pig = liste_chemin_plugin_actifs();
61$ext = liste_plugin_files(_DIR_EXTENSIONS);
62$nbre_pig = count($pig);
63$nbre_ext = count($ext);
64return $nbre_ext+$nbre_pig;
65}
66if ($params == "plugins"){
67$pig = liste_chemin_plugin_actifs();
68$nbre_pig = count($pig);
69return $nbre_pig;
70}if ($params == "extensions"){
71$ext = liste_plugin_files(_DIR_EXTENSIONS);
72$nbre_ext = count($ext);
73return $nbre_ext;
74}}
75
76function apropos_affiche_les_extension($liste_extensions_actives){
77        $rese = "";
78        if ($liste_extensions = liste_plugin_files(_DIR_EXTENSIONS)) {
79                $rese .= "<div class='apropos-liste'>";
80                $rese .= "<h3>".count($liste_extensions)." extensions activées automatiquement.</h3>";
81                $format = 'liste'; 
82                $rese .= apropos_plugins_afficher_list_dist(self(), $liste_extensions,$liste_extensions, _DIR_EXTENSIONS);// surcharge de fonction
83                $rese .= "</div>\n";
84        }
85        return $rese;
86}
87/* Fin liste les extensions */
88
89
90/* les fonctions utilisees pour les plugins */
91// entete liste des plugins pour affichage du nombre du plugin actives
92function apropos_affiche_les_PiG($lcpa,$lpf){
93                $h3 = "<div class='apropos-liste'><h3>".sinon(
94                                                singulier_ou_pluriel(count($lcpa), 'plugins_actif_un', 'plugins_actifs', 'count'),
95                                                _T('plugins_actif_aucun')
96                                                )."</h3>";
97                $corps = apropos_affiche_les_plugin($lcpa, $lcpa, $format);
98return $h3.$corps."</div>\n";
99}
100
101// Extrait de http://doc.spip.org/@affiche_les_plugins
102function apropos_affiche_les_plugin($liste_plugins, $liste_plugins_actifs, $format='liste'){
103        if (!$format)
104                $format = 'liste';
105        if (!in_array($format,array('liste','repertoires')))
106                $format = 'repertoires';
107        $res = apropos_plugins_afficher_list_dist(self(), $liste_plugins,$liste_plugins_actifs);
108
109        if (!$res) return "";
110        return  $res;
111}
112
113// Extrait de  http://doc.spip.org/@affiche_liste_plugins
114/* Creation de la liste des plugins actifs, trie de la liste par ordre alphabetique*/
115function apropos_plugins_afficher_list_dist($url_page,$liste_plugins, $liste_plugins_actifs, $dir_plugins=_DIR_PLUGINS,$afficher_un = 'afficher_plugin'){
116        $get_infos = charger_fonction('get_infos','plugins');
117       
118        // je recupere la liste des plugin par leur nom
119        $liste_plugins = array_flip($liste_plugins);
120        foreach(array_keys($liste_plugins) as $chemin) {
121                $info = $get_infos($chemin, false, $dir_plugins);
122                $liste_plugins[$chemin] = strtoupper(trim(typo(translitteration(unicode2charset(html2unicode($info['nom']))))));
123        }
124       
125        // je trie cette liste par le nm de chacun
126        asort($liste_plugins);
127        $exposed = urldecode(_request('plugin'));
128
129        $block_par_lettre = false;//count($liste_plugins)>10;
130        $fast_liste_plugins_actifs = array_flip($liste_plugins_actifs);
131        $res = '';
132        $block = '';
133        $initiale = '';
134        $block_actif = false;
135       
136        // pour chaque plugin, je vais aller chercher les informations complementaires a afficher
137        // en l'occurrence, nom, version, etat, slogan, description et logo.
138        foreach($liste_plugins as $plug => $nom){
139                $block .= apropos_plugins_afficher_plugins($url_page, $plug, "item", $dir_plugins)."\n";
140        }
141
142        return "<ul>".$block."</ul>";
143}
144
145// Extrait de  http://doc.spip.org/@ligne_plug
146/* Extrait les infos de chaque plugin */
147function apropos_plugins_afficher_plugins($url_page, $plug_file, $class_li="item", $dir_plugins=_DIR_PLUGINS) {
148
149        $force_reload = (_request('var_mode')=='recalcul');
150        $get_infos = charger_fonction('get_infos','plugins');
151        $info = $get_infos($plug_file, $force_reload, $dir_plugins);
152        $leBloc = charger_fonction('afficher_plugin', 'plugins');
153        $leResume = apropos_plugin_resumer($info, $dir_plugins, $plug_file, $url_page);
154        return "<li>"
155        . $leResume
156        . $erreur
157        ."</li>";
158}
159
160// Extrait de Cartouche Resume a modifier pour l'affichage final
161/* Traite les infos a afficher */
162function apropos_plugin_resumer($info, $dir_plugins, $plug_file, $url_page) {
163        $prefix = $info['prefix'];
164        $dir = "$dir_plugins$plug_file";
165        $slogan = PtoBR(plugin_propre($info['slogan'], "$dir/lang/paquet-$prefix"));
166        // une seule ligne dans le slogan : couper si besoin
167        if (($p=strpos($slogan, "<br />"))!==FALSE)
168                $slogan = substr($slogan, 0,$p);
169        // couper par securite
170        $slogan = couper($slogan, 180);
171       
172        $url = parametre_url($url_page, "plugin", substr($dir,strlen(_DIR_RACINE)));
173
174        if (isset($info['logo']) and $i = trim($info['logo'])) {
175                include_spip("inc/filtres_images_mini");
176                $i = inserer_attribut(image_reduire("$dir/$i", 32),'alt','Icone du plugin '.$info['nom']);
177                $i = "<span class='apropos-icon'>".$i."</span>";
178        } else {
179                $generic = _DIR_PLUGIN_APROPOS."img/generique.png"; //mettre une icone generique si pas d'icone de defini
180                include_spip("inc/filtres_images_mini");
181                $i = inserer_attribut(image_reduire("$generic", 32),'alt','Icone g&eacute;n&eacute;rique pour le plugin '.$info['nom']);
182                $i = "<div class='apropos-icon'>$i</div>";
183        }
184        //$auteur = imploder($info['auteur']);
185
186        return "<div class='resume'>"
187        . $i
188        . "<span class='apropos-nom'>"
189        . typo(attribut_html($info['nom']))
190        . "</span>"
191        . " <span class='apropos-version'>v ".$info['version']."</span>"
192        . " <span class='apropos-etat'> - "
193        . plugin_etat_en_clair($info['etat'])
194        . "</span>"
195        . "<div class='apropos-description'>".$slogan.".</div><span class='apropos-auteur'>". _T('public:par_auteur') .$auteur.".</span>"
196        . "</div>";
197
198
199/*      $prefix = $info['prefix'];
200        $dir = "$dir_plugins$plug_file";
201        $slogan = typo(attribut_html($info['slogan'])); //PtoBR(plugin_propre($info['slogan'], "$dir/lang/paquet-$prefix"));
202        $get_desc = charger_fonction('afficher_plugin','plugins');
203        $desc = plugin_propre($info['description']);
204        // une seule ligne dans le slogan : couper si besoin
205        if (($p=strpos($slogan, "<br />"))!==FALSE)
206                $slogan = substr($slogan, 0,$p);
207        // couper par securite
208        $slogan = couper($slogan, 80);
209
210        $url = parametre_url($url_page, "plugin", substr($dir,strlen(_DIR_RACINE)));
211
212        if (isset($info['logo']) and $i = trim($info['logo'])) {
213                include_spip("inc/filtres_images_mini");
214                $i = inserer_attribut(image_reduire("$dir/$i", 32),'alt','Icone du plugin '.$info['nom']);
215                $i = "<div class='apropos-icon'>$i</div>";
216        } else {
217                $generic = _DIR_PLUGIN_APROPOS."img/generique.png"; //mettre une icone generique si pas d'icone de defini
218                include_spip("inc/filtres_images_mini");
219                $i = inserer_attribut(image_reduire("$generic", 32),'alt','Icone g&eacute;n&eacute;rique pour le plugin '.$info['nom']);
220                $i = "<div class='apropos-icon'>$i</div>";
221                //$i = '';
222        }
223
224        return "<div class='apropos-resume'>"
225        . $i
226        . " <span class='apropos-nom'>"
227        . typo(attribut_html($info['nom']))
228        . "</span>"
229        . "<span class='apropos-version'> v ".$info['version']."</span>"
230        . "<span class='apropos-etat'> - "
231        . typo(attribut_html($info['etat']))
232        . "</span>"
233        . "<div class='short'>".$slogan."</div>"
234        . "<div class='short'>".couper($desc,220)."</div>"
235        . "</div>";
236*/
237}
238function imploder($array){
239if ( ! is_array( $array ) ) {
240return 'CACACACA';
241} else {
242return implode($array);
243}
244}
245?>
Note: See TracBrowser for help on using the repository browser.