source: spip-zone/_plugins_/apropos/branches/spip2/apropos_fonctions.php

Last change on this file was 104327, checked in by spip.franck@…, 3 years ago

code.spip est maintenant en https, donc, j'ajoute le "s" à http

File size: 7.6 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//Creation de la balise #APROPOS
18function balise_APROPOS_dist($p) {
19        //recupere un eventuel argument
20        $premier = interprete_argument_balise(1, $p);
21        //s'il y en a 1, on traite la chose
22        if ($premier != ''){
23        $p->code = 'calcul_info_apropos(' . $premier . ')';
24        }else{
25        //si pas d\'argument, on affiche la liste des plugins
26        $p->code = 'calcul_info_apropos("liste")';
27        }
28        $p->interdire_scripts = false;
29        return $p;
30}
31
32function calcul_info_apropos($params){
33// si parametre full, alors tout afficher
34if ($params == "liste"){
35$affiche = charger_fonction('admin_plugin','exec');
36$lcpa = liste_chemin_plugin_actifs();
37$lpf = liste_plugin_files();
38
39/* liste les extensions */
40$liste_extensions_actives = apropos_affiche_les_extension(_DIR_EXTENSIONS);
41// liste les plugins
42$liste_des_pgI_actifs = apropos_affiche_les_PiG($lcpa,$lpf);
43return $liste_des_pgI_actifs.$liste_extensions_actives;
44}
45// si parametre nombre, alors afficher que le nombre de plugin et extensions
46if ($params == "nombre"){
47$pig = liste_chemin_plugin_actifs();
48$ext = liste_plugin_files(_DIR_EXTENSIONS);
49$nbre_pig = count($pig);
50$nbre_ext = count($ext);
51return $nbre_ext+$nbre_pig;
52}
53if ($params == "plugins"){
54$pig = liste_chemin_plugin_actifs();
55$nbre_pig = count($pig);
56return $nbre_pig;
57}if ($params == "extensions"){
58$ext = liste_plugin_files(_DIR_EXTENSIONS);
59$nbre_ext = count($ext);
60return $nbre_ext;
61}}
62
63
64function apropos_affiche_les_extension($liste_extensions_actives){
65        $rese = "";
66        if ($liste_extensions = liste_plugin_files(_DIR_EXTENSIONS)) {
67                $rese .= "<div class='apropos-liste'>";
68                $rese .= "<h3>".count($liste_extensions)." extensions activées automatiquement.</h3>";
69                $format = 'liste'; 
70                $rese .= apropos_plugins_afficher_list_dist(self(), $liste_extensions,$liste_extensions, _DIR_EXTENSIONS);// surcharge de fonction
71                $rese .= "</div>\n";
72        }
73        return $rese;
74}
75/* Fin liste les extensions */
76
77
78/* les fonctions utilisees pour les plugins */
79//entete liste des plugins affichage du nombre du plugin actives
80function apropos_affiche_les_PiG($lcpa,$lpf){
81                $h3 = "<div class='apropos-liste'><h3>".sinon(
82                                                singulier_ou_pluriel(count($lcpa), 'plugins_actif_un', 'plugins_actifs', 'count'),
83                                                _T('plugins_actif_aucun')
84                                                )."</h3>";
85                $corps = apropos_affiche_les_plugin($lcpa, $lcpa, $format);
86return $h3.$corps."</div>\n";
87}
88
89// Extrait de https://code.spip.net/@affiche_les_plugins
90function apropos_affiche_les_plugin($liste_plugins, $liste_plugins_actifs, $format='liste'){
91        if (!$format)
92                $format = 'liste';
93        if (!in_array($format,array('liste','repertoires')))
94                $format = 'repertoires';
95        $res = apropos_plugins_afficher_list_dist(self(), $liste_plugins,$liste_plugins_actifs);
96
97        if (!$res) return "";
98        return  $res;
99}
100
101// Extrait de  https://code.spip.net/@affiche_liste_plugins
102/* Creation de la liste des plugins actifs, trie de la liste par ordre alphabetique*/
103function apropos_plugins_afficher_list_dist($url_page,$liste_plugins, $liste_plugins_actifs, $dir_plugins=_DIR_PLUGINS,$afficher_un = 'afficher_plugin'){
104        $get_infos = charger_fonction('get_infos','plugins');
105        $liste_plugins = array_flip($liste_plugins);
106        foreach(array_keys($liste_plugins) as $chemin) {
107                $info = $get_infos($chemin, false, $dir_plugins);
108                $liste_plugins[$chemin] = strtoupper(trim(typo(translitteration(unicode2charset(html2unicode($info['nom']))))));
109        }
110        asort($liste_plugins);
111        $exposed = urldecode(_request('plugin'));
112
113        $block_par_lettre = false;//count($liste_plugins)>10;
114        $fast_liste_plugins_actifs = array_flip($liste_plugins_actifs);
115        $res = '';
116        $block = '';
117        $initiale = '';
118        $block_actif = false;
119        foreach($liste_plugins as $plug => $nom){
120                if (($i=substr($nom,0,1))!==$initiale){
121                        $res .= $block_par_lettre ? affiche_block_initial($initiale,$block,$block_actif): $block;
122                        $initiale = $i;
123                        $block = '';
124                        $block_actif = false;
125                }
126                // le rep suivant
127                //$actif = @isset($fast_liste_plugins_actifs[$plug]);
128                //$block_actif = $block_actif | $actif;
129                //$expose = ($exposed AND ($exposed==$plug OR $exposed==$dir_plugins . $plug OR $exposed==substr($dir_plugins,strlen(_DIR_RACINE)) . $plug));
130                $block .= apropos_plugins_afficher_plugins_dist($url_page, $plug, "item", $dir_plugins)."\n";
131        }
132        $res .= $block_par_lettre ? apropos_affiche_block_initiale($initiale,$block,$block_actif): $block;
133        $class = basename($dir_plugins);
134        return $res ? "<ul class='liste-items plugins $class'>$res</ul>" : "";
135}
136
137// Extrait de  https://code.spip.net/@ligne_plug
138/* Extrait les infos de chaque plugin */
139function apropos_plugins_afficher_plugins_dist($url_page, $plug_file, $class_li="item", $dir_plugins=_DIR_PLUGINS) {
140
141        static $id_input = 0;
142        static $versions = array();
143
144        $force_reload = (_request('var_mode')=='recalcul');
145        $get_infos = charger_fonction('get_infos','plugins');
146        $info = $get_infos($plug_file, $force_reload, $dir_plugins);
147        $prefix = $info['prefix'];
148        $erreur = (!isset($info['erreur']) ? ''
149        : ("<div class='erreur'>" . join('<br >', $info['erreur']) . "</div>"));
150       
151        $versions[$prefix] = $id = isset($versions[$prefix]) ? $versions[$prefix] + 1 : '';
152
153        $class_li .= (isset($info['erreur']) ? " erreur" : '');
154
155        return "<li>"
156        . apropos_plugin_resumer($info, $dir_plugins, $plug_file, $url_page)
157        . $erreur
158        ."</li>";
159}
160
161// Extrait de Cartouche Resume a modifier pour l'affichage final
162/* Traite les infos a afficher */
163function apropos_plugin_resumer($info, $dir_plugins, $plug_file, $url_page) {
164
165        $get_desc = charger_fonction('afficher_plugin','plugins');
166        $desc = plugin_propre($info['description']);
167        $dir = $dir_plugins.$plug_file;
168        if (($p=strpos($desc, "<br />"))!==FALSE)
169                $desc = substr($desc, 0,$p);
170        $url = parametre_url($url_page, "plugin", $dir);
171        $leNom = typo($info['nom']);
172        if (isset($info['icon']) and $i = trim($info['icon'])) {
173                include_spip("inc/filtres_images_mini");
174                $i = inserer_attribut(image_reduire("$dir/$i", 32),'alt','Icone du plugin '.$leNom);
175                $i = "<div class='apropos-icon'>$i</div>";
176        } else {
177                $generic = _DIR_PLUGIN_APROPOS."img/generique.png"; //mettre une icone generique si pas d'icone de defini
178                include_spip("inc/filtres_images_mini");
179                $i = inserer_attribut(image_reduire("$generic", 32),'alt','Icone g&eacute;n&eacute;rique pour le plugin '.$leNom);
180                $i = "<div class='apropos-icon'>$i</div>";
181                //$i = '';
182        }
183        $auteur = plugin_propre($info['auteur']) ;
184        // on recherche la trace d'une arobase pour remplacer par 1 image
185        $lemail = strpos($auteur,'@') ;
186        if ($lemail !== false) {
187        $larobase = "<img src=\""._DIR_PLUGIN_APROPOS."img/arob.png\" alt=\"remplacant\" />";
188        $auteur = preg_replace('/@/', $larobase, $auteur);
189        }
190        // on recherche la trace d'un tag <br /> pour le supprimer
191        $lebr = strpos($auteur,'<br ') ;
192        if ($lebr !== false) {
193        $lepasbr = " ";
194        $auteur = preg_replace('/<br \/>/', $lepasbr, $auteur);
195        }
196        return "<div class='apropos-resume'>"
197        . $i." <span class='apropos-nom'>".$leNom."</span>"
198        . "<span class='apropos-version'> v ".$info['version']."</span>"
199        . "<span class='apropos-etat'> - "
200        . plugin_etat_en_clair($info['etat'])
201        . "</span>"
202        . "<div class='apropos-description'>".couper($desc,220)."</div><span class='apropos-auteur'>". _T('public:par_auteur') .$auteur."</span>"
203        . "</div>";
204}
205?>
Note: See TracBrowser for help on using the repository browser.